背景

数据库字符集涉及的概念与知识非常多,本文继续学习;相关文章链接见下:

oracle数据库字符集characterset迁移及变更之csscan及csalter.plb系列三 
  http://blog.itpub.net/9240380/viewspace-1850149/

结论

1,al32utf8也可以通过csscan及csalter脚本转化为字符集zhs16gbk
  处理方法见下
2,如果仅要迁移数据库中部分数据到另一种字符集,可以在csscan指定user,
  然后把这些数据导入到目标数据库中即可

3,迁移数据库字符集要结合csscan及csalter脚本,缺一不可
4,如果源数据库中包括lengthb的存储过程,迁移字符集后,其状态仍是合理
  当然可能还是测试不够充分导致

5,迁移字符集后,相关一些对象也要注意重建或重新启用,以防影响业务

分析思路

测试

---字符集转化或变更后,lengthb及nvarchar2相关的代码或存储过程是否仍合理
-----源字符集是AL32UTF8
SQL> select parameter,value from nls_database_parameters where parameter='NLS_CHARACTERSET';

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_CHARACTERSET               AL32UTF8

SQL> conn scott/system
Connected.
SQL> create table t_migtest(a nvarchar2(10));

Table created.

SQL> insert into t_migtest values('我们');

1 row created.

SQL> commit;

Commit complete.

SQL> select a,dump(a) from t_migtest;

A                    DUMP(A)
-------------------- --------------------------------------------------
我们                 Typ=1 Len=6: 147,180,98,28,110,209

create or replace procedure proc_mig
as
v_length pls_integer;
begin
select lengthb(a) into v_length from t_migtest;
dbms_output.put_line(v_length);
end;
/

Procedure created.

SQL> exec proc_mig;
6

PL/SQL procedure successfully completed.

[oracle@seconary admin]$ csscan userid=\'sys/system as sysdba\' full=y tochar=ZHS16GBK array=1024000 process=10
中间略
. process 10 scanning CTXSYS.DR$PENDING
. process 1 scanning CTXSYS.DR$ONLINE_PENDING
. process 4 scanning CTXSYS.DR$PARALLEL
. process 3 scanning CTXSYS.DR$DBO
. process 9 scanning CTXSYS.DR$INDEX_CDI_COLUMN
. process 6 scanning EXFSYS.RLM$ERRCODE
. process 8 scanning CTXSYS.DR$SDATA_UPDATE
. process 1 scanning EXFSYS.RLM$RULESETSTCODE
. process 5 scanning EXFSYS.RLM$EVENTSTRUCT
. process 2 scanning EXFSYS.RLM$RULESET

Creating Database Scan Summary Report...

Creating Individual Exception Report...

Scanner terminated successfully.
[oracle@seconary admin]$ ll -l scan*
-rw-r--r-- 1 oracle oinstall  1357 Nov 30 05:36 scan.err
-rw-r--r-- 1 oracle oinstall 88850 Nov 30 05:36 scan.out
-rw-r--r-- 1 oracle oinstall  8693 Nov 30 05:36 scan.txt

[oracle@seconary admin]$ more scan.txt
Application Data:

USER.TABLE                                              Convertible       Truncation            Lossy
-------------------------------------------------- ---------------- ---------------- ----------------
SCOTT.T_CHARSET                                             524,289                0                0
SCOTT.T_CHARSET_BAK                                         524,288                0                0
SCOTT.T_VARCHAR                                                   1                0                0
-------------------------------------------------- ---------------- ---------------- ----------------

[oracle@seconary admin]$ exp userid=scott/system  file=exp_scott_multi_table.dmp tables=t_charset,t_charset_bak,t_varchar

Export: Release 11.2.0.1.0 - Production on Mon Nov 30 05:40:41 2015

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export done in ZHS16GBK character set and AL16UTF16 NCHAR character set
server uses AL32UTF8 character set (possible charset conversion)

About to export specified tables via Conventional Path ...
. . exporting table                      T_CHARSET     524289 rows exported
. . exporting table                  T_CHARSET_BAK     524288 rows exported
. . exporting table                      T_VARCHAR          1 rows exported
Export terminated successfully without warnings.

SQL> conn scott/system
Connected.
SQL> drop table t_charset purge;

Table dropped.

SQL> drop table t_charset_bak purge;

Table dropped.

SQL> drop table t_varchar purge;

Table dropped.

[oracle@seconary admin]$ rm -rf scan*
[oracle@seconary admin]$

[oracle@seconary admin]$ csscan userid=\'sys/system as sysdba\' full=y tochar=ZHS16GBK array=1024000 process=10

中间略
. process 3 scanning CTXSYS.DR$INDEX_CDI_COLUMN
. process 4 scanning CTXSYS.DR$SDATA_UPDATE
. process 7 scanning EXFSYS.RLM$RULESETSTCODE
. process 5 scanning EXFSYS.RLM$ERRCODE
. process 10 scanning EXFSYS.RLM$RULESET
. process 6 scanning EXFSYS.RLM$EVENTSTRUCT

Creating Database Scan Summary Report...

Creating Individual Exception Report...

oracle@seconary admin]$ more scan.txt
Application Data:

USER.TABLE                                              Convertible       Truncation            Lossy
-------------------------------------------------- ---------------- ---------------- ----------------
-------------------------------------------------- ---------------- ---------------- ----------------

[Distribution of Convertible, Truncated and Lossy Data by Column]

Data Dictionary Tables:

USER.TABLE|COLUMN                                       Convertible       Truncation            Lossy
-------------------------------------------------- ---------------- ---------------- ----------------
-------------------------------------------------- ---------------- ---------------- ----------------

XML CSX Dictionary Tables:

USER.TABLE|COLUMN                                       Convertible       Truncation            Lossy
-------------------------------------------------- ---------------- ---------------- ----------------
-------------------------------------------------- ---------------- ---------------- ----------------

Application Data:

USER.TABLE|COLUMN                                       Convertible       Truncation            Lossy
-------------------------------------------------- ---------------- ---------------- ----------------
-------------------------------------------------- ---------------- ---------------- ----------------

[Indexes to be Rebuilt]

[oracle@seconary admin]$ cd /oracle/product/11.2.0/db_1/rdbms/admin
[oracle@seconary admin]$ sqlplus '/as sysdba'

SQL*Plus: Release 11.2.0.1.0 Production on Mon Nov 30 05:46:27 2015

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> @@csalter.plb

0 rows created.

Function created.

Function created.

Procedure created.

This script will update the content of the Oracle Data Dictionary.
Please ensure you have a full backup before initiating this procedure.
Would you like to proceed (Y/N)?Y
old   6:     if (UPPER('&conf') <> 'Y') then
new   6:     if (UPPER('Y') <> 'Y') then
Checking data validity...
begin converting system objects

PL/SQL procedure successfully completed.

Alter the database character set...
CSALTER operation completed, please restart database

PL/SQL procedure successfully completed.

0 rows deleted.

Function dropped.

Function dropped.

Procedure dropped.

SQL>

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 1653518336 bytes
Fixed Size                  2213896 bytes
Variable Size             922748920 bytes
Database Buffers          721420288 bytes
Redo Buffers                7135232 bytes
Database mounted.
Database opened.

SQL> select parameter,value from nls_database_parameters where parameter='NLS_CHARACTERSET';

PARAMETER                      VALUE
------------------------------ ------------------------------
NLS_CHARACTERSET               ZHS16GBK

[oracle@seconary admin]$ imp userid=scott/system  file=exp_scott_multi_table.dmp tables=t_charset,t_charset_bak,t_varchar

Import: Release 11.2.0.1.0 - Production on Mon Nov 30 05:59:21 2015

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

Export file created by EXPORT:V11.02.00 via conventional path
import done in ZHS16GBK character set and AL16UTF16 NCHAR character set
. importing SCOTT's objects into SCOTT
. importing SCOTT's objects into SCOTT
. . importing table                    "T_CHARSET"     524289 rows imported
. . importing table                "T_CHARSET_BAK"     524288 rows imported
. . importing table                    "T_VARCHAR"          1 rows imported
Import terminated successfully without warnings.
[oracle@seconary admin]$

SQL> select status,count(*) from user_objects group by status;

STATUS    COUNT(*)
------- ----------
VALID           12

SQL> col dump(a) for a50
SQL> select a,dump(a) from t_migtest;

A                    DUMP(A)
-------------------- --------------------------------------------------
我们                 Typ=1 Len=6: 147,180,98,28,110,209

SQL> set serveroutput on
SQL> exec proc_mig;
6

PL/SQL procedure successfully completed.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-1850408/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9240380/viewspace-1850408/

oracle数据库字符集characterset迁移及变更之csscan及csalter.plb系列四相关推荐

  1. oracle数据库字符集characterset迁移及变更之csscan及csalter.plb系列三

    背景 本文主要熟悉下如何用csscan以及csalter脚本变更数据库字符集,进一步理解如何调整数据库字符集的知识. 之前的相关文章链接: oracle10g_csscan_更变数据库字符集及国家字符 ...

  2. [Oracle数据库] oracle数据库字符集characterset迁移及变更之csscan及csalter.plb系列三

    背景 本文主要熟悉下如何用csscan以及csalter脚本变更数据库字符集,进一步理解如何调整数据库字符集的知识. 之前的相关文章链接: oracle10g_csscan_更变数据库字符集及国家字符 ...

  3. Oracle迁移到mysql字符集_oracle数据库字符集characterset迁移及变更系列一

    背景 oracle数据库字符集和应用数据密切相关,数据库迁移也会涉及到数据库字符集的转换,大家常常听到的乱码之类的,导出导入表发生列长度不足的错误,也和数据库字符集不无关系, 本文我沿袭前文:http ...

  4. oracle怎么将一列挪到另一列,详细讲解Oracle数据库的数据迁移方法

    <详细讲解Oracle数据库的数据迁移方法>由会员分享,可在线阅读,更多相关<详细讲解Oracle数据库的数据迁移方法(4页珍藏版)>请在人人文库网上搜索. 1.详细讲解 Or ...

  5. 理解ORACLE数据库字符集

    一.引言     ORACLE数据库字符集,即Oracle全球化支持(Globalization Support),或即国家语言支持(NLS)其作用是用本国语言和格式来存储.处理和检索数据.利用全球化 ...

  6. ORACLE使用copy方式存储迁移,详细讲解Oracle数据库的数据迁移方法

    添加所需的表空间和用户到目标数据库中:安装所需的SQL*Net2或者Net8软件,并配置用于连接数据库的别名. 在DOS命令提示符下设置oracle_sid=Oracle7_sid. 以Interna ...

  7. ORACLE数据库字符集

    ORACLE数据库字符集 一.字符集基本知识 二.查询oracle server端的字符集 三.修改oracle的字符集 字符集基本知识 1.基本认知 ORACLE数据库字符集,即Oracle全球化支 ...

  8. 关于Oracle数据库字符集的选择及乱码情况

    关于Oracle数据库字符集的选择及乱码情况 背景: 在项目上,开发人员在安装Oracle数据库时采用的默认的编码集,导致后期正式运行时出现某些生僻字和中文符号. 出现乱码.出现的情况就是某些生僻字或 ...

  9. Oracle数据库迁移测试数据,Oracle数据库的数据迁移方法

    Oracle数据库的数据迁移方法 发表于:2008-04-14来源:作者:点击数: 随着数据库管理系统和操作系统平台的更新换代的速度的加快,数据库管理员经常需要在两个不同的数据库之间或在两种不同的系统 ...

最新文章

  1. ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性
  2. SQL 2014 in-memory中的storage部分
  3. C#/Net代码精简优化技巧(3)
  4. Android禁止横屏竖屏切换
  5. ps背景不变换字_PS教程:复杂背景中,如何利用通道轻松抠出发丝?
  6. 视频光端机音频出现噪音是为何?
  7. Ubuntu16.04安装
  8. 续:跨平台版本迁移之 XTTS 方案操作指南
  9. phpmyadmin在nginx环境下配置错误
  10. python print return不同_Python中return和print的作用及区别
  11. matlab函数小结----数组区
  12. Ubuntu20.04安装qt详细教程
  13. 手机传感器数据导出_旧手机先别扔丨简单改造秒变黑科技监测器
  14. LapSRN 超分辨率
  15. 求多个数的最大公因数和最小公倍数
  16. “Spark三剑客”之SparkCore和SparkSql学习笔记(零基础入门)(一)
  17. Shell中的expr命令
  18. Java 项目开发团队分配管理软件
  19. 【网络安全】利用MSF工具内网复现MS08-067
  20. 第一次用计算机证明的数学定理是,勾股定理是一个基本几何定理,是人类早期发现并证明的重要数学定理之一,用代数思想解决几何...

热门文章

  1. 前端(Web)是什么?做什么工作?包括什么技术?
  2. 抖音获取在线主播房间号和抖音号,再获取抖音主播在线观看用户信息
  3. mysql数据库操作命令笔记
  4. 数据结构 关于树的几个证明题及代码实现
  5. U盘文件不显示U盘中毒隐藏属性无法修改的原理及解决
  6. MATLAB利用FIR滤波器创建二维滤波器
  7. 第二章(1.2)windows下python安装教程
  8. 1.InfluxDB简介与安装
  9. c语言炸弹人小游戏,Unity初级案例 - 炸弹人
  10. C语言写炸弹人小游戏