首先,咱們來了解一下Oracle的內存結構,以下:html

關於Oracle的內存結構,詳情請查看:【趙強老師】Oracle數據庫的內存結構數據庫
(一)PGA的組成結構
PGA主要由如下三部分組成:服務器
- 私有SQL區(Private SQL Area):私有SQL區包含了綁定變量值和運行時期內存結構信息等數據。
- 遊標和SQL區(Cursors and SQL Areas):爲打開遊標和執行SQL提供必要的資源和空間內存
- 會話內存(Session Memory):會話內存是一段用於保存會話變量(如登陸信息)和其餘預會話相關信息的內存。對於共享服務器模式下,會話內存是共享的,而不是私有的。
(二)PGA相關的數據字典
- V$PGASTAT:存儲着pga使用狀況的一些信息,並在實例啓動後,自動收集pga的實用信息。
- V$PGA_TARGET_ADVICE:這個視圖是能夠顯示PGA優化建議器的估算預測結果,它顯示了在各類PGA_AGGREGATE_TARGET值時,V$PGASTAT可能會顯示的PGA性能統計數據。
(三)PGA與鏈接創建的過程
以下圖所示。客戶端先從tnsnames.ora文件中獲取數據庫服務器所在的IP、端口號、使用協議、服務名等信息,而後鏈接到數據庫的監聽程序,監聽判斷用戶請求的服務名是否有效,若有效則請求服務器後臺進程建立一個服務器進程,並給其分配PGA,以後監聽將建立好的服務器程序的端口號和地址發送給用戶進程,隨後用戶進程與監聽的鏈接斷開。用戶進程就能夠根據信息鏈接到服務器進程,服務器進程對用戶進程進行身份驗證,一般是輸入帳號密碼,服務器進程將帳號密碼與緩衝區的數據字典中的內容進行匹配,如匹配成功則會話創建。性能
