View a markdown version of this page

階段 2 – 向前滾動階段 (來源資料庫保持線上狀態) - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

階段 2 – 向前滾動階段 (來源資料庫保持線上狀態)

您可以視需要重複向前滾動階段多次,以將目的地資料檔案擷取到來源資料庫。

向前滾動階段包含下列步驟。

  1. 從來源資料庫建立增量備份。

  2. 將備份傳輸至目的地系統。

  3. 將備份轉換為目的地系統最終格式。

  4. 將備份套用至轉換後的目的地資料檔案副本,以將其向前滾動。

每個連續的增量備份應該花費較少的時間,並將目的地資料檔案複本與來源資料庫相比更為最新。

步驟 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

  1. 註解以下幾行:

    • 第 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`;\

  2. 讓目標資料庫處於 NOMOUNT 狀態。

    sqlplus / as sysdba @xttstartupnomount.sql
  3. 平行執行增量備份的向前滾動。

    cd /u01/oracle/expimp/xtt<nn> export TMPDIR=/u01/oracle/expimp/out/out<nn> $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3
  4. 滾動所有增量備份之後,將目標資料庫設定為 OPEN 狀態。

    sqlplus / as sysdba @xttdbopen.sql

此時,您可以重複第 2 階段,直到來源和目的地資料庫上的 SCNs 夠接近為止。您必須決定要繼續進行階段 3 還是重複階段 2,取決於指定的目標停機時間。

若要減少第 3 階段 (傳輸階段) 期間的停機時間,您可以在將來源資料庫設定為 之前,先匯出和匯入非區段型物件的中繼資料FUNCTION,例如 PROCEDURE、、 USER PACKAGEREAD ONLY

如果來源資料庫中的資料庫物件數量非常大 (數百個),匯出和匯入中繼資料需要幾個小時。在此情況下,請考慮匯出中繼資料。

匯出非區段型物件會在來源系統上的讀取/寫入中執行。然後,您必須先將物件匯入目的地系統,來源系統才會設為 READ ONLY。此時,您必須保持資料庫來源物件,例如 PACKAGEPROCEDUREFUNCTION不變。

這是傾印參數檔案的範例,用於匯出非區段型物件的中繼資料,包括 USERPACKAGE_SPECPROCEDUREPACKAGE_BODYFUNCTION

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上的 SYSTEMUNDOSYSAUX和 之外,沒有資料表空間。因此,您必須重新映射要匯入資料表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 …..

除了 SYSTEMSYSAUXUNDO和 之外,沒有資料表空間TEMPUSER 物件會以 USERS做為預設資料表空間建立。在第 3 階段期間,將建立可傳輸的資料表空間,然後使用原始預設資料表空間來變更 USER 物件。