Oracle redo檔案記錄的內容

來源:互聯網
上載者:User

redo的內容

Oracle通過redo來實同快速提交,一方面是因為redo log file可以連續,順序地快速寫出,另外一個方面

也和redo記錄的精簡內容有關.

 


為了瞭解redo的內容,先需要瞭解兩個概念:改變向量和重做記錄

改變向量(change vector)

改變向量表示對資料庫內某一個資料區塊所做的一次變更.改變向量(change vector)中包含了變更的資料

塊的版本號碼,事務作業碼,變更從屬資料區塊的地址(DBA)以及更新後的資料.例如,一個update事務包含

一系列的改變向量,對於資料區塊的修改是一個向量,對於復原段的修改又是一處向量.

 


重做記錄(redo record)

重做記錄通常由一組改變向量組成,是一個改變向量的集合,代表一個資料庫的變更(insert,update,delete

等操作),構成資料庫變更的最小恢複單位.例如,一個update的重做記錄包括相應的復原段的改變向量和相應

的資料區塊的改變向量等.

 


假定發出了一個更新語句;

update scott.emp  set sal=4000 where empno=7788;

看一下這個語句是怎麼執行的

1.檢查empno=7788記錄在buffer cache中是否存在,如果不存在則讀取到buffer cache中.

2.在復原資料表空間的相應復原段事務表上分配事務槽,這個操作需要記錄redo資訊.

3.從復原段讀入或者在buffer cache中建立sal=3000的前鏡像,這需要產生redo資訊並記入redo log buffer

4.修改sal=4000,這是update的資料變更,需要記入redo log buffer

5.當使用者提交時,會在redo log buffer記錄提交資訊,並在復原區段標記該事務為非啟用(Inactive)

 


下面通過珍上具體的實驗來再現這個過程.

1.先通過switch logfile切換日誌,使用sys使用者進行日誌切換,使得接下來的更新可以使用新的日誌.

SQL> alter system switch logfile;

 


System altered.

 


SQL> select * from v$log;

 


    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS

---------- ---------- ---------- ---------- ---------- --- ----------------

FIRST_CHANGE# FIRST_TIME

------------- ------------

        1          1        14  52428800          1 NO  ACTIVE

      801067 03-JAN-14

 


        2          1        15  52428800          1 NO  CURRENT

      813289 04-JAN-13

 


        3          1        13  52428800          1 NO  INACTIVE

      764715 30-DEC-13

 


2.更新並提交事務

SQL> select * from scott.emp a where a.empno=7788;

 


    EMPNO ENAME      JOB              MGR HIREDATE            SAL      COMM

---------- ---------- --------- ---------- ------------ ---------- ----------

    DEPTNO

----------

      7788 SCOTT      ANALYST        7566 19-APR-87          3000

        20

 

 

 

SQL> update scott.emp  set sal=4000 where empno=7788;

 


1 row updated.

 


SQL> commit;

 


Commit complete.

 

 

 

3.使用sys使用者在另外的session轉儲記錄檔:

SQL> alter system dump logfile '/u01/app/oracle/product/10.2.0/oradata/jingyong/redo02.log';

 


System altered.

 


SQL> select

  2  d.value||'/'||lower(rtrim(i.instance,

  3  chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name

  4  from ( select p.spid

  5  from sys.v$mystat m,

  6  sys.v$session s,sys.v$process p

  7  where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,

  8  ( select t.instance from sys.v$thread  t,sys.v$parameter v

  9  where v.name = 'thread' and

 10  (v.value = 0 or t.thread# = to_number(v.value))) i,

 11  ( select value from sys.v$parameter

 12  where name = 'user_dump_dest') d

 13  /

 


TRACE_FILE_NAME

--------------------------------------------------------------------------------

/u01/app/oracle/admin/jingyong/udump/jingyong_ora_3969.trc

  • 1
  • 2
  • 3
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.