Oracle基礎知識--實例及其他

  1.實例

 從簡單的角度來描述,可以說一個ORACLE實例(Instance)是由一定的內存與後臺進程組成,而數據庫(Database)指物理文件。下面就SGA、五個必須的ORACLE後臺進程進行簡單的介紹:

 SGA(System Global Area 也稱 Shared Global Area) 主要由以下三部分組成:
 共享池(Shared Pool) 主要用來存儲最近執行過的SQL語句(可通過v$librarycache查看)和最近使用過的數據字典(可通過v$rowcache查看)的數據;它主要通過INIT.ORA文件中的shared_pool_size和shared_pool_reserved_size兩個參數來設置。
 數據高速緩存區(Data Buffer Cache) 主要用來存儲最近使用過的數據,可能是要寫到數據文件的,也可能是從數據文件讀取的;它主要通過INIT.ORA文件中db_block_buffers參數來設置;Data Buffer的大小=db_block_buffers* db_block_size;
 重做日誌緩存區(Redo Log Buffer) 主要存儲服務進程和後臺進程的變化信息;它主要通過INIT.ORA文件中的log_buffer參數來設置; Redo Log Buffer的大小=log_buffer* db_block_size;
 當然,SGA不僅僅只是上面的三部分,還包括如Java pool(用來存儲java代碼)、Large pool(供不是和SQL直接相關的進程使用,如:當數據備份或恢復操作時,RMAN backup用作磁盤I/O緩存器;Parallel時用作消息緩存器;MTS回話內存)等部分,我們可以通過v$sysstat、v$rowcache、v$librarycache等系統視圖來監控SGA。

 五個必須的ORACLE後臺進程SMON、PMON、DBWn、CKPT、LGWR:
 系統監控進程(System Monitor SMON) 在數據庫系統啓動時執行恢復工作的強制性進程
 進程監控進程(Process Monitor PMON) 用於恢復失敗的數據庫用戶的強制性進程,它先獲取失敗用戶的標識,釋放該用戶佔有的所有數據庫資源。
 數據庫寫入進程(Database Writer, DBWR) 它將修改後的數據塊寫回數據庫文件。日誌寫入進程(Log Writer , LGWR) 一個專門用於將重做項寫入重做日誌的進程。
 校驗點進程(Checkpoint Process CKPT ) ORACLE把內存中髒數據塊中的信息寫回磁盤的判斷進程。

 2.存儲參數規則小結

 (1)PCTUSED較高意味着相對較滿的數據塊會被放置到空閒列表中,從而有效的重複使用數據塊的空間,但會導致I/O消耗。PCTUSED低意味着在一個數據塊快空的時候才被放置到空閒列表中,數據塊一次能接受很多的記錄,因此可以減少I/O消耗,提高性能。
 (2)PCTFREE的值較大意味着數據塊沒有被利用多少就從空閒列表中斷開連接,不利於數據塊的充分使用。PCTFREE過小的結果是,在更新時可能會出現數據記錄遷移(Migration)的情況。(注:數據記錄遷移(Migration)是指記錄在是UPDATE操作擴展了一個VARCHAR2 類型的列或BLOB列後,PCTFREE參數所指定的空間不夠擴展,從而記錄被ORACLE強制遷移到新的數據塊,發生這種情況將較嚴重的影響 ORACLE的性能,出現更新緩慢)。

 3.關於物理文件

 數據庫的主要物理文件可以通過以下四個視圖查看得到:v$datafile,v$logfile,v$controlfile,v$tempfile;
 Oracle數據庫的物理文件可以設置成自動增長的類型, 這樣數據庫在需要更多空間時, 物理文件會按設定的增長量自動增長到指定的最大值. 這樣會有一些好處: 保證不會因爲分配數據區域(extent)失敗而終止應用. 但如果沒有設定這個最大值, 它將會是一個非常大的數字. 數據塊大小不同, 其最大值也不一樣. 因爲Oracle 的物理文件最大隻允許4194303個數據塊(datablock).  

 4.temp表空間

 通常使用temp表空間的大部分都是sql引起的:
 order by
 group by
 union
 distinct
 索引創建
 索引重建
 除了索引相關外,其它都是SQL,如果SQL優化後,排序如果儘量在內存中完成(與Sort_area_size有關),那麼temp就不會漲得那麼大啦。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章