修改oracle10g数据库字符集的方法:
----------------------------------------------------------------------------------------------------
SQL> select name,value$ from props$ where name like '%NLS%';
SQL> alter database character set zhs16gbk;
alter database character set zhs16gbk
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
SQL> ALTER DATABASE character set INTERNAL_USE zhs16gbk;
SQL> select value from nls_database_parameters where parameter='NLS_CHARACTERSET';
oracle数据库在导入不同字符集的数据时经常会出现以下类似问题:
IMP-00017: following statement failed with ORACLE error 2299:
"ALTER TABLE "TMPUSERINFO" ADD UNIQUE ("MDN") USING INDEX PCTFREE 10 INITRA"
"NS 2 MAXTRANS 255 STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1) TABL"
"ESPACE "JLTGAME" LOGGING ENABLE"
IMP-00003: ORACLE error 2299 encountered
ORA-02299: cannot validate (JLTGAME.SYS_C003199) - duplicate keys found
IMP-00017: following statement failed with ORACLE error 2299:
"ALTER TABLE "TMPUSERINFO" ADD UNIQUE ("USERNAME") USING INDEX PCTFREE 10 I"
"NITRANS 2 MAXTRANS 255 STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1)"
" TABLESPACE "JLTGAME" LOGGING ENABLE"
IMP-00003: ORACLE error 2299 encountered
ORA-02299: cannot validate (JLTGAME.SYS_C003200) - duplicate keys found
----------------------------------------------------------------------------------------------------
解决办法:修改数据库字符集
----------------------------------------------------------------------------------------------------
重点:ALTER DATABASE character set INTERNAL_USE zhs16gbk; # 使用INTERNAL_USE可以跳过超集的检查,
----------------------------------------------------------------------------------------------------
SQL> connect sys/test123@szdb as sysdba;
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 235999352 bytes
Fixed Size 450680 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL> select name,value$ from props$ where name like '%NLS%';
NAME
------------------------------------------------------------
VALUE$
--------------------------------------------------------------------------------
NLS_LANGUAGE
AMERICAN
NLS_TERRITORY
AMERICA
NLS_CURRENCY
$
NAME
------------------------------------------------------------
VALUE$
--------------------------------------------------------------------------------
NLS_ISO_CURRENCY
AMERICA
NLS_NUMERIC_CHARACTERS
.,
NLS_CHARACTERSET
WE8ISO8859P1
NAME
------------------------------------------------------------
VALUE$
--------------------------------------------------------------------------------
NLS_CALENDAR
GREGORIAN
NLS_DATE_FORMAT
DD-MON-RR
NLS_DATE_LANGUAGE
AMERICAN
NAME
------------------------------------------------------------
VALUE$
--------------------------------------------------------------------------------
NLS_SORT
BINARY
NLS_TIME_FORMAT
HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT
DD-MON-RR HH.MI.SSXFF AM
NAME
------------------------------------------------------------
VALUE$
--------------------------------------------------------------------------------
NLS_TIME_TZ_FORMAT
HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT
DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY
$
NAME
------------------------------------------------------------
VALUE$
--------------------------------------------------------------------------------
NLS_COMP
BINARY
NLS_LENGTH_SEMANTICS
BYTE
NLS_NCHAR_CONV_EXCP
FALSE
NAME
------------------------------------------------------------
VALUE$
--------------------------------------------------------------------------------
NLS_NCHAR_CHARACTERSET
AL16UTF16
NLS_RDBMS_VERSION
9.2.0.1.0
20 rows selected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 235999352 bytes
Fixed Size 450680 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 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> set linesize 120;
SQL> alter database character set zhs16gbk;
alter database character set zhs16gbk
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set
SQL> ALTER DATABASE character set INTERNAL_USE zhs16gbk; # 使用INTERNAL_USE可以跳过超集的检查,ALTER DATABASE character set INTERNAL_USE
Database altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP
ORACLE instance started.
Total System Global Area 235999352 bytes
Fixed Size 450680 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.
SQL>
SQL> select name,value$ from props$ where name like '%NLS%';
NAME
------------------------------
VALUE$
------------------------------------------------------------------------------------------------------------------------
NLS_LANGUAGE
AMERICAN
NLS_TERRITORY
AMERICA
NLS_CURRENCY
$
NAME
------------------------------
VALUE$
------------------------------------------------------------------------------------------------------------------------
NLS_ISO_CURRENCY
AMERICA
NLS_NUMERIC_CHARACTERS
.,
NLS_CHARACTERSET
ZHS16GBK
NAME
------------------------------
VALUE$
------------------------------------------------------------------------------------------------------------------------
NLS_CALENDAR
GREGORIAN
NLS_DATE_FORMAT
DD-MON-RR
NLS_DATE_LANGUAGE
AMERICAN
NAME
------------------------------
VALUE$
------------------------------------------------------------------------------------------------------------------------
NLS_SORT
BINARY
NLS_TIME_FORMAT
HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT
DD-MON-RR HH.MI.SSXFF AM
NAME
------------------------------
VALUE$
------------------------------------------------------------------------------------------------------------------------
NLS_TIME_TZ_FORMAT
HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT
DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY
$
NAME
------------------------------
VALUE$
------------------------------------------------------------------------------------------------------------------------
NLS_COMP
BINARY
NLS_LENGTH_SEMANTICS
BYTE
NLS_NCHAR_CONV_EXCP
FALSE
NAME
------------------------------
VALUE$
------------------------------------------------------------------------------------------------------------------------
NLS_NCHAR_CHARACTERSET
AL16UTF16
NLS_RDBMS_VERSION
9.2.0.1.0
20 rows selected.
SQL>
----------------------------------------------------------------------------------------------------
分享到:
相关推荐
### 修改Oracle数据库字符集的方法 #### 背景与意义 在使用Oracle数据库的过程中,可能会遇到需要更改数据库字符集的情况。这通常发生在原有字符集不能满足新的业务需求时,例如需要支持更多的语言或特殊字符。...
### Oracle 10g XE 版本更改数据库字符集 在进行Oracle 10g XE数据库的字符集修改时,需要理解几个关键的概念和技术点。本文将详细介绍如何更改Oracle 10g XE数据库的字符集,并提供具体的操作步骤。 #### 一、...
在Oracle11g环境下,可能会遇到需要更改数据库字符集的情况,例如从AL32UTF8修改为ZHS16GBK。这种变更通常发生在需要支持特定语言环境的应用场景中,尤其是当应用主要面向中文用户时,采用ZHS16GBK字符集可以更好地...
Oracle 10g数据库安装教程 Oracle 10g 是一款功能强大的关系型数据库管理系统,广泛应用于企业级数据存储和管理。本安装说明主要针对Windows操作系统,详细指导如何正确安装Oracle 10g数据库服务器,并配置iES500 ...
注意,这里使用的是`INTERNAL_USE`关键字,这是因为直接更改数据库字符集可能会遇到ORA-12712错误,表明新字符集必须包含旧字符集的所有字符。 8. **验证字符集更改**:通过查询`V$NLS_PARAMETERS`视图来确认字符集...
通过上述步骤,我们可以在Linux环境下成功地将Oracle 10G数据库的字符集从WE8ISO8859P1更改为ZHS16GBK。这对于支持中文环境下的数据处理具有重要意义,同时也为数据库的国际化提供了支持。需要注意的是,在进行此类...
对于已经安装并运行的Oracle 11g数据库,如果发现默认字符集不符合需求(例如默认为US7ASCII),则需要进行字符集的修改。下面将详细介绍修改Oracle 11g字符集的具体方法和步骤。 #### 1. 检查当前字符集设置 在...
针对这种情况,我们可以按照以下步骤来修改Oracle 11g数据库的字符集,使其更改为ZHS16GBK。 首先,确保你有数据库的系统管理员权限,因为修改字符集需要以SYSDBA身份进行。在Windows环境下,打开命令行窗口(cmd)...
Oracle 10g字符集设置是数据库管理中的一个重要环节,特别是在处理中文数据时,正确的字符集配置至关重要。在Windows环境下,Oracle 10g客户端的安装可能会遇到中文乱码问题,这通常是因为新安装的客户端与旧版本...
在Linux环境下手工创建Oracle 10g数据库是一项高级的IT操作,涉及到系统配置、环境变量设置、数据库参数调整以及脚本执行等多个环节。以下是对这一过程的详细解析,旨在为那些希望深入理解并掌握在Linux操作系统上...
Oracle字符集是数据库管理系统Oracle中的一个重要概念,它决定了数据库如何存储和处理文本数据。字符集不仅影响着数据的准确性和一致性,还与全球化应用、数据迁移和数据交换密切相关。本篇将深入探讨Oracle字符集的...
本篇文章将详细阐述在Oracle 10g RAC环境下如何修改字符集,同时,这些步骤也可以为修改其他数据库参数提供一定的参考。 首先,修改字符集前的准备工作至关重要。确保所有相关的数据和应用都已备份,并了解当前...
在Oracle 10g中,数据库字符集是在创建数据库时设定的,一般不建议后期修改。数据库字符集决定了CHAR、VARCHAR2、CLOB、LONG等数据类型的存储格式,同时也影响表名、列名和PL/SQL变量的表示。国家字符集(NATIONAL ...
修改Oracle 10g数据库的字符集是一项涉及多个步骤的复杂操作,需要仔细规划和谨慎执行。通过上述步骤,可以安全地将数据库的字符集从一个编码方案转换到另一个,以满足不断变化的业务需求。在整个过程中,保持数据的...
Oracle数据库系统支持多种字符集,以适应全球化的数据存储需求。字符集定义了数据库如何存储和显示字符,对于处理多语言环境尤为重要。在某些情况下,用户可能需要在客户端侧更改字符集,以便正确地显示或处理特定...
Oracle11g数据库安装手册 Oracle11g数据库安装手册是指Oracle11g数据库的安装全过程,涵盖了从安装文件的选择到数据库的启动的所有步骤。下面是详细的知识点: 一、安装前的准备 * 下载Oracle11g安装文件 * 了解...
Oracle 10g数据库在IBM AIX 5.3操作系统上的安装是一个复杂的过程,涉及到多个步骤和注意事项。本文将详细阐述这一过程,帮助你成功在AIX环境下搭建Oracle数据库。 首先,准备工作至关重要。确保你的AIX系统满足...
### Oracle10g数据库DBA2官方资料OCP #### Oracle Database 10g Manageability Goals Oracle Database 10g 引入了一系列管理性目标,旨在提高数据库系统的可管理性和自动化水平。这些目标包括: - **自动化例行...