賽迪網 > IT技術 數據庫 > 精彩更新
  IT資訊搜索
 
IT產品搜索

Oracle 9i數據庫的動態SGA特性探索 (1)

發佈時間:2007.01.27 04:57     來源:賽迪網技術社區    作者:yuanjin

Oracle9i數據庫在內部特性方面有著非常大的增強,其中一個最令Oracle DBA興奮的莫過於可以動態設置全部的Oracle SGA控制參數。與8i不同的是,原來都將初始化參數放到一個文本文件中,並且在數據庫啟動的時候讀取,Oracle9i卻可以通過ALTER DATABASE和ALTER SYSTEM命令復位全部的Oracle參數。

在9i前,如果想對Oracle數據庫的處理模式作一些改變的話,Oracle管理員必須關閉數據庫並且重新設置INIT.ORA文件中的參數,然後重新啟動數據庫。對於白天使用OLTP模式運作,晚上切換到數據倉庫模式的Oracle數據庫來說,這種重新設置是經常做的。

對於需要停止和重新啟動Oracle數據庫來修改參數來說,Oracle9i在這方面有明顯的加強,它令實現數據庫連續可用的目標變得更加簡單。

這種可以在Oracle SGA中動態增加和縮小不同區域的能力為Oracle數據庫管理員提供了一些令人激動的新特性。SGA每個區域的數據庫活動都可以獨立地被監視,而且也可以在Oracle數據庫中,根據使用的模式分配和取回資源。

我們首先來看以下Oracle9i數據庫和Oracle8i數據庫的一些區別。Oracle9i的一個最重要的加強是對於連接到Oracle數據庫的全部專用連接,都無需要擁有一個獨立的PGA空間。在Oracle8i中,對於專用的Oracle連接,我們都需要在記憶體中分配一個獨立的區域,稱為Program Global Area或者PGA。PGA空間中包含有SORT_AREA_SIZE和額外的RAM控制結構以用來維護連接任務的狀態。在Oracle9i中,PGA空間已經被Oracle SGA中的一個新記憶體空間代替,它是通過PGA_AGGREGATE_TARGET參數來設置的(見圖1)。

   

圖一

由於全部的記憶體使用都在Oracle SGA中分配,所以Oracle數據庫管理員可以將分配給Oracle伺服器的記憶體加大,可以分配至直到Orace伺服器全部記憶體的80%。Oracle建議將伺服器其餘的20%記憶體保留給作業系統的任務。

當用戶連接到Oracle9i數據庫時,排序工作所需要的記憶體將會在Oracle9i的PGA_AGGREGATE_TARGET區域中分配。這可以令Oracle9i比Oracle8i跑得更快,這是由於記憶體只在需要的期間才分配,並且在完成後就可以馬上釋放給其他連接的Oracle任務使用。

動態修改SGA區域

由於Oracle管理員現在可以增加和減少SGA的全部區域,因此我們可以快速地查看一下SGA區域是怎樣的,這樣我們就可以知道Oracle DBA如何監視這些區域的使用並且為Oracle數據庫更有效地重新分配記憶體。SGA的區域可以分為以下的部分。

數據緩衝(Data buffers)--Oracle9i擁有多達7個獨立的數據緩衝來保存磁片送來的數據塊。這些包含有傳統的KEEP pool,RECYCLE pool和DEFAULT pool,還有為每個Oracle數據庫支援的塊大小(2KB, 4KB, 8KB, 16KB和32KB) 而建立的獨立數據緩衝池(見圖2)。

   

圖2 獨立的Oracle9i數據緩衝

我們可以監視這7個數據緩衝區域的命中率,如果緩衝的命中率保持在百分之九十以上,我們可以減少分配給這些數據緩衝的記憶體,並且將它們重新分配給其他Oracle實例中需要額外記憶體的地方。

當數據緩衝的命中率(DBHR)下降時,我們可以將記憶體由一個數據緩衝中分離出來,並且將它重新分配給其他的數據緩衝(如圖3所示)。

  

圖3 在Oracle9i的數據緩衝之間重新分配記憶體

共用池(Shared pool)--Oracle9i的共用池有一個很重要的作用是分析和執行Oracle SQL語句。低的library cache命中率表示分配給library cache的記憶體不足,當shared pool需要對SQL語句進行大量的分析和執行時,Oracle9i的數據庫管理員可以使用ALTER SYSTEM來為shared pool加入額外的記憶體。

PGA區域--分配給PGA_AGGREGATE_TARGET的記憶體是用來讓Oracle連接維護與連接相關的資訊(例如遊標的狀態),並且對SQL的結果集進行排序。

Log buffer--對於Oracle redo log緩衝是否有大量活動,我們可以在log switch(日誌轉換)的頻率上看出來。Oracle管理員可以監視redo log區域的活動,並且在Oracle數據庫需要額外的記憶體為原始的緩衝區域服務時,動態地增加記憶體。

現在就讓我們來仔細看以下這些記憶體區域之間是如何作用的。

1 2 3 下一頁>>


[ 發表評論 ] 字體[  ] [ 列印 ] [ 進入博客 ] [ 進入論壇 ]  [ 推薦給朋友 ]
  相關文章
· 用最簡易方法搜尋Oracle的版本資訊 (01-25) · 用改變跟蹤技術加速Oracle遞增備份 (01-25)
· 在Oracle層次查詢中給SIBLINGS排序 (01-25) · Oracle 10g自動工作負載資訊庫剖析 (01-25)
· 甲骨文新推Oracle Linux管理套裝軟體 (01-25) · 防患于未然 給Oracle數據庫打補丁 (01-25)
· Oracle的CRM武器--讓數據圍著銀行轉 (01-24) · SQL Server和Oracle數據鎖定比較 (01-24)
· Oracle基於Client/Server的性能調整 (01-24) · Linux平台下監控Oracle數據庫性能 (01-24)
  客戶需求反饋表
* 姓  名:
更多資料  了解方案  認識廠商
* 單位名稱:
* 聯繫電話:
* 電子郵件:
  賽迪推薦  
  手機·資費 ·新品·導購·評測·手機資費·寬帶
手機搜索  諾基亞 N73 MOTO Z6
  IT產品 ·筆記本·臺式機·伺服器·列印·投影
IT產品搜索 
  IT技術 ·開發·網管·安全·數據庫·作業系統
  博客·論壇 ·曾劍秋·項立剛·Java學習·網管