Oracle

Oracle - 提取使用者 DDL 以進行遷移

  • August 29, 2018

我需要將數據從 Oracle 9i 導出和導入到 Oracle 12.2 數據庫。

這個舊應用程序不會以一個特權使用者身份登錄 - 它會為每個使用者登錄。我有數百個使用者,只有同義詞。

我需要預先創建使用者及其權限,以便可以導入。

網際網路上到處都是腳本:

  • Ask Tom 建議導入和索引文件(我發現它很笨拙)。

  • DBMS_METADATA.GET_DDL 腳本也是如此。

但是,由於匆忙,我還沒有找到一個腳本來循環遍歷所有使用者並生成他們的 DDL 和授權等。

我想執行一個 9i 腳本來獲取所有內容,並執行一個 12.2 腳本來創建使用者,但找不到任何有用的東西。

你能建議我應該如何解決這個問題嗎?還是我讓這太複雜了?

我使用 SQL Developer 工具解決了我的問題。

我按照本文中的步驟為數據庫中的任何內容生成 DDL。除了 9i 之外,我還有一個需要遷移的 11g 數據庫,這個過程對於 11g 來說很容易。

但是,對於 9i,我使用了這篇文章中的腳本並在 SQLDeveloper 中執行它來預先創建我的使用者。只需將腳本的輸出保存到文件中,然後在 SQLDeveloper 中輕鬆執行即可。

一個非常簡潔的方法是使用EXCLUDE參數 to expdp,例如:

expdp ... EXCLUDE=SCHEMA:"IN ('OUTLN','SYSTEM','SYSMAN','FLOWS_FILES','APEX_030200','APEX_PUBLIC_USER','ANONYMOUS')"

您需要列出所有系統使用者和實際包含數據的模式。

參考:

https://oracle-base.com/articles/10g/oracle-data-pump-10g#IncludeExclude

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