修改oracle字符集
来源:互联网 发布:淘宝gta5刷钱真相 编辑:程序博客网 时间:2024/06/10 03:38
一、修改oracle字符集
由于Oracle 默认安装了SIMPLIFIED CHINESE_CHINA.WE8ISO8859P1字符集,不修改中文会出现乱码现象,输入如下命令:
[oracle@localhost ~]$sqlplus ‘/as sydba’
SQL>shutdown immediate
SQL>Startup restrict
SQL>select userenv('language') from dual;
SIMPLIFIED CHINESE_CHINA.WE8ISO8859P1
SQL>UPDATE sys.PROPS$ SET value$='ZHS16GBK' WHERE NAME='NLS_CHARACTERSET';
SQL>shutdown immediate
SQL>startup;
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
---------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
这样把WE8ISO8859P1改变成'ZHS16GBK' 。
如果执行了修改字符后,重启oracle数据库仍然是WE8ISO8859P1字符集,请重启linux系统即可。
二、执行第一点中的修改后,数据库报错ora-06553:pls-553:character set name is not recognized
确认字符集是否修改的不彻底。
SELECT DISTINCT (NLS_CHARSET_NAME(CHARSETID)) CHARACTERSET,
DECODE(TYPE#,
1,
DECODE(CHARSETFORM,
1,
'VARCHAR2',
2,
'NVARCHAR2',
'UNKOWN'),
9,
DECODE(CHARSETFORM,
1,
'VARCHAR',
2,
'NCHAR VARYING',
'UNKOWN'),
96,
DECODE(CHARSETFORM, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
112,
DECODE(CHARSETFORM, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
FROM SYS.COL$
WHERE CHARSETFORM IN (1, 2)
AND TYPE# IN (1, 9, 96, 112);
CHARACTERSET TYPES_USED_IN
-------------------- -------------
AL16UTF16 NCHAR
AL16UTF16 NCLOB
AL16UTF16 NVARCHAR2
UTF8 CHAR
UTF8 VARCHAR2
WE8ISO8859P1 CHAR
WE8ISO8859P1 CLOB
WE8ISO8859P1 VARCHAR2
确实在数据库的列属性中仍然存在着多个字符集的设定,报错的原因。下面解决这个问题。
1.SHUTDOWN IMMEDIATE;
2.STARTUP MOUNT;
3.ALTER SYSTEM ENABLE RESTRICTED SESSION;
4.ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
5.ALTER SYSTEM SET AQ_TM_PROCESSES=0;
6.ALTER DATABASE OPEN;
9.COL VALUE NEW_VALUE CHARSET
10.SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
11.COL VALUE NEW_VALUE NCHARSET
12.SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';
14.--INTERNAL_USE是没有写在文档中的参数,用以强制完成字符集一致化
15.ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
16.ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
19.SHUTDOWN IMMEDIATE;
20.STARTUP;
21.-- 再次启动数据库一遍
22.SHUTDOWN IMMEDIATE;
23.STARTUP;
按照上面的步骤,一步一步来,一步不要少,完成以后,就OK了。
由于Oracle 默认安装了SIMPLIFIED CHINESE_CHINA.WE8ISO8859P1字符集,不修改中文会出现乱码现象,输入如下命令:
[oracle@localhost ~]$sqlplus ‘/as sydba’
SQL>shutdown immediate
SQL>Startup restrict
SQL>select userenv('language') from dual;
SIMPLIFIED CHINESE_CHINA.WE8ISO8859P1
SQL>UPDATE sys.PROPS$ SET value$='ZHS16GBK' WHERE NAME='NLS_CHARACTERSET';
SQL>shutdown immediate
SQL>startup;
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
---------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
这样把WE8ISO8859P1改变成'ZHS16GBK' 。
如果执行了修改字符后,重启oracle数据库仍然是WE8ISO8859P1字符集,请重启linux系统即可。
二、执行第一点中的修改后,数据库报错ora-06553:pls-553:character set name is not recognized
确认字符集是否修改的不彻底。
SELECT DISTINCT (NLS_CHARSET_NAME(CHARSETID)) CHARACTERSET,
DECODE(TYPE#,
1,
DECODE(CHARSETFORM,
1,
'VARCHAR2',
2,
'NVARCHAR2',
'UNKOWN'),
9,
DECODE(CHARSETFORM,
1,
'VARCHAR',
2,
'NCHAR VARYING',
'UNKOWN'),
96,
DECODE(CHARSETFORM, 1, 'CHAR', 2, 'NCHAR', 'UNKOWN'),
112,
DECODE(CHARSETFORM, 1, 'CLOB', 2, 'NCLOB', 'UNKOWN')) TYPES_USED_IN
FROM SYS.COL$
WHERE CHARSETFORM IN (1, 2)
AND TYPE# IN (1, 9, 96, 112);
CHARACTERSET TYPES_USED_IN
-------------------- -------------
AL16UTF16 NCHAR
AL16UTF16 NCLOB
AL16UTF16 NVARCHAR2
UTF8 CHAR
UTF8 VARCHAR2
WE8ISO8859P1 CHAR
WE8ISO8859P1 CLOB
WE8ISO8859P1 VARCHAR2
确实在数据库的列属性中仍然存在着多个字符集的设定,报错的原因。下面解决这个问题。
1.SHUTDOWN IMMEDIATE;
2.STARTUP MOUNT;
3.ALTER SYSTEM ENABLE RESTRICTED SESSION;
4.ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
5.ALTER SYSTEM SET AQ_TM_PROCESSES=0;
6.ALTER DATABASE OPEN;
9.COL VALUE NEW_VALUE CHARSET
10.SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';
11.COL VALUE NEW_VALUE NCHARSET
12.SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';
14.--INTERNAL_USE是没有写在文档中的参数,用以强制完成字符集一致化
15.ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
16.ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;
19.SHUTDOWN IMMEDIATE;
20.STARTUP;
21.-- 再次启动数据库一遍
22.SHUTDOWN IMMEDIATE;
23.STARTUP;
按照上面的步骤,一步一步来,一步不要少,完成以后,就OK了。
- ORACLE 字符集乱码 修改字符集
- Oracle字符集修改问题
- oracle 修改字符集
- Oracle修改字符集
- 修改oracle的字符集
- 修改oracle默认字符集
- oracle 修改字符集
- 修改oracle数据库字符集
- 修改oracle字符集
- Oracle字符集修改
- 修改ORACLE字符集
- 修改oracle字符集
- 修改oracle字符集
- 修改Oracle数据库字符集
- Oracle修改字符集全过程
- oracle 修改字符集
- oracle修改字符集
- oracle修改“NLS_NCHAR_CHARACTERSET”字符集
- 《linux与unix shell 编程指南》整理(5)
- 【工作相关】通讯前置系统-通讯方式种类介绍
- 数据库名、实例名、数据库域名、全局数据库名、服务名
- Java类成员变量的初始化顺序
- 【工作相关】通讯前置系统-通讯服务设计
- 修改oracle字符集
- C语言基础知识
- Web开发者爱不释手的18款超赞jQuery插件(1)
- visual studio 2003中提示您试图打开的项目是Web项目,需要指定URL路径来打开
- 触发 Java heap dump
- 【工作相关】相关博客地址
- 飞鸟集全文
- 手机号码
- Oracle ORA-00600 [15764] 解决方法