12C 基於 RMAN 備份集進行跨平臺(different Endian)資料傳輸 (文件 ID 2108887.1)

mosdoc發表於2016-12-14

文件內容


目標

解決方案
  1. 連線到需要匯出表空間的源資料庫(AIX)
  2. 將需要傳輸的表空間設定為只讀模式
  3. 在源資料庫備份表空間,在 backup 命令中,要指定引數 TO PLATFORM /FOR TRANSPORT
  4. 移動備份集到目的伺服器
  5. 連線到目的資料庫(Linux x86 64-bit)
  6. 透過備份集恢復(Restore)表空間
  7. 更改表空間為讀寫模式

參考


適用於:

Oracle Database - Enterprise Edition - 版本 12.1.0.1 和更高版本
本文件所含資訊適用於所有平臺

目標

解釋 12C 的新功能,如何使用 RMAN 進行跨平臺(different Endian)的資料傳輸。

RMAN 可以跨平臺傳輸資料庫,資料檔案,和表空間。使用 RMAN 備份集進行跨平臺的資料庫傳輸,可利用塊壓縮,而降低備份集大小。這會提高備份效能,並降低備份集透過網路傳輸的時間。


RMAN 跨平臺備份,可以將備份集還原到不同 Endian 的目的資料庫。

解決方案

前提條件

  • 使用 RMAN 備份集執行跨平臺資料傳輸,目的資料庫版本必須要求 12.1 及之後版本。
  • 引數 COMPATIBLE 必須設定為 12.0.0 或更高。
  • 被傳輸的表空間需要為 read-only 模式,除非在備份命令執行時,使用 ALLOW INCONSISTENT 條目。
  • 被傳輸的表空間需要是自包含的(self-contained)。
  • 使用 DBMS_TTS.TRANSPORT_SET_CHECK 檢查依賴關係,如果檢視 TRANSPORT_SET_VIOLATIONS 包含的行資訊,指向了特定的表空間,在建立跨平臺備份前,必須要先解決依賴關係。

注意事項

外部資料檔案

一個不屬於目的資料庫的資料檔案,被稱為外部資料檔案。這些資料檔案,作為資料傳輸的一部分,被傳輸並插入到目的資料庫。在源資料庫中,這個資料檔案有它自己的原始的資料檔案號。

外部表空間

外部表空間是由一組外部資料檔案組成的在源資料庫上的表空間。這些外部資料檔案不屬於目的資料庫,但是被傳輸到目的資料庫,並且依然使用源資料庫的表空間名。

外部資料檔案複製

外部資料檔案複製,是從一個跨平臺備份集中恢復出來的資料檔案。 由於資料的不一致性,它不能被直接的插入到目的資料庫。我們必須先透過跨平臺的增量備份來恢復(recover)這個外部資料檔案,然後插入到目的資料庫。

資料泵的目的地

資料泵的目的地,即目的資料庫主機上的一個磁碟路徑,用以存放資料庫匯出的檔案和日誌。

例如:

  • 源資料庫:AIX-Based Systems (64-bit) (Big Endian format)
  • 目的資料庫:Linux x86 64-bit (Little Endian format)
  • 在源端和目的端資料庫,將 SYSBACKUP 許可權賦予使用者 RMAN_TEST
  • 被傳輸的表空間 TEST1
  • 源資料名 SOURCE
  • 目的資料庫名 DEST

注意:如果被傳輸的表空間中包含的物件的屬主(schema)在目的資料庫不存在,將會遇到下面問題:

ORA-39083: Object type OBJECT_GRANT failed to create with error:
ORA-01917: user or role 'DMSTEAM' does not exist
Failing sql is:GRANT DELETE ON "ADVTVS"."FT_ENQUIRY_PLAN" TO "DMSTEAM"
ORA-39083: Object type OBJECT_GRANT failed to create with error:
ORA-01917: user or role 'DMSTEAM' does not exist

為防止以上問題發生,需要在目的資料庫上手動建立全部的,已經在源資料庫存在的使用者(schema)。 可以透過下面的查詢,來檢查使用者是否存在。

select distinct OWNER from dba_segments where tablespace_name in ('被傳輸的表空間名');

透過備份集,跨平臺傳輸只讀表空間的具體步驟:

1. 連線到需要匯出表空間的源資料庫(AIX)

$ rman

Recovery Manager: Release 12.1.0.2.0 - Production on Thu May 28 14:38:06 2015

Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.

RMAN> Connect target "rman_test@source AS SYSBACKUP";

根據提示,輸入密碼。

2. 將需要傳輸的表空間設定為只讀模式

RMAN> alter tablespace test1 read only;

using target database control file instead of recovery catalog
Statement processed

3. 在源資料庫備份表空間,在 backup 命令中,要指定引數 TO PLATFORM /FOR TRANSPORT

使用 DATAPUMP 引數來明確指定對應表空間的資料泵檔案。

RMAN> BACKUP
            TO PLATFORM 'Linux x86 64-bit'
            FORMAT '/tmp/xplat_backups/trans_ts.bck'
            DATAPUMP FORMAT '/tmp/xplat_backups/trans_ts_dmp.bck'
            TABLESPACE test1;

這個命令會輸出下面結果:

RMAN>
Starting backup at 22-MAY-15
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=184 device type=DISK
Running TRANSPORT_SET_CHECK on specified tablespaces
TRANSPORT_SET_CHECK completed successfully

Performing export of metadata for specified tablespaces...
   EXPDP> Starting "SYSBACKUP"."TRANSPORT_EXP_SOURCE_asbF":  
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/TABLE
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/STATISTICS/MARKER
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
   EXPDP> Master table "SYSBACKUP"."TRANSPORT_EXP_SOURCE_asbF" successfully loaded/unloaded
   EXPDP> ******************************************************************************
   EXPDP> Dump file set for SYSBACKUP.TRANSPORT_EXP_SOURCE_asbF is:
   EXPDP>   /u01/app/oracle/product/dbs/backup_tts_SOURCE_93693.dmp
   EXPDP> ******************************************************************************
   EXPDP> Datafiles required for transportable tablespace TEST1:
   EXPDP>   /u01/app/app/oracle/oradata/SOURCE/test01.dbf
   EXPDP> Job "SYSBACKUP"."TRANSPORT_EXP_SOURCE_asbF" successfully completed at Fri May 22 11:54:53 2015 elapsed 0 00:02:06
Export completed

channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00002 name=/u01/app/app/oracle/oradata/SOURCE/test01.dbf
channel ORA_DISK_1: starting piece 1 at 22-MAY-15
channel ORA_DISK_1: finished piece 1 at 22-MAY-15
piece handle=/u01/app/app/oracle/oradata/trans_ts.bck tag=TAG20150522T115158 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting full datafile backup set
input Data Pump dump file=/u01/app/app/oracle/product/ dbs/backup_tts_SOURCE_93693.dmp
channel ORA_DISK_1: starting piece 1 at 22-MAY-15
channel ORA_DISK_1: finished piece 1 at 22-MAY-15
piece handle=/u01/app/app/oracle/oradata/trans_ts_dmp.bck tag=TAG20150522T115158 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 22-MAY-15

當在源庫使用引數'TO PLATFORM',oracle 會轉換資料檔案的 endian 格式到目的資料庫。

退出連線到源資料庫的 RMAN 會話。

4. 移動備份集到目的伺服器

將 Backup 命令和資料泵匯出的檔案移動到目的主機。可以使用 sftp,ftp 和 scp 等系統工具進行移動/複製。

5. 連線到目的資料庫(Linux x86 64-bit)

連線到目的資料庫(表空間需要被匯入的庫),並且目的資料庫保持讀寫模式。

這個樣例中,目的資料庫中的使用者 TEST1 需要被賦予 SYSBACKUP 許可權:

$ rman

Recovery Manager: Release 12.1.0.2.0 - Production on Thu May 28 14:38:06 2015

Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.

RMAN> connect target "rman_test@dest AS SYSBACKUP";

根據提示,輸入使用者 RMAN_TEST 的密碼。

6. 透過備份集恢復(Restore)表空間

從源資料庫傳輸過來的備份集中,使用 restore 命令恢復資料檔案。使用資料泵檔案匯入包含表空間的源資料,並將這個表空間插入到目的資料庫。

這個樣例中,備份集和資料泵檔案複製到目錄 /u01/app/oracle/oradata/test/。

如果目的資料庫的引數 db_create_file_dest 已經設定,執行下面命令:

RMAN> RESTORE 
    FOREIGN TABLESPACE TEST1 to NEW
    FROM BACKUPSET '/u01/app/oracle/oradata/test/trans_ts.bck'
    DUMP FILE FROM BACKUPSET '/u01/app/oracle/oradata/test/trans_ts_dmp.bck';

注意:使用"to NEW"還原資料檔案到引數 db_create_file_dest 指定的目錄中。

如果正在使用多備份集,則顯示如下: 

RMAN> RESTORE
ALL FOREIGN DATAFILES TO NEW
FROM BACKUPSET '/mnt/staging_clt_target/tts/all_3tbs_uhrdm8f5_1_1.bck' BACKUPSET '/mnt/staging_clt_target/tts/all_3tbs_uirdm8f6_1_1.bck'
DUMP FILE FROM BACKUPSET '/mnt/staging_clt_target/tts/all_3tbs_uhrdm8f5_1_1.bck' ;

  

如果為每個備份集使用多個備份片,則需要指定每個備份集裡面備份片的名字:

RMAN> RESTORE
ALL FOREIGN DATAFILES TO NEW
FROM BACKUPSET '/mnt/staging_clt_target/tts/RTODP-a0r8utgu_1_1','/mnt/staging_clt_target/tts/RTODP-a0r8utgu_2_1',
BACKUPSET '/mnt/staging_clt_target/tts/RTODP-a1r8utgu_1_1','/mnt/staging_clt_target/tts/RTODP-a1r8utgu_2_1'
DUMP FILE FROM BACKUPSET '/mnt/staging_clt_target/tts/RTODP_metadata_1.bck';

  

如果目的資料庫的引數 db_create_file_dest 沒有設定,需要指定資料檔案的存放路徑:

RMAN> RESTORE
   FOREIGN TABLESPACE TEST1 format '/u01/app/oracle/oradata/%U'
   FROM BACKUPSET '/u01/app/oracle/oradata/dest/trans_ts.bck'
   DUMP FILE FROM BACKUPSET '/u01/app/oracle/oradata/dest/trmp.bck';

這個命令會輸出下面結果:

Starting restore at 22-MAY-15
using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring all files in foreign tablespace TEST1
channel ORA_DISK_1: reading from backup piece/u01/app/oracle/oradata/dest/trans_ts.bck
channel ORA_DISK_1: restoring foreign file 2 to/u01/app/oracle/oradata/dest/data_D-dest_I-2390668590_TS-TEST1_FNO-2_jvq7is5b
channel ORA_DISK_1: foreign piece handle=/u01/app/oracle/oradata/dest/trans_ts.bck
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring Data Pump dump file to/u01/app/oracle/product/c12101/dbs/backup_tts_dest_31167.dmp
channel ORA_DISK_1: reading from backup piece/u01/app/oracle/oradata/dest/trans_ts_dmp.bck
channel ORA_DISK_1: foreign piece handle=/u01/app/oracle/oradata/dest/trans_ts_dmp.bck
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02

Performing import of metadata...
   IMPDP> Master table "SYSBACKUP"."TSPITR_IMP_dest_jykD" successfully loaded/unloaded
   IMPDP> import done in WE8MSWIN1252 character set and AL16UTF16 NCHAR character set
export done in US7ASCII character set and AL16UTF16 NCHAR character set
   IMPDP> Starting "SYSBACKUP"."TSPITR_IMP_dest_jykD":  
   IMPDP> Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
   IMPDP> Processing object type TRANSPORTABLE_EXPORT/TABLE
   IMPDP> Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS
   IMPDP> Processing object type TRANSPORTABLE_EXPORT/STATISTICS/MARKER
   IMPDP> Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
   IMPDP> Job "SYSBACKUP"."TSPITR_IMP_dest_jykD" successfully completed at Fri May 22 12:19:08 2015 elapsed 0 00:00:05
Import completed

Finished restore at 22-MAY-15

退出 RMAN 會話,並連線到目的資料庫。

7. 更改表空間為讀寫模式

SQL> select status,tablespace_name from  dba_tablespaces;


STATUS    TABLESPACE_NAME
--------- ------------------------------
ONLINE    SYSTEM
ONLINE    SYSAUX
ONLINE    UNDOTBS1
ONLINE    TEMP
ONLINE    USERS
READ ONLY TEST1

SQL>  Alter tablespace test1 read write ;

Tablespace altered.

SQL> select status,tablespace_name from  dba_tablespaces;


STATUS    TABLESPACE_NAME
--------- ------------------------------
ONLINE    SYSTEM
ONLINE    SYSAUX
ONLINE    UNDOTBS1
ONLINE    TEMP
ONLINE    USERS
ONLINE    TEST1

 

 

 

 

 


參考

NOTE:2005729.1 - 12C - Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31393455/viewspace-2130499/,如需轉載,請註明出處,否則將追究法律責任。

相關文章