Oracle

如何使用 expdp 和 impdp 命令傳輸數據?

  • August 18, 2021

我是 Oracle 新手,我的目的是將所有數據和元數據從一個模式傳輸到 Oracle 數據庫中的另一個模式。我打算使用數據泵expdpimpdp命令。我對此有疑問:

  • 我可以在沒有使用者的情況下創建目標架構,還是應該先創建使用者(這也創建架構)?
  • 我可以使用 SYS(作為 sysdba)帳戶執行expdp和命令嗎?impdp這是首選方法嗎?
  • 此語句是否從模式中獲取所有對象(數據和元數據)並將它們移動到不同的模式中?
expdp \"/ as sysdba\" schemas=<schemaname> directory=dumpdir dumpfile=<schemaname>.dmp logfile=expdp_<schemaname>.log  

impdp那麼目標模式是命令後源模式的精確副本嗎?

impdp如果使用者還不存在,它將創建使用者,所以你不必擔心它,除非那不是你想要的。

不要執行impdbor expdpas sysdba,僅當 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

如果您不想完全導入,您可以在數據和元數據上設置一些過濾器。請參閱導入操作期間的過濾

實用程序指南包含所有詳細資訊,我強烈建議至少閱讀概述部分。

引用自:https://dba.stackexchange.com/questions/30516