暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

XTTS RMAN Backup步骤

原创 Eygle 2019-07-24
2152

1迁移检查

基于以上这些条件,在开始XTTS迁移之前,需对整个实施环境进行一次全面的检查,保证在实施之前环境满足迁移要求。

1.1数据库时区检查,保持源库和目标库时区一致性。

select dbtimezone from dual;
DBTIME
------
+08:00

 

1.2数据库字符集检查,保持源库和目标库字符集一致性。

select * from nls_database_parameters where parameter like '%CHARACTERSET%';
PARAMETER                      VALUE
------------------------------ ------------------------------------
NLS_CHARACTERSET               AL32UTF8
NLS_NCHAR_CHARACTERSET         UTF8

 

1.3数据库目标端补丁情况检查。

目标端psu根据数据库安装配置最佳实践规范配置安装最新PSU。

select 'opatch',comments from dba_registry_history
'OPATC COMMENTS
------ --------------------------------------
opatch PSU 11.2.0.4.4

 

使用dbms_file_transfer方法,在11g中目标端建议安装的补丁如下:

Patch 19023822,修复目标端使用dbms_file_transfer.get_file包获取源端数据文件出现ORA-03106的情况。

Patch 22171097: MERGE REQUEST ON TOP OF DATABASE PSU 11.2.0.4.6 FOR BugS 17534365 19023822。

如果准备阶段使用rman方法,目标端没有小补丁安装需求。

1.4检查目标库端数据库组件安装情况,需包含且多于源库组件。

源端组件:

COMP_NAME
----------------------------------------------------
Oracle Application Express
Oracle Multimedia
Oracle XML Database
Oracle Expression Filter
Oracle Rules Manager
Oracle Workspace Manager
Oracle Database Catalog Views
Oracle Database Packages and Types
JServer JAVA Virtual Machine
Oracle XDK
Oracle Database Java Packages

 

目标端组件:

COMP_NAME
--------------------------
Oracle Enterprise Manager
Oracle Workspace Manager
Oracle Database Catalog Views
Oracle Database Packages and Types

 

注:组件不同,可能会导致一些特殊的业务受到影响,需同开发、应用进行确认。

1.5检查是否使用了key compression的索引组织表。

Select index_name,table_name from dba_indexes where compression=’ENABLED’;
Select owner,table_name from dba_tables where iot_type is not null;

 

如果存在key compression的索引组织表,目标端需要安装patch 14835322,否则索引组织表无法导入到目标端,需要手动重建,或者通过手工方式导入。

1.6检查源端数据文件、表空间异常情况。

Select name from v$datafile where instr(name,’ ‘) > 0;

 

如果存在空格或者换行符数据文件,需要将该数据文件rename,否则在传输过程中会报错终止。如果存在同名表空间,而且该表空间中的对象需要传输,建议将目标端中的表空间rename,以避免冲突。

1.7检查相同表空间下是否存在不同目录下的同名数据文件。

使用dbms_file_transfer方式进行XTTS数据迁移,需要通过修改准备阶段的getfile.SQL和xttnewdatafile文件来调整数据文件生成的路径。

select substr(file_name,-6,2) from dba_data_files where tablespace_name='TBS_NAME' order by 1;

 

如果目标端有多个目录,指定数据文件生成在不同的目录,可以避免冲突。

如果准备阶段使用rman方式进行同步,则所有的数据文件会转换为xtf结尾的文件,文件名会重新命名,所以不需要提前修改。

1.8检查表空间自包含。

在传输阶段,可能因为目标端数据文件目录所限制,需要将各个表空间拆分进行传送。在导入元数据阶段,考虑到字包含特性,需要将所有的表空间汇总进行传送。检查表空间时,只检查业务表空间的自包含情况,系统表空间、临时表空间、undo表空间不在检查列。因为在XTTS数据迁移时,无需对系统表空间、temp、undo进行传输,需要在目标端重建。

SQL>execute dbms_tts.transport_set_check(TBS_NAME ,TRUE);
SQL> SELECT * from sys.transport_set_violations;
no rows selected

 

1.9检查源端compatible参数。

源端不可以是Windows,源端的compatible.rdbms必须大于10.2.0,且不大于目标端compatible.rdbms。

show parameter compatible

 

如果目标端数据库版本是11.2.0.3或更低。那么需要在目标端安装11.2.0.4 并创建实例,然后用来进行备份集转换。如果11.2.0.4中转实例使用ASM,那么ASM版本也必须是11.2.0.4,否则报错ORA-15295。

1.10启用block change tracking(块跟踪)功能。

块跟踪功能,在源端数据量较大,或者数据改变较大时启用,需要在源库安装补丁Bug 16850197。该补丁在11.2.0.3.9和11.2.0.4版本psu中提供。如果源库是在上述版本前,需要安装个别补丁,注意块跟踪设置的目录大小,避免因块跟踪目录满而导致源数据库hang。

1.11检查目标端的db_files参数。

在元数据导入阶段,如果目标端的db_files参数小于源端的db_files参数,会导致元数据因无法关联创建数据文件而导入出错,所以要确保目标端参数大于或者等于源端。

Show parameter db_files

2. 创建db_link。

create public database link ttslink connect to system identified by ******
using '(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.111.118.103)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )';

3. XTTS执行脚本配置。

存放转换脚本

/home/Oracle/enmotest/xtt

存放执行脚本

/home/Oracle/enmotest/xtt-scripts

配置必要脚本

SCZXB[/home/Oracle/enmotest/xtt-scripts]$more xtt.properties
tablespaces=ENMOTEST_TABS---表空间名称
platformid=4 ---平台代号
dfcopydir=/dump2/enmotest/rman_copy---数据文件复制存放的路径
backupformat=/dump2/enmotest/rman_incr---增量备份集存放的路径
stageondest=/dump2/enmotest/rman_incr----目标端存放数据文件复制目录和存放增量备份的目录
storageondest=+FLASHDATA/orcl/DATAFILE---目标端数据文件转换后的最终目录
backupondest=/dump2/enmotest/rman_incr----备份文件转换后生成的目录

 

4. 源库发起rman copy。

--源端进行第一次rman copy数据文件

perl /home/Oracle/enmotest/xtt-scripts/xttdriver.pl -p

 

5. 目标库复制生成脚本。

在目标端,通过Oracle用户复制源端/home/Oracle/enmotest/xtt/rmanconvert.cmd到目标端的/home/Oracle/enmotest/xtt目录下。

scp source:/home/Oracle/enmotest/xtt/rmanconvert.cmd  dest:/home/Oracle/enmotest/xtt

 

6. 目标端进行转换。

----目标端进行转换

perl /home/Oracle/enmotest/xtt-scripts/xttdriver.pl -c

 

7. 源端增量备份。

cd /home/Oracle/enmotest/xtt-scipts
perl xttdriver.pl -i

 

结束会生成一个新的记录scn的文件:xttplan.txt.new。

8. 复制生产文件后转换应用。

将tsbkupmap.txt xttplan.txt传到目标端/home/Oracle/enmotest/xtt,将incrbackups.txt传到目标端/dump2/enmotest/rman_incr。

cd /home/Oracle/xtt
cp incrbackups.txt /dump2/enmotest/rman_incr
cp xttplan.txt tsbkupmap.txt /dump2

目标端开始应用增量备份:

cd /home/Oracle/enmotest/xtt-scritps
perl xttdriver.pl -r

 

9. 确定新的scn。

perl xttdriver.pl -s

 

该步骤会将-i时生成的xttplan.txt.new改名为xttplan.txt,并将原来的xttplan.txt备份。

10. 源库read only 进行最后一次增量备份。

--源库表空间read only

alter tablespace ENMOTEST_TABS read only;

--最后一次增量备份                                        

perl xttdriver.pl -i

将tsbkupmap.txt xttplan.txt传到目标端/home/Oracle/enmotest/xtt

将incrbackups.txt传到目标端/dump2/enmotest/rman_incr

cd /home/Oracle/xtt
cp incrbackups.txt /dump2/enmotest/rman_incr
cp xttplan.txt tsbkupmap.txt /dump2
cp xttplan.txt tsbkupmap.txt /home/Oracle/enmotest/xtt

 

11. 应用增量备份,完成最后一次增量恢复。

cd /home/Oracle/xtt-scripts
perl xttdriver.pl -r

 

12. 元数据导入脚本生成。

--目标端运行

cd /home/Oracle/xtt-scripts
perl xttdriver.pl -e

 

13. 目标端创建用户。

--目标库先创建用户,并且权限同源库一样

create user enmoXTTStest identified by ********* default tablespace USERS;

 

14. 导入元数据。

impdp \'/ as sysdba\' directory=DATA_PUMP_DIR logfile=tts_imp.log network_link=ttslink transport_full_check=no transport_tablespaces=ENMOTEST_TABS transport_datafiles='+ FLASHDATA/orcl/datafile/enmotest_tabs_1024.xtf'

 

15. 数据验证。

应当根据数据特点,定制脚本、程序,进行基本的数据验证。


最后修改时间:2019-07-24 15:27:49
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论