开发者社区> lfreeali> 正文

[20130106]整和数据库--修改字符集.txt

简介: [20130106]整和数据库--修改字符集.txt工作需要,需要把几个数据库合并在一起,由于以前数据库使用的字符集是AMERICAN_AMERICA.US7ASCII,而现在的数据库使用SIMPLIFIED CHINESE_CHINA.ZHS16GBK,整合的时候需要修改字符集,统一到字符集SIMPLIFIED CHINESE_CHINA.ZHS16GBK。
+关注继续查看
[20130106]整和数据库--修改字符集.txt

工作需要,需要把几个数据库合并在一起,由于以前数据库使用的字符集是AMERICAN_AMERICA.US7ASCII,而现在的数据库使用
SIMPLIFIED CHINESE_CHINA.ZHS16GBK,整合的时候需要修改字符集,统一到字符集SIMPLIFIED CHINESE_CHINA.ZHS16GBK。

自己google看了一些blog和文档,最终选择这个方式,自己做一个记录:英文字符集转化到中文字符集。当然这个转化的前提
条件是应用表中字段没有clob字段类型。

1.转换方法:
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET aq_tm_processes=0;
ALTER DATABASE OPEN;
update sys.props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET';
commit;
--update sys.props$ set value$='AL16UTF16' where name='NLS_NCHAR_CHARACTERSET';
--commit;

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=10;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;

COL VALUE NEW_VALUE CHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_CHARACTERSET';

COL VALUE NEW_VALUE NCHARSET
SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';

ALTER DATABASE CHARACTER SET INTERNAL_USE &CHARSET;
--ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE &NCHARSET;


2.CLOB字段问题:
实际上这种转换是存在一些小问题的,应用表如果有clob字段(其他字段类型目前不是很清楚是否存在这个问题),显示clob的内容
会存在乱码!如果这些表不多可以采用exp/imp方式(注意导出的文件要做一些小修改)
[注:修改dmp文件00 01 => 03 54,注意2,3字节,以及07 do前面的两处。这种包含clob字段没有测试过]

即使这样,system,sys用户依旧存在一些字段是clob类型的,无法避开这些字段显示出现乱码,这不过对应用影响不大。
SELECT owner, table_name, column_name
  FROM dba_tab_cols
 WHERE data_type = 'CLOB' and table_name not like 'V_%';

执行
select * from sys.METASTYLESHEET;
字段STYLESHEET显示的就是乱码。

SELECT   owner, table_name, COUNT (*)
    FROM (SELECT owner, table_name, column_name
            FROM dba_tab_cols
           WHERE data_type = 'CLOB' AND table_name NOT LIKE 'V_%')
GROUP BY owner, table_name
ORDER BY 1, 2
大约19X个,不过许多是空表。还有一些视图,不过我懒的去解决这些问题,好像对应用影响不大。

关于clob乱码问题,留待以后研究。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
冬季实战营第三期:MySQL数据库进阶实战
冬季实战营第三期:MySQL数据库进阶实战
4 0
如何使用云数据库持久保存用户的数据(补充)
这篇文章是针对于之前写的一篇付费文章《如何在小游戏制作工具中使用云数据库持久保存用于的数据》的补充。
5 0
什么是云开发以及使用云开发时的一些“坑”
可能很多人不明白“云开发”到底是个什么东西,举个例子,在以前如果你要做一款可以多人联网同时在线玩的小游戏,是一件非常非常难的事,因为你需要客户端(根据不同的平台这里的客户端可能指的是手机,电脑或是其他的平台),还需要服务器,这是两个完全不同的领域。
5 0
数据库怎么选型?
数据库怎么选型?
1 0
实战营第三期:MySQL数据库进阶实战
实战营第三期:MySQL数据库进阶实战
4 0
为什么要做安全加固?
为什么要做安全加固?
3 0
第一期学习报告
第一期学习报告
3 0
冬季实战营第三期:MySQL数据库进阶实战
冬季实战营第三期:MySQL数据库进阶实战
3 0
+关注
lfreeali
熟悉oracle数据库性能优化,rman备份,数据库恢复技术.
2122
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载