您的組織中是否有無法承受停機(jī)的關(guān)鍵Oracle OLTP數(shù)據(jù)庫?您是否希望在盡量縮短停機(jī)時間或不停機(jī)的情況下將Oracle數(shù)據(jù)庫遷移到AWS?在當(dāng)今應(yīng)用程序和數(shù)據(jù)庫24/7全天候可用的快節(jié)奏世界中,將本地數(shù)據(jù)庫遷移到云時,某些應(yīng)用程序可能無法承受大量停機(jī)時間。
本博文討論了使用AWS Database Migration Service(AWS DMS)及其更改數(shù)據(jù)捕獲(CDC)功能將本地Oracle數(shù)據(jù)庫遷移到Oracle的Amazon Relational Database Service(RDS)的解決方案,以最大程度地縮短停機(jī)時間。
AWS DMS概述
AWS DMS是一項云服務(wù),可幫助您將數(shù)據(jù)庫遷移到AWS。AWS DMS可以將關(guān)系數(shù)據(jù)庫、數(shù)據(jù)倉庫、NoSQL數(shù)據(jù)庫和其他類型的數(shù)據(jù)存儲遷移到AWS云中。AWS DMS支持不同數(shù)據(jù)庫平臺之間的同質(zhì)和異類遷移。您可以執(zhí)行一次遷移,也可以復(fù)制正在進(jìn)行的更改,以使源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫保持同步。要使用AWS DMS,至少一個數(shù)據(jù)庫端應(yīng)位于AWS中,即源數(shù)據(jù)庫或目標(biāo)數(shù)據(jù)庫。
當(dāng)僅使用AWS DMS復(fù)制數(shù)據(jù)更改時,必須指定一個時間或系統(tǒng)更改號(SCN),AWS DMS將從該時間或系統(tǒng)更改號開始讀取數(shù)據(jù)庫日志更改。請務(wù)必在服務(wù)器上保留這些日志一段時間,以確保AWS DMS可以訪問這些更改。
遷移LOB
如果您的源數(shù)據(jù)庫具有大型二進(jìn)制對象(LOB),并且您必須將其遷移到目標(biāo)數(shù)據(jù)庫,則AWS DMS提供以下選項:
·完全LOB模式–AWS DMS將所有LOB從源數(shù)據(jù)庫遷移到目標(biāo)數(shù)據(jù)庫,無論其大小如何。盡管遷移速度較慢,但優(yōu)勢是數(shù)據(jù)不會被截斷。為了獲得更好的性能,您應(yīng)該在新的復(fù)制實(shí)例上創(chuàng)建一個單獨(dú)的任務(wù),以遷移LOB大于數(shù)兆字節(jié)的表格。
·受限LOB模式–您指定LOB列數(shù)據(jù)的最大大小,使AWS DMS可以預(yù)分配資源并批量應(yīng)用LOB。如果LOB列的大小超過任務(wù)中指定的大小,則AWS DMS會截斷數(shù)據(jù),并將警告發(fā)送到AWS DMS日志文件。如果您的LOB數(shù)據(jù)大小在受限LOB大小以內(nèi),則可以通過使用受限LOB模式來提高性能。
·內(nèi)聯(lián)LOB模式–通過復(fù)制小型和大型LOB,您可以遷移LOB,而不用截斷數(shù)據(jù)或降低任務(wù)性能。首先,為InlineLobMaxSize參數(shù)指定一個值,該值僅在完全LOB模式設(shè)置為true時可用。AWS DMS任務(wù)以內(nèi)聯(lián)方式傳輸小型LOB,此方式更加高效。然后,AWS DMS通過從源表執(zhí)行查找來遷移大型LOB。但是,內(nèi)聯(lián)LOB模式僅在完全加載階段有效。
解決方案概覽
本博文使用Amazon EC2 for Oracle數(shù)據(jù)庫實(shí)例作為源數(shù)據(jù)庫,并假設(shè)您的本地數(shù)據(jù)庫和Amazon RDS for Oracle數(shù)據(jù)庫作為目標(biāo)數(shù)據(jù)庫。本博文還使用Oracle Data Pump將數(shù)據(jù)從源Oracle數(shù)據(jù)庫導(dǎo)出和導(dǎo)入到目標(biāo)Oracle RDS for Oracle數(shù)據(jù)庫,并使用AWS DMS將CDC更改從源Oracle數(shù)據(jù)庫復(fù)制到Amazon RDS for Oracle數(shù)據(jù)庫。本博文假設(shè)您已在AWS云環(huán)境中預(yù)置Amazon RDS for Oracle數(shù)據(jù)庫作為目標(biāo)數(shù)據(jù)庫。
下圖展示了我們的解決方案架構(gòu)。
該解決方案包括以下步驟:
·設(shè)置帶有源和目標(biāo)終端節(jié)點(diǎn)的AWS DMS復(fù)制實(shí)例
·使用Oracle Data Pump從本地Oracle數(shù)據(jù)庫導(dǎo)出架構(gòu)
·使用Oracle數(shù)據(jù)泵將架構(gòu)導(dǎo)入到Amazon RDS for Oracle數(shù)據(jù)庫中
·使用CDC創(chuàng)建AWS DMS復(fù)制任務(wù)以執(zhí)行實(shí)時復(fù)制
·在目標(biāo)Amazon RDS for Oracle數(shù)據(jù)庫上驗(yàn)證數(shù)據(jù)庫架構(gòu)
先決條件
根據(jù)應(yīng)用程序,在確定要遷移到Amazon RDS for Oracle數(shù)據(jù)庫的Oracle數(shù)據(jù)庫架構(gòu)之后,必須在啟動遷移之前收集一些架構(gòu)詳細(xì)信息,例如架構(gòu)大小、基于對象類型的對象總數(shù)和無效對象。
要使用AWS DMS CDC功能,請在源Oracle數(shù)據(jù)庫上啟用數(shù)據(jù)庫級和表格級補(bǔ)充日志記錄。完成前提條件后,您可以預(yù)置AWS DMS實(shí)例。
預(yù)置AWS DMS實(shí)例
使用DMS_instance.yaml AWS CloudFormation模板來配置AWS DMS復(fù)制實(shí)例及其源和目標(biāo)終端節(jié)點(diǎn)。請執(zhí)行以下步驟:
1.在AWS管理控制臺的服務(wù)下,選擇CloudFormation。
2.選擇創(chuàng)建堆棧。
3.對于指定模板,選擇上傳模板文件。
4.選擇選擇文件。
5.選擇DMS_instance.yaml文件。
6.選擇下一步。
7.在指定堆棧詳細(xì)信息頁面上,根據(jù)需要編輯預(yù)定義參數(shù):
·對于堆棧名稱,輸入您的堆棧名稱。
·在AWS DMS實(shí)例參數(shù)下,輸入以下參數(shù):
·DMSInstanceType–為AWS DMS復(fù)制實(shí)例選擇所需的實(shí)例。
·DMSStorageSize–輸入AWS DMS實(shí)例的存儲大小。
·在源Oracle數(shù)據(jù)庫配置下,輸入以下參數(shù):
·SourceOracleEndpointID–Oracle數(shù)據(jù)庫的源數(shù)據(jù)庫服務(wù)器名稱
·SourceOracleDatabaseName–源數(shù)據(jù)庫服務(wù)名稱或適用的SID
·SourceOracleUserName–源數(shù)據(jù)庫用戶名。默認(rèn)為系統(tǒng)。
·SourceOracleDBPassword–源數(shù)據(jù)庫用戶名的密碼
·SourceOracleDBPort–源數(shù)據(jù)庫端口
·在“目標(biāo)RDS for Oracle“數(shù)據(jù)庫配置下,輸入以下參數(shù):
·TargetRDSOracleEndpointID–目標(biāo)RDS數(shù)據(jù)庫終端節(jié)點(diǎn)
·TargetRDSOracleDatabaseName–目標(biāo)RDS數(shù)據(jù)庫名稱
·TargetRSOracleUserName–目標(biāo)RDS數(shù)據(jù)庫名稱
·TargetRDSOracleDBPassword–目標(biāo)RDS密碼
·TargetOracleDBPort–目標(biāo)RDS數(shù)據(jù)庫端口
在VPC、子網(wǎng)和安全組配置下,輸入以下參數(shù):
VPCID–復(fù)制實(shí)例的VPC
VPCSecurityGroupId–復(fù)制實(shí)例的VPC安全組
DMSSubnet1–可用區(qū)1的子網(wǎng)
DMSSubnet2–可用區(qū)2的子網(wǎng)
1.選擇下一步。
2.在配置堆棧選項頁上的標(biāo)簽”中,輸入任何可選值。
3.選擇下一步。
4.在Review頁面上選中I acknowledge that AWS CloudFormation might create IAM resources with custom names(我確認(rèn)AWS CloudFormation可能會使用自定義名稱創(chuàng)建IAM資源)。
5.選擇創(chuàng)建堆棧。預(yù)置應(yīng)在大約5到10分鐘內(nèi)完成。當(dāng)AWS CloudFormation Stacks控制臺顯示Create Complete時,此操作完成。
6.在AWS管理控制臺中,選擇服務(wù)。
7.選擇數(shù)據(jù)庫遷移服務(wù)。
8.在資源管理下,選擇復(fù)制實(shí)例。以下屏幕截圖顯示復(fù)制實(shí)例頁面,可用于檢查輸出。
1.在資源管理下,選擇終端節(jié)點(diǎn)。以下屏幕截圖顯示終端節(jié)點(diǎn)頁面,您可以在其中看到源終端節(jié)點(diǎn)和目標(biāo)終端節(jié)點(diǎn)。
源終端節(jié)點(diǎn)和目標(biāo)終端節(jié)點(diǎn)的狀態(tài)顯示為“活動”后,應(yīng)測試連接。為每個終端節(jié)點(diǎn)選擇運(yùn)行測試,以確保狀態(tài)顯示為成功。
現(xiàn)在,您已經(jīng)創(chuàng)建AWS DMS復(fù)制實(shí)例及其源和目標(biāo)終端節(jié)點(diǎn),并執(zhí)行了終端節(jié)點(diǎn)連接測試,確保其可以成功建立連接。
將源數(shù)據(jù)庫架構(gòu)遷移到目標(biāo)數(shù)據(jù)庫
現(xiàn)在,您可以使用Oracle Data Pump將Oracle數(shù)據(jù)庫架構(gòu)遷移到Amazon RDS for Oracle數(shù)據(jù)庫。Oracle Data Pump提供了服務(wù)器端基礎(chǔ)結(jié)構(gòu),可在Oracle數(shù)據(jù)庫之間快速進(jìn)行數(shù)據(jù)和元數(shù)據(jù)移動。對于大型數(shù)據(jù)庫而言,它是理想的選擇,可通過高性能數(shù)據(jù)移動為數(shù)據(jù)庫管理員節(jié)省大量時間。Data Pump自動管理多個并行的卸載和加載流,以實(shí)現(xiàn)最大吞吐量。
導(dǎo)出數(shù)據(jù)
當(dāng)源數(shù)據(jù)庫處于聯(lián)機(jī)狀態(tài)并且正在被應(yīng)用程序使用時,請使用Oracle Data Pump從源本地Oracle數(shù)據(jù)庫開始數(shù)據(jù)導(dǎo)出。您還必須從源數(shù)據(jù)庫生成SCN,以在數(shù)據(jù)泵導(dǎo)出中使用SCN,從而確保數(shù)據(jù)一致性,并在AWS DMS中將SCN用作更改數(shù)據(jù)捕獲的起點(diǎn)。
要導(dǎo)出數(shù)據(jù)庫模式,請完成以下步驟:
6.記錄生成的SCN,以便在導(dǎo)出數(shù)據(jù)和用于AWS DMS時使用。
7.創(chuàng)建一個參數(shù)文件以導(dǎo)出架構(gòu)。查看參數(shù)文件的內(nèi)容:
8.#Use the generated SCN in step#1 for the flashback_scn parameter and create the required database directory if default DATA_PUMP_DIR database directory is not being used.
9.
10.
11.$cat export_sample_user.par
12.userid=dms_sample/dms_sample
13.directory=DATA_PUMP_DIR
14.logfile=export_dms_sample_user.log
15.dumpfile=export_dms_sample_data_%U.dmp
16.schemas=DMS_SAMPLEflashback_scn=7097405
17.使用expdp實(shí)用程序執(zhí)行導(dǎo)出。請參閱以下代碼:
將轉(zhuǎn)儲文件傳輸?shù)侥繕?biāo)實(shí)例
有多種方法可以將Oracle Data Pump導(dǎo)出文件傳輸?shù)紸mazon RDS for Oracle實(shí)例。您可以使用DBMS_FILE_TRANSFER實(shí)用程序或Amazon S3集成功能來傳輸文件。
使用DBMS_FILE_TRANSFER傳輸轉(zhuǎn)儲文件
您可以使用DBMS_FILE_TRANSFER實(shí)用程序?qū)?shù)據(jù)泵文件直接傳輸?shù)絉DS實(shí)例。您必須在本地和Amazon RDS for Oracle數(shù)據(jù)庫實(shí)例之間創(chuàng)建數(shù)據(jù)庫鏈接。
以下代碼創(chuàng)建一個數(shù)據(jù)庫鏈接ORARDSDB,該鏈接連接到目標(biāo)數(shù)據(jù)庫實(shí)例上的RDS主用戶:
以下腳本使用名為oradsdb的數(shù)據(jù)庫鏈接將名為export_dms_sample_data_01.dmp的轉(zhuǎn)儲文件從源實(shí)例復(fù)制到目標(biāo)Amazon RDS for Oracle數(shù)據(jù)庫。
借助S3集成傳輸轉(zhuǎn)儲文件
借助S3集成,您可以將Oracle數(shù)據(jù)轉(zhuǎn)儲文件直接傳輸?shù)紸mazon RDS for Oracle實(shí)例。從源數(shù)據(jù)庫實(shí)例導(dǎo)出數(shù)據(jù)后,可以將數(shù)據(jù)泵文件上傳到S3存儲桶,將文件從S3存儲桶下載到Amazon RDS for Oracle實(shí)例,然后執(zhí)行導(dǎo)入。您還可以使用此集成功能將數(shù)據(jù)轉(zhuǎn)儲文件從Amazon RDS for Oracle DB實(shí)例傳輸?shù)奖镜財?shù)據(jù)庫服務(wù)器。
Amazon RDS for Oracle實(shí)例必須具有S3存儲桶的訪問權(quán)限才能與Amazon RDS for Oracle S3集成和S3結(jié)合使用。創(chuàng)建IAM策略和角色使用GetObject、ListBucket、PutObject授予您的IAM策略。創(chuàng)建IAM角色,并將策略附加到該角色。
要使用Amazon RDS for Oracle與S3集成,您的Amazon RDS for Oracle實(shí)例必須與包含S3_INTEGRATION選項的選項組關(guān)聯(lián)。
要創(chuàng)建Amazon RDS選項組,請完成以下步驟:
1.在Amazon RDS控制臺上的選項組下,選擇創(chuàng)建
2.在選項組詳細(xì)信息下的名稱下,輸入選項組的名稱。輸入rds-oracle12r2-option-group。
3.對于描述,輸入您的組的描述。
4.對于引擎,選擇要遷移的目標(biāo)Amazon RDS for Oracle數(shù)據(jù)庫的引擎。本博文選擇oracle-ee。
5.對于“主要引擎版本”,選擇引擎版本。本博文選擇12.2。
6.選擇創(chuàng)建。
創(chuàng)建選項組后,必須將S3_Integration選項添加到選項組。請執(zhí)行以下步驟:
1.在RDS控制臺上,選擇選項組。
2.選擇您創(chuàng)建的組。
3.選擇添加選項。
4.對于選項,選擇S3_INTEGRATION。
5.對于版本,選擇1.0。
6.對于立即申請,選擇是。
7.選擇添加選項。
在將S3_Integration添加到選項組之后,您必須將目標(biāo)Amazon RDS for Oracle數(shù)據(jù)庫修改為使用新的選項組。完成以下步驟,將選項組添加到現(xiàn)有Amazon RDS for Oracle數(shù)據(jù)庫:
1.在RDS控制臺的數(shù)據(jù)庫下,選擇要修改的數(shù)據(jù)庫實(shí)例。
2.選擇修改。出現(xiàn)修改數(shù)據(jù)庫實(shí)例頁面
3.在數(shù)據(jù)庫選項下,對于選項組,選擇您新創(chuàng)建的選項組。
1.選擇繼續(xù)。
2.在安排修改下,選擇立即應(yīng)用。
3.選擇修改數(shù)據(jù)庫實(shí)例。
當(dāng)適用于Amazon RDS for Oracle數(shù)據(jù)庫反映了新的選項組時,您必須將IAM角色和S3_Integration功能與數(shù)據(jù)庫實(shí)例相關(guān)聯(lián)。請執(zhí)行以下步驟:
1.在RDS控制臺上,選擇您的數(shù)據(jù)庫實(shí)例。
2.在連接性和安全性標(biāo)簽下,選擇管理IAM角色。
3.對于將IAM角色添加到此實(shí)例,選擇RDS_S3_Integration_Role(您創(chuàng)建的角色)。
4.對于功能,選擇S3_INTEGRATION。
5.選擇添加角色。
在將IAM角色和S3集成功能與Amazon RDS for Oracle數(shù)據(jù)庫關(guān)聯(lián)之后,您就完成了S3與Amazon RDS for Oracle數(shù)據(jù)庫的集成?,F(xiàn)在,您可以使用以下代碼將數(shù)據(jù)轉(zhuǎn)儲文件從本地Oracle數(shù)據(jù)庫實(shí)例上傳到S3:
開始導(dǎo)入
數(shù)據(jù)轉(zhuǎn)儲文件可用后,在啟動導(dǎo)入之前,在目標(biāo)Amazon RDS for Oracle數(shù)據(jù)庫上創(chuàng)建角色、架構(gòu)和表空間。
使用RDS主用戶帳戶連接到目標(biāo)Amazon RDS for Oracle數(shù)據(jù)庫以執(zhí)行導(dǎo)入。將Amazon RDS for Oracle數(shù)據(jù)庫tns-entry添加到tnsnames.ora,并使用連接字符串的名稱執(zhí)行導(dǎo)入。
如果要導(dǎo)入另一個表空間或使用另一個架構(gòu)名稱,則可以相應(yīng)地添加表空間和架構(gòu)的重映射。
使用以下代碼所示的連接字符串名稱,從本地開始將導(dǎo)入到Amazon RDS for Oracle:
$impdp admin orardsdb directory=DATA_PUMP_DIR logfile=import.log dumpfile=export_dms_sample_data_01.dmp
Import:Release 12.2.0.1.0-Production on Wed Oct 2 01:52:01 2019
Copyright(c)1982,2017,Oracle and/or its affiliates.All rights reserved.
Connected to:Oracle Database 12c Enterprise Edition Release 12.2.0.1.0-64bit Production
Master table"ADMIN"."SYS_IMPORT_FULL_01"successfully loaded/unloaded
Starting"ADMIN"."SYS_IMPORT_FULL_01":admin/******** orardsdb directory=DATA_PUMP_DIR logfile=import.log dumpfile=export_dms_sample_data_01.dmp
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Processing object type SCHEMA_EXPORT/TABLE/PROCACT_INSTANCE
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
.
.
.
Processing object type SCHEMA_EXPORT/TABLE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_SPEC
Processing object type SCHEMA_EXPORT/PACKAGE/GRANT/OWNER_GRANT/OBJECT_GRANT
Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Processing object type SCHEMA_EXPORT/PACKAGE/COMPILE_PACKAGE/PACKAGE_SPEC/ALTER_PACKAGE_SPEC
Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Processing object type SCHEMA_EXPORT/VIEW/VIEW
Processing object type SCHEMA_EXPORT/PACKAGE/PACKAGE_BODY
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
導(dǎo)入后檢查和驗(yàn)證
要驗(yàn)證導(dǎo)入是否已成功完成,請查看導(dǎo)入日志文件中是否有任何錯誤。另外,比較詳細(xì)信息,例如源數(shù)據(jù)庫對象和目標(biāo)數(shù)據(jù)庫對象、行數(shù)和無效對象,如果存在無效對象,則重新編譯。
導(dǎo)入成功完成后,為避免數(shù)據(jù)不一致,請在相關(guān)架構(gòu)的目標(biāo)Amazon RDS for Oracle數(shù)據(jù)庫上禁用觸發(fā)器和外鍵,以為AWS DMS復(fù)制準(zhǔn)備目標(biāo)數(shù)據(jù)庫。
創(chuàng)建AWS DMS遷移任務(wù)
通過以下步驟創(chuàng)建AWS DMS遷移任務(wù):
·在AWS DMS控制臺上的轉(zhuǎn)換和遷移下,選擇數(shù)據(jù)庫遷移任務(wù)。
·在任務(wù)配置下,為任務(wù)標(biāo)識符輸入您的任務(wù)標(biāo)識符。
·對于復(fù)制實(shí)例,選擇您創(chuàng)建的DMS復(fù)制實(shí)例。
·對于源數(shù)據(jù)庫終端節(jié)點(diǎn),選擇您的源終端節(jié)點(diǎn)。
·對于目標(biāo)數(shù)據(jù)庫終端節(jié)點(diǎn),選擇目標(biāo)Amazon RDS for Oracle數(shù)據(jù)庫。
·對于遷移類型,選擇僅復(fù)制數(shù)據(jù)更改。
·在任務(wù)設(shè)置下,選擇指定日志序列號。
·對于系統(tǒng)更改號,輸入您從源Oracle數(shù)據(jù)庫生成的Oracle數(shù)據(jù)庫SCN。
·選擇啟用驗(yàn)證。
·選擇啟用CloudWatch Logs。這使您可以驗(yàn)證數(shù)據(jù)和Amazon CloudWatch日志來查看AWS DMS復(fù)制實(shí)例日志。
·在選擇規(guī)則下,完成以下操作:
·對于架構(gòu),選擇輸入架構(gòu)。
·對于架構(gòu)名稱,輸入DMS_SAMPLE。
·對于表名稱,輸入%。
·對于操作,選擇包括
·在轉(zhuǎn)換規(guī)則下,完成以下操作:
·對于目標(biāo),選擇表。
·對于架構(gòu)名稱,選擇輸入架構(gòu)。
·對于架構(gòu)名稱,輸入DMS_SAMPLE。
·對于操作,選擇重命名為。
·選擇創(chuàng)建任務(wù)。
創(chuàng)建任務(wù)后,它會將CDC從您在CDC啟動模式下提供的SCN遷移到Amazon RDS for Oracle數(shù)據(jù)庫實(shí)例。您還可以通過查看CloudWatch Logs進(jìn)行驗(yàn)證。以下屏幕截圖顯示了遷移的日志詳細(xì)信息。
數(shù)據(jù)驗(yàn)證
AWS DMS進(jìn)行數(shù)據(jù)驗(yàn)證,以確認(rèn)您的數(shù)據(jù)已成功將源數(shù)據(jù)庫遷移到目標(biāo)數(shù)據(jù)庫。您可以查看表統(tǒng)計信息頁面,以確定在AWS DMS任務(wù)啟動后發(fā)生的DML更改。在數(shù)據(jù)驗(yàn)證期間,AWS DMS比較源數(shù)據(jù)庫與目標(biāo)數(shù)據(jù)庫中對應(yīng)的每一行,驗(yàn)證這些行包含的數(shù)據(jù)相同。為此,AWS DMS發(fā)出適當(dāng)?shù)牟樵円詸z索數(shù)據(jù)。
以下屏幕截圖顯示了表統(tǒng)計信息頁面及其相關(guān)條目。
您還可以對源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫中的記錄數(shù)進(jìn)行計數(shù)和比較,以確認(rèn)CDC數(shù)據(jù)已從源數(shù)據(jù)庫復(fù)制到目標(biāo)數(shù)據(jù)庫。
在計劃的維護(hù)窗口中,可以使用以下代碼關(guān)閉所有指向源數(shù)據(jù)庫的應(yīng)用程序,并啟用觸發(fā)器和外鍵約束:
—Run the below statement to generate list of triggers to be enabled
select‘a(chǎn)lter trigger‘||owner||’.’||trigger_name||‘enable;’from dba_triggers where owner=’DMS_SAMPLE’;
—Run the below statement to generate list of constraints to be enabled
select‘a(chǎn)lter table‘||owner||’.’||table_name||’enable constraint‘||constraint_name||’;’from dba_constraints
where owner=’DMS_SAMPLE’and constraint_type=’R’;
由于DMS不會在CDC期間從源數(shù)據(jù)庫復(fù)制增量序列號,因此您將需要從源生成所有序列的最新序列值,并將其應(yīng)用于目標(biāo)Amazon RDS for Oracle數(shù)據(jù)庫,以避免序列值不一致。
現(xiàn)在,通過修改連接詳細(xì)信息,將應(yīng)用程序指向目標(biāo)Amazon RDS for Oracle數(shù)據(jù)庫。在啟動應(yīng)用程序之后,您應(yīng)該看到現(xiàn)在已在目標(biāo)Amazon RDS for Oracle數(shù)據(jù)庫上建立所有應(yīng)用程序連接。確認(rèn)源數(shù)據(jù)庫上不再存在連接后,可以停止源數(shù)據(jù)庫。
小結(jié)
本博文演示了如何通過使用Oracle數(shù)據(jù)泵和AWS DMS將本地Oracle數(shù)據(jù)庫遷移到Amazon RDS for Oracle數(shù)據(jù)庫,同時最大程度地縮短停機(jī)時間甚至無停機(jī)。您可以使用AWS DMS及其CDC功能將關(guān)鍵數(shù)據(jù)庫無縫遷移和復(fù)制到Amazon RDS。
我們鼓勵您嘗試此解決方案,并充分發(fā)揮AWS DMS與Oracle數(shù)據(jù)庫結(jié)合使用帶來的所有優(yōu)勢。
本篇作者
Sagar PatelAmazon:Web Services專業(yè)服務(wù)團(tuán)隊的數(shù)據(jù)庫專業(yè)架構(gòu)師。他是數(shù)據(jù)庫遷移專家,負(fù)責(zé)提供技術(shù)指導(dǎo),并幫助Amazon客戶將其本地數(shù)據(jù)庫遷移到AWS。
Sharath Lingareddy:Amazon Web Services專業(yè)服務(wù)團(tuán)隊的數(shù)據(jù)庫架構(gòu)師。他提供使用Oracle、PostgreSQL、Amazon RDS的解決方案。他的專注的領(lǐng)域是本地數(shù)據(jù)庫到Amazon RDS和Aurora PostgreSQL的同質(zhì)和異類遷移。
Jeevith Anumalla:Amazon Web Services專業(yè)服務(wù)團(tuán)隊的Oracle數(shù)據(jù)庫云架構(gòu)師。他擔(dān)任數(shù)據(jù)庫遷移專家,幫助內(nèi)部和外部Amazon客戶將其本地數(shù)據(jù)庫環(huán)境移至AWS數(shù)據(jù)存儲。