Linux下更改oracle客户端字符集和服务端字符集
发布日期:2021-07-12 08:49:16 浏览次数:5 分类:技术文章

本文共 1562 字,大约阅读时间需要 5 分钟。

from:

Linux 下更改 oracle 客户端字符集和服务端字符集

 

1.Linux 下更改 oracle 客户端字符集,即设置环境变量“ NLS_LANG“ 的值

查看客户端字符集,在终端下执行:

echo $NLS_LANG

 

修改客户端字符集:

 

sudo gedit /etc/environment

在environment 文件中增加以下内容:

NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

export NLS_LANG

重新启动操作系统即可。

 

2. 修改 oracle 服务端的字符集。

查看服务端字符集:

select userenv('language') from dual;

 

修改服务端字符集,终端下执行:

$ORACLE_HOME/bin/sqlplus /nolog

进入sqlplus 命令行

 

SQL>conn / as sysdba;

 

1 ) . 关闭数据库

SQL>SHUTDOWN IMMEDIATE;

 

2 ) 启动到 Mount

STARTUP MOUNT;

ALTER SYSTEM ENABLE RESTRICTED SESSION;

ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

ALTER SYSTEM SET AQ_TM_PROCESSES=0;

ALTER DATABASE OPEN;

ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;

-- 下面一行语句可能会出现错误提示,可以不理会

ALTER DATABASE national CHARACTER SET INTERNAL ZHS16GBK;

 

SHUTDOWN IMMEDIATE;

STARTUP;

 

3. 修改 dmp 文件字符集

dmp 文件的第2 第3 字节记录了字符集信息,因此直接修改dmp 文件的第2 第3 字节的内容就可以‘骗’过oracle 的检查。这样做理论上也仅是从子集到超集可以修改,但很多情况下在没有子集和超集关系的情况下也可以修改,我们常用的一些字符集,如 US7ASCII ,WE8ISO8859P1 ,ZHS16CGB231280 ,ZHS16GBK 基本都可以改。因为改的只是dmp 文件,所以影响不大。

 

具体的修改方法比较多,最简单的就是直接用UltraEdit 修改dmp 文件的第2 和第3 个字节。比如想将dmp 文件的字符集改为ZHS16GBK ,可以用以下SQL 查出该种字符集对应的16 进制代码:

SQL> select to_char(nls_charset_id('ZHS16GBK'), 'xxxx') from dual;

 

0354

然后将dmp 文件的2 、3 字节修改为0354 即可。

 

 

 

 

Oracle 提供标准函数,对字符集名称及 ID 进行转换 : 

 

SQL> select nls_charset_id('ZHS16GBK') from dual;

NLS_CHARSET_ID('ZHS16GBK')

--------------------------

852

1 row selected.

 

SQL> select nls_charset_name(852) from dual;

NLS_CHAR

--------

ZHS16GBK

1 row selected.

 

十进制转换十六进制 :

SQL> select to_char('852','xxxx') from dual;

TO_CH

-----

354

转载于:https://www.cnblogs.com/wq3435/p/8024480.html

转载地址:https://blog.csdn.net/ankan7400/article/details/102088931 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Shiro-集成Spring
下一篇:Shiro-HelloWord

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月07日 10时56分03秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章