• 締切済み
  • 困ってます

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

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

共感・応援の気持ちを伝えよう!

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

みんなの回答

  • 回答No.3

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

  • 回答No.2

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

  • 回答No.1

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

トリガーのタイミングには「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を使ってログを残せるようにするためこのトリガーを作ろうとしています。 この様な感じになると思っているのですが、(?)の部分をどう書けばいいのか がよくわかりません。どうしても解らないので教えていただければ幸いです。 何卒よろしくお願いします。

  • Oracleのトリガーについて

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

  • 異なる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のロック解除 しかし、これだとデッドロックが発生する可能性があると思うのですが、 どうしたらよいのでしょうか?

  • ファイル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するというのは多いのですが。 何かシンプルな方法はないでしょうか。

  • DB初心者です。

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

  • SQLServerのロック?について

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

  • あるタイミングでoracleの処理が遅くなることについて。

    質問です。 oracleにアクセスするWebシステムで、ある程度負荷をかけると処理が極端に遅くなります。 OS : Miracle Linux2.0 WebServer : Tomcat4.1.24 Oracle : 9.0.1 実際に行っている処理は、DBからデータを取得するだけです。データの量としても多くはなく、100件程度です。 コネクションプールを用いており、データソースからコネクションを取得し、ResultSetから結果を取得しています。 ResultSetからのデータ取得は、下記のようにwhile文でループさせています。ちなみに、next()を実行させているだけで、その他のことは何もしていません。 while( resultset.next()){ } 上記のような処理に対し、ボタンを20回ほど連打すると、処理が極端に遅くなってしまいます。処理の計測は、while文の前と後にcurrentTimeMillis()を設け計測しました。 1アクセスのみの時間は0.2sほどですが、連打をすると20sと遅さになります。 また、while文の最後にSystem.out.print()にて処理の終わりを確認しようと思ったのですが、処理が遅くなった途端、終わりまで到達せずに止まったような感じになり、20sほど経過してから、アクセスした分の処理が一気に終わるのです。 テーブルのロックか、もしくは、パフォーマンスの問題でしょうか?曖昧な説明で申し訳ありませんが、些細なことでもよろしいので、どなたかご教授願いますでしょうか。 よろしくお願いいたします。

  • <VB.NET>INSERT文でDBにデータを入れたい 

    プログラム初心者です。 ボタンを押したらtextboxの値がDBのテーブルに格納されて画面が閉じるという処理をしたいです。 そして他の画面でボタンを押すとINSERT済みのテーブルが出るという 処理をしようと思っています。 今のところは、他の画面でボタンを押してもINSERT済みのテーブルが でないという状態です。元のテーブルのデータはでます。 サンプルを見つけてやってみたのですが、思った結果がでません。 public sub botton1-click dim sql_insert as string dim cmd_insert as oledbcommand dim strconn as string = "provider = ~OLEDB4.0 = ~.mdb" DA = New oledbDataAdapter conn = New oledbconnection(strconn) sql_insert = "INSERT INTO A組(名前) VALUES(TextBox1.Text) cmd_insert = New oledbcommand(sql_insert,conn) DA.insertCommand = cmd_insert Me.colse end sub DataAdapterはdatasetを使わず直接DBに格納させるINSERTの時にでも 使うのでしょうか? 自分自身まだよく分かっていないので、正しいコードと処理の流れを 教えて欲しいです。 使っているのはaccess2000、VB.NET2003です。よろしくお願いします。