- 締切済み
仕事のミス:本番データの削除→ロールバック
こ、こんばんわ 私は客先でオブジェクトブラウザ(OB)を使って仕事している 新米SEです。 今日OBを使って本番データを操作していたところ、 あやまって一テーブルのデータを全件削除してしまいました。 すぐに気づいて青くなり、気を落ち着けて慎重にロールバックボタンを押したところ、 全データ復活しました。 消えている間そのテーブルに関するバッチプログラムも動いていません。 なので、特に報告もしなかったのですが、 今日のこのミスは報告しなくてもよかったんだろうか といまさら悩んでいます、、。 いったんデリートしたという事実はアーカイブログかなんかで わかるんですよね? ウツです。。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- uresiiwa
- ベストアンサー率45% (49/107)
>いったんデリートしたという事実はアーカイブログかなんかで わかるんですよね? アーカイブログでも分かりますが、SQL監査(audit)を有効にしていると、詳細に記録が残ります。本番DBということであれば恐らくある程度の監査をかけているのでは?と思います。 (ロールバックしても記録が残ります) 仕事での出来事はちゃんと報告をしましょう。 隠しても何もよいことはありません。きちんと報告をして次への対策を上司を練ってください。そうすれば、ミスを責められることよりも、むしろ信頼を得る結果になると思います。 逆に、黙っていて監査ログを確認されたら・・・、非常によろしくありません。 本番環境でのデータ更新作業は、 ・事前バックアップを取る ・作業のログを取る ・作業内容の手順書やスクリプトを事前に作成し、関係者でレビューする ということをぜひ行ってください。 いまこういうことが行われていないなら、ぜひ提案しましょう。 「急いでいるから」というのは、スピード違反で事故を起こすようなことになるので、大事件が起こる前に改めましょう。 本番での作業準備や作業に十分な時間を与えられないなら、上司に必要性を強く訴えましょう。
- 3rd_001
- ベストアンサー率66% (115/174)
アーカイブログ上には記載されているので、ログマイナで調査すれば分かります。 あとは、監視ツールを入れているとSQLを監査されてしまうかもしれません。以前、PISOを使ってマスタテーブルに対するSQL監査を仕掛けていて、無断でUpdate文を流したのを検知されて怒られたケースは見たことがあります。 http://www.insight-tec.com/products/service_piso.html あと意見としては、復旧できる準備がない作業は行わないのが基本です。 作業前にはバックアップをとりましょう。 厳しいシステムでは本番機を触る場合、以下が基本でした。 ・データの変更はテスト機でスクリプトとして開発する。 ・本番機では上記のスクリプトを実行する。 ・スクリプト実行も手順書化しておき確認された方法でしか本番機を触らない。 ・手順書を実行する時は複数人でチェックを行う。 ・本番データを触る場合はバックアップを取る。 報告云々ですが、次に起こった際に復旧できない可能性を考えると 再発防止策はたてるためにも報告はしたほうがよいと思います。 まあ、報告の仕方にもよりますが作業に不安をかかえておりミス時のリカバリー方法を検討してもらうようにはした方がよいと思います。
- pon2pon2
- ベストアンサー率42% (107/250)
ま、とりあえず報告だけして、ごめんなさいして、 後は上司に責任(リカバリー)を取ってもらいましょう。 それが上司の仕事なので。 ま、オブジェクトブラウザーで、発生した問題は、 Oracle社非サポートなんですけど、 とりあえず、やった内容を正確(どんなSQLを実行したかとか。)に 上司につたえれば、上司なら対応考えてくれるはずです。 顔が青ざめるような失敗はDBAなら誰でも経験することです。 逆に失敗を経験していないDBAの方が怖いです。 なので、一つ成長し、良い経験をしたと思って その場を乗り切りましょう。 1年もすれば、やってしまった失敗なんて、 そんなこともあったな程度の内容になるので、 そんなに落ち込むことはないです。 大丈夫。頑張れ!!
- Myuu4
- ベストアンサー率34% (36/103)
まずは技術的な面を。 ORACLEは、通常COMMIT(かROLLBACK)するまで、他セッションからは更新前のデータしか参照できません。 ※そのテーブルに関するバッチプログラムも動いていません に関して。 が、それはあくまで通常の話です。 ObjectBrowserは便利なツールです。下の画面に表示されているデータを修正した場合、カーソルを他行へ移すと、確か自動的にCOMMITがかかったと思います。 新米SEであれば、ObjectBrowserでデータを更新するような作業はやめておいた方が良いと思います。 基本は、SQL*PlusでSQL実行です。
- takapiii
- ベストアンサー率55% (944/1707)
20年のDB技術者です。 その気になって調べれば分かりますが、まぁ殆ど分からないですよ。 ただ、報告しないのはアウトです。貴方は元に戻ったと思っていても、本当に戻っていると確信できるのでしょうか。 どのような設計になっているかは不明ですが、その時点で報告すれば完全に復活できたものを、見逃してしまった可能性は0ではありません。 それとテーブルを全て消してしまうという事は、delete文のwhere句に不備があったのだと思いますが、ObjectBrowser上でSQL文を書いて実行するのは私のチームではご法度です。あれはあくまでも管理用ツールなので、データを扱う時は、必ずsql用ファイルを作成し、検証後に実行しましょう。
お礼
御解答ありがとうございました。 >ただ、報告しないのはアウトです。貴方は元に戻ったと思っていても、本当に戻っていると確信できるのでしょうか。 >どのような設計になっているかは不明ですが、その時点で報告すれば完全に復活できたものを、見逃してしまった可能性は0ではありません。 ですよね。 もう本当ごめんなさい!と心の中で思うしか僕には・・・ >それとテーブルを全て消してしまうという事は、delete文のwhere句に不備があったのだと思いますが、ObjectBrowser上でSQL文を書いて実行するのは私のチームではご法度です。 >あれはあくまでも管理用ツールなので、データを扱う時は、必ずsql用ファイルを作成し、検証後に実行しましょう。 未然防止は意識しているところなのですが、 期限が迫っていると利便性を優先している自分がいます。 私のチームではあくまでも個人の注意力に任されてまして、、、。 取り返しの付かないミスを想像するとそれだけで、 不安でいっぱいになっていまいます。 仲間が平然とデータを扱っているのに対し、 どこか抜けている私は常に今日のような不安につつまれている状態です。。 そしてちょっと気が抜けたとき、今日のようなミスを・・・あぁ・・・ 実は皆さんもそうなんでしょうか?
お礼
御回答ありがとうございます。 僕のような不注意でスキルの低い奴が、 OBで本番データをさわることじたいほんとどうかと思うんですが、 どうすれば人為ミスを回避できるのか、もししてしまった場合は・・? ということから逃げてはいけないですよね。 SQL*Plusについて、もちろん知ってはいるのですが それを使って作業することはあまりありません。 ミス回避につながるということなので、これから勉強しようと思います。