AWS RDS Oracle資料遷移
官網:
https://amazonaws-china.com/cn/blogs/china/oracle-data-pump-rds-oracle/
https://blog.csdn.net/zhangyongze_z/article/details/80407601
https://www.cnblogs.com/hmwh/p/13582037.html
Oracle Data Pump
長期來看,Oracle Data Pump 最終會取代 Oracle Export/Import 實用工具,成為將大量資料從 Oracle 安裝遷移到 Amazon RDS 資料庫例項的首選方法。有幾種情況可以使用 Oracle Data Pump:
-
將資料從一個 Oracle 資料庫 (可以為本地或 Amazon EC2 例項) 匯入到另一個 Amazon RDS Oracle 資料庫例項
-
將資料從一個 Amazon RDS Oracle 資料庫例項匯入到 Oracle 資料庫 (可以為本地或 Amazon EC2 例項)
-
在 Amazon RDS Oracle 資料庫例項之間匯入資料 (例如,將資料從 EC2-Classic 遷移到 VPC)
要下載 Oracle Data Pump 實用程式,請轉到 。
以下過程使用 Oracle Data Pump 和 包。該過程連線到源 Oracle 例項 (可以為本地或 Amazon EC2 例項,或者為 Amazon RDS Oracle 資料庫例項) 並使用 包匯出資料。然後使用 DBMS_FILE_TRANSFER.PUT_FILE 方法,將轉儲檔案從 Oracle 例項中複製到透過資料庫連結來連線的目標 Amazon RDS Oracle 資料庫例項上的 DATA_PUMP_DIR 目錄。最後一步是,使用 DBMS_DATAPUMP 包,將資料從複製的轉儲檔案中匯入到 Amazon RDS Oracle 資料庫例項。
此過程有以下要求:
-
您必須具有 DBMS_FILE_TRANSFER 包和 DBMS_DATAPUMP 包的執行特權。
-
目標資料庫例項必須為 11.2.0.2 .v6 版本或更高版本.
-
您必須具有源資料庫例項上的 DATA_PUMP_DIR 目錄的寫入特權.
-
您必須確保有足夠的儲存空間來儲存源例項和目標資料庫例項上的轉儲檔案.
注意
此過程將轉儲檔案匯入到 DATA_PUMP_DIR 目錄 (這是所有 Oracle 資料庫例項上的預配置目錄) 中。此目錄位於您的資料檔案所在的儲存捲上。在匯入轉儲檔案時,現有的 Oracle 資料檔案將佔用更多空間,因此您應確保資料庫例項也能提供額外空間。匯入的轉儲檔案不會自動從 DATA_PUMP_DIR 目錄中刪除或清除。使用 可移除匯入的轉儲檔案。
使用 Oracle Data Pump 和 DBMS_FILE_TRANSFER 包的匯入過程包含以下步驟:
-
步驟 1:向使用者授予 Amazon RDS 目標例項上的特權
-
步驟 2:向使用者授予源資料庫的特權
-
步驟 3:使用 DBMS_DATAPUMP 建立轉儲檔案
-
步驟 4:建立目標資料庫例項的資料庫連結
-
步驟 5:使用 DBMS_FILE_TRANSFER 將匯出的轉儲檔案複製到目標資料庫例項
-
步驟 6:在目標資料庫例項上使用 DBMS_DATAPUMP 匯入資料檔案
-
步驟 7:清除
步驟 1:向使用者授予 Amazon RDS 目標例項上的特權
-
使用 SQL Plus 或 Oracle SQL Developer 連線到要匯入的資料的 Amazon RDS 目標 Oracle 資料庫例項。以 Amazon RDS 主使用者的身份連線。有關連線到資料庫例項的資訊,請參閱 。
-
在匯入資料之前,建立所需的表空間。有關更多資訊,請參閱 。
-
如果要匯入資料的使用者賬戶不存在,請建立使用者賬戶並授予必需的許可權和角色。如果您將資料匯入到多個使用者架構,請建立各個使用者賬戶並向其授予所需的特權和角色。
例如,以下命令建立新的使用者並授予所需許可權和角色,以將資料匯入到使用者架構中
create user schema_1 identified by password;grant create session, resource to schema_1;alter user schema_1 quota 100M on users;
此示例授予新使用者 CREATE SESSION 特權和 RESOURCE 角色。根據您要匯入的資料庫物件,可能需要其他特權和角色。
步驟 2:向使用者授予源資料庫的特權
使用 SQL Plus 或 Oracle SQL Developer 連線到包含要匯入的資料的 Oracle 例項。如有必要,可建立使用者賬戶並授予必要許可權。
注意
如果源資料庫是 Amazon RDS 例項,則可以跳過此步驟。您將使用您的 Amazon RDS 主使用者賬戶來執行匯出。
以下命令建立新使用者並授予必要許可權:
1
2
3
4
5
6
7 |
create
user
export_user identified
by
<
password
>; grant
create
session,
create
table
,
create
database
link
to
export_user; alter
user
export_user quota 100M
on
users; grant
read
, write
on
directory data_pump_dir
to
export_user; grant
select_catalog_role
to
export_user; grant
execute
on
dbms_datapump
to
export_user; grant
execute
on
dbms_file_transfer
to
export_user; |
步驟 3:使用 DBMS_DATAPUMP 建立轉儲檔案
使用 SQL Plus 或 Oracle SQL Developer,以管理使用者或步驟 2 中建立的使用者的身份連線到源 Oracle 例項。如果源資料庫是 Amazon RDS Oracle 資料庫例項,請使用 Amazon RDS 主使用者身份連線。然後,使用 Oracle Data Pump 實用工具建立轉儲檔案。
以下指令碼在 DATA_PUMP_DIR 目錄中建立一個名為 sample.dmp 的轉儲檔案。
1
2
3
4
5
6
7
8
9
10 |
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 =>
'exp.log'
, directory =>
'DATA_PUMP_DIR'
, filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(hdnl,
'SCHEMA_EXPR'
,
'IN ('
'SCHEMA_1'
')'
); DBMS_DATAPUMP.START_JOB(hdnl); END
; / |
步驟 4:建立目標資料庫例項的資料庫連結
在源例項和目標資料庫例項之間建立資料庫連結。請注意,您的本地 Oracle 例項必須具有至資料庫例項的網路連線,然後才能建立資料庫連結以及傳輸匯出轉儲檔案。
執行此步驟,使用與上一步中相同的使用者賬戶連線。
如果您將在同一 VPC 或對等 VPC 中的兩個資料庫例項之間建立資料庫連結,則這兩個資料庫例項之間應具有有效路由。每個資料庫例項的安全組必須允許另一個資料庫例項的傳入和傳出。安全組入站和出站規則可引用同一 VPC 或對等 VPC 中的安全組。有關更多資訊,請參閱 。
以下命令建立名為 to_rds 的資料庫連結,連線到位於目標資料庫例項中的 Amazon RDS 主使用者:
1
2 |
create
database
link to_rds
connect
to
<master_user_account> identified
by
<
password
> using
'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<dns or ip address of remote db>)(PORT=<listener port>))(CONNECT_DATA=(SID=<remote SID>)))'
; |
步驟 5:使用 DBMS_FILE_TRANSFER 將匯出的轉儲檔案複製到目標資料庫例項
使用 DBMS_FILE_TRANSFER 將轉儲檔案從源資料庫例項複製到目標資料庫例項。以下指令碼將名為 sample.dmp 的轉儲檔案從源例項複製到名為 to_rds 的目標資料庫連結 (已在上一步中建立):
1
2
3
4
5
6
7
8
9
10 |
BEGIN DBMS_FILE_TRANSFER.PUT_FILE( source_directory_object =>
'DATA_PUMP_DIR'
, source_file_name =>
'sample.dmp'
, destination_directory_object =>
'DATA_PUMP_DIR'
, destination_file_name =>
'sample_copied.dmp'
, destination_database =>
'to_rds' ); END
; / |
步驟 6:在目標資料庫例項上使用 DBMS_DATAPUMP 匯入資料檔案
在資料庫例項中可使用 Oracle Data Pump 匯入架構。請注意,可能需要額外選項 (例如,METADATA_REMAP)。
使用 Amazon RDS 主使用者賬戶連線到資料庫例項來執行匯入。
1
2
3
4
5
6
7
8
9 |
DECLARE hdnl NUMBER; BEGIN hdnl := DBMS_DATAPUMP.
OPEN
( operation =>
'IMPORT'
, job_mode =>
'SCHEMA'
, job_name=>
null
); DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename =>
'sample_copied.dmp'
, directory =>
'DATA_PUMP_DIR'
, filetype => dbms_datapump.ku$_file_type_dump_file); DBMS_DATAPUMP.METADATA_FILTER(hdnl,
'SCHEMA_EXPR'
,
'IN ('
'SCHEMA_1'
')'
); DBMS_DATAPUMP.START_JOB(hdnl); END
; / |
您可以透過檢視資料庫例項上使用者的表來驗證資料匯入。例如,以下查詢會返回 schema_1 的表的編號:
1 |
select
count
(*)
from
dba_tables
where
owner=
'SCHEMA_1'
; |
步驟 7:清除
匯入資料後,可以刪除不再需要保留的檔案。透過使用以下命令,可列出 DATA_PUMP_DIR 中的檔案:
1 |
select
*
from
table
(RDSADMIN.RDS_FILE_UTIL.LISTDIR(
'DATA_PUMP_DIR'
))
order
by
mtime; |
注意
RDSADMIN.RDS_FILE_UTIL.LISTDIR 不可用於版本 11.2.0.2。
以下命令可用於刪除 DATA_PUMP_DIR 中不再需要的檔案:
1 |
exec
utl_file.fremove(
'DATA_PUMP_DIR'
,
'<file name>'
); |
例如,以下命令可刪除名為“sample_copied.dmp”的檔案:
1 |
exec
utl_file.fremove(
'DATA_PUMP_DIR'
,
'sample_copied.dmp'
); |
About Me
........................................................................................................................ ● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除 ● 本文在個人微 信公眾號( DB寶)上有同步更新 ● QQ群號: 230161599 、618766405,微信群私聊 ● 個人QQ號(646634621),微 訊號(db_bao),註明新增緣由 ● 於 2021年2月完成 ● 最新修改時間:2021年2月 ● 版權所有,歡迎分享本文,轉載請保留出處 ........................................................................................................................ ● 小麥苗的微店: ● 小麥苗出版的資料庫類叢書: http://blog.itpub.net/26736162/viewspace-2142121/ ● 小麥苗OCP、OCM、高可用、MySQL、DBA學習班: http://blog.itpub.net/26736162/viewspace-2148098/ ● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/ ........................................................................................................................ 請掃描下面的二維碼來關注小麥苗的微 信公眾號( DB寶)及QQ群(230161599、618766405)、新增小麥苗微 信(db_bao), 學習最實用的資料庫技術。
........................................................................................................................ |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2757940/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ORACLE 資料遷移Oracle
- ORACLE資料庫遷移Oracle資料庫
- Oracle資料庫資料遷移流程Oracle資料庫
- oracle 資料檔案遷移Oracle
- oracle遷移資料經驗Oracle
- oracle資料檔案遷移Oracle
- Oracle資料遷移參考Oracle
- MySQL 資料遷移Oracle工作MySqlOracle
- Udemy AWS SAA - RDS
- 京東雲開發者|京東雲RDS資料遷移常見場景攻略
- 資料庫-oracle-資料庫遷移資料庫Oracle
- Oracle_遷移資料檔案Oracle
- Oracle 利用RMAN 完成資料遷移Oracle
- oracle 遷移資料庫到asmOracle資料庫ASM
- Oracle資料庫(資料泵)遷移方案(上)Oracle資料庫
- Oracle資料庫(資料泵)遷移方案(下)Oracle資料庫
- 無外網Oracle資料庫遷移Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(上)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(中)Oracle資料庫
- Oracle資料庫(DataGuard)遷移方案(下)Oracle資料庫
- 【DATAPUMP】使用DataPump遷移Oracle資料庫Oracle資料庫
- Oracle資料庫遷移之一:RMANOracle資料庫
- Oracle資料庫遷移方案比較Oracle資料庫
- 遷移資料.
- 【遷移】使用rman遷移資料庫資料庫
- 資料從Oracle向Mysql資料遷移例項OracleMySql
- 遷移資料時oracle字符集的轉換遷移資料時oracle字符集的轉換Oracle
- oracle RAC 更換儲存遷移資料Oracle
- 使用RMAN進行Oracle資料庫遷移Oracle資料庫
- ORACLE資料庫切換和遷移方案Oracle資料庫
- 使用RMAN執行oracle ASM資料遷移OracleASM
- sqlldr 完成mysql到oracle的資料遷移MySqlOracle
- Oracle 表空間資料檔案遷移Oracle
- oracle 資料遷移案例 從 8.1.7.4到9.2.0.8Oracle
- Oracle10g 資料遷移方案(zt)Oracle
- Oracle遷移資料庫過程記錄Oracle資料庫
- 跨平臺遷移oracle資料庫指南Oracle資料庫
- 【資料遷移】使用傳輸表空間遷移資料