云服务器网:购买云服务器和VPS必上的网站!

oracle查看字符集后修改oracle服务端和客户端字符集的步骤

1.oracle server端字符集查询
select userenv(language) from dual;server字符集修改:
将数据库启动到RESTRICTED模式下做字符集更改:
SQL>

1.oracle server端字符集查询


select userenv(’language’) from dual;


server字符集修改


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


SQL>conn /as sysdba


SQL>shutdown immediate;


SQL>startup mount


SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;


SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;


SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;


SQL>alter database open;


SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;


ALTER DATABASE CHARACTER SET ZHS16GBK ERROR at line 1:


ORA⑴2712: new character set must be a superset of old character set


提示我们的字符集:新字符集一定要为旧字符集的超集,这时候我们可以跳过超集的检查做更改:


SQL>ALTER DATABASE character set INTERNAL_USE ZHS16GBK;


SQL>select * from v$nls_parameters;


重启检查会不会更改完成:


SQL>shutdown immediate;


SQL>startup


SQL>select * from v$nls_parameters;


我们看到这个进程和之前ALTER DATABASE CHARACTER SET操作的内部进程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使Oracle数据库绕过了子集与超集的校验


这一方法在某些方面是有用途的,比如测试;利用于产品环境时大家应当谨慎,可能会有一些意外的问题。


2.oracle client端字符集修改



$echo$NLS_LANG


client字符集修改:


在 /home/oracle与 /root用户目录下的.bash_profile中添加或修改 export NLS_LANG=”AMERICAN_AMERICA.UTF8″ 语句


关闭当前ssh窗口。


注意:NLS_LANG变量一定要配置正确否则会引发sqlplus失效。


3.修改数据库字符集为UTF⑻


1.以DBA登录


2.履行转换语句:



SHUTDOWN IMMEDIATE;


STARTUP MOUNT EXCLUSIVE;


ALTER SYSTEM ENABLE RESTRICTED SESSION;


ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;


ALTER SYSTEM SET AQ_TM_PROCESSES=0;


ALTER DATABASE OPEN;


ALTER DATABASE NATIONAL CHARACTER SET UTF8;


SHUTDOWN IMMEDIATE;


STARTUP;


注意:如果没有大对象,在使用进程中进行语言转换没有甚么影响!


可能会出现ORA⑴2717:CANNOT ALTER DATABASE NATIONAL CHARACTER SET WHEN NCLOBDATAEXISTS, 解决这个问题的方法


利用INTERNAL_USE 关键字修改区域设置


ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;

本文来源:https://www.yuntue.com/post/152854.html | 云服务器网,转载请注明出处!

关于作者: yuntue

云服务器(www.yuntue.com)是一家专门做阿里云服务器代金券、腾讯云服务器优惠券的网站,这里你可以找到阿里云服务器腾讯云服务器等国内主流云服务器优惠价格,以及海外云服务器、vps主机等优惠信息,我们会为你提供性价比最高的云服务器和域名、数据库、CDN、免费邮箱等企业常用互联网资源。

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注