• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • oracle體系結構學習筆記

    發表于:2012-10-26來源:Csdn作者:linwaterbin點擊數: 標簽:oracle
    體系結構和備份恢復原理 1 oracle database 最重要的是online redo log 類比法 controlfile :公司高管 datafile :生產車間 online redo log:財務處

      體系結構和備份恢復原理

      1 oracle database 最重要的是online redo log

      類比法

      controlfile :公司高管

      datafile :生產車間

      online redo log:財務處

      注釋:

      system表空間是第一生產車間;

      當公司高管換了,財務處也需要換;

      2 shared pool主要包括:

      library cache:放代碼(sql,pl/sql,java)

      data dictionary cache:放數據字典

      注釋:

      在空間分配上,數據字典是男孩,代碼是女孩,oracle server有重男輕女思想,若cache命中率低,要看的是女孩,而非男孩。因為會先給男孩喂奶水。

      最近最少使用到代碼會被銷隱掉,否則,不斷的代碼進來,shared pool會內存不足。

      3 large pool

      下列場景需要用到large pool:

      用rman備份與恢復;

      并行sql;

      異步I/O;

      共享服務器模式;

      注釋:

      large pool是shared pool的助理,若沒有large pool,則會池遷移到shared pool。

      4 java pool

      是個跑馬場,不是放java代碼的地方

      5 database buffer cache和redo log buffer

      1)二者關系:

      redo log buffer 畫家(描述者)

      database buffer cache 模特(被描述者)

      2)LGWR只能有一個;DBWR可以有多個

      3)oracle愛寫日志,不愛寫數據塊。因為日志的單位是項(200個字節左右),而數據塊的單位是塊。

      4)redo log buffer要么全寫,要么全不寫;而database buffer cache則悠著點,一次寫一點

      5)什么時候寫日志?

      每3秒寫

      1/3滿寫

      commit的時候寫

      n M臟數據的時候寫

      DBWR寫之前寫

      6)什么時候寫數據塊?

      完全檢查點事件發生

      超時發生(增量檢查點)

      臟塊達到域值(增量檢查點)

      沒有free buffer的時候(對上面一條到補充)

      6 oracle是個交易系統,其交易發生在database buffer cache里。

      具體交易:

      “讀”:server process去data dictionary cache查詢,將需要的讀到database buffer cache,然后,在PGA構造游標(結果集的指針),每一根指針都指向一個rowid,如果需要排序,連接,一致性讀,則只需要對指針進行操作。所以,PGA是用戶最直接的使用體驗。

      “改”: 申請TADDR

      記日志

      動兩邊事務槽,加行頭鎖

      “寫”:檢查點進程計算工作負載,來定檢查點,在檢查點時,發生檢查點事件,當檢查點事件發生時逼著DBWRn按塊第一次變臟的順序寫出一部份,由于這一部分臟塊的寫出,會在日志文件產生檢查點位置。

      7 RBA指針后有日志項,原因有二:

      1)整個表空間級下線

      2)按塊第一次變臟的順序寫

      8 用戶不直接和oracle server打交道,而是和server process扛上了。

      類比:

      server process 導購小姐

      user process 客人

      9 “一根骨頭掛點肉”

      這俗語可以形容server process 和PGA的關系

      骨頭:server process

      肉 :PGA

      “一條繩上的兩個螞蚱”

      螞蚱:SADDR,TADDR

      這話是說,新值在寫的時候,舊值會跟著被寫,同呼吸,共命運。所以,讀上來8k,寫下去便是16k,總共I/O為24k。

      10 透過現象看本質

      提交的本質:釋放鎖,寫日志,事務槽進入倒計時

      正常關機的本質:

      1)關閉JAVA進程(oracle大戰java)

      2)寫檢查點

      a)將current_scn凍結

      b)把data block寫下

      c)讓checkpoint_change#等于current_scn

      注釋:

      select resetlogs_change# a,checkpoint_change# b,current_scn c

      from v$database

      其中,a

      a:建庫的時間原點

      b:寫數據塊的界,寫后,內存中的所有數據塊多比b來得大。所以,增量檢查點這個會被延遲標識,因為,還沒有全部下來。

      11 system表空間

      1)存放數據字典表

      2)包,過程,函數和觸發器等pl/sql對象

      12 sysaux表空間

      1)90%用來收集工作負載

      2)10%存放sysman到東西

      類比:

      生活中,水表,電表,煤氣表,這些表上面的度數,都是“逝者如斯夫”,為了比較,合理開支,需要抄表。

      13 buffer的四種狀態

      free:寫下去的時候

      clean:剛讀上來

      pinned:特殊的clean,被加了latch,正要用

      dirty:被改了

      14 RBA指針的碎碎念

      方向:總是無縫下移

      出生地:控制文件

      指向地:日志文件

      過帳:對應的數據塊已寫到數據文件中

      active :被RBA覆蓋的日志(RBA只有一根)

      完全檢查點會直接把RBA干到重做日志組的最后一條

      15 斷電本質:SGA突然沒有了,實力崩潰

      與斷電本質一致的是:

      干掉SMON進程(kill -9 PID)

      shutdown abort

      16 在mount階段,由SMON去讀控制文件,并比較:

      1)上次關機的SCN A

      上次關機的checkpoint B

      2)日志組最后一條的記錄 C

      RBA指針的位置 D

      若正常關機,則 A=B C=D

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>