SQL> select name,value$ from props$ where name like '%NLS%';
NAME VALUE$
------------------------------ ------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NAME VALUE$
------------------------------ ------------------------------
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 10.2.0.1.0
20 rows selected.
NLS_CHARACTERSET是数据库字符集,NLS_NCHAR_CHARACTERSET是国家字符集
ORACLE中有两大类字符型数据,VARCHAR2是按照数据库字符集来存储数据。
而NVARCHAR2是按照国家字符集存储数据的。同样,CHAR和NCHAR也一样,一是数据库字符符,一是国家字符集。
转换字符集,数据库应该在RESTRICTED模式下
首先要确定修改后的字符集是不是修改前的超集,如果不是可能出现相同的代码点对应不同的字符,出现乱码的问题。
出现这个错误是 oracle 只支持从子集到超集的转变
那有什么方法可进行强制转换呢?
该指令会跳过子集与超集的检验,当然强制转换可能会造成数据的损坏,要谨慎使用!!
下面借助eygle的帖子执行。
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1845493760 bytes
Fixed Size 2021568 bytes
Variable Size 452986688 bytes
Database Buffers 1375731712 bytes
Redo Buffers 14753792 bytes
Database mounted.
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 INTERNAL_USE UTF8;
Database altered.
SQL>update props$ set VALUE$='UTF8' where NAME='NLS_NCHAR_CHARACTERSET'
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
转自:http://space.itpub.net/12778571/viewspace-624461
相关推荐
### Oracle11g 字符集 AL32UTF8 修改为 ZHS16GBK 的步骤与注意事项 #### 一、背景介绍 在Oracle11g环境下,可能会遇到需要更改数据库字符集的情况,例如从AL32UTF8修改为ZHS16GBK。这种变更通常发生在需要支持特定...
案例:从Linux导出的数据导入到windows环境中发现字符集安装时候忘了修改为zhs16gbk(是原来的al32utf8)。
个人工作总结,仅供参考。oracle库字符集ZHS16GBK到AL32UTF8的分析研究及方案,原因是系统使用中支持维文的显示。
### Oracle字符集转换详解 #### 一、引言 在Oracle数据库管理中,字符集的选择至关重要,它直接关系到数据的正确存储与显示。当创建数据库时,如果选择了不合适的字符集,后续处理可能会遇到一系列问题。例如,在...
常见的Oracle字符集有AL32UTF8(支持Unicode的UTF-8编码)、WE8ISO8859P1(西欧字符集)、ZHS16GBK(简体中文GB18030编码)等。 六、多语言环境下的字符集配置 在处理多语言数据时,Oracle提供了NLSSORT参数来调整...
如果服务器的字符集确实为"CHS16GBK"或"ZHS16GBK",则需要考虑是否可以调整服务器端的字符集,或者在无法更改的情况下,确保客户端有足够的支持。 4. **使用字符集转换**:如果不能改变服务器字符集,可以考虑在...
#### 二、修改Oracle字符集的必要性 - **数据兼容性**:当数据库需要支持多语言环境时,可能需要更换更广泛的字符集。 - **性能优化**:某些字符集在特定的操作系统环境下具有更好的性能。 - **修复数据问题**:...
在本案例中,远程 Oracle 数据库使用的字符集为 `AMERICAN_AMERICA.US7ASCII`,而本地 Oracle 数据库使用的字符集为 `SIMPLIFIED CHINESE_CHINA.ZHS16GBK`。这两种不同的字符集设置会导致数据在传输过程中出现乱码。...
- 查看`NLS_LANG`键的值,若其值为`SIMPLIFIED CHINESE_CHINA.ZHS16GBK`,则需要将其修改为`SIMPLIFIED CHINESE_CHINA.AL32UTF8`。 2. **修改数据库字符集** 如果修改客户端字符集无法解决问题,或者需要更彻底...
例如,若要将客户端字符集改为简体中文GBK编码,则可以设置`NLS_LANG`为`SIMPLIFIED CHINESE_CHINA.ZHS16GBK`。 对于Windows操作系统,可以在注册表编辑器中查找`HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_...
### 修改Oracle数据库字符集的方法 #### 背景与意义 在使用Oracle数据库的过程中,可能会遇到需要更改数据库字符集的情况。这通常发生在原有字符集不能满足新的业务需求时,例如需要支持更多的语言或特殊字符。...
### Oracle字符集的查看与修改详解 #### 一、Oracle字符集概述 Oracle数据库系统支持多种字符集,以便处理各种语言和地区的信息。字符集的选择对于数据的存储和处理至关重要,尤其是在全球化环境中,需要处理多种...
安装ORACLE数据库,字符集默认是AL32UTF8,有时需要改变数据库字符集,改成ZHS16GBK,资源里面是修改步骤。
最后,使用`ALTER DATABASE`命令更改数据库的本地字符集为ZHS16GBK(GBK的双字节实现)和国际字符集为AL16UTF16(支持Unicode的字符集)。 2. **处理错误信息**: - 当提示`ORA-12717`时,表示数据库中存在NCLOB、...
Oracle字符集转换是一个重要的主题,尤其在处理多语言数据或者跨不同版本的Oracle数据库交互时。Oracle数据库系统支持多种字符集,以满足全球化的数据存储需求。字符集定义了数据库如何存储和显示字符,不同的字符集...
根据提供的部分内容,可以看出尝试将数据库字符集从WE8ISO8859P1修改为ZHS16GBK的过程。具体步骤如下: 1. **检查当前字符集**:通过执行`SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_...
#### 一、Oracle字符集概述 在Oracle环境中,字符集用于定义如何表示和存储字符数据。一个完整的字符集由语言(Language)、地区(Territory)和编码(Charset)三部分组成。例如,`NLS_LANG=AMERICAN_AMERICA.ZHS...
Oracle字符集的更改是一个复杂的过程,涉及到数据库的底层结构和数据的编码方式。在Oracle数据库中,字符集用于定义字符的表示方式,不同的字符集对不同语言的支持程度和存储效率也不同。在本文中,我们将讨论如何...