如何將單個模式從 Oracle EE 導出到 Oracle XE?
我想將 Oracle EE(企業版)中的模式(DDL 或 DDL+數據)導出到 Oracle XE(快捷版)以用於開發目的(在我們的例子中:用作 Java 開發人員的測試數據庫)。
源模式包含一些在 Oracle XE 中不可用的功能,但在開發中都不需要這些功能。可以修改目標模式以與 XE 兼容。
特別是:
- 分區聲明可以省略,
- 省略或簡化儲存聲明(例如,為表保留盡可能少的初始空間),
- 表空間聲明被省略或替換(XE 中使用的單個表空間),
- 具有一些高級功能的物化視圖可以被簡化或替換為簡單視圖,
- 工作可以省略,
- java 函式(很少使用但存在於一個 pl/sql 包中)可以被禁用或導入編譯錯誤。
實現它的一種方法是將源 DDL 導出到 sql 腳本,然後手動修改它。但是我很好奇您是否看到任何其他更有效的方法。
- 甲骨文版本:11g/12c
- 包含 DDL 的 sql 文件大小:7MB
注意:已經存在類似的問題,但在我的情況下,我接受源模式和目標模式之間的一些差異。
沒有這樣一個命令可以執行這種模式遷移,因為正如您所提到的,Oracle Express 版不支持企業版中使用的所有功能。但是,我嘗試收集一些有用的參數,這些參數可用於
expdp/impdp
修改或包含/排除(不)想要的對象和功能。
- 可以省略分區聲明。
在這種情況下,您可以使用
PARTITION_OPTIONS
參數 inimpdp
。
PARTITION_OPTIONS=[NONE | DEPARTITION | MERGE]
.
- 省略或簡化儲存聲明(例如,為表保留盡可能少的初始空間)。
TRANSFORM
參數 inimpdp
使您能夠更改正在導入的對象的對象創建 DDL。
TRANSFORM = transform_name:value[:object_type]
- 表空間聲明被省略或替換(XE 中使用的單個表空間)。
您可以在 Oracle XE 實例上使用
REMAP_TABLESPACE
參數。impdp
REMAP_TABLESPACE=source_tablespace:target_tablespace
- 具有一些高級功能的物化視圖可以被簡化或替換為簡單視圖。
我認為您需要將此類物化視圖的 DDL 導入 SQL 文件,然後手動創建視圖。
- 作業可以省略。
您可以使用
EXCLUDE
參數來排除作業,但目前,數據泵導出/導入可以排除/包含使用DBMS_JOB
.
- java 函式(很少使用但存在於一個 pl/sql 包中)可以被禁用或導入編譯錯誤。
您可以使用
EXCLUDE
忽略此類 java 類。
EXCLUDE=JAVA_CLASS
現在您可以組合這些參數來形成您的
expdp/impdp
命令。**注意:**所有包含的參考連結都與 Oracle 11g 版本相關,請參閱與您的版本相關的 Oracle 文件。