oracle 11g更改字符集——GOOD

http://shiguanghui.iteye.com/blog/1931667

 

工作需要,安装装了oracle 11g,在导入其他机器上的备份数据的时间,发生一个错误:

IMP-00019: 由于 ORACLE 错误 12899 而拒绝行
IMP-00003: 遇到 ORACLE 错误 12899
ORA-12899: 列 "ZHENG"."D_DIC"."DICEXPLAIN" 的值太大 (实际值: 140, 最大值: 100)

这个数据表结构是直接注入的,根本不会这样子的啊。后来在网上查了才知道原来是字符集的问题:

在日志文件里,开始导入时候有这样一个提示:"

已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
导入服务器使用 AL32UTF8 字符集 (可能的字符集转换)

 

"原来在我的Windows server 2003系统上安装oracle,默认的字符集跟操作系统一致,是AL32UTF8。

AL32UTF8里,一个汉字是占用3个字符位,而一般我们用Windows XP中默认的是ZHS16GBK ,一个汉字用2个字符位。这样,直接导入数据就直接溢出了。

 

查看数据库的字符集

select * from v$nls_parameters;

select * from nls_database_parameters;

 

oracle数据库的字符集更改 

[root@server183 /]# sqlplus /nolog 

 

SQL*Plus: Release 11.2.0.1.0 Production on Wed Nov 7 23:50:56 2012 

 

Copyright (c) 1982, 2010, Oracle.  All rights reserved. 

 

SQL> conn / as sysdba     --需要使用SYSDBA帐户 

Connected. 

SQL>  startup mount        

ORA-01081: cannot start already-running ORACLE - shut it down first 

SQL>  shutdown immediate;   --停止数据库 

Database closed. 

Database dismounted. 

ORACLE instance shut down. 

SQL>  startup mount          --启动数据库到 mount 状态 

ORACLE instance started. 

 

Total System Global Area 1686925312 bytes 

Fixed Size                  2176368 bytes 

Variable Size             989858448 bytes 

Database Buffers          687865856 bytes 

Redo Buffers                7024640 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 ZHS16GBK; --修改字符集AL32UTF8->ZHS16GBK 

 

Database altered. 

 

SQL> shutdown immediate;        --再次关闭数据库 

Database closed. 

Database dismounted. 

ORACLE instance shut down. 

SQL> STARTUP             --启动数据库 

ORACLE instance started. 

 

Total System Global Area 1686925312 bytes 

Fixed Size                  2176368 bytes 

Variable Size             989858448 bytes 

Database Buffers          687865856 bytes 

Redo Buffers                7024640 bytes 

Database mounted. 

Database opened. 

SQL> select * from v$nls_parameters where parameter = 'NLS_CHARACTERSET'; 

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
client端字符集修改 
在 /home/oracle与 /root用户目录下的.bash_profile中 
添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 语句 
关闭当前ssh窗口。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值