澳门新浦京娱乐游戏[转载]ORACLE字符集设置

1、在建库时,catproc一定要运行,否则用rman时会出现如下字符集的错误:RMAN-00554:
initialization of internal recovery manager package failedRMAN-04005:
error from target database: ORA-06553: PLS-213: package STANDARD
noeRMAN-04015: error setting target database character set to
ZHS16CGB231280如果建库时没有问题,那么可以Re-run catproc.sql. This will
in turn call the dbmsbkrs.sql script which creates the
dbms_backup_restore package. 2、中文字符集说明ZHS16CGB231280
CGB2312-80 16-bit Simplified Chinese MB, ASCIIZHS16GBK GBK 16-bit
Simplified Chinese MB, ASCII,
UDC简单地说ZHS16GBK是ZHS16CGB231280的超集。一九九○年中国、日本、韩国共同制定的统一东亚表意文字字符集,即常称的国标扩展码字符集。3、如何避免中文支持问题我们的一贯建议是在建库时就做好规划,这样以后就不会有问题了。1)create
database character set ZHS16GBKnational character set
ZHS16GBK2)环境变量:NLS_LANG=american_america.ZHS16GBK最好export
NL2004-10-20_FORMAT=’YYYY-MM-DD
HH24:MI:SS’指明日期格式;3)如果建库时指定了props$中characterset肯定就是ZHSS16GBK了:NLS_CHARACTERSET
ZHS16GBKNLS_NCHAR_CHARACTERSET
ZHS16GBK如果不是可以使用update改变,但这样做对于已有数据会有影响,甚至会导致整个数据库不能用,所以还是在建库之后就进行验证,一个好的DBA就是能够尽量避免问题的发生,而不是等到出了问题再去救火。如此一来就不会再有字符集和中文支持的问题了。还有问题吗?和我联系:)

原文地址:ORACLE字符集设置作者:澳门新浦京娱乐游戏,raining

最近新创建一个数据库,插入数据后竟然发现中文字符在数据库中显示为????,原来看过关于oracle字符集的文章,知道是字符集设置问题。在网上搜了些资料,修改了oracle的字符集,总结了一下。 

 

首先用sys用户登陆oracle

#sqlplus /nolog

SQL>conn sys/sys@score as sysdba;

 

查看服务器端字符集:

SQL>SELECT * FROM NLS_DATABASE_PARAMETERS;

看输出的NLS_CHARACTERSET
字段值,我原来的值是ISO88什么的,不正确。正确的一般服务器端为:ZHS16GBK,客户端也为:ZHS16GBK。

修改开始

 

先停止本数据库服务:

SQL>shutdown immediate;

数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。

这些信息是更改正确字符集后的提示信息,一般应该是英文的)

 

再启动数据库

SQL>startup   restrict;   此处要注意启动方式要加 restrict参数
ORACLE 例程已经启动。

Total System Global Area  603979776 bytes
Fixed Size                  1220796 bytes
Variable Size             180358980 bytes
Database Buffers          415236096 bytes
Redo Buffers                7163904 bytes
数据库装载完毕。
数据库已经打开。

 

修改字符集

SQL> alter session set sql_trace=true;

  Session altered.

SQL> alter system enable restricted session;

  System altered.

SQL> alter system set job_queue_processes=0;

  System altered.

SQL> alter system set aq_tm_processes=0;

    System altered.

SQL> alter database open;

  Database altered.

SQL> alter database character set zhs16gbk;
 Database altered.

有时执行alter database character set zhs16gbk;语句时会报错:

ORA-12712: new character set must be a superset of old character set

意思是新字符集不是原字符集超集,例如原字符集为ZHS16CGB231280,新字符集zhs16gbk,虽然新字符集比原字符集大,但不存在父子关系,通过以下语句会跳过超集检查:

SQL> alter database character set INTERNAL_USE ZHS16GBK;  

 

重启数据库

SQL> shutdown immediate;

SQL> startup;

没错误提示就成功了。

 

windows客户端更改字符集

在命令提示符下执行D:SET NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
或者修改注册表里的HKEY_LOCAL_MACHINESOFTWAREOracleHOME0下,nls_lang=SIMPLIFIED
CHINESE_CHINA.ZHS16GBK。

 

再此查看服务器端和客户端字符集设置应该已经修该过来了。

 

刚开始我用的是“update props$ set value$=’ZHS16GBK’ WHERE
NAME=’NLS_CHARACTERSET’;”语句来修改的服务器端字符集,修改后客户端连接时总提示有错误,看来是有问题的,网上搜了下,8i后是不可以用这个方法修改的。

有用的两个连接:

 

 

 

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图