程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle9i的動態SGA特性探索

Oracle9i的動態SGA特性探索

編輯:關於Oracle數據庫

  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)。

  *********圖一************

  (Oracle8i與Oracle9i在內存分配上的區別)

  由於全部的內存使用都在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數據庫支持的塊大小(2K, 4K, 8K, 16K和32K) 而建立的獨立數據緩沖池(見圖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
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved