• 締切済み

オラクルDBのデータ削除タイミング

お世話になります。 .NETとオラクルで作られた小さいシステムを引き継ぎました。 その中にメインになるDBがあり3ヶ月以前のデータは .NETの夜間削除処理APでDELETEしています。 そのメインDBにトリガーテーブルがあるのですが、1日分の データしか保存されていません。 しかし、どこで消えているのかが見つけられないでいます。 .NETの全APを検索してもないし、オラクルの機能であるような気が しているのですが、よくわかりません。 トリガーの条件は「INSERT」と「UPDATE」です。 どなたかヒントを下さい

  • Oracle
  • 回答数3
  • ありがとう数2

みんなの回答

回答No.3

>>.NETの夜間削除処理APでDELETEしています。 これが正しければ、これ以外に探すところがありません・・・。 ほかの可能性を模索しなければいけないのですよね? DELETE処理のPROCESSを捕まえてみては?

akaoni_nai
質問者

お礼

また、作業がてすきになったのでDELETE処理を探しました ^_^; そして!ついに発見しました! オラクルのジョブキューにその定義がありました。 そんな定義があるとは全く知らず (オラクルの機能を把握してないのもありますが・・・) どこかにタイマーセットしてる感じはしていたのですが 探しあぐねていました。 すっかりごぶさたしてしまいました。 いつ、お礼をしようとずっと気がかりでした。 ご協力、ありがとうございました!!

回答No.2

ですか・・・。 なら、バッチとか・・・? Windows自身のタスクは確認済みですよね?

akaoni_nai
質問者

補足

<.NETの夜間削除処理APでDELETEしています タスクスケジュールに設定されているAPがこれです。 このAPの中ではその肝心のトリガーテーブルの記述は一切、ありません。 また、そのAPの中でバッチ起動しているのを発見し「これだ!」と思ったのですが 中をみたら全部コメントアウトしてあり、さらにコメントをはずしても 全く動きそうもない内容でした。 また、間があいてしまい申し訳ありません。 まだ、探しています

回答No.1

見てないのでわかりませんが・・・、 トリガーじゃないですか?

akaoni_nai
質問者

補足

トリガーのタイミングには「DELETE」が入っていないのです。 遅くなりましたが未だに解答が見つけられないでいます・・・

関連するQ&A

  • ORACLEのトリガーについて勉強しているのですが現在詰っています。

    ORACLEのトリガーについて勉強しているのですが現在詰っています。 トリガーの内容ですが、table1のレコードがUPDATEかINSERTかDELETEが 実行された時にtable2にそのレコードすべてをINSERTしたいのですが CREATE OR REPLACE TRIGGER test_trg After INSERT or UPDATE or DELETE on table1 for each row  BEGIN   if inserting then    insert into (?);   elsif updating then    insert into (?);   else    insert into (?);   end if;  END; tableを使ってログを残せるようにするためこのトリガーを作ろうとしています。 この様な感じになると思っているのですが、(?)の部分をどう書けばいいのか がよくわかりません。どうしても解らないので教えていただければ幸いです。 何卒よろしくお願いします。

  • DB初心者です。

    DB初心者です。 現在、システムのDBで「TERADATA」を使用しています。 データ整理という名目で、不要なテーブルやデータを削除したりしたいと思っています。 (システム稼働中で行う作業) 中には数百GB級の不要テーブルもあり、システムが稼働中の中、 気軽にDROPまたはDELETEをしていいものなのか迷っています。 (しかし、この不要テーブルはどこからも参照されません) 別なところでは、 巨大な不要テーブルを削除したら、 統計情報が変わってしまい、ローディングなどが異様に遅くなったとの話も聞いています。 システムとは関係なく、DB内での影響はあるのでしょうか?

  • Oracleのトリガーについて

    Oracleのトリガーについて質問です。 旧システムから新システムへデータ移行を行おうとしているのですが、 新システムではNEWテーブル(仮名)が新規で追加されています。 データ移行の方法として、旧システムのダンプファイルをエクスポートし、 新ステムにユーザを再作成後インポートしました。 その後、あらかじめ新システムでNEWテーブルのみテーブル指定のエク スポートを行っていたダンプファイルより、追加でインポートを行いました。 これでデータ移行完了と思っていたのですが、NEWテーブルのデータはトリガー により生成されるらしいのですが、どのタイミングで生成されるのでしょうか? データ移行完了時はデータ0件です。 NEWテーブルをインポートする順番が逆なのでしょうか? それともインポートではトリガーは起動しないのでしょうか? または、トリガーの仕組みが消えている(?)のでしょうか? (納入先に行かないと確認できない状態なので実際のデータベースが確認できません…) Oracleはあまり詳しくないため、わかりづらい質問かもしれませんが よろしくおねがいします。 【環境】 Oracle11g R2 Windows2008Server

  • DBの削除にあたって

    現在オラクルの9iを使用しています。 .sqlを使用して削除しようと思うのですが オラクルの9iのシステムが使用しているテーブルは そのままにしておき削除したくありません。 そこでオラクルの9iが使っているテーブル(スキーマ?)の名前を知りたいのですが?

  • 異なるDBに存在するテーブル間のミラーリング

    PHP5とMySQL5でショッピングサイトを作成しています。 サイトSとS'があり、それぞれがデータベースDBとDB'を使用しています。そして、DBとDB'にはそれぞれ顧客テーブルTとT'があります。 この状況で、Tに対して更新処理をしたときに、T'に対しても同じ更新処理を しなければなりません。逆の場合も同じです。つまり、TとT'の間でミラーリングのようなことを行いたいのです。 updateとdeleteの場合は、次のような処理の流れで問題が内容に思われます。 サイトS中のスレッドの場合 step1. DBに接続 step2. Tに対してupdate/deleteする step3. step2でupdate/deleteされた列の主キーを取得 step4. DB'に接続 step5. T'に対してstep3で取得した主キーを用いてupdate/deleteする しかし、insertの場合の処理の流れが思いつきません。一応次のような流れが思いついたのですが・・・ サイトS中のスレッドの場合 step1. DBに接続 step2. Tをロック step3. DB'に接続 step4. T'をロック step5. Tに対してinsert step6. T'に対してinsert step7. T'のロック解除 step8. Tのロック解除 しかし、これだとデッドロックが発生する可能性があると思うのですが、 どうしたらよいのでしょうか?

  • データ削除の方法

    オラクルのデータベース容量を減らす為に、SQL PLUSにてDELETE文を実行(テーブル別に)しました (テーブルの中身、全件削除ではなく条件に一致した不要なデータのみ削除) 条件に該当するデータは消えましたが、オラクルデータベース自体の容量が逆に増えていました 正しいデータの削除方法を教えて頂きたいのですが。宜しくお願いいたします データベース:ORACLE 9I DATABASE

  • ファイルDB連携で質問です。

    テーブルと同じレイアウトのテキストファイルを読込んで - 同一キーが存在し、データも同一なら何もしない - 同一キーが存在し、データが変更ならUPDATE文を作成 - 同一キーが存在しなければINSERT文を作成 しファイル出力したいのですが、 どんな手法がベストでしょうか? 私の考えつく方法はどうもDBを活かしきれていない気がします。DBはMySQL4でUNIONも使えるのですが、オラクルブロンズレベルでは思いつかず参っています。 ■テーブル(ファイルレイアウト)key1,key2は複合キー key1 key2 data1   1  0   5   2  3   6 ■処理の流れ ファイルがありテーブルが存在しなければ ファイル読込でテーブルへそのままインポート ↓ ファイルがありテーブルが存在したら、 既存テーブルをリネーム後に、 ファイル読込でテーブルへそのままインポート ↓ インポートしたテーブルを全件SELECTし、 リネームしたテーブルへ1件ずつSELECTマッチ処理を行った結果によりファイルへINSERTやSELECT文を出力していく。 ファイルの行数が多いと相当重い処理になりそうで。。

  • ORACLE DBへ初期化していない領域のレコードを

    ORACLE DBへ初期化していない領域のレコードを INSERTで追加した場合、どのような値のデータ(文字コード)が 格納されるのでしょうか?

  • ORACLEでのSQL、シンプルな方法は?

    ORACLEでのSQL文について質問です。 SQLで条件に合うレコードがあるかどうかはどう判別するのでしょうか? 画面で2つの条件を選んで テーブル ・ステータス ・フラグ 条件に合うレコードがなければINSERT 条件に合うレコードがあればUPDATE レコードが元々あるが、画面で指定された条件から外れる場合はDELETE としたいのですが、うまくSQLが書けません。 レコードがあればupdate、なければinsertするというのは多いのですが。 何かシンプルな方法はないでしょうか。

  • SQLServerのロック?について

    お世話になっております。 早速ですが、質問させていただきます。 ASP+SQLServer2000で社内システムの作成などを行っております。 ASP上から社員がデータを打ち込んでいるシステムがあるのですが、同時にSELECT、UPDATE、INSERT、DELETEを一つのテーブルで行っております。 その際、SELECTとUPDATE、INSERT、DELETEの処理がかぶると画面が固まったように処理が長くなります。 自分でわかる限りの原因としては検索レコードは10万件くらいからやっているのですが、SELECTで検索中にINSER、UPDATE、DELETE処理がくるとウエイト状態になり、異常に時間がかかってしまい、タイムアウトしてしまっています。 INSERTやUPDATEが処理かぶっても特に処理はとまらないのですが、先にSELECT処理していてINSERTやUPDATE処理がくるとまったく動かなくなってしまうのです。 こちらの原因とか少しでもわかる方いらっしゃれば、お知恵をお貸しください。