怎么样修改字符集 [A]8i以上版本可以通过alter database来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误。 Startup nomount; Alter database mount exclusive; Alter system enable restricted session; Alter system set job_queue_process=0; Alter database open; Alter database character set zhs16gbk;
oracle官方的修改方法如下: 一.oracle for unix版本 1.关闭数据库 SHUTDOWN IMMEDIATE 2.由于要修改数据库,所以为了安全起见,备份数据库 3.完成一下指令: SVRMGRL>CONNECT INTERNAL; SVRMGRL>STARTUP MOUNT; SVRMGRL>ALTER SYSTEM ENABLE RESTRICTED SESSION; SVRMGRL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; SVRMGRL>ALTER SYSTEM SET AQ_TM_PROCESSES=0; SVRMGRL>ALTER DATABASE OPEN; SVRMGRL>ALTER DATABASE CHARACTER SET ZHS16CGB231280; SVRMGRL>SHUTDOWN IMMEDIATE; SVRMGRL>STARTUP; 4.修改.profile文件(安装数据库用户的.profile),在.profile中添加如下指令: NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280 EXPORT NLS_LANG 二.oracle for win版本 只需执行1到3步! 注意:以上是oracle8i以上版本的修改方法!
from csdn.net
使用一点点技巧,就可以使导出/导入在不同的字符集的数据库上转换数据。这里需要一个2进制文件编辑工具即可,如uedit32。用编辑方式打开导出的dmp文件,获取2、3字节的内容,如00 01,先把它转换为10进制数,为1,使用函数NLS_CHARSET_NAME即可获得该字符集:(ultraedit 打开几百M到上G的文件很慢,我试了winHex,哪个速度啊,闪电!)
SQL> select nls_charset_name(1) from dual;
NLS_CHARSET_NAME(1)
-------------------
US7ASCII
可以知道该dmp文件的字符集为US7ASCII,如果需要把该dmp文件的字符集换成ZHS16GBK,则需要用NLS_CHARSET_ID获取该字符集的编号:
SQL> select nls_charset_id('zhs16gbk') from dual;
NLS_CHARSET_ID('ZHS16GBK')
--------------------------
852
把852换成16进制数,为354,把2、3字节的00 01换成03 54,即完成了把该dmp文件字符集从us7ascii到zhs16gbk的转化,这样,再把该dmp文件导入到zhs16gbk字符集的数据库就可以了。(注意,十进制数与十六进制之间的转换,想明白其中的道理)
--------------------------------
850
ZHS16CGB231280 850 03 52
ZHS16GBK 852 03 54
[A]8i以上版本可以通过alter database来修改字符集,但也只限于子集到超集,不建议修改props$表,将可能导致严重错误。
Startup nomount;
Alter database mount exclusive;
Alter system enable restricted session;
Alter system set job_queue_process=0;
Alter database open;
Alter database character set zhs16gbk;
一.oracle for unix版本
1.关闭数据库 SHUTDOWN IMMEDIATE
2.由于要修改数据库,所以为了安全起见,备份数据库
3.完成一下指令:
SVRMGRL>CONNECT INTERNAL;
SVRMGRL>STARTUP MOUNT;
SVRMGRL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SVRMGRL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SVRMGRL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SVRMGRL>ALTER DATABASE OPEN;
SVRMGRL>ALTER DATABASE CHARACTER SET ZHS16CGB231280;
SVRMGRL>SHUTDOWN IMMEDIATE;
SVRMGRL>STARTUP;
4.修改.profile文件(安装数据库用户的.profile),在.profile中添加如下指令:
NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280
EXPORT NLS_LANG
二.oracle for win版本
只需执行1到3步!
注意:以上是oracle8i以上版本的修改方法!