• ベストアンサー

Oracleで言うROLLBACKする方法について

最近SQL-Serverを使い出した初心者です。 こんな質問する事事態、お恥ずかしいのですが 教えてください。 該当テーブルにデータを一括インポートした際、 不必要なデータも紛れ込んでいました。 1件毎に削除すれば良いのですが莫大なデータなため 大変で元に戻したいのですが、バックアップしたものから 既に変ってしまっています。 そこで、UNDOまたはOracleで言うROLLBACKする方法等 無いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> 該当テーブルにデータを一括インポート > バックアップしたものから既に変ってしまっています。 この状態では、ROLLBACKどころではありませんね。 以下、BACKUPも含め、自己責任で。 1)該当テーブルのダミー[1]を作成し、該当テーブルをバックアップする。 2)該当テーブルのダミー[2]を作成し、データを一括インポートする 3)「ダミー[1]とダミー[2]の一致するレコード」を削除する。 単純に複数件削除のためなら、この段階でダミー[2]のレコードが全件無くなれば、ダミー[1]の一致したレコードも無いのでめでたしめでたし。 ここでダミー[2]が残るようなら残れば何らかの更新(Update,Delete)が行われたので、更なる追跡が必要。 ダミー[1]と現状データの差を調査し、どうするか、の判断が必要です。

Saru_ru
質問者

お礼

残念ですが、やはりそうでしたか。 ご丁寧な回答有難うございました。 また質問させて頂いた際には、宜しくお願いします。

関連するQ&A

  • ORACLE9iがわかる方

    SQL Plusからのデータのインポートの方法を教えていただきたいです。元データはACSESSで用意されていて、ORACLEの方にユーザーも作成してテーブルも用意しました。あとはACCESSのデータをORACLEの方にインポートしてあげればいいんですが、量が半端じゃないので出来ればSQL Plusでコマンド入力して一気にインポートしてしまいたいです。一応原始的に新規.MDBにリンクテーブルを作成し、元データから一つ一つ貼り付けしてもいいんですが、それでも時間がかかります。わかる方いらっしゃいますでしょうか???

  • ORACLEテーブルを作成したSQLを調べたい

    バックアップに別サーバに同じORACLEテーブルを作成することとなりました。 どんなSQLでそのテーブルを作成したのか資料が無くてわかりません。 調べる方法を教えてください。よろしくお願いします。

  • Oracleのトリガーについて

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

  • オラクルにて

    オラクルにて オラクルデータベースへ新規テーブルをエクセルからインポートしようと していますが、その中で、●の記号(マーク)しかないフィールドがあり、 このデータ型は何にあたるか教えて頂きたく、もしかしたらこの記号は オラクルへ移行出来ないのかも知れないと思ってもいますが、 ご回答下さいます様宜しくお願い致します。

  • oracle 11g複製

    現在本稼働しているDBを開発環境構築の為、テーブルを複製したいと考えております。 本環境:Oracle Database 11g 開発環境:Oracle Database 11g Express Edition 全てのテーブルを複製する必要はありません。 SQLのテストのため、Userテーブルを複製したいと考えてます。 必要なテーブルが、30テーブルほどあり内10テーブルは、200万件程度のレコード数があります。 安全かつ、本サーバーに負担の少ない方法はどうしたらよろしいでしょうか? 本環境のSQL sql developerのエクスポート機能で、テーブルを1個づつ出力し、開発環境のSQL developerでインポートを実行すれば、正常に稼働するのでしょうか? MS SQL Serverなら、上記の方法で問題無いのですが、Oracleは初心者の為、全く分かりませんので、ご教授頂けましたら幸いです。

  • アクセス→オラクルの方法は?

    アクセス(Access2000)で作ったサンプルDBを オラクル(Oracle9i)にインポートするためには どうすればいいのでしょうか。 そもそもできるのでしょうか。 テーブルだけでOKなんです。 いったんデータをcsvにはいてから? 逆方向(オラクル→アクセス)はよく見かけるのですが…

  • Oracle 8.1.6で・・・

    Oracle 8.1.6でAccessのようにテーブル構造をみたり、 データをみることのできるユーティリティーはご存知ないでしょうか。 SQL+は使い勝手が最近のviエディタよりもよくないのと、いままでAccessしか 触ったことがないのでなれないということで困っています。 オラクルのユーティリティーの名前自体がバージョンが変わると変わってしまう・・・というのは聞いたことがあるのですが・・・。 よろしくおねがいします。

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

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

  • Oracle 11でSQLで応答がなくなる

    Oracle 11.2.0.1ですが12万件ある1つのテーブルが急にSQLで応答がなくなります。 それまでは、順調に動作しており、新規作成してデータ移行しRENAMEすると応答し正常に検索されますが また、数日すると同じ症状でSQLで応答がなくなります。 11.2は、、「オプティマイザ・フィードバック」という機能に関するバグらしく、この機能をOFFしました。 その後でもSQLで応答がしなくなっています。(1テーブルのみ)再起動済みです。 解決方法がないですか? また、手っ取り早い方法があれば伝授願います。

  • ORACLEデータをACCESSへインポート VB

    OracleのデータをAccessへインポートする方法について、どなたかご教授ください。 VB.NETで OracleからAccessへのデータコンバート機能を作ることになりました。 (環境 OS;Win7 言語;VB2008 Oracle;10g Access;2010) 対象のテーブル数、フィールド数、データ数がかなり多いのですが、Accessへデータをインポート(コピー)する良い方法はないでしょうか? 普段、データ入力が専門のためプログラムは初心者です。 今のところOLE DBを使用して1行ずつデータを登録する方法しかできません・・・ ヘルプを参考に、ODBCでDSNレスのINTO(SQL)を挑戦しているのですが「入力テーブルまたはクエリが見つかりません」と出てしまいます。 ◇質問 (1).複数のテーブルをAccessへコピーするにはどんな方法がありますか?   また、このような対象テーブルが多い場合に有効な方法は? (2).ODBCでDSNレスのINTO(SQL)を作成するのに注意することはありますか? ちなみにエラーが出てしまうSQL文は以下です。違っているでしょうか? cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;data source=D:\DATA\DB.mdb" sql = "SELECT * INTO impテーブル名 " & _ "FROM [ODBC;DRIVER={Microsoft ODBC for Oracle};" & _ "SERVER=" & orSorc & ";" & _ "UID=" & orUsrID & ";" & _ "PWD=" & orPswd & "].expテーブル名" ※ Oracleは10g/11gのバージョンが存在するためODPは使用しません