欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-22 15:12:46
1.oracle server端字符集查询复制代码 代码如下:select userenv('language') from dual; server字符集修改: 将数...

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;