2009-07-28 73 views
4

在Oracle SQL Developer中,每個表都有一個「SQL」選項卡。此選項卡包含重新創建表所需的大部分SQL代碼(CREATE TABLECREATE TRIGGER等)。Oracle中的CREATE TABLE逆向工程

可用此信息編程從數據庫系統,或者這是SQL Developer的應用功能?如果前者,我需要運行哪些命令/語句來檢索這些信息?如果以後,有沒有什麼聰明的方法讓SQL Developer導出這些語句?

回答

3

有大量的信息,但這裏主要查詢:

SELECT * 
FROM dba_tables 

SELECT * 
FROM dba_tab_columns 

SELECT * 
FROM dba_ind_columns 

要查看SQL Developer實際輸出,使跟蹤與一個LOGON TRIGGER所有會話,並考慮通過SQL Developer的創建跟蹤文件內部會議。

+0

+1有用的信息,但有一些已經在SQL Developer中在捉弄這一切彙集成所需要的CREATE TABLE語句。我想要訪問那個。 – 2009-07-28 17:12:45

+0

@Alan:有`DBMS_METADATA.get_ddl`,但是'AFAIR`它不輸出觸發器,權限等。不知道'SQL Developer`的行爲究竟如何,但`Allround Automations PL/SQL Developer`不依賴在`DBMS_METADATA.get_ddl`上,它查詢`DBA_ *`視圖並在內部構建`DDL`。 – Quassnoi 2009-07-28 17:28:55

1

您正在尋找您的數據庫對象的DDL

您可以使用Oracle捆綁的DBMS_METADATA軟件包從任何PL/SQL提示符中使用GET_DDL函數獲取它。

0

我使用TOAD與Oracle SQL Developer。

當我查看對象(如表)時,「腳本」選項卡中點擊TOAD執行查詢一大堆,然後編譯所有這些查詢的輸出的「腳本」。

DBA_TABLES DBA_TAB_COLUMNS dba_ind_columns

...

我想複製這個功能將是一個乏味的任務。