修改Oracle NLS_CHARACTERSET字符集

本文介绍了如何修改Oracle数据库的NLS_CHARACTERSET字符集,涉及使用sys用户登录、限制模式启动数据库、设置SQL_TRACE、修改字符集以及处理可能遇到的错误。通过ALTER DATABASE语句,可以将数据库字符集更改为指定的字符集,如JA16SJIS,并在遇到超集检查错误时使用INTERNAL_USE选项。
部署运行你感兴趣的模型镜像

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;


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

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值