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.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97