一、什麼是REDO LOG
REDOLOG檔案是十分重要的檔案,它記錄了Oracle的所有變化,是資料庫執行個體恢複機制中最為關鍵的組成部分。
sys@OCM> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -------------- ------------ --------------
1 1 49 52428800 512 1 YES INACTIVE 2701394 09-3 -13 2711001 09-3 -13
2 1 50 52428800 512 1 YES INACTIVE 2711001 09-3 -13 2732482 10-3 -13
3 1 51 52428800 512 1 NO CURRENT 2732482 10-3 -13 2.8147E+14
sys@OCM> col member for a50 sys@OCM> select * from v$logfile;
GROUP# STATUS TYPE MEMBER IS_
---------- ------- ------- -------------------------------------------------- ---
3 ONLINE /u01/app/oracle/oradata/ocm/redo03.log NO
2 ONLINE /u01/app/oracle/oradata/ocm/redo02.log NO
1 ONLINE /u01/app/oracle/oradata/ocm/redo01.log NO
二、REDO LOG的作用
1、記錄ORACLE資料庫的變化
2、可以避免資料提交後直接寫入資料檔案
3、執行個體恢複和介質恢複
三、REDO LOG的塊
1、塊的大小
(1)dbfsize redo01.log
(2)SELECT DISTINCT BLOCK_SIZE FROM V$ARCHIVED_LOG;
(3)SELECT MAX(LEBSZ) FROM X$KCCLE;
(4)記錄檔頭的內容
ALTER SESSION SET EVENTS 'immediate trace name redohdr level 10';
2、REDO的內容
(1)改變向量(Change Vector)
(2)重做記錄(Redo Record)
(3)一條插入的產生的日誌
create table t5(id int,name varchar2(100));
select max(ktuxescnw * power(2,32)+ktuxescnb) from x$ktuxe;--[K]ernel [T]ransaction [U]ndo Transa[x]tion Entry
insert into t5 values(1,'AAAAAA');
commit;
select max(ktuxescnw * power(2,32)+ktuxescnb) from x$ktuxe;
alter system dump logfile '/u01/app/oracle/oradata/ocp/redo02.log' scn min 1694394 scn max 1693357;