|
一、Oracle字符集
其中:
2.1 查询oracle server端的字符集
SQL> select userenv('language') from dual;
USERENV('LANGUAGE') ----------------- SIMPLIFIED CHINESE_CHINA.ZHS16GBK SQL>select userenv(‘language’) from dual; AMERICAN _ AMERICA. ZHS16GBK
2.2 如何查询dmp文件的字符集
SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;
ZHS16GBK
如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在unix主机上):
2.3 查询oracle client端的字符集
$echo $NLS_LANG
AMERICAN_AMERICA.ZHS16GBK 如果检查的结果发现server端与client端字符集不一致,请统一修改为同server端相同的字符集。
补充:
三、修改oracle的字符集
不过修改字符集有2种方法可行。
3.1 修改server端字符集(不建议使用)
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION; SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0; SQL>ALTER DATABASE OPEN; --这里可以从父集到子集 SQL>ALTER DATABASE CHARACTER SET ZHS16GBK; SQL>ALTER DATABASE NATIONAL CHARACTER SET AL16UTF16; --如果是从子集到父集,需要使用INTERNAL_USE参数,跳过超子集检测 SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8; SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16; SQL>SHUTDOWN IMMEDIATE; SQL>STARTUP
注意:如果没有大对象,在使用过程中进行语言转换没有什么影响,(切记设定的字符集必须是ORACLE支持,不然不能start) 按上面的做法就可以。
两种解决方法:
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT EXCLUSIVE; SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION; SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0; SQL>ALTER DATABASE OPEN; SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USEUTF8; SQL>SHUTDOWN immediate; SQL>startup; 如果按上面的做法做,National charset的区域设置就没有问题
3.2 修改dmp文件字符集
最简单的方法:
SQL> select to_char(nls_charset_id('ZHS16GBK'), 'xxxx') from dual;
0354
然后将dmp文件的2、3字节修改为0354即可。
3.3客户端字符集设置方法
$NLS_LANG=“simplified chinese”_china.zhs16gbk
$export NLS_LANG 编辑oracle用户的profile文件
2)Windows环境 |
用户登录
还没有账号?立即注册
用户注册
投稿取消
| 文章分类: |
|
还能输入300字
上传中....
黑客_