[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乱码问题,留待以后研究。

目录
相关文章
|
4月前
|
存储 JSON 关系型数据库
Pandas载入txt、csv、Excel、JSON、数据库文件讲解及实战(超详细 附源码)
Pandas载入txt、csv、Excel、JSON、数据库文件讲解及实战(超详细 附源码)
64 0
|
8月前
|
关系型数据库 MySQL 数据库
Mysql 创建数据库字符集与排序规则
Mysql 创建数据库字符集与排序规则
181 0
|
1月前
|
SQL Java 数据库连接
springboot解析txt文件顺便加到数据库中(nohup文件)
springboot解析txt文件顺便加到数据库中(nohup文件)
112 1
|
2月前
|
存储 关系型数据库 MySQL
【2024】新建mysql数据库,如何选择字符集和排序规则
【2024】新建mysql数据库,如何选择字符集和排序规则
156 1
|
8月前
|
编解码 数据库
程序连接数据库时使用了GBK字符集
程序连接数据库时使用了GBK字符集
61 1
|
11月前
|
SQL Oracle 关系型数据库
修改oracle数据库字符集
修改oracle数据库字符集
|
11月前
|
SQL Oracle 关系型数据库
oracle修改本机上数据库字符集
oracle修改本机上数据库字符集
|
11月前
|
Oracle Java 关系型数据库
Java操作oracle数据库提示:不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK,问题处理
Java操作oracle数据库提示:不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK,问题处理
622 0
|
关系型数据库 MySQL 数据库
【MySQL数据库】字符集与校对集
MySQL中提供了许多校对集,用于为不同字符集指定比较和排序规则。校对集的名称由“_”分隔的3部分组成,开头是对应的字符集,中间是国家名或general,结尾是ci、cs或bin。ci表示不区分大小写,cs表示区分大小写,bin表示以二进制方式比较。
182 0
|
存储 关系型数据库 MySQL
【MySQL】为什么MySQL 数据库内部使用的字符集是 ASCII 码?底层原理是什么?
【MySQL】为什么MySQL 数据库内部使用的字符集是 ASCII 码?底层原理是什么?
314 0

热门文章

最新文章