2017-07-26 133 views
1

我的環境擁有超過4000個表格。我只想導出2000個表格。 我嘗試使用包含子句的par文件。但是出口失敗。 詳情在下面提到使用expdp導出大量表格

工具:EXPDP | Oracle數據庫版本:11g R2 |要導出表的數量:使用2000

代碼:

directory=pump 
dumpfile=EXP_FULL_GOLD.dmp 
logfile=EXP_FULL_GOLD.log 
COMPRESSION=ALL 
schemas=GOLD 
include=TABLE:"IN('T1','T2','T3','T4'..'T2000') 

錯誤: 隨着分區,OLAP,數據挖掘和實時應用測試選項 ORA-39001:無效的參數值 ORA-39071 :INCLUDE的價值形成嚴重。 ORA-00920:無效的關係運算符

即使我嘗試下面的代碼:

directory=pump 
dumpfile=EXP_FULL_GOLD.dmp 
logfile=EXP_FULL_GOLD.log 
COMPRESSION=ALL 
schemas=Gold 
content=DATA_ONLY 
INCLUDE=TABLE:\"IN \(SELECT tname FROM Gold.t11\)\" 

這裏T11包含存儲在列TNAME(2000年記錄)表的清單。

但同樣的錯誤發生。 請幫忙,因爲我在網上搜索了很多,但我無法找到任何解決方案。 即使包含子句允許的表的數量限制也不可用。嘗試使用900個表,但失敗的同樣的錯誤。

問候,

Sujit

回答

0

documentation介紹,該INCLUDE參數的name_clause

is a SQL expression used as a filter on the object names...

這意味着通過使用IN列表你用1000 elements一般極限的限制在列表中。

甚至最差this link表明的長度有4000個字符的限制。如果超過它,你得到UDE-00014 invalid value for parameter INCLUDE

但解決方法容易

1)使用參數文件(如上面的鏈接提示) - 見參數PARFILE - 以aviod可能逃避問題

2)把以下參數

INCLUDE=TABLE:"IN (select table_name from TAB_LIST)" 
0

在一個輔助表和使用(無引號)表名稱找到了解決辦法:

SCHEMAS=GOLD 
DIRECTORY=DEBUG 
COMPRESSION=ALL 
CONTENT=DATA_ONLY 
DUMPFILE=EXP_GOLD_26Jul2017.dmp 
LOGFILE=EXP_GOLD_26Jul2017.log 
INCLUDE=TABLE:"IN(SELECT TNAME FROM GOLD.T11)" 

謝謝。

0

您可以只導入您使用parfile中包含您想使用的表模式導入表的列表,從一個完整的出口所需的表: -

directory=pump 
dumpfile=EXP_FULL_GOLD.dmp 
logfile=EXP_FULL_GOLD.log 
transform=storage:n 
exclude=statistics 
tables=(
gold.t1, 
gold.t2, 
gold.t3, 
gold.t4, 
gold.t2000) 

(添加所有的表,你需要)。

如果黃金模式目前不存在,您需要預先創建黃金模式。如果您希望使用exclude = table來跳過所有表,則可以使用模式模式導入。