expdp 丟失試圖

解答:expdp 丟失試圖的解決方法。

一、expdp 丟失試圖原因

在使用Oracle的expdp命令導出數據時,如果導出的數據中包括試圖(view),但並沒有對試圖進行手動導出,則在導入數據時會出現試圖丟失的情況。expdp並不會主動導出試圖信息。

expdp方案中的view基於原表,因此如果在導出expdp時,定義視圖源表的選項,「include=view」應該必須添加碎片,「include=table」會同時將源表和視圖導出。

二、解決方法一:手動導出試圖

通過添加以下的選項,手動導出試圖信息:

expdp system/xxxx schemas=icnit1,include=view directory=META_DIR dumpfile=icnit1_exp.dmp logfile=icnit1_exp.log

其中,schemas指導出的用戶,directory指導出的目錄,dumpfile為導出文件名,logfile為導出日誌文件名。

這種方法需要手動導出試圖,並在導入時手動導入。

三、解決方法二:使用remap_schema選項

在expdp時,通過remap_schema選項將某個schema映射成新的schema,然後再創建目標schema並將試圖導出,實現試圖信息的導出。具體步驟如下:

  1. 在目標用戶下創建一個和原用戶同名的用戶;
  2. 使用remap_schema選項將原用戶映射到新用戶上;
  3. 使用include=view選項將與映射後的新用戶相關的試圖導出。

示例代碼如下:

expdp system/xxxx  directory=META_DIR dumpfile=icnit1_exp.dmp logfile=icnit1_exp.log remap_schema=icnit1:icnit1_beta include=view

這種方法可將導出的expdp文件中包含試圖信息,但是在導入時需要先手動創建試圖。

四、解決方法三:使用full選項

使用full選項可以導出指定用戶的所有schema、視圖和其他對象。示例代碼如下:

expdp system/xxxx full=y directory=META_DIR dumpfile=icnit1_exp.dmp logfile=icnit1_exp.log

使用此方法會導出所有相關對象,但是會增加導出文件的大小,同時也包含不需要的對象,導入時需要先手動篩選和創建需要的對象。

五、解決方法四:使用dbms_metadata.get_ddl生成建議腳本

可以使用dbms_metadata.get_ddl函數在命令行中生成代碼來生成和重建view,語法如下:

select dbms_metadata.get_ddl(object_type, object_name, owner) from user_objects where object_type='VIEW';

生成的語句可以重新構建view對象。

此方法可以生成完整的視圖定義,並且不需要包含導出文件中的所有對象信息,可減少導出文件的大小。

原創文章,作者:AOKDR,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/373597.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
AOKDR的頭像AOKDR
上一篇 2025-04-27 15:26
下一篇 2025-04-27 15:26

相關推薦

  • 使用expdp導出指定表的詳細步驟

    一、準備工作 1、確認導出的資料庫版本和導入的資料庫版本兼容。 2、確認expdp及impdp工具是否可用。 3、確認導出目錄是否存在。 4、確認導出目錄是否有足夠的許可權。 二、執…

    編程 2025-01-21

發表回復

登錄後才能評論