本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Oracle 資料泵將現場部署 Oracle 資料庫遷移到亞馬遜 RDS
由莫漢安南(AWS)和布萊恩莫特澤(AWS)創建
環境:PoC 或試點 | 來源:數據庫:關係 | 目標:Amazon RDS for Oracle |
R 類型:重新平台 | 工作量:甲骨文 | 技術:移轉;資料庫 |
AWS 服務:Amazon RDS |
Summary
此模式說明如何使用 Oracle 資料泵,將 Oracle 資料庫從現場部署資料中心遷移到適用於 Oracle 資料庫執行個體的 Amazon 關聯式資料庫服務 (Amazon RDS)。
該模式涉及從來源資料庫建立資料傾印檔案,將檔案存放在 Amazon Simple Storage Service (Amazon S3) 儲存貯體中,然後將資料還原到適用於 Oracle 資料庫執行個體的 Amazon RDS。當您在使用 AWS Database Migration Service (AWS DMS) 進行遷移時遇到限制時,此模式非常有用。
先決條件和限制
先決條件
產品版本
架構
源, 技術, 堆棧
目標技術堆疊
來源與目標架構
AWS 服務
其他工具
Oracle 資料汲取可協助您以高速將資料和中繼資料從一個資料庫移至另一個資料庫。在此模式中,Oracle 資料泵用於將資料傾印 (.dmp) 檔案匯出到 Oracle 伺服器,並將其匯入 Amazon RDS for Oracle 文。如需詳細資訊,請參閱 Amazon RDS 文件中的將資料匯入 Oracle。
Oracle SQL 開發人員是一個整合式開發環境,可簡化傳統與雲端式部署中 Oracle 資料庫的開發與管理。它會與現場部署 Oracle 資料庫和 Amazon RDS for Oracle 互動,以執行匯出和匯入資料所需的 SQL 命令。
史诗
任務 | 描述 | 所需技能 |
---|
建立儲存貯體。 | 若要建立 S3 儲存貯體,請遵循 AWS 文件中的指示。 | AWS 系統管理員 |
任務 | 描述 | 所需技能 |
---|
設定 IAM 權限。 | 若要設定許可,請遵循 AWS 文件中的指示。 | AWS 系統管理員 |
任務 | 描述 | 所需技能 |
---|
建立適用於甲骨文資料庫執行個體的目標 Amazon RDS。 | 若要建立 Amazon RDS for Oracle 執行個體,請遵循 AWS 文件中的指示進行。 | AWS 系統管理員 |
將角色與資料庫執行個體建立關聯。 | 若要將角色與執行個體建立關聯,請遵循 AWS 文件中的指示。 | DBA |
任務 | 描述 | 所需技能 |
---|
建立使用者。 | 從 Oracle SQL 開發人員或 SQL*Plus Connect 到目標亞馬遜 RDS 適用於 Oracle 資料庫,然後執行下列 SQL 命令來建立要將結構描述匯入的使用者。 create user SAMPLE_SCHEMA identified by <PASSWORD>;
grant create session, resource to <USER NAME>;
alter user <USER NAME> quota 100M on users;
| DBA |
任務 | 描述 | 所需技能 |
---|
建立資料傾印檔案。 | 若要在匯出使用SAMPLE_SCHEMA 者的DATA_PUMP_DIR 目錄sample.dmp 中建立名為的傾印檔案,請使用下列指令碼。 DECLARE
hdnl NUMBER;
BEGIN
hdnl := dbms_datapump.open(operation => 'EXPORT',
job_mode => 'SCHEMA',
job_name => NULL);
dbms_datapump.add_file( handle => hdnl,
filename => 'sample.dmp',
directory => 'DATA_PUMP_DIR',
filetype => dbms_datapump.ku$_file_type_dump_file);
dbms_datapump.add_file(handle => hdnl,
filename => 'export.log',
directory => 'DATA_PUMP_DIR',
filetype => dbms_datapump.ku$_file_type_log_file);
dbms_datapump.metadata_filter(hdnl, 'SCHEMA_EXPR', 'IN (''SAMPLE_SCHEMA'')');
dbms_datapump.start_job(hdnl);
END;
/
檢閱本機DATA_PUMP_DIR 目錄中的export.log 檔案,以檢閱匯出詳細資訊。 | DBA |
任務 | 描述 | 所需技能 |
---|
將資料傾印檔案從來源上傳至 S3 儲存貯體。 | 使用 AWS CLI 執行下列命令。 aws s3 cp sample.dmp s3://<bucket_created_epic_1>/
| DBA |
任務 | 描述 | 所需技能 |
---|
將數據轉儲文件下載到 Amazon RDS | 若要將傾印檔案sample.dmp 從 S3 儲存貯體複製到 Amazon RDS for Oracle 資料庫,請執行下列 SQL 命令。在此範例中,sample.dmp 檔案會從 S3 儲存貯體下載my-s3-integration1 至 Oracle 目錄DATA_PUMP_DIR 。請確定您有足夠的磁碟空間配置給 RDS 執行個體,以容納資料庫和匯出檔案。 -- If you want to download all the files in the S3 bucket remove the p_s3_prefix line.
SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
p_bucket_name => 'my-s3-integration',
p_s3_prefix => 'sample.dmp',
p_directory_name => 'DATA_PUMP_DIR')
AS TASK_ID FROM DUAL;
上一個指令會輸出工作 ID。若要透過檢閱工作 ID 中的資料來檢閱下載狀態,請執行下列命令。 SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-<task_id>.log'));
若要查看目DATA_PUMP_DIR 錄中的檔案,請執行下列命令。 SELECT filename,type,filesize/1024/1024 size_megs,to_char(mtime,'DD-MON-YY HH24:MI:SS') timestamp
FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => upper('DATA_PUMP_DIR'))) order by 4;
| AWS 系統管理員 |
任務 | 描述 | 所需技能 |
---|
將結構描述和資料還原到 Amazon RDS。 | 若要將傾印檔案匯入sample_schema 資料庫結構描述,請從 SQL 開發人員或 SQL*Plus 執行下列 SQL 命令。 DECLARE
hdnl NUMBER;
BEGIN
hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name=>null);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'sample.dmp', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'import.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file);
DBMS_DATAPUMP.METADATA_FILTER(hdnl,'SCHEMA_EXPR','IN (''SAMPLE_SCHEMA'')');
DBMS_DATAPUMP.START_JOB(hdnl);
END;
/
若要查看匯入中的記錄檔,請執行下列命令。 SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('DATA_PUMP_DIR','import.log'));
| DBA |
任務 | 描述 | 所需技能 |
---|
列出並清理匯出檔案。 | 列出並刪除目DATA_PUMP_DIR 錄中的導出文件,運行以下命令。 -- List the files
SELECT filename,type,filesize/1024/1024 size_megs,to_char(mtime,'DD-MON-YY HH24:MI:SS') timestamp FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => upper('DATA_PUMP_DIR'))) order by 4;
-- Remove the files
EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','sample.dmp');
EXEC UTL_FILE.FREMOVE('DATA_PUMP_DIR','import.log');
| AWS 系統管理員 |
相關資源