`
kumcun
  • 浏览: 89271 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[转]更改Oracle字符集:把字符集ZHS16GBK换成UTF8

阅读更多

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 的步骤与注意事项 #### 一、背景介绍 在Oracle11g环境下,可能会遇到需要更改数据库字符集的情况,例如从AL32UTF8修改为ZHS16GBK。这种变更通常发生在需要支持特定...

    修改oracle字符集 将原al32utf8修改为zhs16gbk

    案例:从Linux导出的数据导入到windows环境中发现字符集安装时候忘了修改为zhs16gbk(是原来的al32utf8)。

    oracle库字符集ZHS16GBK到AL32UTF8的分析研究及方案

    个人工作总结,仅供参考。oracle库字符集ZHS16GBK到AL32UTF8的分析研究及方案,原因是系统使用中支持维文的显示。

    Oracle字符集转换

    ### Oracle字符集转换详解 #### 一、引言 在Oracle数据库管理中,字符集的选择至关重要,它直接关系到数据的正确存储与显示。当创建数据库时,如果选择了不合适的字符集,后续处理可能会遇到一系列问题。例如,在...

    Oracle 字符集详解

    常见的Oracle字符集有AL32UTF8(支持Unicode的UTF-8编码)、WE8ISO8859P1(西欧字符集)、ZHS16GBK(简体中文GB18030编码)等。 六、多语言环境下的字符集配置 在处理多语言数据时,Oracle提供了NLSSORT参数来调整...

    ORA-12737 ZHS16GBK 解决方案 oci sqlplus

    如果服务器的字符集确实为"CHS16GBK"或"ZHS16GBK",则需要考虑是否可以调整服务器端的字符集,或者在无法更改的情况下,确保客户端有足够的支持。 4. **使用字符集转换**:如果不能改变服务器字符集,可以考虑在...

    Oracle 修改字符集

    #### 二、修改Oracle字符集的必要性 - **数据兼容性**:当数据库需要支持多语言环境时,可能需要更换更广泛的字符集。 - **性能优化**:某些字符集在特定的操作系统环境下具有更好的性能。 - **修复数据问题**:...

    jdbc连接oracle字符集不同出现乱码

    在本案例中,远程 Oracle 数据库使用的字符集为 `AMERICAN_AMERICA.US7ASCII`,而本地 Oracle 数据库使用的字符集为 `SIMPLIFIED CHINESE_CHINA.ZHS16GBK`。这两种不同的字符集设置会导致数据在传输过程中出现乱码。...

    Oracle字符集的问题.docx

    - 查看`NLS_LANG`键的值,若其值为`SIMPLIFIED CHINESE_CHINA.ZHS16GBK`,则需要将其修改为`SIMPLIFIED CHINESE_CHINA.AL32UTF8`。 2. **修改数据库字符集** 如果修改客户端字符集无法解决问题,或者需要更彻底...

    修改ORACLE11G字符集

    例如,若要将客户端字符集改为简体中文GBK编码,则可以设置`NLS_LANG`为`SIMPLIFIED CHINESE_CHINA.ZHS16GBK`。 对于Windows操作系统,可以在注册表编辑器中查找`HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_...

    修改Oracle数据库字符集的方法

    ### 修改Oracle数据库字符集的方法 #### 背景与意义 在使用Oracle数据库的过程中,可能会遇到需要更改数据库字符集的情况。这通常发生在原有字符集不能满足新的业务需求时,例如需要支持更多的语言或特殊字符。...

    Oracle 字符集的查看和修改

    ### Oracle字符集的查看与修改详解 #### 一、Oracle字符集概述 Oracle数据库系统支持多种字符集,以便处理各种语言和地区的信息。字符集的选择对于数据的存储和处理至关重要,尤其是在全球化环境中,需要处理多种...

    修改oracle字符集.rar

    安装ORACLE数据库,字符集默认是AL32UTF8,有时需要改变数据库字符集,改成ZHS16GBK,资源里面是修改步骤。

    修改数据库字符集修改数据库字符集.doc

    最后,使用`ALTER DATABASE`命令更改数据库的本地字符集为ZHS16GBK(GBK的双字节实现)和国际字符集为AL16UTF16(支持Unicode的字符集)。 2. **处理错误信息**: - 当提示`ORA-12717`时,表示数据库中存在NCLOB、...

    oracle字符集转换

    Oracle字符集转换是一个重要的主题,尤其在处理多语言数据或者跨不同版本的Oracle数据库交互时。Oracle数据库系统支持多种字符集,以满足全球化的数据存储需求。字符集定义了数据库如何存储和显示字符,不同的字符集...

    oracle数据库字符集 无法修改数据库字符集 乱码

    根据提供的部分内容,可以看出尝试将数据库字符集从WE8ISO8859P1修改为ZHS16GBK的过程。具体步骤如下: 1. **检查当前字符集**:通过执行`SELECT * FROM nls_database_parameters WHERE parameter = 'NLS_...

    oracle 中文字符集问题

    #### 一、Oracle字符集概述 在Oracle环境中,字符集用于定义如何表示和存储字符数据。一个完整的字符集由语言(Language)、地区(Territory)和编码(Charset)三部分组成。例如,`NLS_LANG=AMERICAN_AMERICA.ZHS...

    如何更改Oracle字符集.doc

    Oracle字符集的更改是一个复杂的过程,涉及到数据库的底层结构和数据的编码方式。在Oracle数据库中,字符集用于定义字符的表示方式,不同的字符集对不同语言的支持程度和存储效率也不同。在本文中,我们将讨论如何...

Global site tag (gtag.js) - Google Analytics