本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
階段 2 – 向前滾動階段 (來源資料庫保持線上狀態)
您可以視需要重複向前滾動階段多次,以將目的地資料檔案擷取到來源資料庫。
向前滾動階段包含下列步驟。
-
從來源資料庫建立增量備份。
-
將備份傳輸至目的地系統。
-
將備份轉換為目的地系統最終格式。
-
將備份套用至轉換後的目的地資料檔案副本,以將其向前滾動。
每個連續的增量備份應該花費較少的時間,並將目的地資料檔案複本與來源資料庫相比更為最新。
步驟 1:平行進行增量備份
對在來源系統上平行傳輸的資料表空間群組進行增量備份。
此步驟會為 xtt.properties 檔案中列出的所有資料表空間= 建立增量備份。
如果您可以在來源系統上啟用 BLOCK CHANGE TRACKING 功能,則可以大幅縮短增量備份的時間。
下列命令會在完整備份後自動辨識下一個 SCN。
cd /u01/oracle/expimp/xtt<nn> export TMPDIR=/u01/oracle/expimp/out/out<nn> $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3
步驟 2:將增量備份和 res.txt 檔案傳輸至目的地系統
如果您有足夠的頻寬,您可以使用 縮短傳輸持續時間 Direct Connect。
在 src_scratch_location和 之間傳輸增量備份dest_scratch_location。在$TMPDIR來源系統和目的地系統$TMPDIR上的 之間傳輸res.txt檔案。
如果您進行多個增量備份,則必須在最後一個增量備份之後複製res.txt檔案,才能套用到目的地系統。
[source]$ scp $TMPDIR/res.txt oracle@[dest]:/u01/oracle/expimp/out/out<nn> [source]$ scp <src_scratch_location>/* oracle@[dest]:<dest_scratch_location>
步驟 3:轉換並套用增量備份
將增量備份轉換為目的地系統最終格式,並將增量備份套用至目的地系統上的目的地資料檔案副本。
在本指南中,假設資料表空間群組是四個。使用每個資料表空間群組的 --restore選項執行每個xttdriver.pl命令。
在此步驟中,Oracle XTTS 公用程式會重新啟動目標資料庫。若要平行執行命令,您必須在 Perl 指令碼 中使用下列自訂xttdriver.pl。
-
註解以下幾行:
-
第 4867 行:
my $outputstart = `sqlplus -L -s \"/ as sysdba\" \@xttstartupnomount.sql`; -
第 4868 行:
checkError ("Error in executing xttstartupnomount.sql", $outputstart); -
第 4992 行:
my $outputstart = `sqlplus -L -s \"/ as sysdba\" \@xttdbopen.sql`;\
-
-
讓目標資料庫處於
NOMOUNT狀態。sqlplus / as sysdba @xttstartupnomount.sql -
平行執行增量備份的向前滾動。
cd /u01/oracle/expimp/xtt<nn> export TMPDIR=/u01/oracle/expimp/out/out<nn> $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3 -
滾動所有增量備份之後,將目標資料庫設定為
OPEN狀態。sqlplus / as sysdba @xttdbopen.sql
此時,您可以重複第 2 階段,直到來源和目的地資料庫上的 SCNs 夠接近為止。您必須決定要繼續進行階段 3 還是重複階段 2,取決於指定的目標停機時間。
若要減少第 3 階段 (傳輸階段) 期間的停機時間,您可以在將來源資料庫設定為 之前,先匯出和匯入非區段型物件的中繼資料FUNCTION,例如 PROCEDURE、、 USER PACKAGE和 READ ONLY。
如果來源資料庫中的資料庫物件數量非常大 (數百個),匯出和匯入中繼資料需要幾個小時。在此情況下,請考慮匯出中繼資料。
匯出非區段型物件會在來源系統上的讀取/寫入中執行。然後,您必須先將物件匯入目的地系統,來源系統才會設為 READ ONLY。此時,您必須保持資料庫來源物件,例如 PACKAGE、 PROCEDURE和 FUNCTION不變。
這是傾印參數檔案的範例,用於匯出非區段型物件的中繼資料,包括 USER、PACKAGE_SPEC、PROCEDURE、 PACKAGE_BODY和 FUNCTION。
directory=dmpdir dumpfile=xttsmsc%U.dmp full=y filesize=1048576000 logfile=expmsc.log metrics=y exclude=TABLE,INDEX,CONSTRAINT,COMMENT, MATERIALIZED_VIEW,MATERIALIZED_VIEW_LOG,SCHEMA_CALLOUT
使用下列命令匯出中繼資料。
SQL> create directory dmpdir as <location>; expdp system/<system password> parfile=<parameter file>
這是用於匯入非區段物件中繼資料的傾印參數檔案範例。
directory=dmpdir dumpfile=xttsmsc%U.dmp full=y logfile=impmsc1.log EXCLUDE=TABLESPACE, PROCOBJ, RLS_CONTEXT, RLS_GROUP, RLS_POLICY, TABLESPACE_QUOTA metrics=y remap_tablespace= APPS_TS_ARCHIVE:SYSTEM, APPS_TS_INTERFACE:SYSTEM, APPS_TS_SEED:SYSTEM, APPS_TS_SUMMARY:SYSTEM, …..
目前,除了目的地系統TEMP上的 SYSTEM、UNDO、 SYSAUX和 之外,沒有資料表空間。因此,您必須重新映射要匯入資料表SYSTEM空間的所有物件。
使用下列命令來匯入中繼資料。
SQL> create directory dmpdir as <location>; impdp system/<system password> parfile=<parameter file>
現在,您可以在目的地資料庫上看到建立的物件。
SQL> select object_type, count(*) from dba_objects group by object_type order by count(*) desc; OBJECT_TYPE COUNT(*) ------------------------------- ---------- SYNONYM 89327 PACKAGE 55670 PACKAGE BODY 54447 VIEW 41378 JAVA CLASS 31978 SEQUENCE 12766 …..
除了 SYSTEM、SYSAUX、 UNDO和 之外,沒有資料表空間TEMP。USER 物件會以 USERS做為預設資料表空間建立。在第 3 階段期間,將建立可傳輸的資料表空間,然後使用原始預設資料表空間來變更 USER 物件。