查看: 542|回复: 0

[原创] ORACLE xtts + RMAN

[复制链接]
论坛徽章:
20
娜美
日期:2017-06-26 15:18:15目光如炬
日期:2018-04-29 22:00:00火眼金睛
日期:2018-04-30 22:00:00目光如炬
日期:2018-07-29 22:00:00火眼金睛
日期:2018-08-31 22:00:00目光如炬
日期:2018-09-02 22:00:00目光如炬
日期:2018-09-16 22:00:01火眼金睛
日期:2018-09-30 22:00:00目光如炬
日期:2018-10-14 22:00:00目光如炬
日期:2018-04-22 22:00:00
发表于 2018-10-10 12:26 | 显示全部楼层 |阅读模式
本帖最后由 sunyunyi 于 2018-11-10 11:01 编辑


                                           ORACLE  xtts + RMAN

作者简介:
----------------------------------------------------------------------
@ 孙显鹏,海天起点oracle技术专家,十年从业经验
@ 精通oracle内部原理,擅长调优和解决疑难问题
@ 致力于帮助客户解决生产中的问题,提高生产效率。
@ 爱好:书法,周易,中医。微信:sunyunyi_sun
@ 易曰:精义入神,以致用也!
@ 调优乃燮理阴阳何其难也!
----------------------------------------------------------------------


前言:
XTTS(增强的表空间传输)是TTS(表空间传输)的增强版,可实现数据库之间的表空间迁移,特别是在异构环境下数据量特别大时是最佳的选择方案。XTTS+incarnation backup可以极大降低迁移时的停机时间窗口。通过多次增量备份恢复可达到减少和原库之间的日志间隔,从而达到降低最终迁移时的时间窗口。XTTS+incarnation backup 方式非常高效。下面演示如何使用XTTS+incarnationbackup方式迁移或者升级数据库。
说明:
既然环境为12C,那么为什么不使用12c的xtts呢?因为12c的xtts要求原库版本最低为12c所以目前12C的xtts使用范围还是比较小。11GR2提供了XTTS+incarnationbackup 功能,原库最低版本为10G,目标库版本必须为11.2.0.4,所以11GR2 的xtts 目前使用非常广泛。

环境:
Xtt版本:11.2.0.4
linux 6 +oracle 11.2.0.3 linux 7 +oracle12.2.0.1.0

需要迁移表空间如下:

Tablespace          Tablespace     Alloc        Free         Used     Used     Tablespace Segmnet
Name                Type           Space Mb     Space Mb     Space Mb Percent % Status     Management
-------------------- ---------- ------------------------ ------------ --------- ---------- ----------
YA_CLAIM_IDX        PERMANENT         2,048          703       1,345   65.68%  ONLINE    AUTO
YA_CLAIM_DB         PERMANENT         4,096        1,471        2,625  64.09%  ONLINE     AUTO

5 /u01/app/oracle/oradata/primary/ya_claim.dbf
6 /u01/app/oracle/oradata/primary/ya_claiminx.dbf


主要步骤说明:
1:准备阶段
   建立directory 对象和dblink
   配置环境变量
   配置xtts 配置文件
   通过dbms_file_transfer方式传输并转化字节编码(如果需要)
   --建议使用dbms_file_transfer方式,即使在12c环境下。Rman方式详见mos文档。
2:前滚阶段
   原库执行增量备份
   传输增量备份到目标库
   转换目标库的增量备份字节编码
--如果在此时原库添加了表空间或者增加了数据文件,那么需要执行额外操作,详见mos
3:表空间传输阶段
   原库表空间设置为只读
   重复第二步操作
   导入metadata数据到目标库
   修改原库表空间为读写模式

4:后续验证数据
   数据测试

详细操作步骤:
Note
source_db: 表示在原库操作
dest_db:表示在目标库操作


1:准备阶段

source_db:
create directory sourcedir as'/u01/app/oracle/oradata/primary'
/
dest_db:
create directory destdir as '+DATA/ORCL/DATAFILE'
/
create public database link ttslink connect tosystem identified by system_user using
'
(DESCRIPTION=
   (ADDRESS_LIST =
    (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.55)(PORT=1521))
    )
    (connect_data =
         (sid= primary)
     )
  )
'
/

select * from dual@ttslink
/

source_db:

[oracle@piamarydb xtt]$ unziprman_xttconvert_v3.zip
Archive: rman_xttconvert_v3.zip
  inflating:xtt.properties         
  inflating:xttcnvrtbkupdest.sql   
  inflating:xttdbopen.sql           
  inflating:xttdriver.pl            
  inflating:xttprep.tmpl            
extracting:xttstartupnomount.sql

vi xtt.properties
tablespaces=YA_CLAIM_DB,YA_CLAIM_IDX
platformid=13
srcdir=SOURCEDIR
dstdir=DESTDIR
srclink=TTSLINK
backupformat=/stage_source
stageondest=/stage_dest
backupondest=+DGDATA
asm_home=/u02/soft
asm_sid=+ASM
parallel=3
getfileparallel=4

使用dbms_file_transfer方式传输和转换数据文件。
srcdirdstdir--指定原库和目标库目录名--详细阅读xtt.properties注释
backupformat--指定增量备份在原库存放位置
stageondest--指定增量备份在目标库存放位置
backupondest--指定增量备份转换后在目标库存放位置,如果指定为ASM磁盘组,需要设置asm_homeasm_sid

因为使用dbms_file_transfer方式,不需要数据文件在原库和目标库存放和转换位置,该方式使用dblink在传输时自动转换字节编码,推荐使用该方式。


scp -r /home/oracle/xtt192.168.56.101:/home/oracle/xtt

mkdir /stage_source
chown -R oracle.oinstall /stage_source

export TMPDIR=/home/oracle/xtt

dest_db:
mkdir /stage_dest
chown -R oracle.oinstall /stage_dest
export TMPDIR=/home/oracle/xtt

source_db:

$ORACLE_HOME/perl/bin/perl xttdriver.pl -S
scp /home/oracle/xtt/xttnewdatafiles.txt192.168.56.101:/home/oracle/xtt
scp /home/oracle/xtt/getfile.sql192.168.56.101:/home/oracle/xtt


dest_db:
$ORACLE_HOME/perl/bin/perl xttdriver.pl -G

监控:
source_db:
USERNAME        SID SQL_ID          SQL_TEXT                     EVENT               BLOCKER  wait(s)   SEQ# MODULE
------------ --------------------- ---------------------------- ------------------- --------------- ------- ----------
  12          control file parall _              0   17693 (CKPT)
SYSTEM           35 2q93zsrvbdw48   select grantee#,privilege#,n dbms_file_transfer  _             0     891 oracle@ser
dest_db:
DATAFILE  UNPROT COARSE   OCT 07 09:00:00  N   ya_claim.dbf => +DATA/orcl/DATAFILE/FILE_TRANSFER.366.988882977
DATAFILE  UNPROT COARSE   OCT 07 09:00:00  N   ya_claiminx.dbf => +DATA/orcl/DATAFILE/FILE_TRANSFER.367.988882977

虚拟机环境,4g大小数据文件,速度大概4分钟,效率较高,磁盘使用率没有发现100%
我的测试环境没有发生格式转换所以速度较快。

原库修改数据,做测试用:
SQL> select count(*) from yaclaim.c_pay;

  COUNT(*)
----------
   3830915
SQL> delete from yaclaim.c_pay whererownum<1200;
SQL> commit;
SQL> select count(*) from yaclaim.c_pay;

  COUNT(*)
----------
   3829716


2:前滚阶段:

source_db:
$ORACLE_HOME/perl/bin/perl xttdriver.pl -i
磁盘93%--红色,该步骤会消耗IO资源

[oracle@piamarydb xtt]$ ls /stage_source/
0ftf1f4h_1_1 0gtf1f69_1_1  0htf1f6c_1_1  0itf1f76_1_1

scp `cat incrbackups.txt`@192.168.56.101:/stage_dest
scp /home/oracle/xtt/xttplan.txt@192.168.56.101:/home/oracle/xtt
scp /home/oracle/xtt/tsbkupmap.txt@192.168.56.101:/home/oracle/xtt

dest_db:

[grid@serdb ~]$ ls /stage_dest/
0ftf1f4h_1_1 0htf1f6c_1_1
$ORACLE_HOME/perl/bin/perl xttdriver.pl -r
--------------------------------------------------------------------
Start rollforward
--------------------------------------------------------------------
Connected to an idle instance.
ASMCMD-8102: no connection to Oracle ASM; commandrequires Oracle ASM to run
Connected to an idle instance.
ASMCMD-8102: no connection to Oracle ASM; commandrequires Oracle ASM to run

--------------------------------------------------------------------
End of rollforward phase
--------------------------------------------------------------------

以为上面为报错信息,再次运行-r , 报错如下
--------------------------------------------------------------------
Start rollforward
--------------------------------------------------------------------

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Error:
------
No tablepsace entries found
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

进入asm磁盘组查看转换的增量备份已经存在,应该已经应用!
ASMCMD> ls -l
Type       Redund  Striped Time             Sys  Name
                                            Y    ORCL/
BACKUPSET UNPROT  COARSE   OCT 07 10:00:00  N   xib_0ftf1f4h_1_1_5 =>+DGDATA/ORCL/BACKUPSET/2018_10_07/nnndn0_0.256.988884637
BACKUPSET UNPROT  COARSE   OCT 07 10:00:00  N   xib_0htf1f6c_1_1_6 =>+DGDATA/ORCL/BACKUPSET/2018_10_07/nnndn0_0.257.988884637

所以先不管Connected to an idle instance. 信息


3: 表空间传输

source_db: create_scn
$ORACLE_HOME/perl/bin/perl xttdriver.pl -s

alter tablespace YA_CLAIM_DB read only;
alter tablespace YA_CLAIM_IDX read only;


$ORACLE_HOME/perl/bin/perl xttdriver.pl -i
scp `cat incrbackups.txt`@192.168.56.101:/stage_dest
scp /home/oracle/xtt/xttplan.txt@192.168.56.101:/home/oracle/xtt
scp /home/oracle/xtt/tsbkupmap.txt@192.168.56.101:/home/oracle/xtt

destdb:
$ORACLE_HOME/perl/bin/perl xttdriver.pl -r

Error:
------
      Somefailure occurred. Check /home/oracle/xtt/FAILED for more details
      If youhave fixed the issue, please delete /home/oracle/xtt/FAILED and run it
      againOR run xttdriver.pl with -L option  --提示使用-L选择执行
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[oracle@serdb xtt]$ id

[oracle@serdb xtt]$ more FAILED
No tablepsace entries found    --这个报错也许是因为上面我们运行了两次。

使用-L 选项执行:

[oracle@serdb xtt]$ $ORACLE_HOME/perl/bin/perlxttdriver.pl -r -L

Connected to an idle instance. --先不理
ASMCMD-8102: no connection to Oracle ASM; commandrequires Oracle ASM to run
Connected to an idle instance.
ASMCMD-8102: no connection to Oracle ASM; commandrequires Oracle ASM to run

--------------------------------------------------------------------
End of rollforward phase
--------------------------------------------------------------------
ASMCMD> ls -l
Type      Redund  Striped  Time             Sys  Name
                                            Y    ORCL/
BACKUPSET UNPROT  COARSE   OCT 07 10:00:00  N   xib_0ftf1f4h_1_1_5 =>+DGDATA/ORCL/BACKUPSET/2018_10_07/nnndn0_0.256.988884637
BACKUPSET UNPROT  COARSE   OCT 07 10:00:00  N   xib_0htf1f6c_1_1_6 =>+DGDATA/ORCL/BACKUPSET/2018_10_07/nnndn0_0.257.988884637
BACKUPSET UNPROT  COARSE   OCT 07 10:00:00  N   xib_0jtf1gc5_1_1_5 =>+DGDATA/ORCL/BACKUPSET/2018_10_07/nnndn0_0.259.988885807
BACKUPSET UNPROT  COARSE   OCT 07 10:00:00  N   xib_0ltf1gdv_1_1_6 =>+DGDATA/ORCL/BACKUPSET/2018_10_07/nnndn0_0.258.988885807


建立impdp 脚本:
$ORACLE_HOME/perl/bin/perl xttdriver.pl -e

create directory xttdir as '/stage_dest'
/

修改脚本:
impdp \'/ as sysdba\' directory=xttdirlogfile=tts_imp.log \
network_link=ttslink transport_full_check=no \
transport_tablespaces=YA_CLAIM_DB,YA_CLAIM_IDX \
transport_datafiles='+DATA/ORCL/DATAFILE/ya_claim.dbf','+DATA/ORCL/DATAFILE/ya_claiminx.dbf'

执行报错:
ORA-29342: user YACLAIM does not exist in thedatabase
因为没有该用户!

create user YACLAIM identified by YACLAIM;

[oracle@serdb ~]$ impdp \'/ as sysdba\'directory=xttdir logfile=tts_imp.log network_link=ttslinktransport_full_check=no transport_tablespaces=YA_CLAIM_DB,YA_CLAIM_IDXtransport_datafiles='+DATA/ORCL/DATAFILE/ya_claim.dbf','+DATA/ORCL/DATAFILE/ya_claiminx.dbf'

Import: Release 12.2.0.1.0 - Production on Sun Oct7 10:41:48 2018

Copyright (c) 1982, 2017, Oracle and/or itsaffiliates.  All rights reserved.

Connected to: Oracle Database 12c EnterpriseEdition Release 12.2.0.1.0 - 64bit Production
Starting"SYS"."SYS_IMPORT_TRANSPORTABLE_01":  "/******** AS SYSDBA"directory=xttdir logfile=tts_imp.log network_link=ttslinktransport_full_check=no transport_tablespaces=YA_CLAIM_DB,YA_CLAIM_IDXtransport_datafiles=+DATA/ORCL/DATAFILE/ya_claim.dbf,+DATA/ORCL/DATAFILE/ya_claiminx.dbf
Processing object typeTRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object typeTRANSPORTABLE_EXPORT/INDEX/INDEX
Processing object typeTRANSPORTABLE_EXPORT/CONSTRAINT/CONSTRAINT
Processing object typeTRANSPORTABLE_EXPORT/INDEX_STATISTICS
Processing object type TRANSPORTABLE_EXPORT/COMMENT
Processing object type TRANSPORTABLE_EXPORT/TRIGGER
Processing object typeTRANSPORTABLE_EXPORT/TABLE_STATISTICS
Processing object typeTRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Job"SYS"."SYS_IMPORT_TRANSPORTABLE_01" successfully completedat Sun Oct 7 10:42:30 2018 elapsed 0 00:00:41

SQL> select count(*) from yaclaim.c_pay;

  COUNT(*)
----------
   3829716


SQL> @tbs
Tablespace           Tablespace     Alloc        Free         Used     Used     Tablespace Segmnet
Name                 Type           Space Mb     Space Mb     Space Mb Percent % Status     Management
------------------------------ ------------ ------------ ------------ --------- --------------------
TEST                 PERMANENT         1,517           93        1,424  93.87%  ONLINE     AUTO
SYSAUX               PERMANENT         1,234          243          991  80.30%  ONLINE     AUTO
SYSTEM               PERMANENT         1,304          365          939  72.04%  ONLINE     MANUAL
YA_CLAIM_IDX         PERMANENT         2,048          703        1,345  65.68%  READ ONLY  AUTO
YA_CLAIM_DB          PERMANENT         4,096        1,462        2,634  64.31%  READ ONLY  AUTO
USERS                PERMANENT             5            4            1  25.00%  ONLINE     AUTO
UNDOTBS1             UNDO                161          124           37  22.71%  ONLINE     MANUAL
BFTBS                PERMANENT            50           44            6  12.12%  ONLINE     AUTO
UNDOTBS2             UNDO              3,642        3,508          134   3.68%  ONLINE     MANUAL
DATA                 PERMANENT         4,096        4,011           85   2.08%  ONLINE     AUTO
TEMP                 TEMPORARY           117          115            2   1.71%  ONLINE     MANUAL
********************---------- ------------ ------------ ------------
Count:                       11
Total:                                18,270       10,672        7,598
11 rows selected.


alter user YACLAIM DEFAULT TABLESPACE YA_CLAIM_DB

成功!

所以上面的
Connected to an idle instance. --不用理
ASMCMD-8102: no connection to Oracle ASM; commandrequires Oracle ASM to run
Connected to an idle instance.
ASMCMD-8102: no connection to Oracle ASM; commandrequires Oracle ASM to run


alter tablespace YA_CLAIM_DB read write;
alter tablespace YA_CLAIM_IDX read write;

其实原库是存在standbyxtts 完成后启动备库:

SQL> startup
ORACLE instance started.

Total System Global Area  680607744 bytes
Fixed Size                  2231472 bytes
Variable Size             239076176 bytes
Database Buffers          436207616 bytes
Redo Buffers                3092480 bytes
Database mounted.
Database opened.
SQL> alter database recover managed standbydatabase using current logfile disconnect;

Database altered.

SQL> select count(*) from yaclaim.c_pay;

  COUNT(*)
----------
   3829716

备库数据也已经同步,xtts对备库本来也就没什么影响








您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表