加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

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

发布时间:2021-12-07 18:34:18 所属栏目:教程 来源:互联网
导读:1.oracle server端字符集查询 复制代码 代码如下: select userenv(language) from dual; server字符集修改: 将数据库启动到RESTRICTED模式下做字符集更改: 复制代码 代码如下: SQLconn /as sysdba SQLshutdown immediate; SQLstartup mount SQLALTER SYST
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-12712: 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-8
 
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-12717:CANNOT ALTER DATABASE NATIONAL CHARACTER SET WHEN NCLOBDATAEXISTS, 解决这个问题的方法
 
利用INTERNAL_USE 关键字修改区域设置
 
复制代码 代码如下:
 
 
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读