Oracle 9i 的增強型記憶體使用率檢視表

2021-08-29 16:38:27 字數 3622 閱讀 8878

增強了的v$process檢視表<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

oracle已經通過增強v$process檢視表來實現記憶體監控。v$process檢視表裡的新資料列允許你顯示當前所有oracle程序的程式全域性區(pga)區域的細節。pga是記憶體裡的乙個專門區域,被單獨的程序用來執行記憶體密集型函式,例如排序。

v$process檢視表的三個新資料列包括pga_used_memory、pga_allocated_memory和pga_max_memory。從這些刻度表裡,你可以看到oracle環境裡各個後台程序的實際記憶體利用率,還可以檢視每個到資料庫的連線所需要的記憶體。為了說明這個問題,考慮一下下面這個查詢:

col c1 heading 'program|name' format a40

col c2 heading 'pga|used|memory' format 999,999,999

col c3 heading 'pga|allocated|memory' format 999,999,999

col c4 heading 'pga|maximum|memory' format 999,999,999

select

program c1,pga_used_mem c2,pga_alloc_mem c3,pga_max_mem c4

from

v$process

order by

c4 desc;

各個程序所要使用的記憶體大小

在oracle9i裡檢視記憶體使用的真實值就是檢視各個程序的記憶體使用率。oracle9i現在有乙個共享的記憶體區域,叫做pga_aggregate_target。在使用oracle的多執行緒伺服器時,pga_aggregate_target引數的工作方法和oracle的大記憶體池相類似,只有乙個顯著的不同點。有了乙個共享記憶體區域,oracle的各個程序,在進行排序和散裂合併時,就可以不受限制地使用多達記憶體池總量5%的記憶體。這相對於oracle8i來說是個重大的改進,它原來要求每個pga區域的大小必須限制在sort_area_size初始化引數所設定的值裡。

oracle9i還提供了乙個叫做v$pgastat的新字典檢視表。v$pgastat檢視錶能顯示資料庫內每個記憶體區域內的記憶體使用率的總量。這些資訊可以告訴你記憶體使用率的峰值,還能允許你根據對系統的相對壓力來調整記憶體需求。以下是乙個簡單的對v$pgastat的查詢:

column name format a40

column value format 999,999,999

select name,value

from

v$pgastat

order by

value desc;

你可以看到pga_aggregate_target的值以及這個例項所使用的所有記憶體區域的峰值。現在我們再來看看最佳、單週期和多週期的記憶體運**況。

當oracle的程序需要進行操作時,例如排序或者散裂合併,它就到pga_aggregate_target區域裡的共享記憶體區里,嘗試取得足夠多的相互毗鄰的記憶體幀來執行操作。如果這個程序能夠立即取得這些記憶體幀,它就被標記為最優記憶體訪問。如果需要在單週期內通過pga_aggregate_target取得所需的記憶體,那麼記憶體分配就被標記為單週期。如果所有的記憶體都在使用中,那麼oracle也許就不得不通過pga_aggregate_target在多週期內取得記憶體,這叫做多週期。

記住:記憶體的速度是非常非常快的,絕大多數排序或者散裂合併都是在幾微秒內完成的。oracle允許單個程序最多使用pga_aggregate_target 5%的記憶體,並行操作最多可以被允許消耗pga記憶體池30%的記憶體。

多週期執行顯示了記憶體的不足,所以你總應該分配足夠的記憶體以保證至少有95%連線上了的任務能夠最佳地獲得記憶體。

你可以查詢這裡列出的v$sysstat檢視表來取得workarea執行的資訊:

col c1 heading 'workarea|profile' format a35

col c2 heading 'count' format 999,999,999

col c3 heading 'percentage' format 99

select name c1,cnt c2,decode(total, 0, 0, round(cnt*100/total)) c3

from

(select name,value cnt,(sum(value) over ()) total

from

v$sysstat

where

name like 'workarea exec%');

至少有95%的任務應該有最佳workarea運**況。在以上的輸出中,你可以看到所有的workarea運**況,它們能執行在最佳、單週期和多週期模式下。

這裡提供了和pga_aggregate_target區域大小相關的重要資訊。它還能指示出記憶體區域的過量分配。如果最佳workarea執行的百分比持續保持在98到100%,你就可以從pga_aggregate_target裡心安理得地「盜取」記憶體幀,並把它們分配到oracle sga(例如db_cache_size)的其他區域裡,那裡可能更需要記憶體資源。

檢視各個workareas

oracle還提供了資料字典檢視表,它能顯示sql宣告的執行計畫裡各個步驟所使用的記憶體大小。其價值對正確設定hash_area_size和其他記憶體密集引數的記憶體大小是不可估量的。

v$sql_workarea_active檢視表顯示了oracle9i資料庫裡各個workarea的記憶體使用數量。

而且,oracle提供了多個用來合併**的方法,每個都需要不同數量的記憶體。oracle9i sql優化器能夠分辨分類歸併聯合、巢狀迴圈合併、、散裂合併和星型合併方法。在有些情況下,散裂合併比分類歸併聯合執行得更快,但是散裂合併需要更多的記憶體資源和對hash_area_size引數更高階的設定。

以下是對v$sql_workarea_active查詢表的查詢:

select

to_number(decode(sid, 65535, null, sid)) sid,

operation_type operation,

trunc(work_area_size/1024) wsize,

trunc(expected_size/1024) esize,

trunc(actual_mem_used/1024) mem,

trunc(max_mem_used/1024) "max mem",

number_passes pass

from

v$sql_workarea_active

order by 1,2;

你可以看到sql執行每一步的記憶體使用數量。乙個sql宣告執行group by排序需要73 kb記憶體。你還可以看到執行散裂合併的兩個sql宣告的系統id(sid)。這些散裂合併分別使用了3到13 mb記憶體來建立記憶體中的散裂表。

乙個非常重要的工具

oracle

正在成為最靈活、最複雜的資料庫管理系統之一。資料庫元件的記憶體使用檢視表是管理你

oracle

資料庫非常重要的工具。有了它,

oracle

專家能夠更加容易地保證記憶體使用率的所有設定對所有應用程式都是最優的。

oracle 9i 服務的分類

sid 資料庫標識 home name oracle home名稱,如orahome92 orahome81 1 oracleservicesid 資料庫服務,這個服務會自動地啟動和停止資料庫。如果安裝了乙個資料庫,它的預設啟動型別為自動。服務程序為oracle.exe,引數檔案initsid.or...

Oracle9i管理的使用者

system 使用者 1.使用者密碼 system 使用者預設的密碼為 manager 2.使用者許可權 system 使用者具有 sysdba 許可權,即資料庫管理員許可權,包括。開啟資料庫伺服器 關閉資料庫伺服器 備份資料庫 恢復資料庫 日誌歸檔 會話限制 管理功能 建立資料庫 sys 使用者 ...

解除安裝oracle9i的步驟

1 開始 設定 控制面板 管理工具 服務 停止所有oracle服務。2 開始 程式 oracle orahome81 oracle installation products universal installer 卸裝所有oracle產品,但universal installer本身不能被刪除 5...