
ASP+Oracle9iで作られたシステムがあります。
Oracleの設定などは前任者がしており、まともな引継ぎを受けないまま私が維持運用員となりました。
現在DBからあるレコードが消えてしまい(最初から作られてない可能性もあり)、顧客からクレームがついています。
状況から考えて怪しいプログラムを調査したのですが、原因不明でした。
そこで、Oracleの方で今まで流れたSQLをログとして保存していれば手がかりがつかめるのではないかと思い、情報を探しているのですが見つからないので教えて頂きたいのです。
私はOracleの知識(管理面について)が殆どなく、Oracleを使うことはできるが、Oracleの設定がどういう状況になっているか調べることもできず、資料もありません。
1.そもそもOracleにSQLをログとして保存する機能があるのか?
2.あるとすれば、保存機能が有効になっているか、保存したファイルがどこにあるかをどこで確認できるか?
以上の点についてご存知の方、どうぞ回答よろしくお願いします。
No.2ベストアンサー
- 回答日時:
OracleのSQL実行痕跡は以下に示すものの中にあります。
ただし、それぞれの設定レベル、保存方法によって、参照できる範囲は変わります。
1.オンラインREDOログとアーカイブログ
オンラインREDOログはすべてのOracleデータベースに存在します。
ですが、そのREDOログのサイズとシステムのアクセス量によって保存期間は変化します。アーカイブログ設定しておけば、古いREDOログはアーカイブとして吐き出されます。
これらは#1の方がおっしゃったLOGMINERで実行済みSQLを調査することができます。
アーカイブログモードになっているかどうかは、下記で確認できます。
SQL> select log_mode from v$database;
また、どのアーカイブログファイルを調査するかは下記を参照すれば良いと思います。
SQL> select name,to_char(completion_time, 'yyyy/mm/dd hh24:mi') adate from v$archived_log;
2.フラッシュバック問い合わせ
これは初期化パラメータUNDO_MANAGEMENTがAUTOに設定されており、かつUNDO_RETENTIONが保存期間として適切に設定されている場合のみ使用できます。
やっていることは、UNDO表領域(旧RBS用表領域)の中に残っている実行履歴を参照しています。したがって、データベース設計時にフラッシュバック問い合わせを前提としていない限り、使える可能性は低いです。
3.その他
監査を実行していれば、実行SQLを取得できる可能性があります。
ただし、監査レベルなどを理解しておかないと、すべてのSQLが取得されていない可能性がありますので、難しいかもしれません。
ご丁寧にありがとうございます。
調べてみたところ、アーカイブモードで月切りで取っているようでした。
残念ながら不具合発生したのは2月末時点で、その時のログは残っておりませんで、ログからの解析はできませんでしたが、これからのトラブル解決に役立てそうです。
どうもありがとうございました。
No.1
- 回答日時:
オラクルが処理した痕跡というのは、幾つか残りますが..
アーカイブログを残しているのであれば、それを解析するのが
最も確実な方法でしょう。
解析用のLOGMINERという標準ツールも付属しています。
(詳しくはマニュアル参照)
REDOログというのがあるというのを知り、テスト環境のログを開いてみようとテキストエディタに突っ込んでみたところ、テキストエディタでは開けなかったので、専用のツールか何かで見るようになっているんだと思っておりましたが、
LOGMINERという名前まではわかりませんでした。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
PL/SQLでログを確認したい。
Oracle
-
SQLPLUSで結果を画面に表示しない
Oracle
-
PL/SQLで@ファイル名が反応しません
Oracle
-
-
4
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
5
CLOB型へのINSERT
Oracle
-
6
SQL*PLUSにてデータベース名表示
Oracle
-
7
データを削除しても表領域の使用率が減りません
Oracle
-
8
ODP.NETのバージョン確認
Oracle
-
9
importについて
Oracle
-
10
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
-
11
Dirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)
UNIX・Linux
-
12
Data Pump で大量データインポートの際のUNDO表領域、TEMP表領域不足エラー解消法のついて
Oracle
-
13
MAX関数を使ってからLEFT JOINしたいのですが・・
PHP
-
14
文字列として(ダブルコーテーション)を表示させる方法"
Excel(エクセル)
-
15
【PL/SQL】FROM区に変数を使う方法
Oracle
-
16
Oracleでの文字列連結サイズの上限
Oracle
-
17
ORA-01843: 指定した月が無効です。エラー
Oracle
-
18
sqlplusのspoolで空白行出現
Oracle
-
19
不明なコマンドです(FROM")。行の残りは無視されました。 のエラー"
Oracle
-
20
バッチファイルを使用したsql@plusの実行及びログ出力について
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PL/SQLでログを確認したい。
-
SQL*Plusで、コマンドの返答を...
-
execute使用した時の、完了メッ...
-
SQL*PLUSを終了させる方法
-
サービスの再起動を自動で
-
pl/sqlでのautotraceについて
-
oracle11g listener.logの削除
-
ORACLEの停止失敗
-
batファイルでのSQL(oracle)...
-
ORACLEのエクスポートについて
-
ストアド・プロシージャをバッ...
-
ORA-01013のエラーについて経験...
-
富士通のノートパソコンを使っ...
-
CASE文のエラーについて
-
ORA-01843: 指定した月が無効で...
-
Oracleの起動時に、マウントし...
-
【PL/SQL】SQL文が長すぎてSELE...
-
PL/SQL PLS-00103エラーについて
-
パーティション、未割当ての利...
-
4GB = 4096MB ではない?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Oracleで流したSQLのログを取得...
-
PL/SQLでログを確認したい。
-
SQL*Plusで、コマンドの返答を...
-
ストアド・プロシージャをバッ...
-
batファイルでのSQL(oracle)...
-
SQL実行結果取得
-
ORA-00984のエラーが出ます
-
サービスの再起動を自動で
-
トレースファイルの削除スクリプト
-
oracle11g listener.logの削除
-
execute使用した時の、完了メッ...
-
SQL*PLUSを終了させる方法
-
JavaでのOracle接続について(J...
-
マテリアライズドビューログに...
-
SQL実行結果の出力を見やすくし...
-
Accessからoracleのストアドプ...
-
リスナーログを出力しない設定方法
-
ソート(大文字・小文字を区別...
-
アクセスログのとり方を教えて...
-
pl/sqlでのautotraceについて
おすすめ情報