您好,登錄后才能下訂單哦!
這篇文章主要介紹如何使用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數據庫”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。