数据迁移
准备迁移目标库用户和模式
disql CREATE USER "XXXOABAK" IDENTIFIED BY "xxx@2023" DEFAULT TABLESPACE "XXXOA_TAB" DEFAULT INDEX TABLESPACE "XXXOA_IDX_TAB"; grant "RESOURCE","PUBLIC","VTI","SOI","SVI" to "XXXOABAK"; grant CREATE SESSION to "XXXOABAK"; |
全库备份和业务数据备份
全库备份
disql backup database FULL backupset '/bak/dmbak/full/DB_DMDB_FULL_2023_06_22_00_51' task thread 32 parallel 8; |
dexp userid=SYSDBA/SYSDBA FILE=/home/dmdba/xxx230622.dmp LOG=/home/dmdba/xxx230622.log schemas=xxx parallel=32 TABLE_PARALLEL=2 |
清理目标用户
drop user xxx cascade; |
备份库恢复备份数据
dimp userid=XXXOABAK/\"xxx@2023\" FILE=/home/dmdba/XXXOA230622.dmp LOG=/home/dmdba/IMPXXXOATEST230622.log REMAP_SCHEMA=XXXOA:XXXOABAK parallel=32 TABLE_PARALLEL=2 |
DTS从oracle导入表定义和其他对象定义
配置迁移任务先迁移表结构
业务用户下所有外键并禁用
select 'alter table 用户名.'||A.TABLE_NAME ||' disable constraint '||A.CONSTRAINT_NAME||';' from DBA_CONSTRAINTS A , DBA_CONS_COLUMNS B, dba_cons_columns c WHERE A.R_CONSTRAINT_NAME = B.CONSTRAINT_NAME and a.CONSTRAINT_NAME = c.CONSTRAINT_NAME AND A.CONSTRAINT_TYPE ='R' --AND B.TABLE_NAME = '主表名' --AND A.TABLE_NAME = '外键表名' AND A.OWNER = '用户名' AND B.OWNER = '用户名' and c.owner = '用户名'; |
DTS迁移表数据
启用外键
启用禁用范围的所有外键约束
alter table XXXOA.xxx ENABLE constraint CONS134227828 alter table XXXOA.xxx ENABLE constraint CONS13422xxx; …… |
收集统计信息
收集迁移范围表的统计信息
DBMS_STATS.GATHER_TABLE_STATS('xxx_schema','xxxtable',NULL,100,TRUE,'FOR ALL COLUMNS SIZE AUTO'); 增加并行度4收集 DBMS_STATS.GATHER_TABLE_STATS('xxxschema','xxxtable',NULL,100,TRUE,'FOR ALL COLUMNS SIZE AUTO',4); DBMS_STATS.GATHER_TABLE_STATS('xxxschema','xxxtable',NULL,100,TRUE,'FOR ALL COLUMNS SIZE AUTO'); …… |
总结
达梦对oracle数据库对象的兼容性良好,数据库对象基本可以通过DTS工具自动迁移,少部分出错需要手动修改。
达梦技术社区:https://eco.dameng.com