2013-06-19 98 views
1

我正在使用Oracle數據泵執行模式「重命名」。所有(2000)表都有一個主鍵列。例如,我需要所有表上運行此:Oracle 11g數據泵10列限制

更新mytable的設置的myKey =「foo2的」,其中的myKey =「富」;

我會使用expdp的remap_data選項來執行此操作。問題是有一些列需要在10列以上進行重命名。有沒有人有這樣的問題,並找到了解決這個問題的方法?

以前,我曾嘗試使用「創建表格爲」。問題是不得不重新創建所有表的模式結構(視圖/觸發器/授權/索引/約束)。我知道DBMS_METADATA.GET_DDL包。不擇手段,在數據庫模式之前和之後做差異並重新創建差異似乎很難。

我也想這樣做對錶插入不受任何約束或索引,所以我只需要重新啓用約束和重新創建索引,但我想嘗試更快一些。

我正在使用Oracle 11.2.0.3.0。

+0

我並沒有完全得到... _'update MYTABLE集的myKey =「foo2的」,其中的myKey =「富」,'_ – pahariayogi

回答

0

如果我理解正確的,你真正的問題(或目標)是「重命名」的模式。 您選擇使用Oracle數據泵導出/導入(使用不同的名稱來實現RENAME)。 然後DROP舊模式(如果你覺得多餘)。

如果這是正確的,下面是步驟,你可以做到實現你的目標。我在DEV env上成功完成了它。所有對象(包括PK,FK)都已成功導入。

-- Export RMCORE_QA 
expdp DIRECTORY=DMPDIR DUMPFILE=RMCORE_QA.dmp SCHEMAS='RMCORE_QA' LOG=RMCORE_QA_EXP_DP.lst 

-- Import using RMCORE_QA3 
impdp DIRECTORY=DMPDIR DUMPFILE=RMCORE_QA.dmp REMAP_SCHEMA='RMCORE_QA:RMCORE_QA3' SCHEMAS='RMCORE_QA' LOG=RMCORE_QA_IMP_DP.lst TRANSFORM=OID:N 

您還可以比較的對象的B/W模式逐

SELECT OBJECT_NAME, STATUS, object_type FROM dba_objects WHERE owner LIKE 'RMCORE_QA' 
MINUS 
select OBJECT_NAME, STATUS, object_type from dba_objects where owner like 'RMCORE_QA3'; 

HTH。讓我知道如果我沒有得到你的問題......