附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱 Oracle Cloud Infrastructure Free Tier 入門。
- 它使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特定的值。
使用 V4 跨平台可傳輸表格空間將 Oracle Database 移轉至 OCI,並將其從 12c 升級至 19c
簡介
本教學課程涵蓋將 V4 跨平台可傳輸表格空間 (XTTS) 與 Oracle 復原管理程式 (RMAN) 增量備份搭配使用,以在不同位元組順序格式的系統之間移轉資料,且最少的應用程式停止工作時間。
第一步是將完整備份從來源複製到目的地。接著,藉由使用一系列的增量備份,每個小於最後一個的增量備份,在需要任何停止工作時間之前,目的地系統的資料幾乎可以和來源系統一起帶入最新的資料。此程序只需要在最終增量備份期間停止工作,以及描述資料匯出或匯入。
本教學課程描述可用於 11.2.0.3 和更新版本的「跨平台增量備份」的 V4 程序。
環境詳細資訊
-
來源資料庫:
-
資料庫版本: 12.1.0.2
-
作業系統:AIX
-
-
目標資料庫:
-
資料庫版本:19.18.0.0 (OCI)
-
作業系統:Oracle Linux
-
目標
- 使用跨平台可傳輸表格空間 (XTTS) 搭配 RMAN 增量備份,在不同位元組順序格式的系統之間移轉資料,最少的應用程式停止工作時間。
必要條件
-
目前的版本不支援 Windows 作為來源或目的地。
-
跨平台只能搭配 Enterprise Edition 使用。此程序無法與 Standard Edition 搭配使用。
-
來源資料庫
COMPATIBLE
參數不得大於目的地資料庫COMPATIBLE
參數。 -
來源資料庫必須為 ARCHIVELOG 模式。
-
執行 XTTS 命令檔之前,請先設定
NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
。其他NLS_LANG
設定值可能會導致錯誤。 -
來源系統上的 RMAN 不能有:
-
以 COMPRESSED 設定的裝置類型磁碟。
-
要複製的備份類型。來源必須要有 BACKUP TYPE TO BACKUPSET。
-
設定為 SBT 類型的預設通道。此程序只能與磁碟通道搭配使用。
-
任何通道組態限制。例如,MAXSETSIZE、MAXPIECESIZE 等等。
-
-
所移動的表格空間集必須全都在線上,且未包含任何離線資料檔。表格空間必須是 READ WRITE。
-
只有 READ ONLY 的表格空間可以使用一般 XTTS 方法來移動。您不需要合併「跨平台增量備份」,即可移動一律為 READ ONLY 的表格空間。
-
雖然偏好的目的地系統是 Linux (64 位元的 Oracle Linux 或 RedHat Linux 的認證版本),但此程序可以與其他以 Unix 為基礎的作業系統搭配使用。不過,任何非 Linux 作業系統都必須在目的地和來源中執行 12.1.0.1 或更新版本。
-
來源的 Oracle 版本必須低於或等於目的地。因此,此程序可做為升級方法。
-
來源與目的地的最小版本為 11.2.0.3。舊版的 11.2 可能功能相同,但尚未經過測試。
-
如建議,請先測試此程序,再依靠它來執行生產環境。
-
「自動儲存體管理 (ASM)」只能用於目的地資料檔的最終位置,備份無法放置在此版本的 ASM 上。
-
目的地的備份位置必須是具備讀取 / 寫入權限的裝置。該裝置不能是 READ ONLY。這可能會導致將備份集轉換成 ORA-19624。
-
來源資料庫與目標資料庫必須使用相容的字元集與本國字元集。
-
在第一次備份 (層次 0) 時,表格空間必須位於 READ WRITE。
-
來源和目標資料庫必須:
-
使用相容的時區版本。
-
有最新的修正程式版本。
-
-
將下列指令碼從 Oracle E-Business Suite 應用程式節點複製到目標資料庫伺服器 (僅適用於 Oracle E-Business Suite 應用程式)。
audb19c.sql ausy19c.sql adstats.sql auque2.sql
作業 1:準備來源資料庫
-
執行下列查詢以檢查來源資料庫上的位元組順序格式。
col PLATFORM_NAME for a50 select platform_name,platform_id, endian_format from v$transportable_platform;
-
識別來源資料庫中將要傳輸的表格空間。如果您要移轉所有表格空間,請執行下列查詢。
select tablespace_name from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX');
-
在來源資料庫上建立
transport_set_violations
視觀表。exec dbms_tts.transport_set_check('<list of tablespaces with comma saperated>'); SELECT * FROM SYS.TRANSPORT_SET_VIOLATIONS;
-
( 選擇性 ) 啟用來源資料庫的區塊變更追蹤,以提升增量備份的效能。
-
確認來源資料庫上的所有表格空間都已上線。
-
移除重建索引參數空間索引,並修改無法使用的空間索引。
-
此步驟會檢查以確保您在空間索引中沒有重建索引參數。若為多租用戶環境,請先執行下列命令,將 Oracle 資料庫 (PDB NAME) 的資料庫 SID 欄位設為可插拔資料庫名稱。
export ORACLE_PDB_SID=[PDB NAME]
-
若要查看是否有任何重建索引參數,請在來源資料庫伺服器節點上,以來源資料庫伺服器檔案系統和資料庫執行處理的擁有者身分,使用 SQL*Plus 以 sysdba 身分連線來源資料庫,然後執行下列查詢。
select owner,index_name from dba_indexes where index_type='DOMAIN' and upper(parameters) like '%REBUILD%';
-
若要移除重建索引參數,請使用 SQL*Plus 以索引擁有者的身分連線至來源資料庫,然後執行下列查詢。
alter index [index name] rebuild parameters [parameters]
-
-
同步文字索引。使用 SQL*Plus 以 SYSDBA 身分連線來源資料庫,並執行下列查詢以尋找所有擱置同步的索引。
select pnd_index_owner,pnd_index_name,count(*) from ctxsys.ctx_pending group by pnd_index_owner,pnd_index_name;
若要同步化索引,請執行下列查詢。
exec ctx_ddl.sync_index('[index owner].[index name]');
作業 2:準備目標資料庫
-
建立暫時的新使用者表格空間。如果目標資料庫是多雲端用戶環境,請連線到 PDB。
alter session set container=[PDB NAME] select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS_OCI'; select TABLESPACE_NAME from dba_tablespaces order by 1; set long 99999 SELECT DBMS_METADATA.GET_DDL ('TABLESPACE','USERS') from dual;
使用上述「資料定義語言 (DDL)」輸出並取代下方的磁碟群組名稱,然後建立新的使用者表格空間。
CREATE BIGFILE TABLESPACE USERS_OCI DATAFILE '+DATAC2' SIZE 1073741824 AUTOEXTEND ON NEXT 17179869184 MAXSIZE 33554431M LOGGING ONLINE PERMANENT BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE ENCRYPTION USING 'AES256' ENCRYPT DEFAULT NOCOMPRESS SEGMENT SPACE MANAGEMENT AUTO;
使用下列查詢,將新使用者表格空間 USERS_OCI 指派給擁有預設表格空間 USERS 的所有資料庫使用者。
select 'alter user '||username||' default tablespace users_OCI;' from dba_users where default_tablespace='USERS';
查詢的輸出必須傳回 0 。
select count(*) from dba_users where default_tablespace='USERS'; ALTER DATABASE DEFAULT TABLESPACE USERS_OCI; drop tablespace users including contents and datafiles; select TABLESPACE_NAME from dba_tablespaces where TABLESPACE_NAME='USERS';
-
在目標資料庫上建立暫時表格空間。對來源執行下列查詢並收集表格空間詳細資訊。
select TABLESPACE_NAME from dba_tablespaces where CONTENTS='TEMPORARY'; Create temp tablespaces on target database like below example. create bigfile temporary tablespace USER_TEMP tempfile size 672m autoextend on next 672m extent management local;
-
建立 Oracle E-Business Suite 應用程式的
nls/data/9idata
目錄。srvctl getenv database -d $ORACLE_UNQNAME perl $ORACLE_HOME/nls/data/old/cr9idata.pl --> on all the nodes of the cluster srvctl setenv database -d $ORACLE_UNQNAME -t ORA_NLS10=$ORACLE_HOME/nls/data/9idata srvctl getenv database -d $ORACLE_UNQNAME
-
建立 Oracle E-Business Suite 應用程式的
$ORACLE_HOME/appsutil/jre
。將appsutil
資料夾從路徑$ORACLE_HOME
下的來源資料庫複製到路徑$ORACLE_HOME
下的目標資料庫伺服器。複製資料夾後,請在目標資料庫伺服器的所有節點上執行下列命令。cd $ORACLE_HOME/appsutil ln -s $ORACLE_HOME/jdk/jre cd $ORACLE_HOME/jdk/jre/lib/ext cp $ORACLE_HOME/jlib/orai18n.jar .
-
設定 Oracle E-Business Suite 應用程式的系統綱要。
export ORACLE_PDB_SID=[PDB_NAME] sqlplus / as sysdba show con_name @audb19c.sql
-
設定 Oracle E-Business Suite 應用程式的系統綱要。
export ORACLE_PDB_SID=[PDB_NAME] sqlplus / as sysdba show con_name @ausy19c.sql
-
設定 Oracle E-Business Suite 應用程式的
CTXSYS
參數。export ORACLE_PDB_SID=[PDB_NAME] sqlplus / as sysdba show con_name exec ctxsys.ctx_adm.set_parameter('file_access_role', 'public');
-
自動收集 Oracle E-Business Suite 應用程式的統計資料。
export ORACLE_PDB_SID=[PDB_NAME] sqlplus / as sysdba show con_name alter system enable restricted session; @adstats.sql alter system disable restricted session;
工作 3:增量 V4 XTTS 步驟
作業 3.1:初始階段
-
從此處下載最新的 v4 perl 命令檔並解壓縮:V4 使用跨平台增量備份 (文件 ID 2471245.1) 減少可傳輸表格空間停止工作時間。建立目錄以解壓縮命令檔和暫存目錄。
例如:
mkdir -p <Backup_location>/XTTS_Migration mkdir -p <Backup_location>/XTTS_Migration/XTTS_TEMP
-
使用您的網站特定組態編輯來源系統上的
xtt.properties
檔案。如需有關xtt.properties
檔案中參數的詳細資訊,請參閱組態檔xtt.properties
小節中的參數描述:V4 Reduce Transportable Tablespace Downtime using Cross Platform Incremental Backup (Doc ID 2471245.1) 。對於此程序,僅需要下列參數。其他則為選擇性和 (或) 可供使用。tablespaces=<list of tablespaces that are migrated with comma saperated> platformid= <obtained from the query select platform_name,platform_id, endian_format from v$transportable_platform> src_scratch_location= <Backup location on source database server> dest_scratch_location= <Backup location on target database server> dest_datafile_location= <path for the datafile location of PDB > destconnstr=sys/<password>>@<Target PDB Connect String> usermantransport=1 - It is recommended this be set if the source database is running 12c or higher. This causes new 12c (and higher) parallel=1
作業 3.2:準備階段
-
在來源系統上執行備份。在來源系統上,以 Oracle 使用者身分登入指向來源資料庫的環境 (
ORACLE_HOME
和ORACLE_SID
環境變數),執行備份的方式如下。export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3 &
-
將下列檔案傳輸至目標資料庫伺服器。
-
從來源
src_scratch_location
建立的備份至目的地dest_scratch_location
。 -
從來源
$TMPDIR
到目的地$TMPDIR
的res.txt
檔案。
在下列範例中,使用 scp 將上一個步驟建立的 level=0 備份從來源系統傳輸到目的地系統。
[oracle@source]$ scp /src_scratch_location/* oracle@dest:/dest_scratch [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
-
-
回復目的地系統上的資料檔。
export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 cp nohup.out nohup.out_L0 nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3 &
作業 3.3:向前捲動階段
在此階段期間,會從來源資料庫建立增量備份、傳輸至目的地系統、轉換成目的地系統位元組順序格式,然後套用至轉換的目的地資料檔複本以向前捲動。此階段可執行多次。每個後續增量備份所花費的時間應該要比先前的增量備份少,而且會讓目的地資料檔複本與來源資料庫比較最新。正在傳輸的資料 (來源) 可在此階段完整存取。
注意:您可以對來源執行多個備份,而不將它們套用至目的地。必須先複製備份檔案和
res.txt
,才能在目的地執行 「– restore」指令。
-
建立要在來源系統上傳輸之表格空間的增量備份。
export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 cp nohup.out nohup.out_1 nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3 &
此步驟會為
xtt.properties
檔案中列出的所有表格空間建立增量備份。 -
將增量備份和
res.txt
傳輸至目的地系統。將增量備份 (src_scratch_location
和dest_scratch_location
之間) 和res.txt
($TMPDIRs
之間) 從來源傳輸至目的地。您可以在來源系統的incrbackups.txt
檔案中找到目前備份的增量備份檔案清單。例如:
[oracle@source]$ scp `cat incrbackups.txt` oracle@dest:/dest_scratch_location [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
-
將增量備份套用至目的地系統上的資料檔複本。在目的地系統上,以 Oracle 使用者身分登入,其環境 (
ORACLE_HOME
和ORACLE_SID
環境變數) 指向目的地資料庫,執行向前捲動資料檔步驟,如下所示。export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 cp nohup.out nohup.out_3 $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3
向前復原步驟會連線至目的地資料庫,然後針對要傳輸的每個表格空間,在表格空間的資料檔套用增量備份。
注意:雖然可以對來源執行多個備份,但不在目的地套用,但必須在上次備份之後複製
res.txt
檔案,而且在目的地執行--restore
之前。重複向前捲動階段,直到資料庫切換時段為止。
作業 3.4:最終增量備份階段
-
將來源資料庫中的來源表格空間更改為 READ ONLY。如果所有表格空間都傳輸至目標資料庫,請執行下列查詢。
set lines 300 select 'alter tablespace "'||tablespace_name||'" read only;' from dba_tablespaces where contents='PERMANENT' and tablespace_name not in ('SYSTEM','SYSAUX');
-
建立要在來源系統上傳輸之表格空間的最終增量備份。
export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 cp nohup.out nohup.out_4 nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --backup --debug 3 &
-
將增量備份和
res.txt
傳輸至目的地系統。例如:
[oracle@source]$ scp 'cat incrbackups.txt' oracle@dest:/dest_scratch_location [oracle@source]$ scp res.txt oracle@dest:/home/oracle/xtt
-
將上次增量備份套用至目的地資料檔。
export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 cp nohup.out nohup.out_5 nohup $ORACLE_HOME/perl/bin/perl xttdriver.pl --restore --debug 3 &
作業 3.5:傳輸階段 - 將描述資料和 Plug-in 表格空間匯出至目的地資料庫
-
建立儲存匯出備份檔案的目錄。
例如:
mkdir -p <Backup_location>/XTTS_DPUMP
執行下列查詢,在來源資料庫中建立目錄。
create or replace directory XTTS_DUMP as '<Backup_location>/XTTS_DUMP'; grant read,write on directory XTTS_DUMP to system;
-
準備匯出剖析檔。
vi xtts_expdp.par directory=XTTS*DUMP metrics=y dumpfile=xttsfulltts*%U.dmp filesize=1048576000 full=y exclude=STATISTICS logfile=expfulltts.log parallel=4 transportable=always EXCLUDE=NORMAL_OPTIONS
-
在來源資料庫執行資料汲取匯出。
nohup expdp system/<password>@<source_db_name> parfile= xtts_expdp.par &
-
在產生要匯入之範例 parfile 的目標資料庫伺服器上執行下列命令。
export TMPDIR=<Backup_location>/XTTS_Migration/XTTS_TEMP export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 $ORACLE_HOME/perl/bin/perl xttdriver.pl -e
更新上一個步驟中產生的下列剖析檔行。
impdp directory=<DATA_PUMP_DIR> logfile=<tts_imp.log> \ network_link=<ttslink> transport_full_check=no \ replace these parameters transport_tablespaces=<tablespace list> \ delete this line from parfile
最終匯入 parfile 應該如下:
directory=XTTS*DUMP logfile=impdpfulltts.log \ metrics=y dumpfile=xttsfulltts*%U.dmp parallel=6 full=y logtime=all exclude=STATISTICS \ transport_datafiles=<list of datafile path generated from above parfile>
-
停用下列稽核相關參數,直到匯入完成為止 (如上所述)。請在匯入完成後重新啟用它們。
show parameter audit_sys_operations show parameter audit_trail alter system set audit_trail=none scope=spfile sid='_'; alter system set audit_sys_operations=FALSE scope=spfile sid='_'; srvctl stop database -d ${ORACLE_UNQNAME} srvctl start database -d ${ORACLE_UNQNAME} show parameter audit_sys_operations show parameter audit_trail
-
在目標資料庫上執行資料汲取匯入。
-
建立複製匯出備份檔案的目錄。
例如:
mkdir -p <Backup_location>/XTTS_DPUMP
-
執行下列命令,在來源資料庫中建立目錄。
create or replace directory XTTS_DUMP as '<Backup_location>/XTTS_DUMP'; grant read,write on directory XTTS_DUMP to system;
nohup impdp system/<password>@<>target_db_name> parfile=<parfile_name> &
-
-
在匯入完成後啟用下列稽核相關參數。
show parameter audit_sys_operations show parameter audit_trail alter system set audit_trail=DB scope=spfile sid='_'; alter system set audit_sys_operations=TRUE scope=spfile sid='_'; srvctl stop database -d ${ORACLE_UNQNAME} srvctl start database -d ${ORACLE_UNQNAME} show parameter audit_sys_operations show parameter audit_trail
-
驗證傳輸的資料。
rman target sys/<password>@<>target_db_name> trace=rman_trace.trc log=<backup_location>/tablespace_validate.log validate tablespace <list of tablespaces transported with comma saperated> check logical;
-
指定使用者表格空間以回復在目標資料庫準備中所做的變更。
select 'alter user '||username||' default tablespace users;' from dba_users where default_tablespace='USERS_OCI';
驗證來源與目標資料庫上的資料。
相關連結
-
Oracle Cloud Infrastructure 上的 Oracle E-Business Suite 入門 (文件 ID 2517025.1)
-
Oracle Cloud Infrastructure 版本 20.1.1 上的 Oracle E-Business Suite 需求。X (文件 ID 2438928.1)
-
互通性注意事項:Oracle E-Business Suite Release 12.1 與 Oracle Database 19c (文件 ID 2580629.1)
-
遵守 Oracle E-Business Suite 12.x 版中的日光節約時間 (DST) 和時區規則變更 (文件 ID 563019.1)
認可
- 作者 - Pavan Yennampelli (Oracle 北美洲雲端服務資深雲端工程師 - NACIE)
其他學習資源
探索 docs.oracle.com/learn 上的其他實驗室,或存取 Oracle Learning YouTube 頻道上的更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Migrate Oracle Database to OCI using V4 Cross Platform Transportable Tablespaces and Upgrade from 12c to 19c
G17531-01
October 2024