• 締切済み

audit fileの監査ログについて教えてください

Oracleの初期パラメータでaudit_tail=OSにしています。 DBにアクセスしてSQL文を実行した場合の監査ログについてですが、 sysoperでDBにアクセスした時ですが、 select文を実行したときでもログがなかったり、一つだったり、2つだったり、 また二つの場合でもnormal userタイプだったり、sysdbaタイプだったりします。 詳しく例を挙げますと、下記4つのselect文を実行した結果です。 select 1 from dual; 結果:sysdbaタイプの1レコード select * from system.help;(データ取得できました)  結果:sysdbaタイプ1レコードの時もあれば、sysdba,normal2レコードの場合もありました。 select * from scott.bonus;(実在しますが、「ORA-00942: 表またはビューが存在しません。」エラーがでました)  結果:normalタイプ1レコード select * from iplocks.test;(実在しますが、「ORA-00942: 表またはビューが存在しません。」エラーがでました)  結果:レコードなし これにはなんらかのルールがあるようですが、どんなルールがあるか知りたいのです。 このレコードを読み込んで、どのユーザがどんなアクションをしたか監視していますが、 ログがないと困ります。一つのアクションで二つのログが出ても困ります。 どなたか知恵をお借りくださいますよう、よろしくお願いします。

みんなの回答

  • gdcootie
  • ベストアンサー率42% (3/7)
回答No.1

OSおよびOracleの製品バージョン情報を教えてください。

melanie_jp
質問者

お礼

OS:Red Hat Enterprise Linux 3.0 ES Oracle: Oracle 9i よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Access_log0テーブルの閲覧方法

    OS:Solaris8 Oracle8.1.7 「Access_log0」テーブルの閲覧はどういう方法でできるのでしょうか? sqlplusに system/manager@XXXX でログインしてもSELECT文では見れないようなのですが… SELECT * FROM ACCESS_LOG0 * 1行でエラーが発生しました。 ORA-00942:表またはビューが存在しません。 私はOracleをカジった程度の知識です。 必要な情報は捕捉致しますので、 皆様よろしくお願いします。

  • VB.NETでDataTableにデータ追加したい

    VisualStugio.Net2003でソースコードを記述しており、コード内でSQLのSELECT文を実行して、実行結果をDataTableに格納する処理をしています。 今回、とあるテーブルに対し2パターンのSQLを実行し、それぞれの実行結果を1つのDataTableに格納したいのですが、どのようにすれば良いでしょうか? 自分で調べたところ、先に実行したSQL結果に、後から実行したSQL結果を1行ずつ追加するといった方法は見つかりましたが、1行ずつではなく、一括で追加する方法が知りたいです。 前提として、2回のSQL実行では、同じテーブルの同じ項目をSELECTしております。 下記に簡単ですがコード記述の概要を補足しておきます。 ・コード記述概要 【変数宣言】 Dim DB1 As DataTable Dim DB2 As DataTable 【SQL文1】 SELECT A,B,C FROM テーブル1 WHERE 条件文1 DB1 = SQL文1の実行結果 【SQL文2】 SELECT A,B,C FROM テーブル1 WHERE 条件文2 DB2 = SQL文2の実行結果 【DB1にDB2のデータを追加】←ここのやり方を知りたいです DB1 = DB1 + DB2 よろしくお願いいたします。

  • SQL Server 2000 SELECT文実行時のログ

    AccessアプリよりSQL Server 2000にアクセスし、データを参照してます。 その時にSELECT(SQL文)でDBを参照しているのですが、その実行したSQL文を何かのログからなど確認することは可能でしょうか? ログでなくても、コンソールなどとにかく確認できればよいのですが。。

  • SQLの結果が違う

    データベースはDB2です。 UNOINを使用したSELECT文の結果が複数のデータベースで異なります。 あるデータベースからはレコードは戻らず、もう一方のデータベースからは意図した結果が返ります。 SELECT文1 UNION SELECT文2 のようなSQLです。 SELECT文2の方は結果レコード数は0ですが、SELECT文1の方は結果が返ります。 UNIONは、どちらかのSELECT文に結果が存在すれば、結果が返るはずなんですが・・・。 結果が返らないデータベースと結果が返るデータベースのバージョンは違うそうで、 結果が返らないデータベースにはDB2のパッチが当たっていないとか。 DB2のバグなんでしょうか? インターネットで調べたんですが、それらしき問題は見つかりませんでした。

  • シェルスクリプトでオラクルのエラーメッセージを取得するには

    シェルスクリプト上でsqlplusを起動し、さらにSQLの実行結果(エラーメッセージ)を取得するにはどのようにシェルをどのように記述すればよいでしょうか? ---------------------------------------- sqlplus scott/tiger@hoge SQL>select * from dep; * 1行でエラーが発生しました。 ORA-00942: 表またはビューが存在しません。 ---------------------------------------- 上記のようなコマンド実行とエラーメッセージの取得を行いたいのですが、シェルについては超初心者のためよく分かりません。 実行環境は以下の通りですが、ご存知の方教えて頂けないでしょうか。よろしくお願いします。 OS:Red Hat Linux 8.0 DB:Oracle8.1.7

  • ShellからTruncate【Linux】

    現在、ShellでSQL*PLUSを起動し、 テーブルをTruncateしようとしているのですが、 直接コマンドで実行すると可能なんですが、Shellで実行すると接続してすぐに切断されSQLが実行されません。 <Souce> ora_pass=TEST/TEST@DB log_pth=/home/oracle/TEST/04_log/ scrLOG=${log_pth}SHELL.log echo "S" sqlplus $ora_pass <<EOF > $scrLOG truncate table W_BSL_INV; EOF echo "E" ちなみにSelect文はscrLOGに正常に出力されます。

  • Oracle audit trail

    auditのログが出力先されません。 パラメータは次の通りです。 SQL> show parameter audit audit_file_dest string C:\TEMP audit_sys_operations boolean FALSE audit_syslog_level string audit_trail string OS auditを設定しました。 SQL> audit select on TESTUSER.TESTTABLE; 監査が成功しました。 しかし、次のSQLを実行しても、ログが出力されません(C:\TEMPの中を探しましたが見つかりません)。 SELECT * FROM TESTUSER.TESTTABLE;

  • SPOOLのログについて

    sysユーザで入るスクリプトを作成しているのですが、そこで、ログ出力の設定をしようと考えています。 spool ログファイル名 だけだと、ログファイルは上書きされてしまうようですが、追加書きにできないでしょうか? スクリプトの頭の部分は以下のようになっています。 -------------------- setenv DAY `date '+%Y%m'` setenv LOGFILE /tmp/test_${DAY}.log sqlplus -s /nolog << EOF connect /as sysdba spool $LOGFILE --------------------- なお、毎日cronで実行し、結果を月ごとにまとめたいと考えています。 何か、いい方法があれば教えてください。

  • UNION ALLでつなげた複数ビューの集計

    お世話になっています。 現在下記のようなSQLを組んでいます。 ビュー1の集計結果 UNION ALL ビュー2の集計結果 UNION ALL ビュー3の集計結果 実行結果 例 年月     人数  金額 201104   3    20000 201105   2    10000 201104   1    5000 GROUP BY句で年月を集計したビューをUNION ALLでつないでいるため、 当然のように同じ年月が何度も出てくるため、テストがしづらくなっています。 やりたいこととしては、さっきの実行結果をさらに年月で集計することを 考えています。 年月     人数  金額 201104   4    25000 201105   2    10000 対策として、下記のように集計したビューをUNION ALLでつないだ結果を さらに集計するSQLを作りました。 SELECT  FROM( ビュー1の集計結果 UNION ALL ビュー2の集計結果 UNION ALL ビュー3の集計結果 ) GROUP BY その結果、下記のエラーが発生しました。 ORA-00935:グループ関数のネスト・レベルが深すぎます。 環境はoracle11gです。 あとは、SQLのFROM句の()の部分をビューとして作成し、 更にそのビューを呼び出して集計するくらいしか思いつかないです。 今回作ろうとしてるのはテスト用のSQLのため、SQL文と実行結果を残したいので、 できればビューやプロシージャーは作らずに、SQLのみで作成したいと考えています。 何か良い方法はありますでしょうか? 宜しくお願い致します。

  • SQLファイル内のSQL実行ログ取得

    すいません、教えてください。 以下のようなCMDバッチを作成しました。 TEST.cmd------------ sqlplus -s ID/PASS@DB @MAIN.sql 'SUB1.sql' 'SUB2.sql' > MAIN.log echo %ERRORLEVEL% MAIN.sql------------ @&1 @&2 commit; quit; これを実行した場合、MAIN.sqlの最後のコマンドquit;の 実行結果を返してきているのでしょうか? SUB1.sql、SUB2.sqlで失敗していても%ERRORLEVEL%で0が返ってきます。 MAIN内のそれぞれのsqlの実行結果ログを取得することは可能でしょうか? SUB.sqlの内容はいずれも単純なMERGE文です。 識者の方がいればご教示いただきたく存じます。 よろしくお願いいたします。