姊妹篇文章:【DB宝52】Oracle异构平台迁移利器之XTTS(使用rman方式)
目录

一、XTTS简介1.1、简介1.2、全量迁移方式1.3、脚本rman_xttconvert_v3.zip1.3.1、xttdriver.pl的选项1.3.2、xtt.properties参数1.3.3、文件介绍1.4、参考文档1.5、迁移过程导图二、XTTS迁移示例2.1、数据库检查2.1.1、查询平台字节序和字符集2.1.2、获取需要迁移的业务表空间和业务用户2.1.3、表空间自包含2.1.4、获取用户及其权限的SQL2.1.5、检查环境变量2.1.6、开启块改变跟踪功能2.1.7、时区需要一致2.1.8、目标端补丁情况2.1.9、组件检查2.1.10、目标端的db_files参数不能小于源端2.1.11、迁移对象个数统计2.2、全量迁移2.2.1、源端和目标端都需要配置XTTS脚本2.2.2、创建相关directories和dblink1、源端创建SOURCEDIR:2、目标端创建DESTDIR:3、目标端创建DBLINK2.2.3、xttdriver.pl -S做迁移准备2.2.4、将源端xttnewdatafiles.txt和getfile.sql传到目标端2.2.5、在目标端执行数据文件的拷贝2.3、XTTS 第1~n次增量前滚2.3.1、产生增量数据2.3.2、源端做增量备份2.3.3、将源端的增量数据传到目标端2.3.4、目标端进行增量转换和数据写入同步2.3.5、源端确定下一个增量备份的FROM_SCN2.4、XTTS 最后一次增量前滚2.4.1、将表空间置为RO状态2.4.2、源端做增量备份2.4.3、将源端的增量数据传到目标端2.4.4、目标端进行增量转换和数据写入同步2.5、迁移元数据2.5.1、在目标库创建业务用户2.5.2、导入xtts的元数据2.5.3、导入存储过程、触发器、函数、包、视图、序列2.5.4、导入公共同义词和dblink等其它对象2.6、迁移完成后的收尾工作2.6.1、查看源端、目标端的数据一致性2.6.2、更改用户默认表空间2.6.3、目标库的表空间修改为读写模式2.6.4、校验数据文件完整性2.6.5、收集统计信息2.7、总结
一、XTTS简介
1.1、简介
XTTS的发展历史:
从8i,tts技术的诞生,引入了相同平台相同块大小之间的表空间传输。到了9i,tts开始支持同平台中,不同块大小的表空间传输。
10g时代,不仅引入了跨平台的表空间传输方案,也就是我们说的xtts;10gR2开始支持传输整个数据库。
11gR1开始,可以传输表空间中的某个特定分区。
在11.2.0.4开始,为了应对越来越大的数据量,而停机时间甚至还在减少的情况,出现了新的解决方案—使用增量备份方式的xtts。
XTTS 各版本的功能比对如下:

在 Oracle11gR2(推荐使用 11.2.0.4 及之后版本)以后,Oracle 推出了通过前滚数据文件,拷贝数据后再进行多次增量备份的 XTTS 来完成迁移过程,在这个过程中通过开启块跟踪特性,根据 SCN 号来执行一系列的增量备份,并且通过对块跟踪文件的扫描,来完成增量数据的增量备份应用,最后在通过一定的停机时间,在源库 read only 的状态下进行最后一次增量备份转换应用,使得整个迁移过程的停机时间同源库数据块的变化率成正比。这样大大的缩短了停机时间。
为了减少正式的停机时间,oracle在xtts中引入了rman的增量备份前滚功能。通过一次又一次的增量备份,使停应用的时间主要包含四个方面:将表空间置为只读,最后进行一次增量前滚,元数据导入,数据文件校验。和传统的表空间传输相比,通过减少数据文件的传输时间,而大大减少了整体停机时间。
1.2、全量迁移方式
1)dbms_file_transfer(DFT) -- (using xttdriver.pl -S and -G options)
DBMS_FILE_TRANSFER 包是 Oracle 提供的一个用于复制二进制数据库文件或在数据库之间传输二进制文件的程序包,在 XTTS 迁移中,利用不同的参数进行数据文件传输转换完成迁移。
要求:目标端数据库版本必须是11.2.0.4以及更新的版本。如果数据库版本低于11.2.0.4(大于Oracle10R1),那么目标端环境,仍然需要安装11.2.0.4以及更新版本的临时环境,因为XTTS增量的核心脚本功能必须是基于11.2.0.4(+)版本。
如果准备使用DDBMS_FILE_TRANSFER 作为全量迁移方法,那么必须创建三个数据库对象:
源数据库中的数据库目录对象。
目标数据库中的数据库目录对象,放置数据文件的位置。
在目标数据库中创建指向源库的数据库链接。
通过使用 rman-xttconvert 包提供的参数,对数据库进行基于表空间的备份,将备份产生的备份集写到本地或者 NFS 盘上,然后再通过 rman-xttconvert 包中包含的不同平台之间数据文件格式转换的包对进行数据文件格式转换,最后通过记录的表空间 FILE_ID 号生产元数据的导入脚本,通过 db_link 执行完成。
1.3、脚本rman_xttconvert_v3.zip
XTTS基于一组 rman-xttconvert_3.0 的脚本文件包(Mos 1389592.1)来实现跨平台的数据迁移,主要包含 Perl脚本xttdriver 脚本。xttdriver.pl 是备份、转换和增量应用的执行脚本,xtt.properties 是属性文件,其中包含 XTTS 配置的路径、参数等。
脚本下载地址:11G - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 1389592.1),内容参考:http://blog.itpub.net/26736162/viewspace-2767429/
脚本rman_xttconvert_v3.zip在小麦苗的微云下载:https://share.weiyun.com/57HUxNi,路径:小麦苗分享的资料>数据库系列>Oracle数据库>Oracle工具。
1.3.1、xttdriver.pl的选项

1.3.2、xtt.properties参数


1.3.3、文件介绍
xttplan.txt - containing the tablespace names, their current SCNs and their datafile numbers
xttnewdatafiles.txt - containing the tablespace names, datafile numbers, the destination directory object name and the source filenames
getfile.sql - The PL/SQL script(formatting ours) that will be used at the destination to get the datafilesfrom the source
xttpreparesrc.sql - the PL/SQL scriptused to create the files in this step
xttprepareNaNd - the command
tsbkupmap.txt - containing the tablespace names, datafile numbers and the incremental backup pieces
incrbackups.txt - containing the actual location of the incremental backup pieces
rmanincrNaNd - containing the RMAN scripts used to create the incremental backups.
xttdetnewfromscnsrc.sql - the PL/SQLscript used to create the files in this step
xttplan.txt.new- after the first run of'xttdriver.pl -i' this is just a copy of the xttplan.txt
1.4、参考文档
11G - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (文档 ID 1389592.1)
12c – 使用跨平台增量备份来减少传输表空间的停机时间 (文档 ID 2102859.1)
12C - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (文档 ID 2005729.1)
http://blog.itpub.net/26736162/viewspace-2767646/
http://blog.itpub.net/26736162/viewspace-2767429/
1.5、迁移过程导图

二、XTTS迁移示例
环境情况如下:
| 源库 | 目标库 | |
|---|---|---|
| 版本 | 11.2.0.3 | 11.2.0.4 |
| ORACLE_SID | LHR11G | LHR11G |
| 用户表空间 | TS_LHR、TS_XXT、USERS | TS_LHR、TS_XXT、USERS |
| 业务用户 | lhr、xxt | lhr、xxt |
| 平台 | Linux x86 64-bit | Linux x86 64-bit |
| 字节序 | Little | Little |
| IP地址 | 172.17.0.3 | 172.17.0.4 |
| 字符集 | AMERICAN_CHINA.AL32UTF8 | AMERICAN_CHINA.AL32UTF8 |
| 归档模式 | 归档模式 | 归档模式 |
注:虽然我这里使用的同构平台,但是异构平台下的步骤是一样的,例如从Aix到Linux,该过程完全适用。
2.1、数据库检查
源库必须为归档模式
源端和目标的字符集需要一致
源库的操作系统不是Windows
源库的compatible参数最低为11.1.0.0.0
源库的RMAN 配置里DEVICE TYPE DISK不能设置为COMPRESSED
源端和目标端必须支持可传输平台
源端需要迁移的表空间需要自包含
源库开启块改变跟踪功能,加快增量备份的速度
源端和目标端时区需要保持一致
目标端建议打最新的PSU补丁
目标端的db_files参数不能小于源端
要迁移的表空间的数据文件必须都是online或者不包含offline的数据文件
检查源数据库和目标库具有重名的表空间
检查是否存在应用用户建在system,sysaux,users上的情况
基于XMLSchema的XMLType对象检查
失效对象检查
迁移对象统计
无论是源还是目标,GLOGIN.sql的存在都可能导致语法错误
源库的版本不能大于目标库的版本
2.1.1、查询平台字节序和字符集
1-- 查询平台和字节序
2col PLATFORM_NAME format a30
3SELECT d.PLATFORM_ID,d.PLATFORM_NAME, tp.ENDIAN_FORMAT
4 FROM V$TRANSPORTABLE_PLATFORM tp, V$DATABASE d
5 WHERE tp.PLATFORM_NAME = d.PLATFORM_NAME;
6
7-- 查询字符集
8select userenv('language') from dual;
2.1.2、获取需要迁移的业务表空间和业务用户
排除系统表空间,避免冲突:
1select TABLESPACE_NAME,BLOCK_SIZE,CONTENTS,STATUS
2from dba_tablespaces
3where tablespace_name not in ('SYSTEM','SYSAUX','UNDOTBS1','TEMP','EXAMPLE');
4
5
6select owner,tablespace_name,count(*)
7from dba_segments
8where tablespace_name not in ('SYSTEM','SYSAUX','UNDOTBS1','TEMP','EXAMPLE')
9group by owner,tablespace_name order by tablespace_name;
目标端需要删除已存在的和源库同名的表空间:
1drop tablespace users including contents and datafiles;
2drop tablespace ts_lhr including contents and datafiles;
3drop tablespace ts_xxt including contents and datafiles;
4
5select tablespace_name,status from dba_tablespaces;
2.1.3、表空间自包含
需要传输的表空间为TS_LHR、TS_XXT、USERS,要确保这3个表空间为自包含的表空间。
1-- 自包含检查
2exec dbms_tts.transport_set_check('TS_LHR,TS_XXT,USERS',true);
3
4-- 查看结果,结果为空,表示为自包含
5col violations for a70
6select * from transport_set_violations;
在表空间传输的中,要求表空间集为自包含的,自包含表示用于传输的内部表空间集没有引用指向外部表空间集。
2.1.4、获取用户及其权限的SQL
1SET LONG 9999
2SELECT DBMS_METADATA.GET_DDL('USER', USERNAME) DDL_SQL FROM DBA_USERS
3WHERE USERNAME IN (select owner from dba_segments
4where tablespace_name not in ('SYSTEM','SYSAUX','UNDOTBS1','TEMP','EXAMPLE')
5group by owner,tablespace_name) AND USERNAME NOT IN ('SYS');
6
7
8SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT', USERNAME) DDL_SQL FROM DBA_USERS
9WHERE USERNAME IN (select owner from dba_segments
10where tablespace_name not in ('SYSTEM','SYSAUX','UNDOTBS1','TEMP','EXAMPLE')
11group by owner,tablespace_name) AND USERNAME NOT IN ('SYS');
12
13
14SELECT DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT', USERNAME) DDL_SQL FROM DBA_USERS
15WHERE USERNAME IN (select owner from dba_segments
16where tablespace_name not in ('SYSTEM','SYSAUX','UNDOTBS1','TEMP','EXAMPLE')
17group by owner,tablespace_name) AND USERNAME NOT IN ('SYS');
18
19
20
21SELECT DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT', USERNAME) DDL_SQL FROM DBA_USERS
22WHERE USERNAME IN (select owner from dba_segments
23where tablespace_name not in ('SYSTEM','SYSAUX','UNDOTBS1','TEMP','EXAMPLE')
24group by owner,tablespace_name) AND USERNAME NOT IN ('SYS');
2.1.5、检查环境变量
确保环境变量配置正确:
1env | egrep "ORACLE_SID|ORACLE_HOME"
结果:
1[oracle@lhrora11204 ~]$ env | egrep "ORACLE_SID|ORACLE_HOME"
2ORACLE_SID=LHR11G
3ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/dbhome_1
2.1.6、开启块改变跟踪功能
Block change tracking 进程记录自从上一次0级备份以来数据块的变化,并把这些信息记录在跟踪文件中。RMAN 使用这个文件判断增量备份中需要备份的变更数据。这极大的提高了备份性能和速度,RMAN 可以不再扫描整个文件以查找变更数据。
1ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u01/app/oracle/changetracking.chg';
2
3col filename format a100
4select status, filename from v$block_change_tracking;
2.1.7、时区需要一致
1select dbtimezone from dual;
2.1.8、目标端补丁情况
建议目标端打最新的PSU补丁。
1SELECT * FROM dba_registry_history;
2.1.9、组件检查
目标端需要包含源端的所有组件。
1select comp_id,comp_name,version,status from dba_registry;
2.1.10、目标端的db_files参数不能小于源端
1show parameter db_files
2.1.11、迁移对象个数统计
需要确认,非业务用户下是否有业务数据,例如SYS用户是否有业务数据:
1-- 需要迁移的对象和数量
2select owner, object_type, count(*)
3 from dba_objects
4where object_name not like 'BIN%'
5 and owner in ('LHR','XXT')
6group by owner, object_type
7order by 1,2 desc;
8
9-- 无效对象
10select owner, object_type, count(*)
11 from dba_objects
12where status <> 'VALID'
13 and owner in ('LHR','XXT')
14group by owner, object_type
15order by 1, 2 desc;
16
17
18
19
20-- 非业务用户下是否有业务数据
21SELECT *
22 FROM dba_objects d
23 where d.created >= sysdate - 10
24 and d.object_name not like 'WR%'
25 and d.owner IN ('SYS','SYSTEM')
26 order by d.created desc;
执行过程:
1SYS@LHR11G> select owner, object_type, count(*)
2 2 from dba_objects
3 3 where object_name not like 'BIN%'
4 and owner in ('LHR','XXT')
5group by owner, object_type
6 6 order by 1,2 desc;
7
8OWNER OBJECT_TYPE COUNT(*)
9------------------------------------------------------------ -------------------------------------- ----------
10LHR VIEW 1
11LHR TABLE 9
12LHR SYNONYM 1
13LHR SEQUENCE 1
14LHR PROCEDURE 2
15XXT TABLE 2
16
176 rows selected.
18
19SYS@LHR11G>
20SYS@LHR11G> select owner, object_type, count(*)
21 2 from dba_objects
22where status <> 'VALID'
23 and owner in ('LHR','XXT')
24group by owner, object_type
25 6 order by 1, 2 desc;
26
27OWNER OBJECT_TYPE COUNT(*)
28------------------------------------------------------------ -------------------------------------- ----------
29LHR PROCEDURE 1
2.2、全量迁移
在此步骤中,表空间的数据文件将从源端数据库传输到目标端数据库,本步骤只需要执行一次,数据文件传输过程中不影响源端数据库正常访问。
此处有2种方法:dbms_file_transfer和rman方法。对于数据文件很多的情况下来说,dbms_file_transfer是推荐的方法。
此处使用dbms_file_transfer方式。
2.2.1、源端和目标端都需要配置XTTS脚本
1rm -rf /u01/app/xtts/
2rm -rf /home/oracle/scripts
3
4mkdir -p /u01/app/xtts/inc_bk*
5mkdir -p /u01/app/xtts/df_bk
6
7mkdir -p /home/oracle/scripts
8cd /home/oracle/scripts
9
10cp ~/rman_xttconvert_v3.zip /home/oracle/scripts
11unzip rman_xttconvert_v3.zip
12
13
14-- 注意修改相应参数
15cat > /home/oracle/scripts/xtt.properties <<"EOF"
16tablespaces=TS_LHR,TS_XXT,USERS
17platformid=13
18srcdir=SOURCEDIR
19dstdir=DESTDIR
20srclink=ttslink
21#dfcopydir=/u01/app/xtts/df_bk
22backupformat=/u01/app/xtts/inc_bk
23stageondest=/u01/app/xtts/df_bk
24storageondest=/u01/app/oracle/oradata/LHR11G
25backupondest=/u01/app/xtts/inc_bk
26#cnvinst_home=/oracle/app/oracle/product/11.2.0/dbhome_1
27#cnvinst_sid=targetdb
28EOF
2.2.2、创建相关directories和dblink
1、源端创建SOURCEDIR:
1create directory sourcedir as '/u01/app/oracle/oradata/LHR11G/';
2grant all on directory sourcedir to public;
2、目标端创建DESTDIR:
1create directory DESTDIR as '/u01/app/oracle/oradata/LHR11G/';
2grant all on directory DESTDIR to public;
3、目标端创建DBLINK
在目标端创建指向源端的dblink:
1create public database link ttslink connect to system identified by lhr using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.0.3 )(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = LHR11G) ) )';
2.2.3、xttdriver.pl -S做迁移准备
首先,确保源库处于OPEN阶段,所有表空间都处于online状态:
1select 'ALTER TABLESPACE '||name||' READ WRITE;' exec_sql
2from v$tablespace
3where NAME not in ('SYSTEM','SYSAUX','UNDOTBS1','TEMP');
4
5
6select tablespace_name,status from dba_tablespaces;
在源端执行 xttdriver.pl -p做迁移准备:
1cd /home/oracle/scripts
2export TMPDIR=/home/oracle/scripts
3$ORACLE_HOME/perl/bin/perl xttdriver.pl -S
此过程会产生2个脚本,xttnewdatafiles.txt和getfile.sql
1[oracle@lhrora11203 scripts]$ cat getfile.sql
20,SOURCEDIR,ts_lhr01.dbf,DESTDIR,ts_lhr01.dbf
31,SOURCEDIR,ts_xxt01.dbf,DESTDIR,ts_xxt01.dbf
42,SOURCEDIR,users01.dbf,DESTDIR,users01.dbf
5[oracle@lhrora11203 scripts]$ cat xttnewdatafiles.txt
6::TS_LHR
76,DESTDIR:/ts_lhr01.dbf
8::TS_XXT
97,DESTDIR:/ts_xxt01.dbf
10::USERS
114,DESTDIR:/users01.dbf
2.2.4、将源端xttnewdatafiles.txt和getfile.sql传到目标端
1scp /home/oracle/scripts/getfile.sql 172.17.0.4:/home/oracle/scripts/
2
3scp /home/oracle/scripts/xttnewdatafiles.txt 172.17.0.4:/home/oracle/scripts/
2.2.5、在目标端执行数据文件的拷贝
1cd /home/oracle/scripts
2export TMPDIR=/home/oracle/scripts
3$ORACLE_HOME/perl/bin/perl xttdriver.pl -G
本步骤将花费数据库迁移的大部分时间,因为本步骤会传输源端的数据文件到目标端。
本步骤执行完成,可以在目标端数据库数据文件存储目录发现从源端传输过来的数据文件。
若字节序格式不同,也会在该步骤自动隐式进行转换。
执行过程:
1[oracle@lhrora11204 scripts]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -G
2============================================================
3trace file is /home/oracle/scripts/getfile_Apr13_Tue_15_47_59_738//Apr13_Tue_15_47_59_738_.log
4=============================================================
5
6--------------------------------------------------------------------
7Parsing properties
8--------------------------------------------------------------------
9
10
11--------------------------------------------------------------------
12Done parsing properties
13--------------------------------------------------------------------
14
15
16--------------------------------------------------------------------
17Checking properties
18--------------------------------------------------------------------
19
20
21--------------------------------------------------------------------
22Done checking properties
23--------------------------------------------------------------------
24
25
26--------------------------------------------------------------------
27Getting datafiles from source
28--------------------------------------------------------------------
29
30
31--------------------------------------------------------------------
32Executing getfile for /home/oracle/scripts/getfile_Apr13_Tue_15_47_59_738//getfile_sourcedir_ts_lhr01.dbf_0.sql
33--------------------------------------------------------------------
34
35
36--------------------------------------------------------------------
37Executing getfile for /home/oracle/scripts/getfile_Apr13_Tue_15_47_59_738//getfile_sourcedir_ts_xxt01.dbf_1.sql
38--------------------------------------------------------------------
39
40
41--------------------------------------------------------------------
42Executing getfile for /home/oracle/scripts/getfile_Apr13_Tue_15_47_59_738//getfile_sourcedir_users01.dbf_2.sql
43--------------------------------------------------------------------
44
45
46--------------------------------------------------------------------
47Completed getting datafiles from source
48--------------------------------------------------------------------
49
50[oracle@lhrora11204 scripts]$ ll /u01/app/oracle/oradata/LHR11G/*
51-rw-r----- 1 oracle oinstall 9781248 Apr 13 15:48 /u01/app/oracle/oradata/LHR11G/control01.ctl
52-rw-r----- 1 oracle oinstall 362422272 Apr 13 15:44 /u01/app/oracle/oradata/LHR11G/example01.dbf
53-rw-r----- 1 oracle oinstall 52429312 Apr 13 15:40 /u01/app/oracle/oradata/LHR11G/redo01.log
54-rw-r----- 1 oracle oinstall 52429312 Apr 13 15:48 /u01/app/oracle/oradata/LHR11G/redo02.log
55-rw-r----- 1 oracle oinstall 52429312 Apr 13 15:00 /u01/app/oracle/oradata/LHR11G/redo03.log
56-rw-r----- 1 oracle oinstall 671096832 Apr 13 15:47 /u01/app/oracle/oradata/LHR11G/sysaux01.dbf
57-rw-r----- 1 oracle oinstall 817897472 Apr 13 15:48 /u01/app/oracle/oradata/LHR11G/system01.dbf
58-rw-r----- 1 oracle oinstall 30416896 Apr 13 15:39 /u01/app/oracle/oradata/LHR11G/temp01.dbf
59-rw-r----- 1 oracle oinstall 10493952 Apr 13 15:47 /u01/app/oracle/oradata/LHR11G/ts_lhr01.dbf
60-rw-r----- 1 oracle oinstall 31465472 Apr 13 15:47 /u01/app/oracle/oradata/LHR11G/ts_xxt01.dbf
61-rw-r----- 1 oracle oinstall 382738432 Apr 13 15:48 /u01/app/oracle/oradata/LHR11G/undotbs01.dbf
62-rw-r----- 1 oracle oinstall 5251072 Apr 13 15:48 /u01/app/oracle/oradata/LHR11G/users01.dbf
63[oracle@lhrora11204 scripts]$
64
2.3、XTTS 第1~n次增量前滚
在此阶段,在源端做增量数据,从源数据库创建增量备份(内部其实是仍然使用rman增量备份),将其传输到目标端,在目标端转换为目标系统Endian格式,然后应用于转换后的目标数据文件副本,将其前滚。此阶段可以多次重复运行。每次连续的增量备份都应该比以前的增量备份花费更少的时间,并且将使目标数据文件副本与源数据库更加一致。这样对于目标库上的数据文件拷贝,通过一次次应用增量数据就可以逐渐追上源库的生产数据。
这个阶段中的步骤可以运行多次,以使目标中的datafiles更接近源文件的时间/ SCN。在此阶段,源数据库完全可访问。
2.3.1、产生增量数据
1-- 产生增量数据
2create table lhr.testxtts7 tablespace users as select * from dual;
2.3.2、源端做增量备份
开始做增量备份:
1cd /home/oracle/scripts
2export TMPDIR=/home/oracle/scripts
3$ORACLE_HOME/perl/bin/perl xttdriver.pl -i
上面的操作还会在 TMPDIR 目录下产生xttplan.txt.new、tsbkupmap.txt和incrbackups.txt文件:
1[oracle@lhrora11203 scripts]$ cd /home/oracle/scripts
2[oracle@lhrora11203 scripts]$ export TMPDIR=/home/oracle/scripts
3[oracle@lhrora11203 scripts]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -i
4============================================================
5trace file is /home/oracle/scripts/incremental_Apr13_Tue_15_49_28_987//Apr13_Tue_15_49_28_987_.log
6=============================================================
7
8--------------------------------------------------------------------
9Parsing properties
10--------------------------------------------------------------------
11
12
13--------------------------------------------------------------------
14Done parsing properties
15--------------------------------------------------------------------
16
17
18--------------------------------------------------------------------
19Checking properties
20--------------------------------------------------------------------
21
22
23--------------------------------------------------------------------
24Done checking properties
25--------------------------------------------------------------------
26
27
28--------------------------------------------------------------------
29Backup incremental
30--------------------------------------------------------------------
31
32Prepare source for Tablespaces:
33 'TS_LHR' /u01/app/xtts/df_bk
34xttpreparesrc.sql for 'TS_LHR' started at Tue Apr 13 15:49:28 2021
35xttpreparesrc.sql for ended at Tue Apr 13 15:49:28 2021
36Prepare source for Tablespaces:
37 'TS_XXT' /u01/app/xtts/df_bk
38xttpreparesrc.sql for 'TS_XXT' started at Tue Apr 13 15:49:28 2021
39xttpreparesrc.sql for ended at Tue Apr 13 15:49:28 2021
40Prepare source for Tablespaces:
41 'USERS' /u01/app/xtts/df_bk
42xttpreparesrc.sql for 'USERS' started at Tue Apr 13 15:49:28 2021
43xttpreparesrc.sql for ended at Tue Apr 13 15:49:28 2021
44Prepare source for Tablespaces:
45 '''' /u01/app/xtts/df_bk
46xttpreparesrc.sql for '''' started at Tue Apr 13 15:49:28 2021
47xttpreparesrc.sql for ended at Tue Apr 13 15:49:28 2021
48Prepare source for Tablespaces:
49 '''' /u01/app/xtts/df_bk
50xttpreparesrc.sql for '''' started at Tue Apr 13 15:49:28 2021
51xttpreparesrc.sql for ended at Tue Apr 13 15:49:28 2021
52============================================================
53No new datafiles added
54=============================================================
55Prepare newscn for Tablespaces: 'TS_LHR'
56Prepare newscn for Tablespaces: 'TS_XXT'
57Prepare newscn for Tablespaces: 'USERS'
58Prepare newscn for Tablespaces: ''''''''''
59
60--------------------------------------------------------------------
61Starting incremental backup
62--------------------------------------------------------------------
63
64
65--------------------------------------------------------------------
66Done backing up incrementals
67--------------------------------------------------------------------
68
69[oracle@lhrora11203 scripts]$ more xttplan.txt.new
70 TS_LHR::::3164052
71 6
72 TS_XXT::::3164066
73 7
74 USERS::::3164038
75 4
76[oracle@lhrora11203 scripts]$ more tsbkupmap.txt
77USERS::4:::1=3evs6ugk_1_1
78TS_XXT::7:::1=3cvs6ugg_1_1
79TS_LHR::6:::1=3avs6ugc_1_1
80[oracle@lhrora11203 scripts]$ more incrbackups.txt
81/u01/app/xtts/inc_bk/3evs6ugk_1_1
82/u01/app/xtts/inc_bk/3cvs6ugg_1_1
83/u01/app/xtts/inc_bk/3avs6ugc_1_1
84[oracle@lhrora11203 scripts]$ ll /u01/app/xtts/inc_bk/ -h
85total 29M
86-rw-r----- 1 oracle oinstall 40K Apr 13 15:49 3avs6ugc_1_1
87-rw-r----- 1 oracle oinstall 9.5M Apr 13 15:49 3bvs6ugd_1_1
88-rw-r----- 1 oracle oinstall 40K Apr 13 15:49 3cvs6ugg_1_1
89-rw-r----- 1 oracle oinstall 9.5M Apr 13 15:49 3dvs6ugi_1_1
90-rw-r----- 1 oracle oinstall 88K Apr 13 15:49 3evs6ugk_1_1
91-rw-r----- 1 oracle oinstall 9.5M Apr 13 15:49 3fvs6ugl_1_1
92[oracle@lhrora11203 scripts]$ rman target /
93
94Recovery Manager: Release 11.2.0.3.0 - Production on Tue Apr 13 15:50:26 2021
95
96Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
97
98connected to target database: LHR11G (DBID=2006729750)
99
100RMAN> list backupset;
101
102using target database control file instead of recovery catalog
103
104List of Backup Sets
105===================
106
107BS Key Type LV Size Device Type Elapsed Time Completion Time
108------- ---- -- ---------- ----------- ------------ -------------------
10978 Incr 32.00K DISK 00:00:00 2021-04-13 15:49:32
110 BP Key: 78 Status: AVAILABLE Compressed: NO Tag: TTS_INCR_UPDATE
111 Piece Name: /u01/app/xtts/inc_bk/3avs6ugc_1_1
112 Keep: NOLOGS Until: 2021-04-20 15:49:32
113 List of Datafiles in backup set 78
114 File LV Type Ckp SCN Ckp Time Name
115 ---- -- ---- ---------- ------------------- ----
116 6 Incr 3165390 2021-04-13 15:49:32 /u01/app/oracle/oradata/LHR11G/ts_lhr01.dbf
117
118BS Key Type LV Size Device Type Elapsed Time Completion Time
119------- ---- -- ---------- ----------- ------------ -------------------
12079 Incr 9.39M DISK 00:00:01 2021-04-13 15:49:34
121 BP Key: 79 Status: AVAILABLE Compressed: NO Tag: TTS_INCR_UPDATE
122 Piece Name: /u01/app/xtts/inc_bk/3bvs6ugd_1_1
123 Keep: NOLOGS Until: 2021-04-20 15:49:33
124 Control File Included: Ckp SCN: 3165393 Ckp time: 2021-04-13 15:49:33
125
126BS Key Type LV Size Device Type Elapsed Time Completion Time
127------- ---- -- ---------- ----------- ------------ -------------------
12880 Incr 32.00K DISK 00:00:00 2021-04-13 15:49:36
129 BP Key: 80 Status: AVAILABLE Compressed: NO Tag: TTS_INCR_UPDATE
130 Piece Name: /u01/app/xtts/inc_bk/3cvs6ugg_1_1
131 Keep: NOLOGS Until: 2021-04-20 15:49:36
132 List of Datafiles in backup set 80
133 File LV Type Ckp SCN Ckp Time Name
134 ---- -- ---- ---------- ------------------- ----
135 7 Incr 3165418 2021-04-13 15:49:36 /u01/app/oracle/oradata/LHR11G/ts_xxt01.dbf
136
137BS Key Type LV Size Device Type Elapsed Time Completion Time
138------- ---- -- ---------- ----------- ------------ -------------------
13981 Incr 9.39M DISK 00:00:01 2021-04-13 15:49:39
140 BP Key: 81 Status: AVAILABLE Compressed: NO Tag: TTS_INCR_UPDATE
141 Piece Name: /u01/app/xtts/inc_bk/3dvs6ugi_1_1
142 Keep: NOLOGS Until: 2021-04-20 15:49:37
143 Control File Included: Ckp SCN: 3165422 Ckp time: 2021-04-13 15:49:38
144
145BS Key Type LV Size Device Type Elapsed Time Completion Time
146------- ---- -- ---------- ----------- ------------ -------------------
14782 Incr 80.00K DISK 00:00:00 2021-04-13 15:49:40
148 BP Key: 82 Status: AVAILABLE Compressed: NO Tag: TTS_INCR_UPDATE
149 Piece Name: /u01/app/xtts/inc_bk/3evs6ugk_1_1
150 Keep: NOLOGS Until: 2021-04-20 15:49:40
151 List of Datafiles in backup set 82
152 File LV Type Ckp SCN Ckp Time Name
153 ---- -- ---- ---------- ------------------- ----
154 4 Incr 3165446 2021-04-13 15:49:40 /u01/app/oracle/oradata/LHR11G/users01.dbf
155
156BS Key Type LV Size Device Type Elapsed Time Completion Time
157------- ---- -- ---------- ----------- ------------ -------------------
15883 Incr 9.39M DISK 00:00:01 2021-04-13 15:49:42
159 BP Key: 83 Status: AVAILABLE Compressed: NO Tag: TTS_INCR_UPDATE
160 Piece Name: /u01/app/xtts/inc_bk/3fvs6ugl_1_1
161 Keep: NOLOGS Until: 2021-04-20 15:49:41
162 Control File Included: Ckp SCN: 3165450 Ckp time: 2021-04-13 15:49:41
163
164RMAN>
2.3.3、将源端的增量数据传到目标端
这里传递增量数据的时候,还需要将源端/home/oracle/scripts/目录下的 xttplan.txt、 tsbkupmap.txt和incrbackups.txt文件都传输到目标端。每当你进行一次增量的备份操作,这 3个文件的内容都会发现变化 。
每一次增量操作之后,都需要将这 3个文件传到目标端数据库的 home/oracle/scripts/目录中。
1-- 注意:增量内容应该拷贝到目标端的全量备份路径下
2scp /u01/app/xtts/inc_bk/* 172.17.0.4:/u01/app/xtts/df_bk/
3
4
5scp /home/oracle/scripts/xttplan.txt 172.17.0.4:/home/oracle/scripts/
6scp /home/oracle/scripts/tsbkupmap.txt 172.17.0.4:/home/oracle/scripts/
7scp /home/oracle/scripts/incrbackups.txt 172.17.0.4:/home/oracle/scripts/
8
2.3.4、目标端进行增量转换和数据写入同步
1export XTTDEBUG=1
2cd /home/oracle/scripts
3export TMPDIR=/home/oracle/scripts
4$ORACLE_HOME/perl/bin/perl xttdriver.pl -r
如果一套库上有多个实例的话,在执行该步骤之前,需要对环境变量进行确认,如检查当前ORACLE_SID是否是需要执行的SID,否则可能会恢复到其他实例上。(并非是真实的恢复,因为其他实例跟这个备份集没有任何关系,但恢复的过程会在其他实例上进行一遍,如关闭/启动数据库,包括增量恢复的日志都会在另一个数据库上显示。)如果发生了这种事情,不用紧张,调整好环境变量,再执行一次perl xttdriver.pl –r即可。误操作的实例不受影响。
注:
1.每次增量时都必须复制xttplan.txt、tsbkupmap.txt和incrbackups.txt,因为它们的内容在每次增量时都是不同的。
2.不修改、不复制文件incrbackups.txt.new。
3.该过程每次执行都会重启目标数据库。
4.如果重新开始,那么需要删除/home/oracle/scripts/FAILED
5.XTTDEBUG=1为打开debug模式,进行调试。Debug 模式可以打印更多的屏幕输出,并且开启 RMAN 的 debug 模式。要启用 debug 模式,或者以 -d 参数运行 xttdriver.pl 或者在运行 xttdriver.pl 前设置环境变量 XTTDEBUG=1。这个参数接受3种级别,-d[1/2/3]级别3会显示最多的信息。
执行过程:
1[oracle@lhrora11204 scripts]$ cd /home/oracle/scripts
2[oracle@lhrora11204 scripts]$ export TMPDIR=/home/oracle/scripts
3[oracle@lhrora11204 scripts]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -r
4============================================================
5trace file is /home/oracle/scripts/rollforward_Apr13_Tue_15_52_56_869//Apr13_Tue_15_52_56_869_.log
6=============================================================
7
8--------------------------------------------------------------------
9Parsing properties
10--------------------------------------------------------------------
11
12
13--------------------------------------------------------------------
14Done parsing properties
15--------------------------------------------------------------------
16
17
18--------------------------------------------------------------------
19Checking properties
20--------------------------------------------------------------------
21
22
23--------------------------------------------------------------------
24Done checking properties
25--------------------------------------------------------------------
26
27
28--------------------------------------------------------------------
29Start rollforward
30--------------------------------------------------------------------
31
32
33--------------------------------------------------------------------
34End of rollforward phase
35--------------------------------------------------------------------
2.3.5、源端确定下一个增量备份的FROM_SCN
1cd /home/oracle/scripts
2export TMPDIR=/home/oracle/scripts
3$ORACLE_HOME/perl/bin/perl xttdriver.pl -s
该步骤会计算下一个FROM_SCN,将其记录在xttplan.txt文件中,然后在创建下一个增量备份时使用该SCN。
该步骤会将-i时生成的xttplan.txt.new改名为xttplan.txt,并将原来的xttplan.txt备份。
建议在目标端每次做完recover动作后,源端就执行一次该命令,以免遗忘。
执行过程:
1[oracle@lhrora11203 scripts]$ cd /home/oracle/scripts
2[oracle@lhrora11203 scripts]$ export TMPDIR=/home/oracle/scripts
3[oracle@lhrora11203 scripts]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -s
4============================================================
5trace file is /home/oracle/scripts/determinescn_Apr13_Tue_15_53_08_940//Apr13_Tue_15_53_08_940_.log
6=============================================================
7
8--------------------------------------------------------------------
9Parsing properties
10--------------------------------------------------------------------
11
12
13--------------------------------------------------------------------
14Done parsing properties
15--------------------------------------------------------------------
16
17
18--------------------------------------------------------------------
19Checking properties
20--------------------------------------------------------------------
21
22
23--------------------------------------------------------------------
24Done checking properties
25--------------------------------------------------------------------
26
27Prepare newscn for Tablespaces: 'TS_LHR'
28Prepare newscn for Tablespaces: 'TS_XXT'
29Prepare newscn for Tablespaces: 'USERS'
30Prepare newscn for Tablespaces: ''''
31Prepare newscn for Tablespaces: ''''
32New /home/oracle/scripts/xttplan.txt with FROM SCN's generated
33
2.4、XTTS 最后一次增量前滚
2.4.1、将表空间置为RO状态
假设我们进行了多次增量操作之后,在停机时间的时候,再将源端数据库中需要传输的表空间设置为只读模式 :
1-- 产生增量数据
2create table lhr.testxtts66 tablespace users as select * from dual;
3
4select 'ALTER TABLESPACE '||name||' READ ONLY;' exec_sql
5from v$tablespace
6where NAME not in ('SYSTEM','SYSAUX','UNDOTBS1','TEMP');
7
8
9SYS@LHR11G> select tablespace_name,status from dba_tablespaces;
10
11TABLESPACE_NAME STATUS
12------------------------------------------------------------ ------------------
13SYSTEM ONLINE
14SYSAUX ONLINE
15UNDOTBS1 ONLINE
16TEMP ONLINE
17USERS READ ONLY
18EXAMPLE ONLINE
19TS_LHR READ ONLY
20TS_XXT READ ONLY
2.4.2、源端做增量备份
首先对上一次的增量备份目录做迁移:
1mv /u01/app/xtts/inc_bk /u01/app/xtts/inc_bk1
2mkdir -p /u01/app/xtts/inc_bk
开始做增量备份:
1cd /home/oracle/scripts
2export TMPDIR=/home/oracle/scripts
3$ORACLE_HOME/perl/bin/perl xttdriver.pl -i
2.4.3、将源端的增量数据传到目标端
这里传递增量数据的时候,还需要将源端/home/oracle/scripts/目录下的 xttplan.txt、 tsbkupmap.txt和incrbackups.txt文件都传输到目标端。每当你进行一次增量的备份操作,这 3个文件的内容都会发现变化 。
每一次增量操作之后,都需要将这 3个文件传到目标端数据库的 home/oracle/scripts/目录中。
1-- 注意:增量内容应该拷贝到目标端的全量备份路径下
2scp /u01/app/xtts/inc_bk/* 172.17.0.4:/u01/app/xtts/df_bk/
3
4
5scp /home/oracle/scripts/xttplan.txt 172.17.0.4:/home/oracle/scripts/
6scp /home/oracle/scripts/tsbkupmap.txt 172.17.0.4:/home/oracle/scripts/
7scp /home/oracle/scripts/incrbackups.txt 172.17.0.4:/home/oracle/scripts/
8
2.4.4、目标端进行增量转换和数据写入同步
1cd /home/oracle/scripts
2export TMPDIR=/home/oracle/scripts
3$ORACLE_HOME/perl/bin/perl xttdriver.pl -r
2.5、迁移元数据
注意在导出时,TRANSPORT_TABLESPACES参数需要的表空间要写全,别遗漏。
在目标端进行IMPDP时,transport_datafiles需要将所有的数据文件添加进去。
如果数据文件很多,人为添加容易出错,可以使用perl xttdriver.pl –e获取全部数据文件列表。
2.5.1、在目标库创建业务用户
相关脚本在前边的准备阶段已经准备好了:
1create user xxt identified by lhr;
2create user lhr identified by lhr;
3grant dba to xxt,lhr;
可以使用导出和导入分开来执行,也可以直接通过network_link来做远程导入,而不需要做导出操作:
2.5.2、导入xtts的元数据
生成导入脚本:
1-- 在目标端可以执行如下命令生成impdp,命令在xttplugin.txt文件
2[oracle@lhrora11204 scripts]$ cd /home/oracle/scripts
3[oracle@lhrora11204 scripts]$ export TMPDIR=/home/oracle/scripts
4[oracle@lhrora11204 scripts]$ $ORACLE_HOME/perl/bin/perl xttdriver.pl -e
5============================================================
6trace file is /home/oracle/scripts/generate_Apr13_Tue_15_58_53_193//Apr13_Tue_15_58_53_193_.log
7=============================================================
8
9--------------------------------------------------------------------
10Parsing properties
11--------------------------------------------------------------------
12
13
14--------------------------------------------------------------------
15Done parsing properties
16--------------------------------------------------------------------
17
18
19--------------------------------------------------------------------
20Checking properties
21--------------------------------------------------------------------
22
23
24--------------------------------------------------------------------
25Done checking properties
26--------------------------------------------------------------------
27
28
29--------------------------------------------------------------------
30Generating plugin
31--------------------------------------------------------------------
32
33
34--------------------------------------------------------------------
35Done generating plugin file /home/oracle/scripts/xttplugin.txt
36--------------------------------------------------------------------
37
38
39[oracle@lhrora11204 scripts]$ more /home/oracle/scripts/xttplugin.txt
40impdp directory=<DATA_PUMP_DIR> logfile=<tts_imp.log> \
41network_link=<ttslink> transport_full_check=no \
42transport_tablespaces=TS_LHR,TS_XXT,USERS \
43transport_datafiles='/u01/app/oracle/oradata/LHR11G/ts_lhr01.dbf','/u01/app/oracle/oradata/LHR11G/ts_xxt01.dbf','/u01/app/oracle/oradata/LHR11G/users01.dbf'
在目标端开始导入:
1-- 目标端创建dblink
2create public database link ttslink connect to system identified by lhr using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.17.0.3 )(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = LHR11G) ) )';
3
4
5-- 利用dblink直接迁移元数据,这里只会迁移表、索引、约束等,因为其它对象存储在系统表空间中
6impdp system/lhr directory=DATA_PUMP_DIR logfile=tts_imp_lhr.log \
7network_link=ttslink transport_full_check=no \
8EXCLUDE=STATISTICS \
9transport_tablespaces=TS_LHR,TS_XXT,USERS \
10transport_datafiles='/u01/app/oracle/oradata/LHR11G/ts_lhr01.dbf','/u01/app/oracle/oradata/LHR11G/ts_xxt01.dbf','/u01/app/oracle/oradata/LHR11G/users01.dbf'
执行过程:
1[oracle@lhrora11204 scripts]$ impdp system/lhr directory=DATA_PUMP_DIR \
2> network_link=ttslink transport_full_check=no \
3> EXCLUDE=STATISTICS \
4> transport_tablespaces=TS_LHR,TS_XXT,USERS \
5> transport_datafiles='/u01/app/oracle/oradata/LHR11G/ts_lhr01.dbf','/u01/app/oracle/oradata/LHR11G/ts_xxt01.dbf','/u01/app/oracle/oradata/LHR11G/users01.dbf'
6
7Import: Release 11.2.0.4.0 - Production on Tue Apr 13 16:04:45 2021
8
9Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
10
11
12Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
13With the Partitioning, OLAP, Data Mining and Real Application Testing options
14Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** directory=DATA_PUMP_DIR network_link=ttslink transport_full_check=no EXCLUDE=STATISTICS transport_tablespaces=TS_LHR,TS_XXT,USERS transport_datafiles=/u01/app/oracle/oradata/LHR11G/ts_lhr01.dbf,/u01/app/oracle/oradata/LHR11G/ts_xxt01.dbf,/u01/app/oracle/oradata/LHR11G/users01.dbf
15Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
16Processing object type TRANSPORTABLE_EXPORT/TABLE
17Processing object type TRANSPORTABLE_EXPORT/INDEX/INDEX
18Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT
19Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS
20Processing object type TRANSPORTABLE_EXPORT/CONSTRAINT/REF_CONSTRAINT
21Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS
22Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
23Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at Tue Apr 13 16:06:19 2021 elapsed 0 00:01:27
24
2.5.3、导入存储过程、触发器、函数、包、视图、序列
1-- 导入存储过程、触发器、函数、包、视图、序列
2impdp system/lhr directory=DATA_PUMP_DIR \
3network_link=ttslink schemas=LHR,XXT content=metadata_only exclude=index,table,constraint parallel=8
执行过程:
1[oracle@lhrora11204 scripts]$ impdp system/lhr directory=DATA_PUMP_DIR \
2> network_link=ttslink schemas=LHR,XXT content=metadata_only exclude=index,table,constraint parallel=8
3
4Import: Release 11.2.0.4.0 - Production on Tue Apr 13 16:07:08 2021
5
6Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
7
8Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
9With the Partitioning, OLAP, Data Mining and Real Application Testing options
10Starting "SYSTEM"."SYS_IMPORT_SCHEMA_01": system/******** directory=DATA_PUMP_DIR network_link=ttslink schemas=LHR,XXT content=metadata_only exclude=index,table,constraint parallel=8
11Processing object type SCHEMA_EXPORT/USER
12Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
13Processing object type SCHEMA_EXPORT/ROLE_GRANT
14Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
15Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
16Processing object type SCHEMA_EXPORT/SYNONYM/SYNONYM
17Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
18Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
19Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
20Processing object type SCHEMA_EXPORT/VIEW/VIEW
21Job "SYSTEM"."SYS_IMPORT_SCHEMA_01" successfully completed at Tue Apr 13 16:07:31 2021 elapsed 0 00:00:20
22
2.5.4、导入公共同义词和dblink等其它对象
1-- 导入其它对象
2impdp system/lhr directory=DATA_PUMP_DIR \
3network_link=ttslink full=y include=JOB,PROCOBJ,USER,DB_LINK,DIRECTORY,SYNONYM,PROFILE,ROLE parallel=8
4
5impdp system/lhr directory=DATA_PUMP_DIR \
6network_link=ttslink full=y content=metadata_only exclude=index,table,constraint parallel=8
7
8
9-- 导入公共同义词
10set long 9999
11select dbms_metadata.get_ddl('SYNONYM',SYNONYM_NAME,OWNER)
12FROM dba_synonyms
13where owner='PUBLIC' and table_owner in ('LHR','XXT');
14
15
16-- 导入dblink
17set long 9999
18select dbms_metadata.get_ddl('DB_LINK',DB_LINK,OWNER)
19FROM DBA_DB_LINKS;
2.6、迁移完成后的收尾工作
2.6.1、查看源端、目标端的数据一致性
1select count(*) from lhr.testxtts7;
2select count(*) from lhr.testxtts77;
3
4select owner, object_type, count(*)
5 from dba_objects
6where object_name not like 'BIN%'
7 and owner in ('LHR','XXT')
8group by owner, object_type
9order by 1,2 desc;
10
11select owner, object_type, count(*)
12 from dba_objects
13where status <> 'VALID'
14 and owner in ('LHR','XXT')
15group by owner, object_type
16order by 1, 2 desc;
执行过程:
1SYS@LHR11G> select owner, object_type, count(*)
2 2 from dba_objects
3where object_name not like 'BIN%'
4group by owner, object_type
5 and owner in ('LHR','XXT')
6 5 group by owner, object_type
7 6 order by 1,2 desc;
8
9OWNER OBJECT_TYPE COUNT(*)
10------------------------------------------------------------ -------------------------------------- ----------
11LHR VIEW 1
12LHR TABLE 11
13LHR SYNONYM 1
14LHR SEQUENCE 1
15LHR PROCEDURE 2
16XXT TABLE 2
17
186 rows selected.
19
20SYS@LHR11G>
21SYS@LHR11G> select owner, object_type, count(*)
22 2 from dba_objects
23where status <> 'VALID'
24 and owner in ('LHR','XXT')
25 5 group by owner, object_type
26 6 order by 1, 2 desc;
27
28OWNER OBJECT_TYPE COUNT(*)
29------------------------------------------------------------ -------------------------------------- ----------
30LHR PROCEDURE 1
迁移后的对象个数和之前一致。
2.6.2、更改用户默认表空间
1alter user xxt default tablespace USERS;
2.6.3、目标库的表空间修改为读写模式
1select 'ALTER TABLESPACE '||name||' READ WRITE;' exec_sql
2from v$tablespace
3where NAME not in ('SYSTEM','SYSAUX','UNDOTBS1','TEMP');
4
5
6select tablespace_name,status from dba_tablespaces;
执行过程:
1SYS@LHR11G> select 'ALTER TABLESPACE '||name||' READ WRITE;' exec_sql
2 2 from v$tablespace
3 3 where NAME not in ('SYSTEM','SYSAUX','UNDOTBS1','TEMP');
4
5EXEC_SQL
6----------------------------------------------------------------------------------------------------------------------
7ALTER TABLESPACE TS_LHR READ WRITE;
8ALTER TABLESPACE TS_XXT READ WRITE;
9ALTER TABLESPACE USERS READ WRITE;
10
11
12SYS@LHR11G>
13SYS@LHR11G> select tablespace_name,status from dba_tablespaces;
14
15TABLESPACE_NAME STATUS
16------------------------------------------------------------ ------------------
17SYSTEM ONLINE
18SYSAUX ONLINE
19UNDOTBS1 ONLINE
20TEMP ONLINE
21USERS READ ONLY
22TS_LHR READ ONLY
23TS_XXT READ ONLY
24
257 rows selected.
26
27SYS@LHR11G> ALTER TABLESPACE TS_LHR READ WRITE;
28Tablespace altered.
29
30SYS@LHR11G> ALTER TABLESPACE TS_XXT READ WRITE;
31Tablespace altered.
32
33SYS@LHR11G> ALTER TABLESPACE USERS READ WRITE;
34Tablespace altered.
35
36SYS@LHR11G> select tablespace_name,status from dba_tablespaces;
37
38TABLESPACE_NAME STATUS
39------------------------------------------------------------ ------------------
40SYSTEM ONLINE
41SYSAUX ONLINE
42UNDOTBS1 ONLINE
43TEMP ONLINE
44USERS ONLINE
45TS_LHR ONLINE
46TS_XXT ONLINE
47
487 rows selected.
2.6.4、校验数据文件完整性
运行RMAN,通过运行VALIDATE TABLESPACE检查物理和逻辑块损坏情况,如下所示:
1RMAN> validate tablespace TS_LHR,TS_XXT,USERS check logical;
2
3Starting validate at 2021-04-13 16:09:23
4using target database control file instead of recovery catalog
5allocated channel: ORA_DISK_1
6channel ORA_DISK_1: SID=192 device type=DISK
7channel ORA_DISK_1: starting validation of datafile
8channel ORA_DISK_1: specifying datafile(s) for validation
9input datafile file number=00006 name=/u01/app/oracle/oradata/LHR11G/ts_xxt01.dbf
10input datafile file number=00004 name=/u01/app/oracle/oradata/LHR11G/ts_lhr01.dbf
11input datafile file number=00007 name=/u01/app/oracle/oradata/LHR11G/users01.dbf
12channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
13List of Datafiles
14=================
15File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
16---- ------ -------------- ------------ --------------- ----------
174 OK 0 53 1280 2315665
18 File Name: /u01/app/oracle/oradata/LHR11G/ts_lhr01.dbf
19 Block Type Blocks Failing Blocks Processed
20 ---------- -------------- ----------------
21 Data 0 1065
22 Index 0 0
23 Other 0 162
24
25File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
26---- ------ -------------- ------------ --------------- ----------
276 OK 0 3705 3840 2315459
28 File Name: /u01/app/oracle/oradata/LHR11G/ts_xxt01.dbf
29 Block Type Blocks Failing Blocks Processed
30 ---------- -------------- ----------------
31 Data 0 2
32 Index 0 0
33 Other 0 133
34
35File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
36---- ------ -------------- ------------ --------------- ----------
377 OK 0 17 672 3165644
38 File Name: /u01/app/oracle/oradata/LHR11G/users01.dbf
39 Block Type Blocks Failing Blocks Processed
40 ---------- -------------- ----------------
41 Data 0 100
42 Index 0 37
43 Other 0 486
44
45Finished validate at 2021-04-13 16:09:25
2.6.5、收集统计信息
1exec dbms_stats.gather_database_stats(degree => 8);
2exec dbms_stats.gather_dictionary_stats(degree => 8);
3exec dbms_stats.gather_fixed_objects_stats();
7、总结
1[oracle@dest]$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0.4/xtt_home
2[oracle@dest]$ export ORACLE_SID=xtt
3[oracle@dest]$ cat > $ORACLE_HOME/dbs/init$ORACLE_SID.ora << "EOF"
4db_name=xtt
5compatible=11.2.0.4.0
6EOF
7
8[oracle@dest]$ sqlplus / as sysdba
9SQL> startup nomount
在源库开启块改变跟踪功能BCT 开启并行备份,例如:RMAN> configure device type disk parallelism 8; 提升impdp导入元数据库的速度,例如排除统计信息,开启并行等 临时提高源库到目标库的带宽网络
注意:本文所使用的的测试环境皆为docker环境,可以参考: 所有版本的Oracle环境:https://mp.weixin.qq.com/s/XJxgyCPcVTdhlPq7VcTMDg 11.2.0.4的Oracle环境: https://mp.weixin.qq.com/s/1Z630TbilkQ3aAyOcosl4w 11.2.0.3的Oracle环境:https://mp.weixin.qq.com/s/jb0hnhsCwyGWjOmP2biGJA
姊妹篇文章:【DB宝52】Oracle异构平台迁移利器之XTTS(使用rman方式)
本文结束。

• 微信公众号:DB宝,作者:小麦苗
• 作者博客地址:http://blog.itpub.net/26736162/
• 作者微信:db_bao• 作者QQ:646634621,QQ群:230161599、618766405
• 提供Oracle OCP、OCM、高可用(rac+dg+ogg)和MySQL DBA培训
• 版权所有,欢迎分享本文,转载请保留出处• 若有侵权请联系小麦苗删除

★DB宝分享的IT资料:https://mp.weixin.qq.com/s/Iwsy-zkzwgs8nYkcMz29ag★DB宝笔试面试详解:https://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w

长按下图识别二维码,关注小麦苗的微信公众号:DB宝,学习最实用的数据库技术。







