`

修改Oracle字符集(character set)

 
阅读更多
本方法适用于Oracle9i, 10g以及XE. 在10.2.0.1.0下测试无错. 需要注意的是, 使用此方法会破坏数据库中的原有双字节字符. 一种办法是先将数据库导出, 修改完字符集后再导入; 另一种办法就是不管他, 就那样使用. 一般如果是一个测试环境, 像方法二那样就可以了, 但是可能某些表无法读取, 需要注意.
 
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 <internal_use> AL32UTF8;
sql> shutdown immediate
sql> startup
 
这里的INTERNAL_USE可选,譬如用于不能从父集转到子集的场合,但是这样做会产生乱码,或者表中的数据不能读取。
 
如果数据库中存在CLOB字段,那么就不允许对字符集进行转换,此时可以查看alert<sid>.log文件,把含有CLOB的表trancate.
 
sql> trancate table [table_name];
 
转换后的数据库字符集可以通过以下命令察看.
 
sql> select name, value$ from props$ where name like '%NLS%';
 
导入导出是我们常用的一个数据迁移及转化工具,因其导出文件具有平台无关性,所以在跨平台迁移中,最为常用。

在导出操作时,非常重要的是客户端的字符集设置,也就是客户端的NLS_LANG设置。
 
NLS_LANG参数由以下部分组成:
 
NLS_LANG=<Language>_<Territory>.<Clients Characterset>
 
NLS_LANG各部分含义如下:
    Language
        -Oracle消息使用的语言 
        -日期中月份和日显示
    Territory 
        -货币和数字格式 
        -地区和计算星期及日期的习惯
    Clients Characterset 
        -控制客户端应用程序使用的字符集
 
例如
 
E:\>set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
E:\>sqlplus "/ as sysdba"
 
或者
 
E:\>set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
E:\>sqlplus "/ as sysdba"
 
Windows客户端设置,可以在注册表中更改NLS_LANG,具体键值位于:
 
HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\
 
xx指存在多个ORACLE_HOME时系统编号。
分享到:
评论

相关推荐

    Oracle 修改字符集

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

    Oracle 字符集详解

    本篇将深入探讨Oracle字符集的查看、修改、导入导出以及转换原理。 一、Oracle字符集的查看 在Oracle中,可以通过以下SQL查询来查看当前数据库的字符集设置: ```sql SELECT * FROM NLS_DATABASE_PARAMETERS ...

    oracle字符集的查看和client字符集的修改

    ### Oracle字符集的查看与客户端字符集的修改 #### 一、Oracle字符集的基本概念 在Oracle数据库系统中,字符集(charset)是用于表示文本数据的编码方式。正确设置和管理字符集对于确保数据的一致性和正确性至关重要...

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

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

    oracle修改字符集

    针对这种情况,我们可以按照以下步骤来修改Oracle 11g数据库的字符集,使其更改为ZHS16GBK。 首先,确保你有数据库的系统管理员权限,因为修改字符集需要以SYSDBA身份进行。在Windows环境下,打开命令行窗口(cmd)...

    oracle 字符集修改命令

    ### Oracle字符集修改命令详解 #### 一、引言 在Oracle数据库的管理与维护过程中,字符集的正确设置对于确保数据的正确显示与处理至关重要。由于不同的地区和语言环境对于字符编码的需求各异,因此有时可能需要...

    Oracle 字符集的查看和修改

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

    linux 下oracle中文乱码字符集设置

    在修改字符集格式之前,需要先关闭数据库,然后使用 `ALTER DATABASE CHARACTER SET ZHS16GBK;` 语句修改字符集格式,最后使用 `STARTUP` 语句打开数据库。这样,数据库中的字符集格式就被修改成了 ZHS16GBK,从而...

    修改oracle字符集

    总的来说,修改Oracle字符集是一个复杂的过程,涉及到数据库的停机、配置更改以及可能的数据转换。在进行操作之前,应仔细评估需求,并在有经验的数据库管理员指导下进行,以确保操作的成功和数据的安全。

    问题共享:修改oracle字符集

    ### 修改Oracle字符集详解 #### 一、引言 在处理多语言环境下Oracle数据库时,字符集设置至关重要。不正确的字符集配置会导致数据在存储、检索过程中出现乱码等问题。本文将详细介绍如何解决Oracle数据库字符集...

    oracle字符集查看与修改.pdf

    * 在创建数据库时,可以指定字符集(CHARACTER SET)和国家字符集(NATIONAL CHARACTER SET)。 * 字符集用来存储 CHAR, VARCHAR2, CLOB, LONG 等类型数据,用于标示诸如表名、列名以及 PL/SQL 变量等,用于存储 SQL...

    修改Oracle字符集

    ### 修改Oracle字符集 在Oracle数据库管理中,有时我们需要对现有的数据库进行字符集的更改,尤其是在需要支持更多语言或统一字符编码时。本文档提供了一种简洁的方法来更改Oracle数据库的字符集为UTF-8,并提供了...

    Oracle11g 字符集 AL32UTF8 修改为ZHS16GBK

    在Oracle11g环境下,可能会遇到需要更改数据库字符集的情况,例如从AL32UTF8修改为ZHS16GBK。这种变更通常发生在需要支持特定语言环境的应用场景中,尤其是当应用主要面向中文用户时,采用ZHS16GBK字符集可以更好地...

Global site tag (gtag.js) - Google Analytics