工作需要,安装装了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窗口。
相关推荐
oracle11g导入报错,很多情况下是字符集不同导致失败,附件为oracle11g更改字符集操作说明,多次实测有效。
ORACLE11g命令行更改字符集,免去你重装浪费的时间
Oracle11g 字符集 AL32UTF8 修改为ZHS16GBK .
oracle11g 修改字符集 修改为ZHS16GBK 有时候因为数据库的字符集的问题,导致dmp文件不能正常导入到其他数据库。可以用下面的方法将数据库的字符集修改一下
文中详细描述了如何修改ORACLE11G字符集的方法和步骤
oracle11g字符集的修改,本人亲自用过,按照文档内容一步一步操作准没错,不要忘了先将数据备份或导出pdm哦!!!O(∩_∩)O哈哈~
Oracle字符集的问题.总结了一些项目中的实际问题,和解决办法
修改Oracle数据库字符集的命令行方法。 在Oracle10g上也可以使用
Oracle 字符集详解,包括查看,修改,导入导出,转换原理
oracle10g字符集的查看与修改.docx
不过Oracle XE目前的beta2缺省安装的字符集是WE8MSWIN1252,不是中文字符集,并且不能通过直接运行 alter database character set ZHS16GBK ; 来修改,因为ZHS16GBK不是缺省字符集的超集。过去流传很广的直接修改...
Linux 下修改Oracle 10G的字符集:WE8ISO8859P1 修改为 ZHS16GBK 在我的机器上试过了,非常有效! //测试oracle 10g别的版本没试不敢保证
修改oracle的字符集,即默认的字符集,有时候可能字符集不符合一些要求,通过该步骤即可修改
用于oracle 10g 的字符集更改,经过调试后的文件。
为oracleRAC环境下修改字符集提供可靠依据。可为rac环境下修改其他参数提供参考。
4.1.3 PL/SQL字符集 4.1.4 PL/SQL数据类型 4.1.5 PIJSQL变量和常量 4.1.6 PL/SQL语句控制结构 4.1.7 PL/SQL表达式 4.2 PL/SQL的游标 4.2.1 基本原理 4.2.2 显式游标 4.2.3 隐式游标 4.2.4 游标...
根据网上资料整理,经多次实验,可用。扣10分是多了点,没办法,哈哈,挣点钱啊。忘大家多多照顾。
Oracle 11G从入门到精通视频的PPT 第1章-Oracle 11g数据库简介 认识Oracle 11g 回忆Oracle的产品版本 学习Oracle 11g的新特性 第2章-Oracle 11g的安装与测试 能够使用Oracle 11g的基本条件 在Windows 2003上...
更改Oracle字符集简洁版,可供大家应急之用。将oracle字符集改为UTF-8。
4.2.2 语言字符集、常用符号 4.2.3 常量与变量 4.2.4 数据类型 4.2.5 集合API方法 4.3 流程控制 4.3.1条件控制 4.3.2 循环控制 4.3.3 顺序控制 4.4 游标 4.4.1显式游标 4.4.2 隐式...