最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

ORACLE乱码问题解决

来源:动视网 责编:小OO 时间:2025-10-01 17:15:18
文档

ORACLE乱码问题解决

一、修改oracle字符集由于Oracle默认安装了SIMPLIFIEDCHINESE_CHINA.WE8ISO8859P1字符集,不修改中文会出现乱码现象,输入如下命令:[oracle@localhost~]$sqlplus‘/assydba’SQL>shutdownimmediateSQL>StartuprestrictSQL>selectuserenv('language')fromdual;SIMPLIFIEDCHINESE_CHINA.WE8ISO8859P1SQL>UPDATEsy
推荐度:
导读一、修改oracle字符集由于Oracle默认安装了SIMPLIFIEDCHINESE_CHINA.WE8ISO8859P1字符集,不修改中文会出现乱码现象,输入如下命令:[oracle@localhost~]$sqlplus‘/assydba’SQL>shutdownimmediateSQL>StartuprestrictSQL>selectuserenv('language')fromdual;SIMPLIFIEDCHINESE_CHINA.WE8ISO8859P1SQL>UPDATEsy
一、修改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乱码问题解决

一、修改oracle字符集由于Oracle默认安装了SIMPLIFIEDCHINESE_CHINA.WE8ISO8859P1字符集,不修改中文会出现乱码现象,输入如下命令:[oracle@localhost~]$sqlplus‘/assydba’SQL>shutdownimmediateSQL>StartuprestrictSQL>selectuserenv('language')fromdual;SIMPLIFIEDCHINESE_CHINA.WE8ISO8859P1SQL>UPDATEsy
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top