Oracle
如何使用 expdp 和 impdp 命令傳輸數據?
我是 Oracle 新手,我的目的是將所有數據和元數據從一個模式傳輸到 Oracle 數據庫中的另一個模式。我打算使用數據泵
expdp
和impdp
命令。我對此有疑問:
- 我可以在沒有使用者的情況下創建目標架構,還是應該先創建使用者(這也創建架構)?
- 我可以使用 SYS(作為 sysdba)帳戶執行
expdp
和命令嗎?impdp
這是首選方法嗎?- 此語句是否從模式中獲取所有對象(數據和元數據)並將它們移動到不同的模式中?
expdp \"/ as sysdba\" schemas=<schemaname> directory=dumpdir dumpfile=<schemaname>.dmp logfile=expdp_<schemaname>.log
impdp
那麼目標模式是命令後源模式的精確副本嗎?
impdp
如果使用者還不存在,它將創建使用者,所以你不必擔心它,除非那不是你想要的。不要執行
impdb
orexpdp
assysdba
,僅當 Oracle 支持在特定情況下要求時才這樣做。為此使用普通使用者 - 例如已被授予dba
角色的使用者。(有[IMPORT|EXPORT]_FULL_DATABASE
專門針對此類事物的權限,您還需要授予對 Oracle 目錄對象的訪問權限。)完整的模式導出(元數據和內容)確實看起來像:
expdp user/pass schemas=<schemaname> directory=dumpdir \ dumpfile=<schemaname>.dmp \ logfile=expdp_<schemaname>.log
如果要導入到不同的使用者/模式(目標數據庫可以與源相同),可以使用:
impdp user/pass schemas=schema1 directory=dumpdir \ remap_schema=schema1:schema2 \ dumpfile=schema1.dmp \ logfile=impdp_schema2.log
如果您不想完全導入,您可以在數據和元數據上設置一些過濾器。請參閱導入操作期間的過濾。
實用程序指南包含所有詳細資訊,我強烈建議至少閱讀概述部分。