
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
-
PL/SQLで@ファイル名が反応しません
Oracle
-
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
-
4
SQLPLUSで結果を画面に表示しない
Oracle
-
5
SIDとSERVICE_NAMEの違いとは?
Oracle
-
6
importについて
Oracle
-
7
SQL*PLUSにてデータベース名表示
Oracle
-
8
【PL/SQL】FROM区に変数を使う方法
Oracle
-
9
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
-
10
異なるスキーマからデータを抽出するには?oracl、PL/SQL
Oracle
-
11
selectした結果の余計な余白を取るにはどうしたらよいのでしょうか
Oracle
-
12
sql*loader 数値のロード
Oracle
-
13
ODP.NETのバージョン確認
Oracle
-
14
バッチからsqlplusの接続エラーの検知について
その他(プログラミング・Web制作)
-
15
oracle ダンプファイルのサイズとインポート先の表領域の使用サイズ
Oracle
-
16
SQL*Loader Append
Oracle
-
17
datapumpの実行方法について
Oracle
-
18
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
19
コマンドプロンプトで、ポート番号を知る方法
Excel(エクセル)
-
20
SolarisでJDKのインストール情報を確認する方法
その他(OS)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Oracleで流したSQLのログを取得...
-
ストアド・プロシージャをバッ...
-
SQL*Plusで、コマンドの返答を...
-
JavaでのOracle接続について(J...
-
ソート(大文字・小文字を区別...
-
ORA-00984のエラーが出ます
-
PL/SQLでログを確認したい。
-
PL/SQLからディレクトリ作成
-
SQL実行結果の出力を見やすくし...
-
リスナーログを出力しない設定方法
-
【spoolコマンドで追記】
-
ORA-01013のエラーについて経験...
-
CASE文のエラーについて
-
表領域の作成について
-
PL/SQL PLS-00103エラーについて
-
ORA-01843: 指定した月が無効で...
-
4GB = 4096MB ではない?
-
DOSプロンプトとコマンドプロン...
-
シェルスクリプトでオラクルの...
-
はじめまして!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Oracleで流したSQLのログを取得...
-
PL/SQLでログを確認したい。
-
ストアド・プロシージャをバッ...
-
JavaでのOracle接続について(J...
-
SQL*Plusで、コマンドの返答を...
-
ORA-00984のエラーが出ます
-
トレースファイルの削除スクリプト
-
batファイルでのSQL(oracle)...
-
SQL実行結果取得
-
Accessからoracleのストアドプ...
-
サービスの再起動を自動で
-
pl/sqlでのautotraceについて
-
SQL*Plusで以前に実行したコマ...
-
PL/SQLからshellスクリプ...
-
SQLplusからコマンドプロンプト...
-
SQL*PLUSを終了させる方法
-
SQL実行結果の出力を見やすくし...
-
ShellからTruncate【Linux】
-
リスナーログを出力しない設定方法
-
ソート(大文字・小文字を区別...
おすすめ情報