一、看源数据库编码:
[db2inst2@db2 bak]$ db2 get db cfg
数据库 的数据库配置
数据库配置发行版级别 = 0x0d00
数据库发行版级别 = 0x0d00
数据库地域 = CN
数据库代码页 = 1386
数据库代码集 = GBK
数据库国家/地区代码 = 86
数据库整理顺序 = UNIQUE
备用整理顺序 (ALT_COLLATE) =
数字兼容性 = OFF
Varchar2 兼容性 = OFF
日期兼容性 = OFF
数据库页大小 = 4096
二、导出建表DDL语句:
[db2inst2@db2 bak]$ db2look -d DHEPSDB1 -e -l -o db.sql
-- 未指定用户标识,db2look 试图使用环境变量 USER
-- USER 是: DB2INST2
-- 正在创建表的 DDL
-- 输出被发送到文件: db.sql
[db2inst2@db2 bak]$ vi db.sql
删除去已建表空间,修改连接数据库名(略)
三、导出数据库数据文件
[db2inst2@db2 bak]$ export LANG=zh_CN.GBK
[db2inst2@db2 bak]$ db2move DHEPSDB1 export
四、新建目标数据库 DHBAK
[db2inst2@db2 bak]$ db2 create database DHBAK using codeset GBK territory CN
五、导入数据库建表语句:
[db2inst2@db2 bak]$ db2 -tsvf db.sql
六、Load快速载入数据库文件
[db2inst2@db2 bak]$ db2move DHBAK load
七、检查数据完整性的表的执行语句
[db2inst2@db2 bak]$ db2 "select tabname,status from syscat.tables where TABSCHEMA='GHACEPS1'"
如果表状态为“C“,刚需要检查数据完整性
如下:生成单个执行完整性检查SQL(注意此方法存在有多表交叉依赖的情况,具体解决方法在后面)
[db2inst2@db2 bak]$ db2 "select 'db2 set integrity for ghaceps1.'||TABNAME||' immediate checked' from syscat.tables where TABSCHEMA='GHACEPS1' and STATUS='C'"
八、生成检查完整性语句批处理:
[db2inst2@db2 bak]$ more 123.sql
EXPORT TO 345.sql OF DEL MODIFIED BY nochardel
with gen(tabname, seq) as( select rtrim(tabschema) || '.' || rtrim(tabname)
as tabname, row_number() over (partition by status) as seq
from syscat.tables
WHERE status='C' ),r(a, seq1) as (select CAST(tabname as VARCHAR(3900)), seq
from gen where seq=1 union all select r.a || ','|| rtrim(gen.tabname), gen.seq
from gen , r where (r.seq1+1)=gen.seq ), r1 as (select a, seq1 from r)
select 'SET INTEGRITY FOR ' || a || ' IMMEDIATE CHECKED;' from r1
where seq1=(select max(seq1) from r1);
[db2inst2@db2 bak]$ db2 -tsvf 123.sql
九、执行 345.sql批处理完成表检查
#db2 -tsvf 345.sql
十、检查所表表状态的执行语句
[db2inst2@db2 bak]$ db2 "select tabname,status from syscat.tables where TABSCHEMA='GHACEPS1'"
阅读(2442) | 评论(0) | 转发(0) |