- PR -

ORACLE 更新したテーブルを調べたいのですが・・・

投稿者投稿内容
ありゃりゃ
会議室デビュー日: 2007/06/13
投稿数: 4
投稿日時: 2007-06-13 00:17
お世話になります。
お手上げ状態になり、お力をお借りしたいと思い投稿しました。

システム開発の仕事をしているのですが、既存システムの設計書がなく、
例えば、登録ボタンを押したタイミングでどのテーブルを更新しているのかが
わからないため困っています。
テーブルに更新日付などのフィールドもなく、また、使用していないテーブルも
たくさんあるため、ひとつずつ虱潰しに当たることはかなりやりたくない作業で・・・。

SQLでテーブルのデータ更新時間を降順に並べればよいのかと思ったのですが、
それは可能なのでしょうか。

何か他にもよい方法があれば教えて下さい。

開発環境はORACLE10gです。

よろしくお願いします。
せん
ぬし
会議室デビュー日: 2002/03/04
投稿数: 397
投稿日時: 2007-06-13 01:01
プログラムから追った方が早くないですか?


SQLトレース機能を有効にすれば、実行された SQLを調べる事はできるとおもいます。
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2007-06-13 15:38
Oracle 10g だとデフォルトで表のモニタリングが有効になっているので、
それを元に調査できないですか?

「モニタリング」をキーワードにして検索すると何か分かるかもしれません。
ありゃりゃ
会議室デビュー日: 2007/06/13
投稿数: 4
投稿日時: 2007-06-13 22:42
せん様、あんとれ様、アドバイスありがとうございます。

プログラムから追うことも考えたのですが、
数が多いことと、アウトプットの検証もしたいと思っているので、
この方法はできれば避けたいと思っています。

モニタリングとトレース機能について調べてみます。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-06-14 02:12
テーブルにトリガー張るっていうのはどうでしょう?

FOOというテーブル対するFOO_Tというテーブルを作成、
FOOの更新、追加、削除に対するトリガーを作成して、
FOO_Tに対して同じ処理を行うようにするって感じで。

パッと今思いついただけですが、いかがでしょうか。
ありゃりゃ
会議室デビュー日: 2007/06/13
投稿数: 4
投稿日時: 2007-06-14 20:51
かつのり様、アドバイスありがとうございます。

更新内容を知るにはトリガが有効ですね。
でもまだその段階まで至っていないのです・・・。
まずはどのテーブルが更新されたかということを知りたいという段階で・・・。

今考えているのは、ひとつテーブルを作って、
各テーブルの登録・更新・削除時に、テーブル名と更新日付時間を書き込む
トリガを作るという方法です。

ただ、テーブル数が多いので、もっと楽にできる方法がないかと模索中です。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-06-14 23:39
システムテーブルからテーブル名一覧を取得して、
簡単なスクリプトでDDLを生成してみてはいかがでしょう。
ラフィン
ぬし
会議室デビュー日: 2002/05/23
投稿数: 809
お住まい・勤務地: 外野
投稿日時: 2007-06-15 08:13
 テスト環境ならいいですが、他社が構築した現役の本番環境にはトリガー作成とかで手を加えない方がいいですよ。

 トレースONにしてすべての機能を順に実行していくのがいいんじゃないかなあ?

スキルアップ/キャリアアップ(JOB@IT)