2012-03-28 77 views
0

我是oracle/sql世界中的新成員,並且我知道如何通過自己的搜索找到答案,然後再次搜索..但是對於我的新問題我想找到一個很好的答案,所以我只想通過過濾創建最後一個表的用戶來查找操作數據庫的歷史記錄,當他創建了哪些表時,他創建了這些表。使用oracle XE和客戶端是蟾蜍。搜索由用戶創建的所有錶的歷史記錄

我嘗試它

select table_name from sys.dba_tables where owner='system' 

但不顯示我正在與系統用戶創建了一個幾個月前的桌子,和現在我忘了我是創造了什麼表。

回答

2

字符串匹配區分大小寫,並且數據字典中的大部分內容都按照一般規則以全部大寫形式存儲。

select table_name from sys.dba_tables where owner='SYSTEM' 

如果你想看到最近創建的表,您需要與dba_objects加入這個並使用created柱那裏:所以,如果你改變文字爲大寫的例子查詢應該返回一些行過濾或排序。

當然,如果您真的只想查看當前登錄的模式的表格,user_tables是更好的查詢視圖。

根據您的評論,這裏是如何獲得的最後修改時間爲每個表:

select table_name, last_ddl_time 
    from dba_tables t 
     join dba_objects o 
     on o.object_name=t.table_name and o.object_type='TABLE' and o.owner = t.owner 
    where t.owner='SYSTEM' 
    and last_ddl_time >= date '2011-01-02' 
    and last_ddl_time < date '2011-01-10' 

(請注意,「修改」是指改變表定義,而不是它包含的數據)

+0

偉大的第一個查詢。,我把系統放在上面的c ase'系統',現在我看到過去一年創建的所有表..但仍懸而未決如何在這些表中搜索明確的日期..讓說01/02/2011 – 2012-03-28 13:18:30

+0

我的意思是我想知道表被創建或由'SYSTEM'用戶修改01/02/2011到01/09/2011的表user – 2012-03-28 13:41:38

+0

已更新的答案顯示如何獲取表修改日期 – 2012-03-28 15:59:19

0

請嘗試以下之一:

select * from tab; 

select * from user_tables; 

雙方將給出由用戶創建的表的列表(你)。

+0

不好你的答案,因爲是顯式表通用oracle xe列table_name和另一列table_type如果是視圖,序列,表..所以我希望看到創建它的表用戶系統在幾個月前,如果我們可以選擇和創建表的日期,那很好 – 2012-03-28 13:13:54