オラクルの原則:フラッシュバック

目次

1.9iのフラッシュバッククエリメソッド

第二に、10gフラッシュバックバージョンのクエリメソッド

3つの10gフラッシュバックトランザクションクエリメソッドとリカバリデータ

4、10gフラッシュバックメーター

5、10gフラッシュバック削除

6つの10gフラッシュバックデータベース


1.9iのフラッシュバッククエリメソッド

      変更前のデータを取得するために、時点またはSCN(システム変更番号)に従って前方にクエリを実行できます。フラッシュバッククエリは、ロールバックセグメントに格納されているデータの以前のミラーリングと、undo_retentionパラメーターを設定することによる以前のミラーの保持時間に依存します。

     選択... scnの時点で|タイムスタンプ

たとえば、既存のテーブルには8行のデータがあります。

ロールバックセグメントの保持時間がまだ有効である場合、復元する正確な時間を知っている

delete salary_tbl where employer_nm like '雇佣者导入1';
commit ;
select * from salary_tbl  as of timestamp to_date('20200723 22:45:30','yyyymmdd hh24:mi:ss');

チェックポイントクエリ:チェックポイントの値を見積もる必要があります

select current_scn from v$database;  --查询当前检查点
delete salary_tbl where employer_nm like '雇佣者导入1';
commit ;
select * from salary_tbl  as of scn 8681060;

フラッシュバッククエリを使用してデータを回復する

create table salary_tbl_bak as select * from salary_tbl  as of timestamp to_date('20200723 22:45:30','yyyymmdd hh24:mi:ss');
truncate table salary_tbl;
insert into salary_tbl select * from salary_tbl_bak;
drop table salary_tbl_bak;

第二に、10gフラッシュバックバージョンのクエリメソッド

10gは、一定期間内にさまざまなバージョンでクエリできるフラッシュバックバージョンを提供します。

選択...から...バージョン間の 

その中から、selectは偽物と劣ったもの、クエリID、SCN番号などを選択できます。

select versions_startTime,versions_endtime,versions_xid,versions_operation,
                                      salary_tbl.employer_nm,
                                      salary_tbl.department,
                                      salary_tbl.salary,
                                      salary_tbl.leader_nm from  salary_tbl  versions between timestamp minvalue and maxvalue
                                      

version_xidがThingIdを表す場合、version_operationは操作のタイプを確認できます

3つの10gフラッシュバックトランザクションクエリメソッドとリカバリデータ

    データベースの変更補足ログデータの追加; ----最小限の追加ログを有効にする

select * from flashback_transaction_query where TABLE_NAME='SALARY_TBL' order by start_timestamp desc;

このビューの役割は次のとおりです。

comment on table SYS.FLASHBACK_TRANSACTION_QUERY is 'Description of the flashback transaction query view';
comment on column SYS.FLASHBACK_TRANSACTION_QUERY.XID is 'Transaction identifier';
comment on column SYS.FLASHBACK_TRANSACTION_QUERY.START_SCN is 'Transaction start SCN';
comment on column SYS.FLASHBACK_TRANSACTION_QUERY.START_TIMESTAMP is 'Transaction start timestamp';
comment on column SYS.FLASHBACK_TRANSACTION_QUERY.COMMIT_SCN is 'Transaction commit SCN';
comment on column SYS.FLASHBACK_TRANSACTION_QUERY.COMMIT_TIMESTAMP is 'Transaction commit timestamp';
comment on column SYS.FLASHBACK_TRANSACTION_QUERY.LOGON_USER is 'Logon user for transaction';
comment on column SYS.FLASHBACK_TRANSACTION_QUERY.UNDO_CHANGE# is '1-based undo change number';
comment on column SYS.FLASHBACK_TRANSACTION_QUERY.OPERATION is 'forward operation for this undo';
comment on column SYS.FLASHBACK_TRANSACTION_QUERY.TABLE_NAME is 'table name to which this undo applies';
comment on column SYS.FLASHBACK_TRANSACTION_QUERY.TABLE_OWNER is 'owner of table to which this undo applies';
comment on column SYS.FLASHBACK_TRANSACTION_QUERY.ROW_ID is 'rowid to which this undo applies';
comment on column SYS.FLASHBACK_TRANSACTION_QUERY.UNDO_SQL is 'SQL corresponding to this undo';

特別な注意:UNDO_SQLはトランザクションロールバック用のSQLです。COMMIT_TIMESTAMPに従って順序を並べ替える限り、送信されたトランザクションの履歴を知ることができます。

任意のテーブルのデータを復元する:最初にTABLE_NAMEでフィルタリングし、COMMIT_TIMESTAMPで並べ替え、復元する位置でUNDO_SQLを1つずつ実行します。

 

4、10gフラッシュバックメーター

 10gは、テーブル内のデータを特定の瞬間、つまりSCNにロールバックできます。行の移行を有効にする必要があることが前提です

    テーブルsalary_tblを変更して行の移動を有効にします。

次に、テーブルのフラッシュバックを実行できます。

テーブルtable_nameをタイムスタンプにフラッシュバック| SCN


flashback table salary_tbl to timestamp timestamp'2020-7-23 22:00:00'

 

5、10gフラッシュバック削除

Oracleには、削除されたデータを格納するために使用されるごみ箱のようなものもあります。ごみ箱を有効にします。ごみ箱には通常のユーザーの削除されたテーブルのみが配置されるため、SYSユーザーのSYSTEMテーブルスペースここ配置されません

セッションセットの変更 recylcebin = on

>> recyclebinを表示 

ドロップ前にテーブル<tablename>をフラッシュバックします。-闪回删除

ドロップテーブル<テーブル名>パージ; --------完全に削除

ごみ箱をパージします; ---------ごみ箱を空にします

-----查询原来的表名和回收站情况
select * from tab where TABTYPE='TABLE';
select * from recyclebin;
--------删除一张表------------
create table salary_tbl_bak as select * from salary_tbl;
drop table  salary_tbl_bak;
------闪回----------
flashback table salary_tbl_bak to before drop;

Oracleでは、同じテーブルが繰り返し削除される場合、フラッシュバックテーブルが最後に削除されたテーブルであるか、<"table name inrecyclebin">二重引用符を直接選択できます。

 

6つの10gフラッシュバックデータベース

ハードディスクの損傷など、データベースに物理的なエラーがある場合、フラッシュバックデータベースはここでは適用されません。データベースに論理エラーがある場合は、フラッシュバックデータベースを使用してリカバリおよびロールバックできます。以前のフラッシュバックはロールバックセグメントフラッシュバックを使用していましたが、フラッシュバックデータベースはログを使用して戻りました。

1.データベースはアーカイブモードである必要があります

  >>すぐにシャットダウンします。

  >>スタートアップマウント

 >>データベースアーカイブログの変更

 >>データベースを変更して開く

2.フラッシュリカバリ領域を設定します

   パラメータDB_RECOVEを表示します

3.フラッシュバック保持時間を構成します(単位:分)

パラメータdb_flashback_retenを表示します

4.マウント状態で、データベースフラッシュバックを有効にします。データベースフラッシュバックをオンにします。

現時点では、db_recovery_file_destパラメータ値の下のディレクトリでフラッシュバックに必要なファイルを確認できます。

5.マウント状態でデータベースにフラッシュバックします

 データベースをタイムスタンプにフラッシュバック| scn

テーブルがあります。この時点での時刻は、デュアルからsystimestampを選択します。----20年7月26日03.14.24.153000 PM + 08:00

ドロップテーブルsalary_tblを実行します。

おすすめ

転載: blog.csdn.net/superSmart_Dong/article/details/107549595