oracle 修改字符集

前端之家收集整理的这篇文章主要介绍了oracle 修改字符集前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

转自:https://jingyan.baidu.com/article/c1465413af2fb20bfcfc4c3e.html

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服务端的配置存在问题。

C、server端字符集修改

*****************************************************************

* 更改字符集步骤方法(WE8ISO8859P1 --> ZHS16GBK) *

*****************************************************************

sql>

数据库启动到RESTRICTED模式下做字符集更改:

sql> conn /as sysdba@H_502_32@

Connected.

sql> shutdown immediate;@H_502_32@

Database closed.

Database dismounted.

ORACLE instance shut down.

sql> startup mount@H_502_32@

ORACLE instance started.

Total System Global Area 236000356 bytes

Fixed Size 451684 bytes

Variable Size 201326592 bytes

Database Buffers 33554432 bytes

Redo Buffers 667648 bytes

Database mounted.

sql> ALTER SYSTEM ENABLE RESTRICTED SESSION;@H_502_32@

System altered.

sql> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;@H_502_32@

System altered.

sql> ALTER SYSTEM SET AQ_TM_PROCESSES=0;@H_502_32@

System altered.

sql> alter database open;

Database altered.

sql> ALTER DATABASE CHARACTER SET ZHS16GBK;@H_502_32@

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;@H_502_32@

Database altered.

sql> select * from v$nls_parameters;@H_502_32@

19 rows selected.

重启检查是否更改完成:

sql> shutdown immediate;@H_502_32@

Database closed.

Database dismounted.

ORACLE instance shut down.

sql> startup@H_502_32@

ORACLE instance started.

Total System Global Area 236000356 bytes

Fixed Size 451684 bytes

Variable Size 201326592 bytes

Database Buffers 33554432 bytes

Redo Buffers 667648 bytes

Database mounted.

Database opened.

sql> select * from v$nls_parameters;@H_502_32@

19 rows selected.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

D、client端字符集修改

在 /home/oracle与 /root用户目录下的.bash_profile中

添加修改 export NLS_LANG="AMERICAN_AMERICA.UTF8@H_502_32@" 语句

关闭当前ssh窗口。

猜你在找的Oracle相关文章