[20130106]整和数据库--修改字符集.txt-阿里云开发者社区

开发者社区> 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---数据库从入门走向大神系列(三)-修改数据库编码/DOS窗口编码
如何查看与修改数据库的编码,如何修改dos窗口的显示编码,都在本篇详细讲解。 查看当前数据库的编码: show variables where variable_name like 'character%'; 如果出现了中文乱码,我们只要看: character_set_client —客户端的编码 character_set_connection —连接的编码(传输时的编码) character_set_results — 最后的输出编码 只要保证这三个编码是相同的,且编码集有中文,中文就不会出现乱码。
1224 0
[20170111]设置无需口令登录数据库2.txt
[20170111]设置无需口令登录数据库2.txt --//上午测试无需口令登录数据库,这样连接数据库使用sqlplus /@book ,这样实际上通过网络连接数据库,哪怕是在本机也是这样。
773 0
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
8360 0
SQL脚本修改数据库名称
USE master; GO DECLARE @SQL VARCHAR(MAX); SET @SQL='' SELECT @SQL=@SQL+'; KILL '+RTRIM(SPID) FROM master.
728 0
mysql 5.7 修改数据库表
修改数据表 修改数据表是修改数据库中已经存在的数据表的结构。MySQL使用alter table 语句修改表。常用的修改表操作有:修改名,修改字段数据类型或字段名,增加和删除字段,修改字段的排列位置,更改表的存储引擎,删除表的外键约束。
1081 0
[20161228]linux修改网络配置问题.txt
[20161228]linux修改网络配置问题.txt --今天要修改一块网卡的网络配置,一般在修改前我习惯做一个备份,但是在我启动网络时,还是让我惊讶一下. --以下是我在测试环境做的测试: 1.
622 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
11605 0
mysql修改表、字段、库的字符集
mysql修改表、字段、库的字符集 修改数据库字符集: ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE .
948 0
[20121108]关于克隆数据库的问题.txt
[20121108]关于克隆数据库的问题.txt前几天在克隆数据库生产系统数据库时,遇到一个非常奇怪的问题,记录一下:克隆的机器口令文件,以及spfile以前都存在,实际上很简单,先停止旧数据库,然后改安装目录名(害怕还要使用!),再安装数据库:startup ...
668 0
+关注
lfreeali
熟悉oracle数据库性能优化,rman备份,数据库恢复技术.
2122
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载