
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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Oracle Oracleですがsqlで質問です。 サブクエリ内で番号というカラムで昇順の1レコード目を取得したい 3 2023/05/22 10:02
- その他(ソフトウェア) JavaとOracle Javaって何が違うんですか? 1 2022/05/05 05:46
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- ソフトウェア 移行PCにDockerがインストールされていても各種開発環境のアプリはインストールが必要? 2 2023/05/21 21:53
- 情報処理技術者・Microsoft認定資格 「Oracle Java Gold」 か 「応用情報技術者試験 」だとどちらのほうが転職に役立ちます 2 2022/08/22 08:16
- SQL Server SQL Oracle serverにって質問です。 会社テーブルがあり、そのテーブルから 社員名、給 4 2022/05/21 12:22
- Oracle sql(oracle)で質問です。 テーブルAのカラム名、日付(yyyymmdd)の値を テーブルB 2 2023/01/06 10:31
- Java jdk17.06のインストーラーが起動しない 1 2023/03/27 21:58
- Oracle oracleで 10,20, 30, というデータがあるとして ,区切りでデータが何件あるか調べる関 3 2023/03/14 15:56
このQ&Aを見た人はこんなQ&Aも見ています
-
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
PL/SQLで@ファイル名が反応しません
Oracle
-
PL/SQLでログを確認したい。
Oracle
-
-
4
SQLPLUSで結果を画面に表示しない
Oracle
-
5
SIDとSERVICE_NAMEの違いとは?
Oracle
-
6
異なるスキーマからデータを抽出するには?oracl、PL/SQL
Oracle
-
7
バッチからsqlplusの接続エラーの検知について
その他(プログラミング・Web制作)
-
8
【PL/SQL】FROM区に変数を使う方法
Oracle
-
9
エクセルのデータグループ化の際に貼り付けた図だけ一緒に折りたたんでくれません!
Windows Vista・XP
-
10
SQL*Loader Append
Oracle
-
11
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
12
SQL、2つのテーブルで条件一致したものだけdeleteする方法は?
Oracle
-
13
DBリンク経由の参照について
Oracle
-
14
レコードの更新履歴について
Oracle
-
15
importについて
Oracle
-
16
MAX関数を使ってからLEFT JOINしたいのですが・・
PHP
-
17
マテリアライズドビューとスナップショットの違い
Oracle
-
18
SQL*PLUSにてデータベース名表示
Oracle
-
19
DELETE文でFROM句を省略した場合
その他(データベース)
-
20
表領域 TEMPの使用率。
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Oracleで流したSQLのログを取得...
-
SQL*Plusで、コマンドの返答を...
-
PL/SQLでログを確認したい。
-
Accessからoracleのストアドプ...
-
【spoolコマンドで追記】
-
ストアド・プロシージャをバッ...
-
トレースファイルの削除スクリプト
-
PL/SQLからshellスクリプ...
-
oracle11g listener.logの削除
-
ORA-00984のエラーが出ます
-
execute使用した時の、完了メッ...
-
batファイルでのSQL(oracle)...
-
ソート(大文字・小文字を区別...
-
SQL実行結果の出力を見やすくし...
-
ShellからTruncate【Linux】
-
JavaでのOracle接続について(J...
-
マテリアライズドビューを利用...
-
シェルの実行ができません
-
ORA-01013のエラーについて経験...
-
PCC-S-02201エラーの対処を教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PL/SQLでログを確認したい。
-
Oracleで流したSQLのログを取得...
-
SQL*Plusで、コマンドの返答を...
-
ストアド・プロシージャをバッ...
-
batファイルでのSQL(oracle)...
-
トレースファイルの削除スクリプト
-
サービスの再起動を自動で
-
SQL実行結果の出力を見やすくし...
-
ソート(大文字・小文字を区別...
-
SQL実行結果取得
-
ORA-00984のエラーが出ます
-
Accessからoracleのストアドプ...
-
JavaでのOracle接続について(J...
-
execute使用した時の、完了メッ...
-
マテリアライズドビューログに...
-
リスナーログを出力しない設定方法
-
【spoolコマンドで追記】
-
SQL*PLUSを終了させる方法
-
シェル上でDBコマンドをループ...
-
SQL*Plus:SPOOLコマンドでのSQ...
おすすめ情報