`

修改Oracle字符集(character set)

阅读更多
要用一个有权限的用户进行以下操作

说明:
EXP-00091: 出口可疑的统计。
EXP-00091: Exporting questionable statistics.

产生:
在数据库的服务器端和客户端字符集不同的情况 下,导出(dump)数据库表时,会产生这个错误。虽然产生这个错误,但好像对导入没有影响。

解决:

服务器端数据的字符集查看方法:
1、打开SQLPLUS,用sys用户登录。<!-- IWMS_AD_BEGIN-->

<script src="http://www.linuxidc.com/system/system60.js" type="text/javascript"></script>
<!-- IWMS_AD_END-->
2、执行SELECT * FROM V$NLS_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';。
其中'NLS_CHARACTERSET'必须为大写。

PARAMETER
--------------------
VALUE
--------------------
NLS_CHARACTERSET
ZHS16GBK

(Linux环境 )
在oracle用户的.bash_profile文件加入
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

(Windows环境)
1、打开注册 表,依次进入HKEY_LOCAL_MACHINE→SOFTWARE→ORACLE→HOME0目录。
2、察看NLS_LANG的值。
3、将其修改为数据库服务器端字符集相同的字符。

临时设定环境变量
set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK



原文:http://www.blogjava.net/zamber/archive/2006/09/25/71757.html

本方法适用于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时系统编号。
分享到:
评论

相关推荐

    oracleXE字符集改成GBK

     不过Oracle XE目前的beta2缺省安装的字符集是WE8MSWIN1252,不是中文字符集,并且不能通过直接运行 alter database character set ZHS16GBK ; 来修改,因为ZHS16GBK不是缺省字符集的超集。过去流传很广的直接修改...

    oracle修改字符集

    4.修改Oracle的编码和操作系统的一样。(参考别人的) 登陆用dba SQL&gt; conn system/hundsun as sysdba; 停掉数据库 SQL&gt;shutdown immediate; 启动数据库到mount状态下 SQL&gt; STARTUP MOUNT; Java代码 ...

    33.Oracle字符集的设置1

    2、字符集(Character set)字符集是字符的集合,字符是文字和符号的总称,用ASCII编码的字符集称之为ASCII字符集,用GBK编码的字符集称之为G

    [Oracle] 彻底搞懂Oracle字符集

    基本概念字符集(Character set):是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。常见的字符集有ASCII,ZHS16GB231280,ZHS16GBK等。字符编码...

    数据库服务器字符集更改步骤

    10 数据库服务器字符集更改步骤 问题描述: 在客户端插入字符“咪咪”,从数据库中查询显示时出现乱码 处理步骤: 10.1 对数据库做全库导出,备份全库数据,以防故障发生 首先设定客户端的字符集,必须以ZHS16GBK的...

    MySQL字符集乱码及解决方案分享

    字符集是一套符号和编码的规则,不论是在oracle数据库还是在mysql数据库,都存在字符集的选择问题,而且如果在数据库创建阶段没有正确选择字符集,那么可能在后期需要更换字符集,而字符集的更换是代价比较高的操作...

    csscan_12_linux_920.tar.Z

    Oracle9i 9.2.0 Character set scanner for Linux 应用Linux系统

    mysql 5.7.20\5.7.21 免安装版安装配置教程

    mysql 下载安装配置 5.7.20 / 5.7.21,供大家参考,具体内容如下 1、下载mysql,下载地址 ...# 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设置3306端口 port = 3306 # 设置mysql的安装目录

    解析windows下使用命令的方式安装mysql5.7的方法

    # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] sql_mode='NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_...

    如何在Windows中运行多个MySQL实例详解

    前言 在Windows中可以从命令行为每个实例使用合适的操作参数来...# 设置mysql客户端默认字符集 default-character-set=utf8mb4 [mysqld] # 设置3307端口 port = 3307 # 设置mysql的安装目录 basedir=D:\mysql-5.7.25-wi

    数据库.txt

    charset (\C) 切换到另一个字符集 warnings (\W) 每一个语句之后显示警告 nowarning (\w) 每一个语句之后不显示警告 SQL及其规范 SQL(Structured Query Language结构化查询语言)是一种数据库查询语言和程序设计语言...

    第一章数据库的简介.docx

    charset (\C) 切换到另一个字符集 warnings (\W) 每一个语句之后显示警告 nowarning (\w) 每一个语句之后不显示警告 SQL及其规范 SQL(Structured Query Language结构化查询语言)是一种数据库查询语言和程序设计语言...

    mysql数据库的基本操作语法

    注意:alter modify不支持一次修改多个列,但是Oracle支持多列修改 但是MySQL可以通过多个modify的方式完成: alter table user modify tel varchar(15) default '02087654321' first, modify name varchar(20) ...

    JAVA面试题最全集

    被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载 finally?再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,...

Global site tag (gtag.js) - Google Analytics