亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

解密Oracle redo生成過程

作者簡介

惠星星,現就職于北京海天起點,持有OCP 10g、OCP 11g、OCM 11g證書,并有長達8年電力行業業務維護、數據庫維護服務經驗,擅長Oracle數據庫性能優化、故障處理及數據可視化技術研究。

online redo log files是Oracle數據庫最重要的物理結構之一,由于Write-Ahead-Log(即日志寫入優先)機制,確保instance failure時,實例級恢復正常完成,已提交的數據被正常恢復,本文主要通過dtrace工具分析redo產生過程中latch資源的申請過程,分析Oracle redo生成的詳細過程。

關于Redo Log Buffer

redo log buffer 是SGA中的一個循環緩沖區,主要存儲 redo entries。redo entries包含重構或重做DML或DDL操作對數據庫所做的更改所需的信息。數據庫恢復將redo entries 應用于數據文件,以重構丟失的更改。

Oracle數據庫進程將redo entries從用戶內存空間復制到SGA中的重做日志緩沖區。redo entries占用緩沖區中連續的、順序的空間。LGWR進程將redo log buffer 中的redo entries寫入磁盤上online redo log files。

解密Oracle redo生成過程

測試腳本

#!/usr/sbin/dtrace -s -n
dtrace:::BEGIN
{
i=1;
}


pid$1::kslgetl:entry,
pid$1::kslfre:entry
/pid == $1/
{
printf("i=%d pid:::==%s:%s:%s:%s %x %x %x %d %x %x",i, probeprov, probemod, probefunc, probename,arg0,arg1,arg2,arg3,arg4,arg5);
i=i+1;
}

測試redo entries寫入redo log buffer

【session 1】:

查詢進程id

SQL> select spid from v$process where ADDR in (select PADDR from v$session where sid=(select sid from v$mystat where rownum=1));

SPID
------------------------------------------------------------------------
1358
SQL> create table orastar.t1(c1 varchar2(10),c2 varchar2(10));

Table created.

【session 2】:

啟動dtrace程序

./list_latch.d -x switchrate=10hz 1391 > list_latch.log

【session 1】:

生成redo entries:

SQL> insert into orastar.t1 values(1,1);
1 row created.

SQL> commit;
Commit complete.

分析過程

【生成latch地址】

cat list_latch.log |grep kslgetl|awk '{print "'''" "00000000" $6 "'''" ","}'|sort $1 | uniq

【查詢latch查詢】

set line 200
col name for a30
select lower(addr),LATCH#,NAME,HASH,GETS,WAIT_TIME from V$LATCH_CHILDREN where lower(addr) in (
'000000006000d178',
'000000006000d370',
'000000006000d7e8',
'000000006002dab8',
'000000006010df10',
'00000000bb137e80',
'00000000bb5d6868',
'00000000bb6d6a28',
'00000000bb6d8570',
'00000000bb7d8730',
'00000000bc593120',
'00000000bc6ba8f0',
'00000000bc6e7998',
'00000000bc6ea088',
'00000000bc6ea128',
'00000000bd6c4fe0',
'00000000bd6c50d8',
'00000000bd6c5338',
'00000000be263330',
'00000000be26f100',
'00000000be95ed98'
);
解密Oracle redo生成過程

redo生成過程說明

解密Oracle redo生成過程
  • server process在user memory space中產生redo entry

  • server process獲取redo copy latch

  • server process 獲取redo allocation latch

  • 在log buffer中分配空間

  • 釋放redo allocation latch

  • server process將redo entry信息寫入到log buffer中

  • 釋放redo copy latch

說明

以上內容為個人多次測試結果,由于個人原因,如有分析不足之處還請見諒及指正,謝謝。

參考文檔

《Oracle® Database Concepts 11g Release 2 (11.2) 》

原創文章,版權歸本文作者所有,如需轉載請注明出處

分享到:
標簽:Oracle redo
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定