修改Oracle字符集

新安装的数据库,导入数据之后,发现插入汉字部分是乱码。由于本地数据时正常显示的,没有乱码。因此断定是数据库字符集的问题。

1、  查看数据库的字符集:

发现是西欧编码、8位(一个字节)、ISO标准8859P1编码。他的编码方案是适合欧洲大部分国家。

又查询了一下本地数据库的编码格式,发现是ZHS16GBk编码格式。

在这里解释一下字符集,Oracel最早支持的编码方案是US7ASCII。

再解释一下Oracle字符集的命名遵循以下命名规则:

<Language><bit size><encoding>

即:<语言><比特位数><编码>

比如:ZHS16GBK表示采用GBK编码、16位(两个字节)简体中文字符集。

现在已经发现问题原因,下面就是如何修改Oracle的字符集。

2、  修改数据库字符集

数据库字符集在创建后原则上不能修改,因为字符集是在数据创建时指定的。可以指定

NLS_CHARACTERSET              ZHS16GBK表示字符集

NLS_NCHAR_CHARACTERSET        AL16UTF16国家字符集

在这里总结两种方法:

(1)通常需要导出数据库数据,重建数据库,再导入数据库数据的方式来转换。

(2)通过ALTER DATABASE CHARACTER SET 语句修改字符集,但创建数据库后修改字符集是有限的,只有新的字符集是当前字符集的超集时才能修改字符集,例如UTF8是US7ASCII的超集,修改数据库字符集可使用ALTER DATABASE CHARACTER SET UTF8。现在只介绍方法二。

首先用管理员用户与数据库建立连接。

SQL> shutdown immediate;

Databaseclosed.

Databasedismounted.

ORACLEinstance shut down.

SQL> startup mount;

ORACLEinstance started.

TotalSystem Global Area 1140850688 bytes

FixedSize                  2020224 bytes

VariableSize             301993088 bytes

DatabaseBuffers          822083584 bytes

RedoBuffers               14753792 bytes

Databasemounted.

SQL> ALTER SESSION SET SQL_TRACE=TRUE;

Sessionaltered.

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;

Systemaltered.

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

Systemaltered.

SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;

Systemaltered.

SQL> alter database open;

Databasealtered.

SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;

ALTERDATABASE CHARACTER SET ZHS16GBK

*

ERROR atline 1:

ORA-12712:new character set must be a superset of old character set

碰到这个问题是必然的,可以不理会这这个错误,可以路过超集的检查。

SQL>ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

Databasealtered.

SQL>shutdown immediate;

Databaseclosed.

Databasedismounted.

ORACLEinstance shut down.

SQL> startup

ORACLEinstance started.

TotalSystem Global Area 1140850688 bytes

FixedSize                  2020224 bytes

VariableSize             301993088 bytes

DatabaseBuffers          822083584 bytes

RedoBuffers               14753792 bytes

Databasemounted.

Databaseopened.

3、  修改之后验证

(1)修改之前状态:


SQL>  select * from v$nls_parameters;

PARAMETER                                                       VALUE

--------------------------------------------------------------------------------------------------------------------------------

NLS_LANGUAGE                                                    SIMPLIFIED CHINESE

NLS_TERRITORY                                                   CHINA

NLS_CURRENCY                                                   ¥

NLS_ISO_CURRENCY                                                 CHINA

NLS_NUMERIC_CHARACTERS                                           .,

NLS_CALENDAR                                                    GREGORIAN

NLS_DATE_FORMAT                                                 DD-MON-RR

NLS_DATE_LANGUAGE                                               SIMPLIFIED CHINESE

NLS_CHARACTERSET                                                ZHS16GBK

NLS_SORT                                                        BINARY

NLS_TIME_FORMAT                                                  HH.MI.SSXFFAM

NLS_TIMESTAMP_FORMAT                                            DD-MON-RR HH.MI.SSXFF AM

NLS_TIME_TZ_FORMAT                                              HH.MI.SSXFF AM TZR

NLS_TIMESTAMP_TZ_FORMAT                                          DD-MON-RRHH.MI.SSXFF AM TZR

NLS_DUAL_CURRENCY                                               

NLS_NCHAR_CHARACTERSET                                          AL16UTF16

NLS_COMP                                                         BINARY

NLS_LENGTH_SEMANTICS                                            BYTE

NLS_NCHAR_CONV_EXCP                                             FALSE

19 rows selecte

4、  删除原来的数据,重新导入新的数据

修改字符集之后,里面的数据任然是乱码,因此需要重新导入数据。

时间: 2024-10-06 03:49:30

修改Oracle字符集的相关文章

如何修改Oracle字符集

一.什么是Oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台. 影响Oracle数据库字符集最重要的参数是NLS_LANG参数. 它的格式如下: NLS_LANG = language_territory.charset 它有三个组成部分(语言.地域和字符集),每个成分控制了NL

centos修改oracle字符集

1.首先以sysdba的身份登录上去 conn /as sysdba2.关闭数据库shutdown immediate;3.以mount打来数据库,startup mount4.设置session SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;5.启动数据库alter databas

查看、修改oracle字符集,查看oracle版本

1.查看数据库字符集 数据库服务器字符集select * from nls_database_parameters,其来源于props$,是表示数据库的字符集. 客户端字符集环境select * from nls_instance_parameters,其来源于v$parameter, 表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表 会话字符集环境 select * from nls_session_parameters,其来源于v$nls_parameters,表示会话自己的设

修改oracle字符集将字符编码WE8MSWIN1252修改为AL32UTF8

本方法根据我目前掌握的知识只能应用于新库,有数据的库不建议使用 SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup mount; ORACLE instance started. Total System Global Area 918618112 bytes Fixed Size 2258640 bytes Variable Size 549

修改 Oracle 数据库实例字符集

?  简介 在 Oracle 中创建数据库实例后,就会有对应使用的编码字符集.当我们设置的字符集与操作系统或者其他软件字符集不一致时,就会出现中文乱码等情况.此时我们就需要修改 Oracle 数据库使用的字符集,下面是修改 Oracle 字符集的具体步骤: Oracle 一般使用以下两种字符集: 1.   SIMPLIFIED CHINESE_CHINA.ZHS16GBK GBK 16-bit Simplified Chinese 能够支持繁体中文,并且按照2个字符长度存储一个汉字. 2.  

更改oracle字符集

修改oracle字符集 方法/步骤 oracle数据库的字符集更改 A.oracle server 端 字符集查询  select userenv('language') from dual 其中NLS_CHARACTERSET 为server端字符集 NLS_LANGUAGE 为 server端字符显示形式 B.查询oracle client端的字符集  $echo $NLS_LANG 如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集.

修改Oracle数据库字符集

Oracle数据库字符集在创建后原则上不能更改.如果需要修改字符集,通常需要导出数据库数据,重建数据库,再导入数据库数据的方式来转换,或通过ALTER DATABASE CHARACTER SET语句修改字符集,但创建数据库后修改字符集是有限制的,只有新的字符集是当前字符集的超集时才能修改数据库字符集,例如UTF8是US7ASCII的超集,修改数据库字符集可使用 ALTER DATABASE CHARACTER SET UTF8 Oracle 字符集的查看和修改 一.什么是Oracle字符集 O

Oracle字符集的查看查询和Oracle字符集的设置修改

本文主要讨论以下几个部分:如何查看查询oracle字符集. 修改设置字符集以及常见的oracle utf8字符集和oracle exp 字符集问题. 一.什么是Oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台. 影响Oracle数据库字符集最重要的参数是NLS_LANG参数.

ORACLE学习之九 Oracle 字符集的查看和修改 (转帖)

一.什么是Oracle字符集 Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系.ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据.它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台. 影响Oracle数据库字符集最重要的参数是NLS_LANG参数. 它的格式如下: NLS_LANG = language_territory.charset 它有三个组成部分(语言.地域和字符集),每个成分控制了NL