2012-03-28 12 views
0

私はoracle/sql worldで新しくなりました。自分で検索し、再度検索する方法を知っていますが、新しい問題私はちょうど良い答えを見つけるので、私はちょうど彼がそれを作成したときなど、最後のテーブルを作成したユーザーをフィルタリングすることによってデータベースの操作の履歴を検索したいと思います。 oracle XEを使用し、クライアントはヒキガエルです。ユーザーが作成したすべての表の履歴を検索

iは

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

でそれを試してみたが、私は数ヶ月前。システムユーザを使用して作成された表が表示されていない、そして今、私が作成したものを表に忘れます。どちらも、ユーザー(あなた)が作成したテーブルのリストを与える

select * from tab; 

または

select * from user_tables; 

答えて

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

素晴らしい最初のクエリです。 ase 'SYSTEM'と今私は過去の年によって作成されたすべてのテーブルを参照してください..しかし、明示的な日付のためにこれらのテーブルを検索する方法をまだ保留中です.. 01/02/2011と言うように –

+0

私はテーブルを知りたい2011年1月2日から2011年1月9日までの間に 'SYSTEM'ユーザによって変更されたテーブル –

+0

テーブルの変更日を取得する方法を示す回答が更新されました –

0

は、次のいずれかを試してみてください。

+0

これはあなたの答えではありません。なぜなら、oracle xeがcolumn table_nameとview、sequence、tableの場合は別のcolumn table_typeに汎用的なテーブルがたくさんあるからです。私たちが数ヶ月前にユーザシステムを選択し、そのテーブルが作成された日付とそれが作成された場合、それは素晴らしい –

関連する問題