首先,我們來瞭解一下Oracle的記憶體結構,如下: 關於Oracle的記憶體結構,詳情請查看:【趙強老師】Oracle資料庫的記憶體結構 (一)PGA的組成結構 PGA主要由以下三部分組成: 私有SQL區(Private SQL Area):私有SQL區包含了綁定變數值和運行時期記憶體結構信息等數據。 游 ...
首先,我們來瞭解一下Oracle的記憶體結構,如下:
關於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,之後監聽將創建好的伺服器程式的埠號和地址發送給用戶進程,隨後用戶進程與監聽的連接斷開。用戶進程就可以根據信息連接到伺服器進程,伺服器進程對用戶進程進行身份驗證,通常是輸入賬號密碼,伺服器進程將賬號密碼與緩衝區的數據字典中的內容進行匹配,如匹配成功則會話建立。