Oracle

如何將單個模式從 Oracle EE 導出到 Oracle XE?

  • March 4, 2017

我想將 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參數 in impdp

PARTITION_OPTIONS=[NONE | DEPARTITION | MERGE].

PARTITION_OPTIONS

  • 省略或簡化儲存聲明(例如,為表保留盡可能少的初始空間)。

TRANSFORM參數 inimpdp使您能夠更改正在導入的對象的對象創建 DDL。

TRANSFORM = transform_name:value[:object_type]

TRNASFORM

  • 表空間聲明被省略或替換(XE 中使用的單個表空間)。

您可以在 Oracle XE 實例上使用REMAP_TABLESPACE參數。impdp

REMAP_TABLESPACE=source_tablespace:target_tablespace

REMAP_TABLESPACE

  • 具有一些高級功能的物化視圖可以被簡化或替換為簡單視圖。

我認為您需要將此類物化視圖的 DDL 導入 SQL 文件,然後手動創建視圖。

  • 作業可以省略。

您可以使用EXCLUDE參數來排除作業,但目前,數據泵導出/導入可以排除/包含使用DBMS_JOB.

參考

  • java 函式(很少使用但存在於一個 pl/sql 包中)可以被禁用或導入編譯錯誤。

您可以使用EXCLUDE忽略此類 java 類。

EXCLUDE=JAVA_CLASS

現在您可以組合這些參數來形成您的expdp/impdp命令。

**注意:**所有包含的參考連結都與 Oracle 11g 版本相關,請參閱與您的版本相關的 Oracle 文件。

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