共計 1707 個字符,預計需要花費 5 分鐘才能閱讀完成。
這篇文章主要介紹如何使用 DataPump 遷移 Oracle 數據庫,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
之前測試過使用 RMAN 遷移 Oracle 數據庫(Oracle11.2.0.1-Oracle11.2.0.4,Windows to Linux)下面簡單說下使用數據泵的方式如何遷移。
相對來說,確實比較簡單,導出導入,但也可以分為兩種方式,一個是按照業務用戶來做導出,再個全庫導出,不只是多了一個 full=y,其他也有一些不同的,好,我們來看看
環境介紹,源端 Windows2008 x64+Oracle11.2.0.1
目標端:Redhat6.7 x64+Oracle11.2.0.4
首先環境準備,也就是目標端環境準備,Linux 下 Oracle 數據庫安裝及打最新補丁,此處忽略。
不管是全庫導出導入還是按照業務用戶方式,都需要提前創建表空間,尤其數據量比較大的,都需要提前創建好,這樣也節約時間。那么我們如何獲取源庫創建表空間的 ddl 呢?
如下語句會列出所有表空間的創建語句,請注意系統相關表空間大小,例如 SYSTEM、USERS,有可能表空間比較大,會有多個數據文件。
set long 1000000
set pages 9999
select dbms_metadata.get_ddl(TABLESPACE ,tablespace_name) from dba_tablespaces;
查詢某一個表空間的 DDL 語句
select dbms_metadata.get_ddl(TABLESPACE , MYDB) from dual;
源端可以執行全庫導出操作了,首先我們需要創建 directory
create directory exp as d:\datapump – 導出使用 sys 用戶,無需賦權
expdp / as sysdba directory=my_exp dumpfile=myexpdb%U.dmp logfile=myexpdb.log parallel=2 EXCLUDE=STATISTICS parfile=mypar.par
#mypar.par m 注意可以排除系統用戶及非 OPEN 用戶 全庫導出無需創建用戶
FULL=Y
EXCLUDE=SCHEMA: in (select username from dba_users where account_status OPEN or username in( SYS , SYSTEM))
下面就簡單了,目標端就可以導入
注意:全庫導出,導入時會導入 role、DIRECTORY、TABLESPACE、CONTEXT 等,我們可以選擇排除
impdp \ / as sysdba\ directory=exp dumpfile=myexpdb%U.dmp logfile=myimpdb01.log parallel=2 exclude=DIRECTORY exclude=role exclude=CONTEXT exclude=TABLESPACE
導入完成,收集統計信息
exec dbms_stats.GATHER_DATABASE_STATS(estimate_percent= null);
那么如果只導出業務用戶呢,我們需要創建用戶,并且賦予相關權限
通過以下語句生成創建用戶的語句 (Oracle11g)
通過以下語句生成賦權限語句
導出語句類似如下:
expdp / as sysdba directory=my_exp dumpfile=myexpdb%U.dmp logfile=myexpdb.log parallel=2 EXCLUDE=STATISTICS schema=mydb,test
導入語句:
impdp \ / as sysdba\ directory=exp dumpfile=myexpdb%U.dmp logfile=myimpdb01.log parallel=2
收集數據庫統計信息
當然,這需要停機時間,如果對于停機時間要求特別嚴格,建議使用 OGG 相關同步軟件,rman 增量備份也是可以一試的。
以上是“如何使用 DataPump 遷移 Oracle 數據庫”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!