2016-09-14 9 views
2

Oracle XE 10gを使用する。Oracleでユーザーがアクセスするテーブルを見つける

アクセスが制限されているデータベースユーザーを使用するアプリケーションがあります。このユーザーがアクセスする必要のある表を試行錯誤で見つけるのは非常に面倒なので、Oracle Data Dictionaryに問合せを行い、表のアクセスに関する情報を検索する方法を探しています。

このユーザーが特定の時点からアクセスしたテーブルのリストを与えるクエリは、書き込みまたは読み取り専用のアクセスであることが好ましいです。

このようにして、無制限のアクセス権を持つユーザーでテストを実行し、使用したテーブルを見つけて、そのユーザーがこれらのテーブルにのみアクセスできるように設定できます。

私はV$SEGMENT_STATISTICSを見ていましたが、オブジェクトにアクセスしたユーザーはログに記録されません。

+0

は多分テーブルのトリガは、指定されたテーブルに一度の文あたりのユーザーのアクセスをログに記録することにより、あなたのためにこれをしますか? –

+0

[データベース監査](http://www.oracle.com/technetwork/database/security/index-085803.html) – mustaccio

+1

db監査は、エンタープライズ版とスタンダード版でのみ利用可能です。 – OldProgrammer

答えて

1

AUDITコマンドでアクセスを追跡できます。これは大量のデータを生成することがありますので注意してください。

すべてのアクセスをキャプチャするために、特定のユーザーからのすべての文の監査を有効にする:それは、次のセッションまで有効になりません

audit all statements by jheller; 

。バックでログインした後、いくつかのテストコマンドを実行します。

create table test1(a number); 
select * from test1; 
insert into test1 values(1); 
delete from test1; 

は今のデータを見つけるために、DBA_AUDIT_TRAILを照会します。監査証跡には多くの迷惑メールが存在するため、結果を絞り込むために多少の努力が必要です。

select owner, obj_name, action_name 
from dba_audit_trail 
where username = 'JHELLER' 
    and owner = 'JHELLER' 
    and timestamp > sysdate - 1 
order by timestamp desc; 

結果:あなたは、データを収集するのに十分な時間を持っている場合

OWNER OBJ_NAME ACTION_NAME 
----- -------- -------- 
JHELLER TEST1  DELETE 
JHELLER TEST1  INSERT 
JHELLER TEST1  SELECT 
JHELLER TEST1  CREATE TABLE 
+0

このコマンドを実行するとエラーが発生します。私のために働くものは 'AUDIT ALL BY username 'です。ただし、 'DBA_AUDIT_TRAIL'は空のままです。データベースを再起動する必要はありますか?または、この機能がXEで有効になっていませんか? – wvdz

+0

コマンドは現在のセッションで有効になりません。あなたはログアウトして戻ってくる必要があります。 –

+0

これはかなり良い答えですので、私はそれをupvotingしていますが、これはEEの機能であると確信できるようになったので、正しいanwerとして受け入れることができません。おそらくファイングレイン監査(https://docs.oracle.com/cd/B28359_01/license.111/b28287/editions.htm)の一部です – wvdz

関連する問題