Oracle

如何從 Oracle 導出中提取過程、函式等原始碼

  • September 24, 2016

EXPDAT.DMP使用以下命令生成了一個 Oracle 數據庫文件:

exp userid=usr/pass@db owner=own rows=n compress=n

然後我執行以下命令來生成一個包含“創建表…”語句的文件:

imp userid=usr/pass@db full=y indexfile=output.sql

這對於 Create Table 語句非常有用,但我還想要 Create Procedure / Create Function / Create View 原始碼。我可以在 .DMP 文件中看到它們,但我還沒有找到提取它們的方法。

是否可以從 EXPDAT.DMP 文件中提取此資訊?還是我需要使用其他方法?

目的是使源可導出到可以受源控制的文件。

如果您可以訪問原始數據庫,我會選擇 DBMS_METADATA.GET_DDL。

您可以使用 UTL_FILE 編寫腳本,以便它遍歷每個對象(來自 USER_OBJECTS),使用名稱和類型來提取對象,然後將其寫入具有適當命名約定的文件。

這比嘗試拆分單個文件要乾淨得多。

使用SHOW參數查看 DDL:

imp userid=usr/pass@db full=y show=y log=imp.log

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