`

ORACLE10G imp error: ORA-12899的解决方案

阅读更多
转自:http://www.2cto.com/database/201204/126027.html

问题:
IMP-00019: 由于 ORACLE 错误 12899 而拒绝行
IMP-00003: 遇到 ORACLE 错误 12899
ORA-12899: 列 "JACKEYJ"."JK_REGISTER"."OPNAME" 的值太大 (实际值: 21, 最大值: 20)

列 1 523
从9i环境下exp出来的数据,imp到10g数据库的时候就出现这个错误。

解决方案:

修改oracle 10g的字符集
Oracle
修改数据库字符集为:ZHS16GBK
查看服务器端字符集SQL > select * from V$NLS_PARAMETERS
修改:$sqlplus /nolog  www.2cto.com 
SQL>conn / as sysdba
若此时数据库服务器已启动,则先执行 SHUTDOWN IMMEDIATE 命令关闭数据库服务器,
然后执行以下命令:
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 ZHS16GBK
ERROR at line 1:ORA-12721: operation cannot execute when other sessions are active
若出现上面的错误,使用下面的办法进行修改,使用INTERNAL_USE可以跳过超集的检查:
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP

导入时出现乱码:
一般确保客户端与服务器端的编码一致就不会出现乱码了。
查看服务器端编码的方法:
SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.UTF8

NLS_LANG的相关知识
NLS_LANG 参数组成
NLS_LANG参数由以下部分组成:
NLS_LANG=<Language>_<Territory>.<Clients Characterset>

NLS_LANG各部分含义如下:
LANGUAGE指定:
-Oracle消息使用的语言
-日期中月份和日显示
TERRITORY指定
-货币和数字格式
-地区和计算星期及日期的习惯
CHARACTERSET:
-控制客户端应用程序使用的字符集
通常设置或者等于客户端(如Windows)代码页
或者对于unicode应用设置为UTF8

在Windows上查看当前系统的代码页可以使用chcp命令:
E:/>chcp
活动的代码页: 936

代码页936也就是中文字符集 GBK,在Microsoft的官方站点上,我们可以遭到关于936代码页的具体编码规则,请参考以下链接:
http://www.microsoft.com/globaldev/reference/dbcs/936.htm


2. 查看 NLS_LANG 的方法
Windows使用:

echo %NLS_LANG%
如:
E:/>echo %NLS_LANG%
AMERICAN_AMERICA.ZHS16GBK

Unix使用:

env|grep NLS_LANG
如:
/opt/oracle>env|grep NLS_LANG
NLS_LANG=AMERICAN_CHINA.ZHS16GBK

Windows客户端设置,可以在注册表中更改NLS_LANG,具体键值位于:
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOMExx/
xx指存在多个ORACLE_HOME时系统编号。


3. 查看数据库当前字符集参数设置
SELECT * FROM v$nls_parameters;


4. 查看数据库可用字符集参数设置
SELECT * FROM v$nls_valid_values;


5. 客户端 NLS_LANG 的设置方法
Windows:
# 常用中文字符集
set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
# 常用unicode字符集
set NLS_LANG=american_america.AL32UTF8
可以通过修改注册表键值永久设置
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOMExx/NLS_LANG

Unix:
# 常用unicode字符集
export NLS_LANG=american_america.AL32UTF8
# 常用中文字符集
export NLS_LANG="Simplified Chinese_china".ZHS16GBK
可以编辑 bash_profile 文件进行永久设置
vi .bash_profile
NLS_LANG="Simplified Chinese_china".ZHS16GBK export NLS_LANG
# 使 bash_profile 设置生效
source .bash_profile


参考:
http://www.eygle.com/special/NLS_CHARACTER_SET_04.htm
分享到:
评论

相关推荐

    ora10g客户端

    (DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oracleORCL)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=ORCL)(CID=(PROGRAM=D:\oracle\ora10g\sqlplus.exe)...

    Oracle常见错误诊断

     1、ORA-12571、ORA-03113、ORA-03114、ORA-01041  特征:客户端(代理或应用服务器)有时报这类断连错误  原因:如果偶尔出现一次,则可能为网络原因或用户异常中止,如果经常出现则为客户端与服务端的字符集不一致...

    Oracle9i Database Error Messages

    10 ORA-12400 to ORA-12699 11 ORA-12700 to ORA-19399 12 ORA-19400 to ORA-24279 13 ORA-24280 to ORA-29249 14 ORA-29250 to ORA-32799 15 ORA-32800 to ORA-32999 16 ORA-33000 to ORA-65535 Part III Oracle ...

    Oracle Database Error Messages 11g Release 2 11 2

    1. 错误代码(Error Code):每条错误消息通常以一个唯一的代码开始,比如我们例子中的“ORA-00001”或“IMP-00000”。这些代码可以帮助用户快速识别问题的性质。 2. 简单原因(Cause):这是对错误发生的原因的...

    ora_错误代码

    Oracle错误代码是由"ORA-"开头的一串数字组成,比如"ORA-00001"、"ORA-01422"等。每一个这样的代码都对应着一个特定的错误信息,帮助DBA(数据库管理员)或开发人员诊断并解决系统中的问题。 1. **错误代码结构**:...

    SHOUG文档分享-ORACLE-TTS迁移后ORA3113错误处理-SHOUG成员左翼

    要解决此问题,我们需深入了解其背后的异常,如ORA-07445,并对数据库的迁移以及表结构进行分析。 首先,案例描述了数据库从Oracle 9i迁移到IBM小型机上的Oracle 11g环境。迁移是数据库维护和升级的重要环节,它...

    到底能拿多少薪水 ORACLE工程师技能评估表

    - 常见错误的处理(ORA-01555/ORA-04031/ORA-04030/ORA-1578/ORA-00060等)。 - **层级:** BAND4 - 掌握阅读ORA-600和ORA-07445 TRACE的方法。 - **层级:** S (Specialized) - 掌握阅读systemstate dump/...

    oracle详解

    导入/导出是ORACLE幸存的最古老的两个命令行工具,其实我从来不认为Exp/Imp是一种好的备份方式,正确的说法是Exp/Imp只能是一个好的转储工具,特别是在小型数据库的转储,表空间的迁移,表的抽取,检测逻辑和物理...

    Oracle高版本数据转向低版本数据解决方按

    例如,当尝试使用较低版本的EXP/IMP工具处理高版本数据时,可能会出现错误提示,如`EXP-00008: ORACLE error %lu encountered`或`ORA-00904: invalid column name`等。 #### 解决方案一:针对Oracle 9i及之前的版本...

    最全的oracle常用命令大全.txt

    ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用 6、startup force 强制启动方式 当不能关闭数据库时,可以用startup force来完成数据库的关闭 先关闭数据库,再执行正常启动数据库命令 7、...

    Maximo EAM平台开发笔记2

    在Oracle 10g环境中创建表空间和用户。 3. 使用`IMP`工具导入DMP文件至10g环境。 4. 处理任何版本不兼容的问题。 **1.6 数据库字符集的修改** - **修改方法**: 1. 创建一个新的数据库实例,并设置正确的字符集...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    2. oracle11G自带一个卸载批处理\app\Administrator\product\11.2.0\dbhome_1\deinstall\deinstall.bat 3. 运行该批处理程序将自动完成oracle卸载工作,最后手动删除\app文件夹(可能需要重启才能删除) 4. 运行...

    oracle安装及备份

    1、在进行导入恢复时,如果是全部导入的话,就需要将原有的用户删除,这样此用户所拥有的数据就可以直接被删除了,否则在进导入时会下面的错误提示( ORACLE error 2291 encountered )那是因为与原有一些表,或...

    oracle定时备份压缩的实现步骤

    export ORACLE_HOME=$ORACLE_BASE/ora10gr2/db_1 # 路径需按照实际路径更改 export PATH=$ORACLE_HOME/bin:$PATH d=$(date '+%d') exp metabase/metabase@dskdb file=/home/oracle/backup/'metabase'$d.dmp exp ...

    pl/sql

    在开发过程中,有时需要导出和导入数据,Oracle提供EXP和IMP工具,或者使用SQL*Loader进行批量数据加载。此外,使用Oracle的OCI(Oracle Call Interface)可以实现C/C++等语言与数据库的交互,进行更底层的数据库编程...

Global site tag (gtag.js) - Google Analytics