oracle實驗記錄 (恢復-關於熱備份)
斷裂塊:網上資料很多,基本情況就是 database open時,用OS 命令備份 datafile (host copy,host cp)
如果要複製的datafile比較大,那麼這個過程可能持續幾分鐘 這之間就產生問題了,OS 操作複製的粒度
與oracle DBWN寫操作的粒度不一樣(oracle 操作粒度是oracle 資料塊 )一般 系統比oracle粒度要小,
os 的copy 時 可能會得到某個block的第一部分,隨後dbwn 寫了整個block ,最後os 的copy得到塊的剩
下部分,這樣就產生了 '斷裂' 塊(OS 分2部分 2次寫的 而寫之中DBWN 寫了整個塊,等於os copy第一部
分寫的塊內容已經和datafile中不一樣了) 出現了代表不同oracle block的兩個部分 ,這樣的block是無
用的
為了避免這個情況 oracle 採用alter tablespace(database) begin backup 設定為備份模式(產生一個
部分checkpoint 按照buffer cache中filequeue 將對應的dirty buffer寫入datafile)
若此時更新buffer cache中的一個block(首次)那麼會將真個完整的block image 寫入redo(而不是 只將
變化寫入 log buffer)這個block image是讀一致的,在以後的恢復中還原datafile,若有任何斷裂的
block 都會替換為從redo中愁緒的block的一致讀image 對斷裂塊修復
問題來了:整個塊的image 那麼 redo會多,redo多swtich 多~~再往下就會有redo的一些event了(以後實
驗會詳細介紹)
rman可以解決rman 檢測到dbwn在某個塊複製時候對其進行了變更(block頭的scn變化 rman容易檢測到)
那麼rman會嘗試再次複製操作,知道得到該block的讀一致映像
SQL> conn / as sysdba
Connected.
SQL> create table test (a char(1000),b char(1000));
Table created.
SQL> insert into test values('a','a');
1 row created.
SQL> insert into test values('b','b');
1 row created.
SQL> commit;
Commit complete.
SQL> select file#,block# from (select dbms_rowid.rowid_relative_fno(rowid) file#
,dbms_rowid.rowid_block_number(rowid) block# from test);
FILE# BLOCK#
---------- ----------
1 57626
1 57626
SQL> select * from sys.redo_size;
VALUE
----------
11540
SQL> alter tablespace system begin backup;
Tablespace altered.
SQL> update test set a='aa' ,b='aa' where a='a';
1 row updated.
SQL> select group#,status from v$log;
GROUP# STATUS
---------- ----------------
1 INACTIVE
2 CURRENT
3 INACTIVE
4 INACTIVE
SQL> alter system dump logfile 'E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG
';
System altered.
KTB Redo
op: 0x01 ver: 0x01
op: F xid: 0x0004.004.00000b7f uba: 0x0080bb5a.0361.04
KDO Op code: IRP row dependencies Disabled
xtype: XA flags: 0x00000000 bdba: 0x0040e11a hdba: 0x0040e119
itli: 1 ispac: 0 maxfr: 4863
tabn: 0 slot: 0(0x0) size/delt: 2009
fb: --H-FL-- lb: 0x1 cc: 2
null: --
col 0: [1000]
61 20 20 20 20 20
col 1: [1000]
61 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20
fb: --H-FL-- lb: 0x1 cc: 2
null: --
col 0: [1000]
62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20
col 1: [1000]
62 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 20 20 20
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~redo中整塊的 image
vect = 0
col 0: [1000]
61 20 20 20 20 20 ~~~~~~~~~~~~~~old
col 1: [1000]
61 20 20 20 20
col 0: [1000]
61 61 20 20 20~~~~~~~~~~~~~~~~~~~~~NEW
col 1: [1000]
61 61 20 20
SQL> update test set a='bb' ,b='bb' where a='b';
1 row updated.
SQL> alter system dump logfile 'E:\ORACLE\PRODUCT\10.1.0\ORADATA\ORCL\REDO02.LOG
';
System altered.
~~~~~~~~~~~~~~~~~~沒有產生新的block image 只有修改記錄new,old
col 1: [1000]
62 20 20
col 0: [1000]
62 20 20 20 20
col 0: [1000]
62 62 20 20
col 1: [1000]
62 62 20 20
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12020513/viewspace-612827/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 增量備份恢復驗證Oracle
- ORACLE備份&恢復案例(轉)Oracle
- Oracle 備份 與 恢復 概述Oracle
- Oracle 備份恢復之 FlashbackOracle
- MySQL備份與恢復——基於Xtrabackup物理備份恢復MySql
- ORACLE本地磁碟備份恢復Oracle
- 備份與恢復oracle_homeOracle
- Oracle 備份和恢復介紹Oracle
- ORACLE備份&恢復案例三(轉)Oracle
- ORACLE備份&恢復案例二(轉)Oracle
- MySQL備份與恢復——基於MyDumper/MyLoader 邏輯備份恢復MySql
- MySQL備份與恢復——基於OUTFILE /LOAD DATA 邏輯備份恢復MySql
- ORACLE DG從庫 Rman備份恢復Oracle
- Oracle 12c 備份與恢復Oracle
- Oracle 備份恢復篇之RMAN catalogOracle
- 透過搭建恢復目錄實現RMAN異地備份和恢復
- RAC備份恢復之Voting備份與恢復
- OceanBase物理備份恢復實踐
- MySQL備份與恢復——實操MySql
- DBV:冷備份的校驗和恢復
- 備份與恢復:polardb資料庫備份與恢復資料庫
- oracle冷備恢復Oracle
- 備份和恢復
- mydumper備份恢復
- Mysql備份恢復MySql
- 【Oracle 恢復表空間】 實驗Oracle
- 【ASK_ORACLE】Oracle 12c之CDB與PDB的備份與恢復(二)備份恢復之前你需要知道的Oracle
- Kubernetes備份恢復之velero實戰
- 詳解叢集級備份恢復:物理細粒度備份恢復
- Oracle邏輯備份與恢復選項說明Oracle
- oracle drop table purge無備份bbed恢復(3/3)Oracle
- oracle drop table purge無備份bbed恢復(1/3)Oracle
- oracle drop table purge無備份bbed恢復(2/3)Oracle
- Oracle 11g R2 備份與恢復Oracle
- Mysql備份與恢復(1)---物理備份MySql
- MySQL 備份與恢復MySql
- redis 備份和恢復Redis
- RMAN備份恢復技巧
- Jenkins備份與恢復Jenkins