工作需要,安装装了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更改字符集操作说明,多次实测有效。
在Oracle 11g数据库管理中,更改字符集是一项关键且复杂的操作,它涉及到数据库的启动、关闭以及系统参数的调整。以下是从标题、描述、标签及部分内容中提炼出的知识点,详细阐述了如何在Oracle 11g中更改字符集。 ...
在Oracle11g环境下,可能会遇到需要更改数据库字符集的情况,例如从AL32UTF8修改为ZHS16GBK。这种变更通常发生在需要支持特定语言环境的应用场景中,尤其是当应用主要面向中文用户时,采用ZHS16GBK字符集可以更好地...
在开始修改字符集之前,首先需要确认当前数据库使用的字符集。可以通过以下两种方式来检查: - **查询数据库参数**:使用`select * from sys.nls_database_parameters;`来查看数据库级别的字符集设置。 - **查询...
首先,确保你有数据库的系统管理员权限,因为修改字符集需要以SYSDBA身份进行。在Windows环境下,打开命令行窗口(cmd),并设置ORACLE_SID环境变量,将其值设置为你想要修改的数据库SID。例如: ```bash set ...
oracle11g字符集的修改,本人亲自用过,按照文档内容一步一步操作准没错,不要忘了先将数据备份或导出pdm哦!!!O(∩_∩)O哈哈~
本篇将深入探讨Oracle字符集的查看、修改、导入导出以及转换原理。 一、Oracle字符集的查看 在Oracle中,可以通过以下SQL查询来查看当前数据库的字符集设置: ```sql SELECT * FROM NLS_DATABASE_PARAMETERS ...
在某些情况下,用户可能需要在客户端侧更改字符集,以便正确地显示或处理特定语言的数据。本文将详细讲解如何在Oracle客户端进行字符集的切换。 一、理解字符集 1. 字符集概念:字符集是用于表示文本的一系列符号...
本文将详细介绍如何在Oracle 10g中通过命令行方式修改数据库字符集。 #### 前提条件 在进行字符集修改之前,请确保满足以下前提条件: 1. **有足够的权限**:必须具备sysdba权限才能执行这些操作。 2. **备份...
Oracle 10g字符集设置是数据库管理中的一个重要环节,特别是在处理中文数据时,正确的字符集配置至关重要。在Windows环境下,Oracle 10g客户端的安装可能会遇到中文乱码问题,这通常是因为新安装的客户端与旧版本...
1. **备份数据库**:由于修改字符集是一个不可逆的过程,因此建议先对数据库进行完整备份。 2. **评估影响**:分析数据库中的所有数据,确保可以兼容新的字符集。 3. **创建新数据库**:考虑到Oracle官方文档不推荐...
### Delphi7 ADO 连接远程 Oracle11g 的详细步骤及注意事项 #### 一、概述 本文档旨在提供一套完整的解决方案,帮助用户在 Delphi7 环境下通过 ADO 连接到远程 Oracle11g 数据库。整个过程涉及到服务器端的安装与...
### Linux下修改Oracle 10G的字符集:WE8ISO8859P1 修改为 ZHS16GBK #### 知识点概述 在Linux环境下,有时我们需要更改Oracle数据库的字符集来适应不同的语言环境或数据输入需求。本文将详细介绍如何在Oracle 10G...
在Oracle 10g中,数据库字符集是在创建数据库时设定的,一般不建议后期修改。数据库字符集决定了CHAR、VARCHAR2、CLOB、LONG等数据类型的存储格式,同时也影响表名、列名和PL/SQL变量的表示。国家字符集(NATIONAL ...
本篇文章将详细阐述在Oracle 10g RAC环境下如何修改字符集,同时,这些步骤也可以为修改其他数据库参数提供一定的参考。 首先,修改字符集前的准备工作至关重要。确保所有相关的数据和应用都已备份,并了解当前...
在Linux环境下安装Oracle 11g数据库时,可能会遇到字符编码问题导致乱码现象,这主要是由于系统默认的字符集与Oracle数据库所使用的字符集不一致导致的。本篇文章将详细解析三种解决Linux安装Oracle 11g乱码的方法。...
7. **创建数据库**:在创建数据库阶段,你需要设置数据库的名称、字符集、管理选项等参数。默认的管理选项通常是Automatic Storage Management (ASM)。 8. **设置系统管理员密码**:在创建数据库的过程中,你需要为...
不过Oracle XE目前的beta2缺省安装的字符集是WE8MSWIN1252,不是中文字符集,并且不能通过直接运行 alter database character set ZHS16GBK ; 来修改,因为ZHS16GBK不是缺省字符集的超集。过去流传很广的直接修改...