XTTS迁移oracle11g-19c(非容器数据库)
一.背景
尝试把用xtts把oracle 11g单实例数据库迁移到19c非CDB单实例数据库中。
二.环境介绍
源端:11g:
操作系统:
[root@11g ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.4 (Santiago)
数据库版本:11.2.0.4
IP地址:192.168.59.180
目标端:19c:
操作系统:
[root@19c ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
数据库版本:19.3.0.0
IP地址:192.168.59.181
所需软件:
rman_xttconvert_v3.zip
下载:
链接:https://pan.baidu.com/s/1ZRqkPzLVKtnnI_xQtRnADg
提取码:fhx7
三.迁移
3.1.准备阶段
3.1.1.生产库打开块跟踪特性
alter database enable block change tracking using file '/u01/xtts/block_change_tracking.log';
3.1.2.对表空间做自包含检查
检查出INDEX存在自包含问题,需要重建或者最后重建。
本次我们迁移的用户为TEST1和TEST2,涉及的表空间为TEST1和TEST2。
3.1.2.对表空间做自包含检查 检查出INDEX存在自包含问题,需要重建或者最后重建。 本次我们迁移的用户为TEST1和TEST2,涉及的表空间为TEST1和TEST2。
3.1.3.找出临时表的创建语句
因为XTTS在最后导入元数据的时候不支持临时表,所以需要提前查出临时表信息,在导入元数据之后手动执行。
SQL> Select dbms_metadata.get_ddl('TABLE',TABLE_NAME,OWNER) FROM dba_tables where TEMPORARY='Y' and owner='TEST1'; no rows selected SQL> Select dbms_metadata.get_ddl('TABLE',TABLE_NAME,OWNER) FROM dba_tables where TEMPORARY='Y' and owner='TEST2'; no rows selected
3.2.XTTS迁移初始化阶段
3.2.1.上传rman_xttconvert_v3.zip 到oracle 11g上
解压之后会有如下文件:
[oracle@11g rman-xttconvert]$ ll total 172 -rw-r--r-- 1 oracle oinstall 1390 May 24 2017 xttcnvrtbkupdest.sql -rw-r--r-- 1 oracle oinstall 71 May 24 2017 xttdbopen.sql -rw-r--r-- 1 oracle oinstall 142020 Sep 20 2018 xttdriver.pl -rw-r--r-- 1 oracle oinstall 11710 May 24 2017 xttprep.tmpl -rw-r--r-- 1 oracle oinstall 8028 Dec 17 10:53 xtt.properties -rw-r--r-- 1 oracle oinstall 52 May 24 2017 xttstartupnomount.sql [oracle@11g rman-xttconvert]$
3.2.2.源端更改配置文件xtt.properties
更改以下参数:
tablespaces=TEST1,TEST2 platformid=13 dfcopydir=/u01/xtts/bak backupformat=/u01/xtts/bakincr stageondest=/u01/xtts/oradata2 storageondest=/u01/xtts/oradata3 parallel=16 rollparallel=8 getfileparallel=8 desttmpdir=/u01/xtts/temp dumpdir=/u01/xtts/dump 附录解释: tablespaces= ----需要迁移的表空间 platformid= ----源 OS 平台 ID V$DATABASE.PLATFORM_ID dfcopydir= ----源数据库备份文件存放目录 backupformat= ---源数据库增备文件存放目录 stageondest= ----目标据库备份文件存放目录 storageondest= ----目标据库正式文件存放目录 parallel= ----备份,转化的并行度 rollparallel= ----增备的并行度
3.2.3.创建上述目录并将rman-xttconvert目录传输至目标端
创建相应目录: 源端: mkdir -p /u01/xtts/bak mkdir -p /u01/xtts/bakincr mkdir -p /u01/xtts/temp mkdir -p /u01/xtts/dump [oracle@11g software]$ scp -r rman-xttconvert/ 192.168.59.181:/home/oracle/ 目标端: mkdir -p /u01/xtts/oradata2 mkdir -p /u01/xtts/oradata3 mkdir -p /u01/xtts/temp mkdir -p /u01/xtts/dump mkdir -p /u01/xtts/incr
3.3.初始备份
3.3.1.源端进行初始备份
export TMPDIR=/u01/xtts/temp $ORACLE_HOME/perl/bin/perl xttdriver.pl -p [oracle@11g rman-xttconvert]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -p ============================================================ trace file is /u01/xtts/temp/prepare_Feb7_Mon_14_31_25_313//Feb7_Mon_14_31_25_313_.log ============================================================= -------------------------------------------------------------------- Parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Starting prepare phase -------------------------------------------------------------------- Prepare source for Tablespaces: 'TEST1' /u01/xtts/oradata2 xttpreparesrc.sql for 'TEST1' started at Mon Feb 7 14:31:25 2022 xttpreparesrc.sql for ended at Mon Feb 7 14:31:25 2022 Prepare source for Tablespaces: 'TEST2' /u01/xtts/oradata2 xttpreparesrc.sql for 'TEST2' started at Mon Feb 7 14:31:30 2022 xttpreparesrc.sql for ended at Mon Feb 7 14:31:30 2022 -------------------------------------------------------------------- Done with prepare phase -------------------------------------------------------------------- -------------------------------------------------------------------- Find list of datafiles in system -------------------------------------------------------------------- -------------------------------------------------------------------- Done finding list of datafiles in system -------------------------------------------------------------------- [oracle@11g rman-xttconvert]$
3.3.2.传输初始备份
将/u01/xtts/bak和/u01/xtts/temp目录下面的文件拷贝到目标环境对应的目录下 scp -r /u01/xtts/bak/* oracle@192.168.59.181:/u01/xtts/oradata2 scp -r /u01/xtts/temp/* oracle@192.168.59.181:/u01/xtts/temp
3.3.3.目标端依次转换
--执行转换之前记录下传输的文件的内容 [oracle@19c xtts]$ cd oradata2 [oracle@19c oradata2]$ ll total 157392 -rw-r----- 1 oracle oinstall 80748544 Feb 7 14:34 TEST1_7.tf -rw-r----- 1 oracle oinstall 80420864 Feb 7 14:34 TEST2_8.tf [oracle@19c oradata2]$ cd ../temp/ [oracle@19c temp]$ ll total 12 drwxr-xr-x 2 oracle oinstall 268 Feb 7 14:36 prepare_Feb7_Mon_14_31_25_313 -rw-r--r-- 1 oracle oinstall 348 Feb 7 14:36 rmanconvert.cmd -rw-r--r-- 1 oracle oinstall 82 Feb 7 14:36 xttnewdatafiles.txt -rw-r--r-- 1 oracle oinstall 40 Feb 7 14:36 xttplan.txt [oracle@19c temp]$ cat xttnewdatafiles.txt ::TEST1 7,/u01/xtts/oradata3/TEST1_7.dbf ::TEST2 8,/u01/xtts/oradata3/TEST2_8.dbf [oracle@19c temp]$ cat xttplan.txt TEST1::::13693177 7 TEST2::::13693177 8 [oracle@19c temp]$ --开始执行转换 export TMPDIR=/u01/xtts/temp $ORACLE_HOME/perl/bin/perl xttdriver.pl -c [oracle@19c rman-xttconvert]$ cd /home/oracle/rman-xttconvert/ [oracle@19c rman-xttconvert]$ export TMPDIR=/u01/xtts/temp [oracle@19c rman-xttconvert]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -c ============================================================ trace file is /u01/xtts/temp/convert_Feb7_Mon_14_39_32_334//Feb7_Mon_14_39_32_334_.log ============================================================= -------------------------------------------------------------------- Parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Performing convert -------------------------------------------------------------------- -------------------------------------------------------------------- Converted datafiles listed in: /u01/xtts/temp/xttnewdatafiles.txt -------------------------------------------------------------------- [oracle@19c rman-xttconvert]$ --转换之后我们看看temp文件夹下内容的变化 [oracle@19c xtts]$ cd temp/ [oracle@19c temp]$ ll total 12 drwxr-xr-x 2 oracle oinstall 174 Feb 7 14:42 convert_Feb7_Mon_14_39_32_334 drwxr-xr-x 2 oracle oinstall 268 Feb 7 14:36 prepare_Feb7_Mon_14_31_25_313 -rw-r--r-- 1 oracle oinstall 348 Feb 7 14:36 rmanconvert.cmd -rw-r--r-- 1 oracle oinstall 82 Feb 7 14:42 xttnewdatafiles.txt -rw-r--r-- 1 oracle oinstall 40 Feb 7 14:36 xttplan.txt [oracle@19c temp]$ cat xttnewdatafiles.txt ::TEST1 7,/u01/xtts/oradata3/TEST1_7.dbf ::TEST2 8,/u01/xtts/oradata3/TEST2_8.dbf [oracle@19c temp]$ cat xttplan.txt TEST1::::13693177 7 TEST2::::13693177 8 [oracle@19c temp]$
3.4.增量数第一次传输
3.4.1.源端增量数据导出
export TMPDIR=/u01/xtts/temp $ORACLE_HOME/perl/bin/perl xttdriver.pl -i [oracle@11g rman-xttconvert]$ export TMPDIR=/u01/xtts/temp [oracle@11g rman-xttconvert]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -i ============================================================ trace file is /u01/xtts/temp/incremental_Feb7_Mon_14_49_22_958//Feb7_Mon_14_49_22_958_.log ============================================================= -------------------------------------------------------------------- Parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Backup incremental -------------------------------------------------------------------- ============================================================ No new datafiles added ============================================================= Prepare newscn for Tablespaces: 'TEST1' Prepare newscn for Tablespaces: 'TEST2' -------------------------------------------------------------------- Starting incremental backup -------------------------------------------------------------------- -------------------------------------------------------------------- Done backing up incrementals -------------------------------------------------------------------- [oracle@11g rman-xttconvert]$ --我们记录下来新生成的文件 [oracle@11g xtts]$ cd bakincr/ [oracle@11g bakincr]$ ll total 352 -rw-r----- 1 oracle oinstall 180224 Feb 7 14:49 3k0l8cvj_1_1 -rw-r----- 1 oracle oinstall 180224 Feb 7 14:49 3l0l8cvl_1_1 [oracle@11g bakincr]$ cd ../temp/ [oracle@11g temp]$ ll total 32 -rw-r--r-- 1 oracle oinstall 62 Feb 7 14:49 incrbackups.txt drwxr-xr-x 2 oracle oinstall 4096 Feb 7 14:49 incremental_Feb7_Mon_14_49_22_958 drwxr-xr-x 2 oracle oinstall 4096 Feb 7 14:31 prepare_Feb7_Mon_14_31_25_313 -rw-r--r-- 1 oracle oinstall 348 Feb 7 14:31 rmanconvert.cmd -rw-r--r-- 1 oracle oinstall 52 Feb 7 14:49 tsbkupmap.txt -rw-r--r-- 1 oracle oinstall 82 Feb 7 14:31 xttnewdatafiles.txt -rw-r--r-- 1 oracle oinstall 40 Feb 7 14:31 xttplan.txt -rw-r--r-- 1 oracle oinstall 44 Feb 7 14:49 xttplan.txt.new [oracle@11g temp]$ [oracle@11g temp]$ cat xttnewdatafiles.txt ::TEST1 7,/u01/xtts/oradata3/TEST1_7.dbf ::TEST2 8,/u01/xtts/oradata3/TEST2_8.dbf [oracle@11g temp]$ cat xttplan.txt TEST1::::13693177 7 TEST2::::13693177 8 [oracle@11g temp]$ cat xttplan.txt.new TEST1::::13713305 7 TEST2::::13713305 8 [oracle@11g temp]$ --传输增量数据到目标端 cd /u01/xtts/bakincr scp * oracle@192.168.59.181:/u01/xtts/oradata2 cd /u01/xtts/temp scp xttplan.txt.new xttnewdatafiles.txt incrbackups.txt rmanconvert.cmd tsbkupmap.txt oracle@192.168.59.181:/u01/xtts/temp --此时目标端temp内容如下: [oracle@19c temp]$ ll total 24 drwxr-xr-x 2 oracle oinstall 174 Feb 7 14:42 convert_Feb7_Mon_14_39_32_334 -rw-r--r-- 1 oracle oinstall 62 Feb 7 14:53 incrbackups.txt drwxr-xr-x 2 oracle oinstall 268 Feb 7 14:36 prepare_Feb7_Mon_14_31_25_313 -rw-r--r-- 1 oracle oinstall 348 Feb 7 14:53 rmanconvert.cmd -rw-r--r-- 1 oracle oinstall 52 Feb 7 14:53 tsbkupmap.txt -rw-r--r-- 1 oracle oinstall 82 Feb 7 14:53 xttnewdatafiles.txt -rw-r--r-- 1 oracle oinstall 40 Feb 7 14:36 xttplan.txt -rw-r--r-- 1 oracle oinstall 44 Feb 7 14:53 xttplan.txt.new [oracle@19c temp]$
3.4.2.目标端增量数据导入
在目标端重命名xttplan.txt.new 为xttplan.txt,然后进入xtts脚本目录执行转换
[oracle@19c temp]$ cat xttplan.txt.new TEST1::::13713305 7 TEST2::::13713305 8 [oracle@19c temp]$ cat xttplan.txt.new TEST1::::13713305 7 TEST2::::13713305 8 [oracle@19c temp]$ mv xttplan.txt.new xttplan.txt [oracle@19c temp]$ export TMPDIR=/u01/xtts/temp $ORACLE_HOME/per/bin/perl xttdriver.pl -r [oracle@19c rman-xttconvert]$ export TMPDIR=/u01/xtts/temp [oracle@19c rman-xttconvert]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -r ============================================================ trace file is /u01/xtts/temp/rollforward_Feb7_Mon_15_27_53_567//Feb7_Mon_15_27_53_567_.log ============================================================= -------------------------------------------------------------------- Parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Start rollforward -------------------------------------------------------------------- -------------------------------------------------------------------- End of rollforward phase -------------------------------------------------------------------- [oracle@19c rman-xttconvert]$
3.4.3.源端更新scn记录
$ORACLE_HOME/perl/bin/perl xttdriver.pl -s [oracle@11g rman-xttconvert]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -s ============================================================ trace file is /u01/xtts/temp/determinescn_Feb7_Mon_15_30_57_587//Feb7_Mon_15_30_57_587_.log ============================================================= -------------------------------------------------------------------- Parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done checking properties -------------------------------------------------------------------- Prepare newscn for Tablespaces: 'TEST1' Prepare newscn for Tablespaces: 'TEST2' New /u01/xtts/temp/xttplan.txt with FROM SCN's generated [oracle@11g rman-xttconvert]$
将目标端temp目录以及源端bakincr目录进行清理,准备再次进行同步新数据
3.5.增量数据第二次传输
3.5.1.源端执行增量备份
export TMPDIR=/u01/xtts/temp $ORACLE_HOME/perl/bin/perl xttdriver.pl -i [oracle@11g rman-xttconvert]$ export TMPDIR=/u01/xtts/temp [oracle@11g rman-xttconvert]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -i ============================================================ trace file is /u01/xtts/temp/incremental_Feb7_Mon_15_36_47_595//Feb7_Mon_15_36_47_595_.log ============================================================= -------------------------------------------------------------------- Parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Backup incremental -------------------------------------------------------------------- ============================================================ No new datafiles added ============================================================= Prepare newscn for Tablespaces: 'TEST1' Prepare newscn for Tablespaces: 'TEST2' -------------------------------------------------------------------- Starting incremental backup -------------------------------------------------------------------- -------------------------------------------------------------------- Done backing up incrementals -------------------------------------------------------------------- [oracle@11g rman-xttconvert]$
3.5.2.第二次增量备份传输
cd /u01/xtts/bakincr scp * oracle@192.168.59.181:/u01/xtts/oradata2 cd /u01/xtts/temp scp xttplan.txt.new xttnewdatafiles.txt incrbackups.txt rmanconvert.cmd tsbkupmap.txt oracle@192.168.59.181:/u01/xtts/temp
3.5.3.第二次增量备份导入
在目标端重命名xttplan.txt.new 为xttplan.txt,然后进入xtts脚本目录执行转换
[oracle@19c temp]$ mv xttplan.txt.new xttplan.txt [oracle@19c rman-xttconvert]$ export TMPDIR=/u01/xtts/temp [oracle@19c rman-xttconvert]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -r ============================================================ trace file is /u01/xtts/temp/rollforward_Feb7_Mon_15_40_33_214//Feb7_Mon_15_40_33_214_.log ============================================================= -------------------------------------------------------------------- Parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Start rollforward -------------------------------------------------------------------- -------------------------------------------------------------------- End of rollforward phase -------------------------------------------------------------------- [oracle@19c rman-xttconvert]$
3.5.4.源端更新SCN记录
将目标端temp目录以及源端bakincr目录进行清理,准备再次进行同步新数据
$ORACLE_HOME/perl/bin/perl xttdriver.pl -s [oracle@11g rman-xttconvert]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -s ============================================================ trace file is /u01/xtts/temp/determinescn_Feb7_Mon_15_42_52_116//Feb7_Mon_15_42_52_116_.log ============================================================= -------------------------------------------------------------------- Parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done checking properties -------------------------------------------------------------------- Prepare newscn for Tablespaces: 'TEST1' Prepare newscn for Tablespaces: 'TEST2' New /u01/xtts/temp/xttplan.txt with FROM SCN's generated
3.6.最后一次增量备份数据
3.6.1.源端将表空间修改为只读模式
alter tablespace TEST1 read only; alter tablespace TEST2 read only; select tablespace_name,status from dba_tablespaces;
3.6.2.源端再次执行增量备份
export TMPDIR=/u01/xtts/temp $ORACLE_HOME/perl/bin/perl xttdriver.pl -i [oracle@11g rman-xttconvert]$ export TMPDIR=/u01/xtts/temp [oracle@11g rman-xttconvert]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -i ============================================================ trace file is /u01/xtts/temp/incremental_Feb7_Mon_15_48_09_609//Feb7_Mon_15_48_09_609_.log ============================================================= -------------------------------------------------------------------- Parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Backup incremental -------------------------------------------------------------------- ============================================================ No new datafiles added ============================================================= Prepare newscn for Tablespaces: 'TEST1' Prepare newscn for Tablespaces: 'TEST2' -------------------------------------------------------------------- Starting incremental backup -------------------------------------------------------------------- -------------------------------------------------------------------- Done backing up incrementals -------------------------------------------------------------------- [oracle@11g rman-xttconvert]$
3.6.3.传输增量数据
--源端传输文件到目标端: scp -r /u01/xtts/bakincr/* oracle@192.168.59.181:/u01/xtts/oradata2 scp xttplan.txt.new xttnewdatafiles.txt incrbackups.txt rmanconvert.cmd tsbkupmap.txt oracle@192.168.59.181:/u01/xtts/temp --目标端端修改 mv xttplan.txt.new xttplan.txt
3.6.4.目标端执行转换
export TMPDIR=/u01/xtts/temp $ORACLE_HOME/perl/bin/perl xttdriver.pl -r [oracle@19c rman-xttconvert]$ export TMPDIR=/u01/xtts/temp [oracle@19c rman-xttconvert]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -r ============================================================ trace file is /u01/xtts/temp/rollforward_Feb7_Mon_15_52_05_571//Feb7_Mon_15_52_05_571_.log ============================================================= -------------------------------------------------------------------- Parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done parsing properties -------------------------------------------------------------------- -------------------------------------------------------------------- Checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Done checking properties -------------------------------------------------------------------- -------------------------------------------------------------------- Start rollforward -------------------------------------------------------------------- -------------------------------------------------------------------- End of rollforward phase -------------------------------------------------------------------- [oracle@19c rman-xttconvert]$
3.7.元数据导出导入
3.7.1.元数据导出
[oracle@11g temp]$ o SQL*Plus: Release 11.2.0.4.0 Production on Mon Feb 7 15:55:00 2022 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> create or replace directory dump as '/u01/xtts/dump'; Directory created. --表空间元数据导出 [oracle@11g rman-xttconvert]$ expdp system/oracle dumpfile=test.dump directory=dump transport_tablespaces=test1,test2 logfile=dump.log Export: Release 11.2.0.4.0 - Production on Mon Feb 7 15:55:36 2022 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options Starting "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01": system/******** dumpfile=test.dump directory=dump transport_tablespaces=test1,test2 logfile=dump.log Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK Processing object type TRANSPORTABLE_EXPORT/TABLE Processing object type TRANSPORTABLE_EXPORT/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK Master table "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is: /u01/xtts/dump/test.dump ****************************************************************************** Datafiles required for transportable tablespace TEST1: /u01/app/oracle/oradata/orcl/test1.dbf Datafiles required for transportable tablespace TEST2: /u01/app/oracle/oradata/orcl/test2.dbf Job "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at Mon Feb 7 15:56:41 2022 elapsed 0 00:01:01 [oracle@11g rman-xttconvert]$ --相关对象元数据导出 [oracle@11g rman-xttconvert]$ expdp system/oracle directory=dump dumpfile=schema_meta.dmp logfile=expdp_schema_meta.log content=metadata_only schemas=test1,test2 Export: Release 11.2.0.4.0 - Production on Mon Feb 7 15:58:49 2022 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options FLASHBACK automatically enabled to preserve database integrity. Starting "SYSTEM"."SYS_EXPORT_SCHEMA_01": system/******** directory=dump dumpfile=schema_meta.dmp logfile=expdp_schema_meta.log content=metadata_only schemas=test1,test2 Processing object type SCHEMA_EXPORT/USER Processing object type SCHEMA_EXPORT/SYSTEM_GRANT Processing object type SCHEMA_EXPORT/ROLE_GRANT Processing object type SCHEMA_EXPORT/DEFAULT_ROLE Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/TABLE/TABLE Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Master table "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded ****************************************************************************** Dump file set for SYSTEM.SYS_EXPORT_SCHEMA_01 is: /u01/xtts/dump/schema_meta.dmp Job "SYSTEM"."SYS_EXPORT_SCHEMA_01" successfully completed at Mon Feb 7 15:59:08 2022 elapsed 0 00:00:15 [oracle@11g rman-xttconvert]$ --拷贝到目标环境 scp /u01/xtts/dump/test.dump oracle@192.168.59.181:/u01/xtts/dump scp /u01/xtts/dump/schema_meta.dmp oracle@192.168.59.181:/u01/xtts/dump
3.7.2.目标端导入数据
create directory dump as '/u01/xtts/dump'; create user test1 identified by oracle default tablespace users; create user test2 identified by oracle default tablespace users; grant dba to test1,test2; impdp system/oracle dumpfile=test.dump directory=dump logfile=dump.log transport_datafiles='/u01/xtts/oradata3/TEST1_7.dbf','/u01/xtts/oradata3/TEST2_8.dbf'; [oracle@19c dump]$ impdp system/oracle dumpfile=test.dump directory=dump logfile=dump.log transport_datafiles='/u01/xtts/oradata3/TEST1_7.dbf','/u01/xtts/oradata3/TEST2_8.dbf'; Import: Release 19.0.0.0.0 - Production on Mon Feb 7 16:11:02 2022 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** dumpfile=test.dump directory=dump logfile=dump.log transport_datafiles=/u01/xtts/oradata3/TEST1_7.dbf,/u01/xtts/oradata3/TEST2_8.dbf Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK Processing object type TRANSPORTABLE_EXPORT/TABLE Processing object type TRANSPORTABLE_EXPORT/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT ORA-39014: One or more workers have prematurely exited. ORA-39029: worker 1 with process name "DW00" prematurely terminated ORA-31671: Worker process DW00 had an unhandled exception. ORA-00600: internal error code, arguments: [25027], [0], [0], [4], [16777810], [0], [1], [1], [], [], [], [] Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" stopped due to fatal error at Mon Feb 7 16:16:57 2022 elapsed 0 00:05:09 --导入报错,但是发现表空间已经存在。 --将表空间设置为读写模式 alter tablespace test1 read write; alter tablespace test2 read write; SQL> select tablespace_name,status from dba_tablespaces; TABLESPACE_NAME STATUS ------------------------------ --------- SYSTEM ONLINE SYSAUX ONLINE UNDOTBS1 ONLINE TEMP ONLINE USERS ONLINE TEST1 ONLINE TEST2 ONLINE 7 rows selected. --导入相关元数据对象 impdp system/oracle directory=dump dumpfile=schema_meta.dmp logfile=meta.log [oracle@19c dump]$ impdp system/oracle directory=dump dumpfile=schema_meta.dmp logfile=meta.log Import: Release 19.0.0.0.0 - Production on Mon Feb 7 16:22:51 2022 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved. Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Master table "SYSTEM"."SYS_IMPORT_FULL_01" successfully loaded/unloaded Starting "SYSTEM"."SYS_IMPORT_FULL_01": system/******** directory=dump dumpfile=schema_meta.dmp logfile=meta.log Processing object type SCHEMA_EXPORT/USER ORA-31684: Object type USER:"TEST1" already exists ORA-31684: Object type USER:"TEST2" already exists Processing object type SCHEMA_EXPORT/SYSTEM_GRANT Processing object type SCHEMA_EXPORT/ROLE_GRANT Processing object type SCHEMA_EXPORT/DEFAULT_ROLE Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA Processing object type SCHEMA_EXPORT/TABLE/TABLE ORA-39151: Table "TEST1"."TEST1" exists. All dependent metadata and data will be skipped due to table_exists_action of skip ORA-39151: Table "TEST2"."TEST2" exists. All dependent metadata and data will be skipped due to table_exists_action of skip Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS Job "SYSTEM"."SYS_IMPORT_FULL_01" completed with 4 error(s) at Mon Feb 7 16:23:01 2022 elapsed 0 00:00:08 [oracle@19c dump]$
3.7.3.修改用户默认表空间信息
SQL> alter user test1 default tablespace test1; User altered. SQL> alter user test2 default tablespace test2; User altered.
3.8.检查无效对象并验证数据
select 'ALTER' ||OBJECT_TYPE||''||OWNER||'.'|| OBJECT_NAME||'COMPILE;' from all_objects where status='INVALID' AND object_type in ('PACKAGE','FUNCTION','PROCEDURE','TABLE','VIEW','SEQUENCE','TRIGGER'); --验证数据 --源端: SQL> select object_type,count(*) from dba_objects where owner in ('TEST1','TEST2') group by object_type order by 2; OBJECT_TYPE COUNT(*) ------------------- ---------- TABLE 2 INDEX 2 TABLE PARTITION 18 --目标端: OBJECT_TYPE COUNT(*) ----------------------- ---------- TABLE 2 TABLE PARTITION 18
可以看到,之前源端创建在users表空间的索引没有迁移过来。需要我们重新创建。
3.9.清理环境
/u01/xtts目录清理
四.总结
4.1.步骤总结
-
首先确定需要迁移的表空间,检查是否自包含。
-
找出临时表的创建语句,元数据导入之后手动进行创建。
-
初始化参数修改阶段。 目标端初始化备份文件和增量备份文件放同一个目录。
-
增量备份前滚阶段,可以多次进行。
-
最后一次增量备份阶段。
-
导入元数据。
-
校验数据
4.2.报错总结
-
增量前滚阶段目标端应用报错 : scn号设置错误 增量备份文件存放目录错误
-
导入表空间元数据报错:没有创建用户