- 締切済み
仕事のミス:本番データの削除→ロールバック
こ、こんばんわ 私は客先でオブジェクトブラウザ(OB)を使って仕事している 新米SEです。 今日OBを使って本番データを操作していたところ、 あやまって一テーブルのデータを全件削除してしまいました。 すぐに気づいて青くなり、気を落ち着けて慎重にロールバックボタンを押したところ、 全データ復活しました。 消えている間そのテーブルに関するバッチプログラムも動いていません。 なので、特に報告もしなかったのですが、 今日のこのミスは報告しなくてもよかったんだろうか といまさら悩んでいます、、。 いったんデリートしたという事実はアーカイブログかなんかで わかるんですよね? ウツです。。
- みんなの回答 (5)
- 専門家の回答
関連するQ&A
- データ削除、追加によるロールバックセグメントについて
環境:Oracle9i サーバ:Win2003 言語:VB6 テスト環境であるテーブルの200万件の削除、100万件の追加を行った後にVBアプリがすごく遅くなりました。 1.ロールバックセグメント(UNDOセグメント?)にデータがたまって遅くなったのでしょうか? またはテンポラリにデータがたまったのでしょうか? 2.削除や追加が行われた場合はどのオブジェクトにデータがたまったりするのでしょうか? 対応としてDBサーバのOSの再起動を行ったのですがまだ遅く、再起動後にDBの再起動を行ったらなぜか遅かったのが改善されました。 そもそも原因がデータの削除、追加で体感レベルで遅くなったりするのかも疑問です。 基礎知識が足りなくて申し訳ありませんが、アドバイスお願いいたします。
- ベストアンサー
- Oracle
- SQLクエリ1年前のデータを削除できない
現在このクエリを作成したのですがデータが削除されなくて、データ全件が抽出されてしまいます。 以下の構文で試したのですが・・・・もし、ご指摘、アドバイス等ございましたらよろしくお願いします。 select * from テーブル名 delete from テーブル名 where 日付 < = (select DATEADD(year,(-1),(日付))) ちなみに、日付はDATETIMEです バージョン:SQL management studio 10.50.25.000
- ベストアンサー
- SQL Server
- データ削除とSQL*Loaderでのインポート
SQL*Loaderを使ってデータをインポートするのですが、既存データが存在するテーブルにインポートするため、実行前に、条件に一致する一部のデータを削除します。 ですが、SQL*Loaderでインポートが失敗した際には、元に戻したいと思っています。 そういう場合に、SQL*PlusからDELETEのSQL文を実行してから、SQL*Loaderを起動してインポートするとなると、SQL*Plusから抜けた時点でCOMMITされてしまいますよね?そのためSQL*LoaderでインポートがエラーになってROLLBACKされても、削除されたデータは元に戻らないですよね・・・。 全件削除なら、CTLファイル内でREPLACEを指定してインポートするのですが・・・ データの一部削除とSQL*Loaderでのインポートを一連の処理として、エラーの際にはROLLBACKさせられる方法はありますでしょうか? よろしくお願いします。
- ベストアンサー
- Oracle
- 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はまったく同じ構成です。 自分なりに色々調べてはいるのですがどうしてもわかりません。 もしどなたかご存知の方がいらっしゃったらぜひ教えてください。 どうぞよろしくお願いいたします。
- 締切済み
- SQL Server
- データベースのタイミングについて
PHPでとあるデータベースに接続したいのですが、 本番のサーバーのため、 処理を慎重に行いたいと思います。 データベースの処理の流れがよくわかっていないのですが、 処理としては データーベースを接続する Beginする テーブルを作成 大丈夫だったら コミットする 大丈夫じゃなかったら ロールバックする Endする データベースを切断する という処理でいいのでしょうか?? また、データベース上に同じテーブル名などがある場合は CREATを実行したときにエラーを返してくれるのでしょうか??
- ベストアンサー
- PHP
- 検索の効率に付いて
フロントエンドをAccessのADPにて作成しようとしています。 少しスッキリしないので確認をさせて下さい。 AccessのVBAやフォームのソースに書くSELECTですが SELECTであれば全てサーバー側で絞り込んで結果だけが帰って来るのか from句で指定したテーブル全件が送られて来てクライアント側で 絞り込みされるのかどちらでしょうか? 回線スピードが遅いのでネットワークに流れるデータ量を抑えたいと 考えています。 私の頭の中では・・・ FROM [テーブル名] の場合はクライアント側 FROM dbo.[テーブル名] の場合はサバー側 要はAccessの「テーブル」と「クエリ」に表示されているオブジェクトを 指定するとクライアント側(全件→クライアントで絞り込み=データ量多)、 「dbo.」を付けるとサーバー側(絞り込み後のデータ→クライアント=データ量少) と考えています。
- ベストアンサー
- SQL Server
- 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までが削除され・・・というように桁数で変化している気がします。 全て消すにはどのようにすればよいでしょうか?
- 締切済み
- その他(データベース)
お礼
御回答ありがとうございます。 僕のような不注意でスキルの低い奴が、 OBで本番データをさわることじたいほんとどうかと思うんですが、 どうすれば人為ミスを回避できるのか、もししてしまった場合は・・? ということから逃げてはいけないですよね。 SQL*Plusについて、もちろん知ってはいるのですが それを使って作業することはあまりありません。 ミス回避につながるということなので、これから勉強しようと思います。