特定の時点へのOracleデータベーステーブルを回復

  日付がどのように動作するようにしなければならない前に、テーブルには、データの誤用がクリアされているソフトウェアアプリケーションで、現在は2013年8月に、このような午後2時13分時点の、空間を回復したいですか?

  これは、この問題を通じて知識の一連のシリーズをトリガすることができます。

  1、あなたが戻ってテーブルにオープンフラッシュバックフラッシュを使用することができます。

  

どのように自分のデータベースを表示するには、フラッシュバックになっていません

  フラッシュバック・データベースは、データベースがでなければならないことを要求するアーカイブモード、およびリセットログはデータベースのオープンフラッシュバックした後に使用しなければならない
  ビューのデータベースのアーカイブおよびフラッシュバック・モードが有効になっている
  。> SELECT log_mode、open_mode、五$データベースからflashback_on SQLを

  LOG_MODEのopen_modeのFLASHBACK_ONを
  ------ ------------- ----------------- -------------------- ----
  ARCHIVELOG読み書きNO         

  

  FLASHBACK_ONはNOに、それがフラッシュバックが有効になっていない機能を意味します

 

 

Oracleデータベースのアーカイブ・モード

Oracle Databaseは、ログは、挿入、削除、更新データとしてデータベースに行われたレコードの変更は、これらの操作は、オンラインREDOログに記録されますされ、オンラインREDOログを持っています。

モード紹介

Oracle Databaseは 、ログは、挿入、削除、更新データとしてデータベースに行われたレコードの変更は、これらの操作は、オンラインREDOログに記録されますされ、オンラインREDOログを持っています。一般的なデータベースには、少なくとも2つのオンライン持っている必要があります REDOログ・グループを パックが満たされている場合はオンライン・ログ・スイッチは、その後、2発生したときにREDOログ-ログログは、現在のREDOログを満たした際に、使用する2、スイッチはログを発生します。 、そう繰り返し、オンラインREDOログ・グループ1を書き込みます。
ログは、ログがアーカイブを切り替えられますときに、データベースが非ファイリングモードの場合は、オンライン・ログは、切り替え時に破棄されます。アーカイブモードでは、スイッチが発生します。例えば、現在のオンライン使用すると、1ので満たされたときに、1 REDOログ・スイッチが発生したログ、2オンラインREDOログ書き込みを開始し、その後、オンラインREDOログ1の内容をさらに指定したディレクトリにコピーされます。このディレクトリは、アーカイブREDOログと呼ばれるファイルをコピーし、アーカイブディレクトリと呼ばれています。
使用する場合はアーカイブデータベースには、ディザスタリカバリを実行することができます。
1. アーカイブログ モードと 非アーカイブ・ログの 差分モード
非ファイリングモードのみ行うことができ コールドバックアップ とリカバリにのみ行うことができます フルバックアップを 。システムエラー時のデータへの最後のフルバックアップを復元することはできません。
アーカイブモードでは行うことができます ホットバックアップを し、行うことができます 増分バックアップを 、あなたは部分的な回復を行うことができます。
ARCHIVE LOG LISTモードを使用すると、アーカイブモードまたは非アーカイブモードの現在のステータスを表示することができます。

アーカイブモードまたは非アーカイブモードでは、現在のOracleを表示する方法

1、

selectname、log_mode、五$データベースからopen_mode;

NAMEのLOG_MODEのopen_mode
--------- ------------ ---------------- -
CKDB ARCHIVELOG  のREAD  WRITE

モードを提出する場合は、LOG_MODE = ARCHIVELOG
非ファイリングモードの場合、LOG_MODE = NOARCHIVELOG

 

2、

入力:アーカイブログリスト入力し、アーカイブモードかどうかを確認することができます

SQL>アーカイブログのリスト;
データベースのログ・モードはありませんアーカイブモード
自動アーカイブ使用不可
アーカイブ先USE_DB_RECOVERY_FILE_DEST
古いオンライン・ログ順序31
現行のログ順序33

Oracleデータベースはオープンアーカイブでどのように

あなたは、Oracleデータベースのアーカイブ・モードを開けない場合は、悪用のためにそれは悲惨、および復元することは不可能だろう。ここでファイリングモードをオンにする方法オラクルのアーカイブモデルや手法がオンになっているかどうかを確認する方法を説明します。

  1. オープンアーカイブモード

    1>まず、cmdのコマンドウィンドウを開きます。sqlplusを/ SYSDBAのログインデータベースとして

    ファイリングモードを確認するために使用される五$データベースから選択log_mode:2>データベースへのログインに成功すると、コマンドを入力します。

    3>クエリモードをLOG_見ることができた後は、アーカイブモードアーカイブされていないモードを説明NOARCHIVELOGです

    4>通常のシャットダウン即時停止とするか、データベースを閉じます

    5>通常は閉じて、データベースを待って

    データベースが閉じられた後6>、起動してデータベースを起動すると、マウントデータベースのインスタンスをロードするが、閉じます

    7>のコマンドを使用します。データベースのアーカイブログを変更し、ログファイルを開き、データベースのメッセージは、コマンドの実行が成功した後に変更されている返します

    全体の動作を完了するために、データベースを開く、開いているデータベースを変更する:8>のコマンドを使用します。

    (自動アーカイブを有効にする); 9>システムアーカイブログ開始を変えます

    10>出口(出口)

    11>アーカイブ・ログを確認してください。最初のステップを繰り返し、次のコマンドを実行しますlog_modeの五$データベースを選択し、実行結果のアーカイブ・ログを参照してください

  ので、フルバックアップを実行します。非アーカイブ・ログ・アーカイブモデル用に生成バックアップログモードが使用できなくなっている。このステップは、非非常に重要です!

  非アーカイブモードに変更しますアーカイブモード:

    1)SQL> SHUTDOWN NORMAL / IMMEDIATE。
    2)SQL> STARTUP MOUNT;
    3)SQL>データベースNOARCHIVELOGを改変すること。
    4)SQL>データベースOPENを改変すること。
  3.自動アーカイブを有効にします。LOG_ARCHIVE_START = TRUE
    アーカイブモードでは、ログファイルは、ログファイルがいっぱいになったときのアーカイブが完了するまでは、手動ファイリングは、その後、システムがハングアップしません場合は、グループ(上書き)をカバーすることが許可されていません。
    この時点で私は読み取り専用ではなく書き込むことはできません。
    運転中にシャットダウンし、プロセスアーカイブログを再起動します
    SQL> ARCHIVE LOG STOP
    SQL> ARCHIVE LOG START
  4.マニュアルアーカイブ:LOG_ARCHIVE_START = FALSE
    現在のログファイルをアーカイブ
    SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
    アーカイブ数は052、ログファイルであります
    SQL> ALTER SYSTEM ARCHIVE LOG SEQUENCE 052;
    すべてのアーカイブ・ログ・ファイル
    SQL> ALTER SYSTEM ARCHIVE LOG ALL;
    アーカイブログターゲットを変更
    SQL> ALTER SYSTEM ARCHIVE LOG CURRENTのTO '&PATH';
  5.変換アーカイブモードと非ファイリングモード
    ステップ4の逆のプロセス。
  6.複数のアーカイブプロセスを設定
    Q:私は、複数のアーカイブプロセスを使用する必要がありますか?
    :アーカイブプロセスは、多くの時間を消費する場合は、あなたが複数のアーカイブプロセスを開始することができ、これは動的パラメータで、ALTER SYSTEMを使用して動的に変更することができます。
    SQL> ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES = 10;
    Oracle9iは10のファイリング処理まで指定することができます
    アーカイブプロセスに関連した動的パフォーマンス・ビュー
    五$ bgprocess、五$ ARCHIVE_PROCESSES
  7.設定アーカイブ対象、マルチターゲットアーカイブ、リモート・アーカイブ先、アーカイブ・ログ・フォーマット
    アーカイブゴールのLOG_ARCHIVE_DEST_n
    ローカルアーカイブの目的:
    SQL> LOG_ARCHIVE_DEST_1 = "LOCATION = D:ORACLEARCHIVEDLOG";
    リモート・アーカイブ先:
    SQL> LOG_ARCHIVE_DEST_2 = "SERVICE = STANDBY_DB1";
    アーカイブ対象を強制、エラーが発生した場合、600秒後に再試行:
    SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_4 = "LOCATION = E:ORACLEARCHIVEDLOGはMANDATORY = 600 REOPEN"。
    オプションのアーカイブ対象は、間違っている場合は、アーカイブを放棄します:
    SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_3 = "LOCATION = E:ORACLEARCHIVEDLOGオプション";
    アーカイブ対象の状態:閉鎖し、オープンアーカイブ先のアーカイブ先
    閉じるアーカイブ対象1
    SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1 = DEFER
    アーカイブ対象2を開きます。
    SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2はENABLE =
    アーカイブ・ログ・フォーマット
    LOG_ARCHIVE_FORMAT
  8.アーカイブ・ログ情報を取得します。
    V $ ARCHIVED_LOG
    V $ ARCHIVE_DEST
    V $ LOG_HISTORY
    V $ DATABASE
    V $ ARCHIVE_PROCESSES
    ARCHIVE LOG LIST;

チェックOracleは、レコードを削除表示するには、フラッシュバックになっています

  

  、オラクルのフラッシュバック機能がオンになって確認してください
  NOに--FLASHBACK_ONを、それがフラッシュバックが有効になっていない機能を意味

   log_mode、open_mode、五$データベースからflashback_onを選択します。


  ビューの削除レコードオラクル

   USER_RECYCLEBINから*を選択します。

  

 

 

 上述の困難なプロセスの後に、以下ではフラッシュバックを操作します:

  (A)

  あなたはフラッシュバックをオンにするとフラッシュバック表を使用することができます。
  log_mode、五$データベースからflashback_onを選択し 、
  結果はオープニングフラッシュバックを下回っている場合
  LOG_MODEのFLASHBACK_ON
  ------------ ------------------
  ARCHIVELOG YES


  コマンドを実行することができる
  テーブルのテーブルは、行移動を有効に変更; -移動テーブルの行をオン
  にフラッシュバックテーブルTO_TIMESTAMPタイムスタンプテーブル('20、130813夜02時○○分00'秒、 『YYYYMMDD HH24:MI:SS』);
  -フラッシュバック2013年8月13日の14:00


  あなたが開いていない場合は、論理バックアップは、インポートデータにIMPコマンドを使用することができます。
  役に立たない論理バックアップ、オープン・アーカイブモードでは、物理的なバックアップをシャットダウンすることができた場合は、データの損失は、それは完全には回復しない使用することができる
  Recovery Managerのログインで
  Recovery Managerターゲット/
  コマンドの実行
  RUN {即時シャットダウン、
  起動時のマウントを;
  (までの時間=」TO_DATEを設定'20、130813 14時00'分00秒、 'YYYYMMDD HH24:MI:SS')「;
  データベースの復元、
  データベースを回復し、
  ALTERオープンデータベースRESETLOGS;}
  覚えています!バックアップ、または後悔の問題を作るよりも、より多くの何かを行う前に。
  そして、私はあなたがこの問題に対処するためのデータベース管理者に連絡してください示唆しています。

 

  (二)

  

一つだけのテーブルならば、それは非常に簡単です。

 

次に例を示します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SQL>  CREATE  TABLE  test_fb_table (
   2    ID    int ,
   3    VAL  VARCHAR2(10)
   4  );
Table  created.
SQL>  INSERT  INTO  test_fb_table   VALUES  (1,  'TEST' );
1 row created.
SQL>  commit ;
Commit  complete.
 
假如 数据被错误的删除/更新
需要检索某个时间点上,表原有的数据。
SQL>  SELECT  TO_CHAR(sysdate,  'yyyy-mm-dd hh24:mi:ss' FROM  dual;
TO_CHAR(SYSDATE, 'YYYY-MM-DDHH24:MI:SS'
--------------------------------------
2010-11-07 13:01:37
 
这里删除掉数据。
SQL>  delete  from  test_fb_table;
1 row deleted.
SQL>  commit ;
Commit  complete.
 
确认数据已经被删除。
SQL>  select  from  test_fb_table;
no  rows  selected

 

1
2
3
4
5
6
7
这里检索出,指定时间点上,指定表的数据情况。
SQL>  select  from  test_fb_table
   2     AS  OF  TIMESTAMP  TO_TIMESTAMP( '2010-11-07 13:01:37' ,
   3       'yyyy-mm-dd hh24:mi:ss' );
         ID VAL
---------- --------------------
          1 TEST

 

 

 

あなたのために、つまり、あなたがする必要があります

 

一時テーブルは、CREATE TABLE ASは

データを削除し、あなたのテーブルから選択*   

TIMESTAMP TO_TIMESTAMPのもの( '2013年8月13日午前14時○○分00秒'、 ':MI:YYYY-MM-DDのHH24 SS')。

 

 

このように、その時点で内部の一時テーブルにコピーし、そのテーブルのデータを入れていました。

それから

INSERT INTOは、あなたの削除されたデータテーブルは、一時テーブルSELECT * FROMこと。

 

 

注意:あなたが何のトリガーか何かが存在しない上記のデータテーブルを削除したものを、決定する必要があります。

はい、あなたは再び上のデータ復旧を挿入し、一時的にスワップを無効にする必要があります。

  (C)(NO DBA権限)

  あなたは持っている場合は、データベースのバックアップをして時点にデータを復元するために、あなたの問題を解決するために、バックアップを記録します。

それ以外の場合は、達成することは不可能です。

あなたがバックアップを持っている場合は、DBAは、新しいデータベースを復元助けるために聞かせて、その後、元のデータベースにこのテーブルからのデータ、あなたをコピーすることができます。

  (無許可DBA)(D)

バック表フラッシュバックテーブルにフラッシュを使用する必要がある、あなたが行うことができない、それがDBA見つけます

 

おすすめ

転載: www.cnblogs.com/cainiaoputeng/p/11119972.html