`
tooby
  • 浏览: 110267 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

修改Oracle NLS_CHARACTERSET字符集

    博客分类:
  • SQL
 
阅读更多

NLS_CHARACTERSET是数据库字符集,NLS_NCHAR_CHARACTERSET是国家字符集
ORACLE中有两大类字符型数据,VARCHAR2是按照数据库字符集来存储数据。而NVARCHAR2是按照国家字符集存储数据的。同样,CHAR和NCHAR也一样,一是数据库字符符,一是国家字符集。
字符集不同,二进制码的组合就不同。

 

首先用sys用户登陆oracle
#sqlplus /nolog
SQL>conn sys/sys@score as sysdba;
 


查看服务器端字符集:
SQL>SELECT * FROM NLS_DATABASE_PARAMETERS;
看输出的NLS_CHARACTERSET 字段值,我原来的值是ISO88什么的,不正确。正确的一般服务器端为:ZHS16GBK,客户端也为:ZHS16GBK。
修改开始
 
先停止本数据库服务:
SQL>shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
这些信息是更改正确字符集后的提示信息,一般应该是英文的)

 

再启动数据库

SQL>startup   restrict;   此处要注意启动方式要加 restrict参数
ORACLE 例程已经启动。

Total System Global Area  603979776 bytes
Fixed Size                  1220796 bytes
Variable Size             180358980 bytes
Database Buffers          415236096 bytes
Redo Buffers                7163904 bytes
数据库装载完毕。
数据库已经打开。

 

修改字符集

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 JA16SJIS;
 Database altered.

有时执行alter database character set JA16SJIS;语句时会报错:

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

意思是新字符集不是原字符集超集,例如原字符集为ZHS16CGB231280,新字符集zhs16gbk,虽然新字符集比原字符集大,但不存在父子关系,通过以下语句会跳过超集检查:

SQL> alter database character set INTERNAL_USE JA16SJIS;  

 

重启数据库

SQL> shutdown immediate;

SQL> startup;


没错误提示就成功了。
 
 
再此查看服务器端和客户端字符集设置应该已经修该过来了
分享到:
评论

相关推荐

    修改Oracle字符集(character set)

    本方法适用于Oracle9i, 10g以及XE.... 一种办法是先将数据库导出, 修改完字符集后再导入; 另一种办法就是不管他, 就那样使用. 一般如果是一个测试环境, 像方法二那样就可以了, 但是可能某些表无法读取, 需要注意.

    Linux下Oracle设置定时任务备份数据库的教程

    1、查看数据库的字符集 数据库的字符集必须和Linux下设置的环境变量一致,不然会有乱码。 以下两个sql语句都可以查到: select * from nls_database_parameters t where t.parameter='NLS_CHARACTERSET'; select * ...

    查看oracle数据库的编码及修改编码格式的方法

    这其来源于props$,这是表示数据库的字符集。 oracle客户端编码 SQL> select * from nls_instance_parameters where parameter='NLS_LANGUAGE'; PARAMETER ——————– VALUE ——————–

    数据库服务器字符集更改步骤

    10 数据库服务器字符集更改步骤 问题描述: 在客户端插入字符“咪咪”,从数据库中查询显示时出现乱码 处理步骤: 10.1 对数据库做全库导出,备份全库数据,以防故障发生 首先设定客户端的字符集,必须以ZHS16GBK的...

    oracle查询字符集语句分享

    (1)查看字符集(三条都是等价的) 代码如下:select * from v$nls_parameters where parameter=’NLS_CHARACTERSET’select * from nls_database_parameters where parameter=’NLS_CHARACTERSET’select * from ...

    oracle 字符集

    oracle字符集格式说明,NLS_LANG=<Language>_<Territory>.<Clients Characterset>

    oracle详解

    NLS_CHARACTERSET:ZHS16GBK是当前数据库的字符集。 我们再来查看客户端的字符集信息: 客户端字符集的参数NLS_LANG=_< territory >. language:指定oracle消息使用的语言,日期中日和月的显示。 Territory:指定...

    Linux系统下导出ORACLE数据库出现Exporting questionable statistics.错误 处理

    环境:A机器和B机器都是LINUX系统,但由于B机器已经空间不足,所以停掉不停... select *from nls_database_parameters t where t.parameter=’NLS_CHARACTERSET’; 或 selct *from v$nls_parameters where par

    Orace查询数据出现乱码的问题解决思路

    环境 Oracle 数据库字符集: Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 Connected as scott SQL> SELECT * FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME = ‘NLS_CHARACTERSET’;...

    ORACLE精品脚本笔记

    找ORACLE字符集 <br>select * from sys.props$ where name='NLS_CHARACTERSET'; <br>15. 监控 MTS <br>select busy/(busy+idle) "shared servers busy" from v$dispatcher; <br>此值大于0.5时,...

Global site tag (gtag.js) - Google Analytics