この記事では、Oracle に関する関連知識を提供します。Oracle データを使用しているときに、テーブル内のデータが誤って削除され、送信されてしまいました。以下は、Oracle 削除エラーについてです。この情報が役立つことを願っています。テーブルデータを削除した後に復元する方法について皆さんに教えてください。
推奨チュートリアル: 「Oracle ビデオ チュートリアル 」
##時間に基づいた復元#この方法では、delete ステートメントが実行される時刻を大まかに知る必要があります。
現在のシステム時刻をクエリします:select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from Dual;
現在が 2022 であると仮定します。 -04- 02 16:27:11 分、削除ステートメント
この時点で、データはテーブル内でクエリを実行することはできません。削除の実行時間がわかっているので、1 分進めて (削除の実行時間は前でもかまいませんが、小さいほど良いです。この例では例として 1 分を使用します)、次のステートメント
select * from DEMO as of timestamp to_timestamp(‘2022-04-02 16:26:11',‘yyyy-mm-dd hh24:mi:ss');
# を実行します。
##現在のデモ テーブルにはデータがありませんが、1 分前のデモ テーブルからデータをクエリできることがわかります。リカバリ 1: 現時点では、plsql ツールのクエリ結果のエクスポート機能を使用して SQL ファイルをエクスポートし、SQL ファイル内の挿入ステートメントを再実行してデータをリカバリできます。
リカバリ 2: データ リカバリのために次の SQL を実行します:
flashback table DEMO to timestamp to_timestamp(‘2022-04-02 16:26:11',‘yyyy-mm-dd hh24:mi:ss');
エラーが報告された場合 ORA-08189: 行移動機能が有効になっていないため、テーブルをフラッシュ バックできません
実行:
alter table DEMO enable row movement;
表の行移動関数を追加した後、リカバリのためにフラッシュバック文を実行します
エラーが報告された場合: ORA-08194: マテリアライズされた表ではフラッシュバック表操作は許可されていませんビューを作成し、次にテーブルのリカバリで説明するように新しい一時テーブルを作成します。
リカバリ 3 (新しい一時テーブル):
新しいデモ 1 テーブルを作成し、復元する必要があるデータを挿入します。
create table DEMO1 as select * from DEMO as of timestamp to_timestamp(‘2022-04-02 16:30:11',‘yyyy-mm-dd hh24:mi:ss');
デモ 1 テーブルのデータをデモ テーブル
insert into DEMO select * from DEMO1 where not exists (select * from DEMO where DEMO.id=DEMO1.id);
リカバリ 4 (scn に基づいて復元):
現在の scn 番号をクエリ
select current_scn from v$database;scn 番号を次のように減らします。データを削除するまで確認してください。
select * from DEMO as of scn 166937913;適切な scn 番号を使用して、データ回復のための SQL ステートメントを実行します。
flashback table DEMO to scn 166937913;
推奨チュートリアル: "
Oracle ビデオ チュートリアル"
以上がOracleインスタンスの解析削除で誤ってテーブルデータを削除した後に回復する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。