Oracle 12C使用備份集執行只讀表空間的跨平臺傳輸

eric0435發表於2018-02-05

使用帶用for transport或to platform子句的backup命令來建立備份集來將只讀表空間從一個平臺傳輸到另一個平臺。當傳輸只讀表空間時,必須要匯出這些表空間的後設資料。這些後設資料會在將表空間附加到目標資料庫時需要使用。當跨平臺傳輸表空間時,源平臺與目標平臺可以使用不同的位元組序。可以還原跨平臺備份中的所有資料檔案或表空間或者它們中的一部分。在還原這些物件之後,可以為被還原的資料檔案指定路徑與名稱。

使用備份集執行跨平臺傳輸表空間的先決條件
.源資料庫與目標資料庫的spfile引數檔案中的compatible引數必須設定為12.0.0或更高版本。

.被傳輸的表空間必須是自包含。執行dbms_tts.transport_set_check過程來檢查依賴性。如果transport_set_violations檢視包含指定表空間的相關行記錄,那麼必須在建立跨平臺備份之前解決這種依賴性。

.被傳輸的表空間必須是隻讀模式,除非在backup命令中使用了allow inconsistent子句。

下面的例子將Linux平臺上的RAC CDB中的jypdb的表空間tts與cs傳輸到windows平臺上的單例項CDB的jypdb資料庫中。使用備份集對只讀表空間執行跨平臺傳輸的操作如下:
1.檢查源資料庫與目標資料庫的compatible引數是否設定為12.0.0或更高版本
源資料庫

SQL> show parameter compatible

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
compatible                           string      12.2.0
noncdb_compatible                    boolean     FALSE

目標資料庫
SQL> show parameter compatible

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
compatible                           string      12.2.0
noncdb_compatible                    boolean     FALSE

2.對源資料庫中的要被傳輸的表空間tts與cs執行自包含檢查

SQL> alter session set container=jypdb;

Session altered.

SQL> exec sys.dbms_tts.transport_set_check('TTS,CS',true);

PL/SQL procedure successfully completed.

SQL> select * from sys.transport_set_violations;

no rows selected

3.檢查源平臺與目標平臺的位元組序
源平臺

SQL> select d.platform_name,endian_format from v$transportable_platform tp,v$database d  where tp.platform_name=d.platform_name;

PLATFORM_NAME                                                                                         ENDIAN_FORMAT
----------------------------------------------------------------------------------------------------- --------------
Linux x86 64-bit                                                                                      Little

目標平臺

SQL> select d.platform_name,endian_format from v$transportable_platform tp,v$database d  where t

PLATFORM_NAME                                                                       ENDIAN_FORMAT
--------------------------------------------------------------------------------    --------------
Microsoft Windows x86 64-bit                                                        Little

4.將要被傳輸的表空間(tts,cs)設定為只讀狀態

SQL> alter tablespace tts read only;

Tablespace altered.

SQL> alter tablespace cs read only;

Tablespace altered.


SQL> select tablespace_name,status from user_tablespaces;

TABLESPACE_NAME                STATUS
------------------------------ ---------
SYSTEM                         ONLINE
SYSAUX                         ONLINE
UNDOTBS1                       ONLINE
TEMP                           ONLINE
UNDO_2                         ONLINE
USERS                          ONLINE
TEST                           ONLINE
TTS                            READ ONLY
CS                             READ ONLY

9 rows selected.

5.給RMAN備份輸出檔案選擇命名方法,使用backup命令的format子句來為備份輸出檔案選擇輸出方法。

6.啟動RMAN連線到源資料庫(整個RAC CDB)並將重啟源資料庫並以只讀方式開啟

[oracle@jytest1 ~]$ rman target sys/abcd@jy catalog rco/abcd@jypdb_173

Recovery Manager: Release 12.2.0.1.0 - Production on Mon Feb 5 23:22:24 2018

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

connected to target database: JY (DBID=979425723)
connected to recovery catalog database

7.在backup命令中使用for transport或to platform子句來備份表空間。下面的例子對錶空間tts與cs建立跨平臺傳輸備份。備份可以被還原到Microsoft Windows IA (64-bit)平臺。Data Pump匯出dump檔案包含了附加表空間到目標資料庫中所需要的後設資料。備份檔案與dump檔案儲存在/ora_backup/tts目錄中。

RMAN> backup to platform 'Microsoft Windows x86 64-bit' format '/ora_backup/tts/trans_ts.bck' datapump format '/ora_backup/tts/trans_ts_dmp.bck' tablespace JYPDB:'TTS',JYPDB:'CS';

Starting backup at 05-FEB-18
using channel ORA_DISK_1
Running TRANSPORT_SET_CHECK on specified tablespaces
TRANSPORT_SET_CHECK completed successfully

Performing export of metadata for specified tablespaces...
   EXPDP> Starting "SYS"."TRANSPORT_EXP_JY_xput":  
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/INDEX_STATISTICS
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/TABLE_STATISTICS
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/STATISTICS/MARKER
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/TABLE
   EXPDP> Processing object type TRANSPORTABLE_EXPORT/INDEX/INDEX
   EXPDP> Master table "SYS"."TRANSPORT_EXP_JY_xput" successfully loaded/unloaded
   EXPDP> ******************************************************************************
   EXPDP> Dump file set for SYS.TRANSPORT_EXP_JY_xput is:
   EXPDP>   /u01/app/oracle/product/12.2.0/db/dbs/backup_tts_JY_38873.dmp
   EXPDP> ******************************************************************************
   EXPDP> Datafiles required for transportable tablespace CS:
   EXPDP>   +DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/cs.294.966380783
   EXPDP> Datafiles required for transportable tablespace TTS:
   EXPDP>   +DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/tts.257.966380353
   EXPDP> Job "SYS"."TRANSPORT_EXP_JY_xput" successfully completed at Mon Feb 5 23:57:57 2018 elapsed 0 00:03:08
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=00022 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/tts.257.966380353
input datafile file number=00023 name=+DATA/JY/5F9AC6865E87549FE053AB828A0ADE94/DATAFILE/cs.294.966380783
channel ORA_DISK_1: starting piece 1 at 05-FEB-18
channel ORA_DISK_1: finished piece 1 at 05-FEB-18
piece handle=/ora_backup/tts/trans_ts.bck tag=TAG20180205T235319 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
channel ORA_DISK_1: starting full datafile backup set
input Data Pump dump file=/u01/app/oracle/product/12.2.0/db/dbs/backup_tts_JY_38873.dmp
channel ORA_DISK_1: starting piece 1 at 05-FEB-18
channel ORA_DISK_1: finished piece 1 at 05-FEB-18
piece handle=/ora_backup/tts/trans_ts_dmp.bck tag=TAG20180205T235319 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 05-FEB-18
starting full resync of recovery catalog
full resync complete


[oracle@jytest1 tts]$ ls -lrt
total 2472
-rw-r----- 1 oracle asmadmin 2318336 Feb  5 17:57 trans_ts.bck
-rw-r----- 1 oracle asmadmin  212992 Feb  5 17:57 trans_ts_dmp.bck

因為在backup命令中使用了to platform子句,因此將資料檔案轉換成目標平臺位元組序的操作在源平臺執行。

8.將backup命令生成的備份集與Data Pump匯出的dump檔案傳輸到目標平臺的D:\app\oracle\oradata\tts目錄中

9.使用rman連線到目標資料庫(單例項CDB中的JYPDB)

C:\Users\Administrator>rman target sys/abcd@jypdb

恢復管理器: Release 12.2.0.1.0 - Production on 星期一 2月 5 00:22:31 2018

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

已連線到目標資料庫: JY:JYPDB (DBID=4203494064)

10.使用有foreign tablespace子句的restore命令來還原從源平臺傳輸過來的備份集

RMAN> restore foreign tablespace TTS,CS to new from backupset 'D:\app\oracle\oradata\tts\trans_ts.bck' dump file from backupset 'D:\app\oracle\oradata\tts\trans_ts_dmp.bck';

從位於 06-2月 -18 的 restore 開始
使用目標資料庫控制檔案替代恢復目錄
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=8 裝置型別=DISK

通道 ORA_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
通道 ORA_DISK_1: 正在還原外部表空間 TTS 中的所有檔案
通道 ORA_DISK_1: 正在還原外部表空間 CS 中的所有檔案
通道 ORA_DISK_1: 正在讀取備份片段 D:\app\oracle\oradata\tts\trans_ts.bck
通道 ORA_DISK_1: 將外部檔案 22 還原到 D:\APP\ORACLE\ORADATA\JY\5F9AC6865E87549FE053AB828A0ADE94\DATAFILE\O1_MF_TTS_F7K17RGW_.DBF
通道 ORA_DISK_1: 將外部檔案 23 還原到 D:\APP\ORACLE\ORADATA\JY\5F9AC6865E87549FE053AB828A0ADE94\DATAFILE\O1_MF_CS_F7K17RHC_.DBF
通道 ORA_DISK_1: 外部片段控制程式碼 = D:\app\oracle\oradata\tts\trans_ts.bck
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:02
通道 ORA_DISK_1: 正在開始還原資料檔案備份集
通道 ORA_DISK_1: 正在指定從備份集還原的資料檔案
通道 ORA_DISK_1: 正在將資料泵轉儲檔案還原到 D:\app\oracle\product\12.2.0\dbhome_1/dbs/backup_tts_JY_38586.dmp
通道 ORA_DISK_1: 正在讀取備份片段 D:\app\oracle\oradata\tts\trans_ts_dmp.bck
通道 ORA_DISK_1: 外部片段控制程式碼 = D:\app\oracle\oradata\tts\trans_ts_dmp.bck
通道 ORA_DISK_1: 已還原備份片段 1
通道 ORA_DISK_1: 還原完成, 用時: 00:00:02

正在執行後設資料匯入...
   IMPDP> 已成功載入/解除安裝了主表 "SYS"."TSPITR_IMP_JY_pfCp"
   IMPDP> 啟動 "SYS"."TSPITR_IMP_JY_pfCp":
   IMPDP> 處理物件型別 TRANSPORTABLE_EXPORT/PLUGTS_BLK
   IMPDP> 處理物件型別 TRANSPORTABLE_EXPORT/TABLE
   IMPDP> 處理物件型別 TRANSPORTABLE_EXPORT/INDEX/INDEX
   IMPDP> 處理物件型別 TRANSPORTABLE_EXPORT/INDEX_STATISTICS
   IMPDP> 處理物件型別 TRANSPORTABLE_EXPORT/TABLE_STATISTICS
   IMPDP> 處理物件型別 TRANSPORTABLE_EXPORT/STATISTICS/MARKER
   IMPDP> 處理物件型別 TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
   IMPDP> 作業 "SYS"."TSPITR_IMP_JY_pfCp" 已於 星期二 2月 6 00:24:02 2018 elapsed 0 00:00:33 成功完成
匯入完畢

在 05-2月 -18 完成了 restore

11.在目標資料庫中查詢表tts.t1與cs.t2記錄是否與源資料庫中一致,如果一致說用表空間tts與cs跨平臺傳輸成功
源資料庫

SQL> alter session set container=jypdb;

會話已更改。

SQL> select count(*) from tts.t1;

  COUNT(*)
----------
        45

SQL> select count(*) from cs.t2;

  COUNT(*)
----------
        46

目標資料庫

SQL> alter session set container=jypdb;

會話已更改。

SQL> select count(*) from tts.t1;

  COUNT(*)
----------
        45

SQL> select count(*) from cs.t2;

  COUNT(*)
----------
        46

到此使用備份集跨平臺傳輸只讀表空間操作就完成了。

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

相關文章