• 締切済み

仕事のミス:本番データの削除→ロールバック

Myuu4の回答

  • Myuu4
  • ベストアンサー率34% (36/103)
回答No.2

まずは技術的な面を。 ORACLEは、通常COMMIT(かROLLBACK)するまで、他セッションからは更新前のデータしか参照できません。 ※そのテーブルに関するバッチプログラムも動いていません に関して。 が、それはあくまで通常の話です。 ObjectBrowserは便利なツールです。下の画面に表示されているデータを修正した場合、カーソルを他行へ移すと、確か自動的にCOMMITがかかったと思います。 新米SEであれば、ObjectBrowserでデータを更新するような作業はやめておいた方が良いと思います。 基本は、SQL*PlusでSQL実行です。

tomasefing
質問者

お礼

御回答ありがとうございます。 僕のような不注意でスキルの低い奴が、 OBで本番データをさわることじたいほんとどうかと思うんですが、 どうすれば人為ミスを回避できるのか、もししてしまった場合は・・? ということから逃げてはいけないですよね。 SQL*Plusについて、もちろん知ってはいるのですが それを使って作業することはあまりありません。 ミス回避につながるということなので、これから勉強しようと思います。

関連するQ&A

  • データ削除、追加によるロールバックセグメントについて

    環境:Oracle9i サーバ:Win2003 言語:VB6 テスト環境であるテーブルの200万件の削除、100万件の追加を行った後にVBアプリがすごく遅くなりました。 1.ロールバックセグメント(UNDOセグメント?)にデータがたまって遅くなったのでしょうか?  またはテンポラリにデータがたまったのでしょうか? 2.削除や追加が行われた場合はどのオブジェクトにデータがたまったりするのでしょうか? 対応としてDBサーバのOSの再起動を行ったのですがまだ遅く、再起動後にDBの再起動を行ったらなぜか遅かったのが改善されました。 そもそも原因がデータの削除、追加で体感レベルで遅くなったりするのかも疑問です。 基礎知識が足りなくて申し訳ありませんが、アドバイスお願いいたします。

  • データ削除の方法

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

  • SQLクエリ1年前のデータを削除できない

    現在このクエリを作成したのですがデータが削除されなくて、データ全件が抽出されてしまいます。 以下の構文で試したのですが・・・・もし、ご指摘、アドバイス等ございましたらよろしくお願いします。 select * from テーブル名 delete from テーブル名 where 日付 < = (select DATEADD(year,(-1),(日付))) ちなみに、日付はDATETIMEです   バージョン:SQL management studio 10.50.25.000

  • データ削除とSQL*Loaderでのインポート

    SQL*Loaderを使ってデータをインポートするのですが、既存データが存在するテーブルにインポートするため、実行前に、条件に一致する一部のデータを削除します。 ですが、SQL*Loaderでインポートが失敗した際には、元に戻したいと思っています。 そういう場合に、SQL*PlusからDELETEのSQL文を実行してから、SQL*Loaderを起動してインポートするとなると、SQL*Plusから抜けた時点でCOMMITされてしまいますよね?そのためSQL*LoaderでインポートがエラーになってROLLBACKされても、削除されたデータは元に戻らないですよね・・・。 全件削除なら、CTLファイル内でREPLACEを指定してインポートするのですが・・・ データの一部削除とSQL*Loaderでのインポートを一連の処理として、エラーの際にはROLLBACKさせられる方法はありますでしょうか? よろしくお願いします。

  • エラーを起こす方法

    初心者です。バッチプログラムの単体テストで、異常ケースでエラーを起こさせたいのですが、どのように実行したらいいのかわからず困っています。プログラムの内容は、Aテーブルのデータを全件、同じ構造をしたBテーブルに登録するというものです。ユニークキーのデータを追加して一意制約エラーをおこすにも、そもそもAテーブルにユニークキーのデータを追加して登録することができないと思うのですが、どのようにやるのですか?

  • ACCESSのファイル容量

    おせわになります ACCESSにInTouchよりデータをINSERTしているのですが のデータ容量が テーブルのレコードを削除しても 減りません そういうものなのでしょうか 毎日全件DELETEしてINSERTするのですが 大体1日のデータ量で収まるのかと思っていたのですが どんどん大きくなっていって ACCESSファイルが異常に大きくなってしまっています ファイル容量をある程度で肥大しないようにする方法はありますでしょうか

  • バッチプログラムでSQLSever2008を操作

    教えてください。 (1) SQLSever2008内にあるデータベース1のテーブルAのデータを削除 (2) 同じインスタンス内にあるデータベース2のテーブルAのデータを、DB1のテーブルAにコピー (3) (2)の処理が失敗したらロールバック 上記のことを、バッチプログラムで行いたいと思っております。 単にコマンドプロンプトで入力するというのであれば(1)も(2)もできるのですが、 バッチプログラムで行うとなると、どうやっていいのか見当もつきません。 さらに(3)は、(2)でSQLを実行した戻り値も見なければならないと思います。 データベース1のテーブルAとデータベース2のテーブルAはまったく同じ構成です。 自分なりに色々調べてはいるのですがどうしてもわかりません。 もしどなたかご存知の方がいらっしゃったらぜひ教えてください。 どうぞよろしくお願いいたします。

  • データベースのタイミングについて

    PHPでとあるデータベースに接続したいのですが、 本番のサーバーのため、 処理を慎重に行いたいと思います。 データベースの処理の流れがよくわかっていないのですが、 処理としては データーベースを接続する Beginする テーブルを作成 大丈夫だったら  コミットする 大丈夫じゃなかったら  ロールバックする Endする データベースを切断する という処理でいいのでしょうか?? また、データベース上に同じテーブル名などがある場合は CREATを実行したときにエラーを返してくれるのでしょうか??

    • ベストアンサー
    • PHP
  • 検索の効率に付いて

    フロントエンドをAccessのADPにて作成しようとしています。 少しスッキリしないので確認をさせて下さい。 AccessのVBAやフォームのソースに書くSELECTですが SELECTであれば全てサーバー側で絞り込んで結果だけが帰って来るのか from句で指定したテーブル全件が送られて来てクライアント側で 絞り込みされるのかどちらでしょうか? 回線スピードが遅いのでネットワークに流れるデータ量を抑えたいと 考えています。 私の頭の中では・・・ FROM [テーブル名] の場合はクライアント側 FROM dbo.[テーブル名] の場合はサバー側 要はAccessの「テーブル」と「クエリ」に表示されているオブジェクトを 指定するとクライアント側(全件→クライアントで絞り込み=データ量多)、 「dbo.」を付けるとサーバー側(絞り込み後のデータ→クライアント=データ量少) と考えています。

  • Access2003 VBAのDELETEについて

    AccessでOracleとODBC接続してデータを操作するアプリを作成しています。 処理をする際に毎回ワークテーブルを全件削除し、取り込んで本テーブルにインサートする という処理にて、ワークテーブルのデリート文でなぜか10件しかレコードが削除されません。 固有レコードの問題を解消するためにDB側ではID列をPKとして一意に決まるように振っています。 ODBCのリンクテーブルという形で登録しています。 テーブル:TEST_WORK カラム:ID(PK)、コード、名称 CurrentDb.Execute "DELETE FROM TEST_WORK" 上記記述にてなぜか全削除されません。 感じとしては一回目のdeleteでIDが1~9までが削除され、次にdeleteした際は10~99までが削除され・・・というように桁数で変化している気がします。 全て消すにはどのようにすればよいでしょうか?