Oracle知識整理《DBA的思想天空》
Inventory Oracle安裝工具OUI用來管理Oracle安裝目錄的 Oracle的參數檔案,啟動後按照下面的順序讀取參數檔案,如果讀取失敗,啟動資料庫 失敗:1 $ORACLE_HOME/dbs/SPFILE.ORA2 $ORACLE_HOME/dbs/spfile.ora3 $ORACLE_HOME/dbs/init.ora 資料庫的nomount階段:1 讀取參數檔案2 分配共用記憶體3 啟動進程 Mount階段:1 讀取控制檔案2 進行校正 oracle的控制檔案包括:1 資料庫的物理結構2 資料檔案3 REDO LOG 線上記錄檔:解決了資料庫執行個體突然宕機或伺服器宕機的系統復原問題 後台進程:1 DBWR 資料庫寫入操作2 LGWR 日誌寫入程式3 CKPT 檢查點4 SMON 系統監控5 PMON 進程監控6 ARCH 歸檔7 RECO 恢複8 LCKn 封鎖9 Dnnn 調度進程10 Snnn 伺服器 DB Cache1 DB Cache 是以bock為單位組織的緩衝區,不同大小的BLOCK對應不同的緩衝區參數2 DB Cache的命中率越高,訪問效能就越好3 Cache中的資料區塊通過散列演算法實現4 每個鏈上的buffers數量,最佳的情況是每個鏈上只有一個buffer5 DBWR進程式控制制髒資料寫入6 在DB Cache,同一個資料區塊中可能存在多個版本的資料7 大表的掃描,熱塊衝突都可能導致閂鎖的爭用 引入tch計數器,避免LRU鏈上頻繁移動 LRU鏈上搜尋達到最大深、LRU-W上沒有足夠的clean buffers都會觸發標記位,使得DBWR進程講髒資料寫入磁碟 幾個重要的資料鏈:1 LRU list普通的LRU鏈2 LRU-AUX list 被確認的clean的鏈,包括DBWR已經寫迴文件的 資料區塊和乾淨快3 LRU-XO list 重用對象鏈4 LRU-XR list CKPT搜尋這些BUFFER,將髒資料寫入該鏈,再由DBWR寫入磁碟 閂鎖爭用:1 熱塊衝突2 資料庫在某個時間段出現大量的資料區塊掃描、熱鏈 使用keep pool存放大表,可以降低物理讀,改善cache命中率 使用owi觀點和時間模型分析,協助分析資料庫效能 DB cache命中率低,意味著更多的物理IO、更多的閂鎖使用、較低的效率。RAC中,更多的執行個體間通訊訊息 DB cache調優,注意 free buffere waits \ writes complete waits兩個效能指標 SGA包括:1 資料結構部分 fixed size 2 資料區塊緩衝區 database buffers3 redo log緩衝區 redo buffers4 共用池 variable size 永久使用的共用記憶體:進程資訊資料、會話資訊資料、特殊用途的記憶體段 隨著共用池片段化加劇:產生ORA-4031錯誤1 加大初始的分配值2 每次擴充一個組 共用池內部結構:1 PERMANENT2 FREEABLE3 RECERATEABLE4 FREEABLE WITH MARK 通過內部視圖 X$KSMSP監控共用池片段的情況 較大的共用池會帶來一定的系統開銷共用池閂鎖競爭也會增加定期重新整理共��池會有助於保持共用池效能的穩定 共用池相關閂鎖的平均等待時間、逾時的次數---判斷共用池片段化程度 遊標:一個父遊標,多個子遊標 使用者的不同,通過一個SQL得到的結果就不同,因此不能共用;執行計畫不同,也不可以共用 硬解析:執行SQL時,SQL已經不再共用池中,會產生硬解析。首先分配共用池空間,建立父遊標,建立子遊標軟軟解析:父遊標存在,子遊標也存在軟解析:父遊標存在,子遊標不可共用 遊標共用技術ACS 遊標不會馬上關閉,會先放在遊標緩衝中,等待回話完成後,在關閉 OPEN_CURSORS會話開啟的遊標數量SESSION_CACHED_CURSORS回話緩衝,主要功能:將會話中的常用的SQL放入UGA中的會話緩衝區中,以便下次調用 CURSOR_SPACE_FOR_TIME 當父遊標被開啟的時候,所有子遊標及其相關聯的對象全部被鎖住,從而確保遊標相關的資訊都是一致的
DBA的思想天空:感悟Oracle資料庫本質 高清晰PDF 下載: