ORACLE字符集

ORACLE字符集

一,什么是oracle字符集

oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。

有三部分组成(语言,地域,字符集)每个成分控制了NLS子集的特性

Language:指定服务器消息的语言,territory:指定服务器的日期和数字格式

charset:指定字符集。如:AMERICAN_AMERICA.ZHS16GBK

nls_lang的组成可以看出,真正影响数据库字符集的其实是第三部分。所以两个数据库之间的字符集只要是第三部分相同,那么就可以相互的导入与导出,前面影响的只是国家的语言比如,是中文还是英文等等。

二,查看oracle数据库字符集

分成三部分查看

1oracle服务器端字符集

2oracle客户端字符集

3dmp文件的字符集

在做oracle数据库导入导出的时候需要这三个字符集都一致才能正确导入

1,查询oracle SERVER端查看字符集

select     userenv('language') from dual;

2.查看dmp文件字符集

dmp文件的第2和第3个字节记录了dmp文件的字符集

cat full.dmp|od-x|head -1|awk '{print $2 $3}'|cut -c 3-6

selectnls_charset_name(to_number('0354','xxxx')) from dual

3,查看客户端字符集

echo $NLS_LANG

查看数据字符集

SERVER

select * fromnls_database_parameters

CLIENT

select * fromnls_instance_parameters

SESSION

select * fromnls_session_parameters

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

select * fromnls_database_parameters

select * fromprops$;

select * fromv$nls_parameter

查询结果中NLS_CHARACTERSET表示字符集

           NLS_NCHAAR_CHARACTERSET表示国家字符集

启动到Mount

SQL>STARTUP MOUNT;

SQL>ALTER SYSTEM ENABLE RESTRICTEDSESSION;

SQL>ALTER SYSTEM SETJOB_QUEUE_PROCESSES=0;

SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;

SQL>ALTER DATABASE OPEN;

--这里可以从父集到子集

SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;

SQL>ALTER DATABASE NATIONAL CHARACTER SETAL16UTF16;

--如果是从子集到父集,需要使用INTERNAL_USE 参数,跳过超子集检测

SQL>ALTER DATABASE CHARACTER SETINTERNAL_USE AL32UTF8;

SQL>ALTER DATABASE NATIONAL CHARACTER SETINTERNAL_USE AL16UTF16;

 

SQL>SHUTDOWN IMMEDIATE;

SQL>STARTUP

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值