oracle db 字符集问题
2013-03-08 15:32
204 查看
1。查看字符集的方法
select userenv('language') from dual;
or
select * from v$nls_parameters;
2. 更改客户端字符集
设置nls_lang
window下,(可以设进注册表中)
set nls_lang=AMERICAN_AMERICA.UTF8
linux下,(可以设进.bash_profile)
export nls_lang=american_america.utf8
3. nls_lang三部分的含义,如
american --- 代表oracle消息返回采用的字符集
america ---- 代表用户采用的区域,比如日期/钱币显示格式会受影响
utf8 --- 代表数据库的数据实际采用的字符集
4. 常用字符集有哪些
set nls_lang="SIMPLIFIED CHINESE_CHINA".AL32UTF8 ---中文 中国区 Unicode字符集
american_america.utf8 ---英文消息 美国区 Unicode字符集
american_america.zhs16gbk ---英文消息 美国区 简体中文字符集
TRADITIONAL CHINESE_TAIWAN.AL32UTF8
5. 创建数据库实例时,如何指定为 american_america.utf8
其中一步选择“自定义”,然后“显示全部”,指定utf8-开头的字符集
6. 更改server端字符集
AL32UTF8改为ZHS16GBK
SQL> conn /as sysdba
SQL> shutdown immediate;
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;
ORA-12712: new character set must be a superset of old character set
提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
--我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验.
SQL> shutdown immediate;
SQL> startup
select userenv('language') from dual;
or
select * from v$nls_parameters;
2. 更改客户端字符集
设置nls_lang
window下,(可以设进注册表中)
set nls_lang=AMERICAN_AMERICA.UTF8
linux下,(可以设进.bash_profile)
export nls_lang=american_america.utf8
3. nls_lang三部分的含义,如
american --- 代表oracle消息返回采用的字符集
america ---- 代表用户采用的区域,比如日期/钱币显示格式会受影响
utf8 --- 代表数据库的数据实际采用的字符集
4. 常用字符集有哪些
set nls_lang="SIMPLIFIED CHINESE_CHINA".AL32UTF8 ---中文 中国区 Unicode字符集
american_america.utf8 ---英文消息 美国区 Unicode字符集
american_america.zhs16gbk ---英文消息 美国区 简体中文字符集
TRADITIONAL CHINESE_TAIWAN.AL32UTF8
5. 创建数据库实例时,如何指定为 american_america.utf8
其中一步选择“自定义”,然后“显示全部”,指定utf8-开头的字符集
6. 更改server端字符集
AL32UTF8改为ZHS16GBK
SQL> conn /as sysdba
SQL> shutdown immediate;
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;
ORA-12712: new character set must be a superset of old character set
提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:
SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
--我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验.
SQL> shutdown immediate;
SQL> startup
相关文章推荐
- 英文xp操作系统,oracle出现的字符集问题
- MySQL4.1.7的字符集问题
- OPENCLINT编程中字符集问题
- Rails字符集问题
- 安装mysql以及修改mysql字符集问题
- LINUX中文字符集问题
- 解决UNICODE字符集下CStdioFile的Writestring无法写入中文的问题//setlocale
- Python读取JSON数据,并解决字符集不匹配问题
- [ZT]Oracle数据库字符集问题解决方案大全
- Java字符集编码问题研究
- mysqldump之字符集问题解决
- 字符集问题的初步探讨(二)-数据库的字符集
- MySQL字符集转换引发插入乱码问题
- Oracle数据库移植时字符集问题的解决
- JVM默认字符集问题
- MFC一一关于多字符集下界面样式变更问题
- centos6.3 中文字符集问题
- CString 转换为 char* (VC6.0与Visual Studio 2005兼容问题)UNICODE字符集
- ORACLE字符集问题
- Tomcat+mysql字符集问题