PGA全稱為Program Global Area,即程式全局區 它是一塊包含一個服務進程的數據和控制信息的記憶體區域,是 Oracle 在一個服務進程啟動是創建的,是非共用的 一個Oracle進程擁有一個PGA記憶體區,一個 PGA也只能被擁有它的那個服務進程所訪問,只有這個進程中的Oracle代碼才 ...
PGA全稱為Program Global Area,即程式全局區
它是一塊包含一個服務進程的數據和控制信息的記憶體區域,是 Oracle 在一個服務進程啟動是創建的,是非共用的
一個Oracle進程擁有一個PGA記憶體區,一個 PGA也只能被擁有它的那個服務進程所訪問,只有這個進程中的Oracle代碼才能讀寫它
因此,PGA中的結構是不需要Latch保護的
可設置所有服務進程的PGA記憶體總數受到實例分配的總體PGA(Aggregated PGA)限制
在專有伺服器(Dedicated Server)模式下, Oracle會為每個會話啟動一個Oracle進程
在多線程服務(Multi-Thread Server MTS)模式下,由多個會話共用通一個Oracle服務進程
PGA中包含了關於進程使用到的操作系統資源的信息,以及一些關於進程狀態的信息
而關於進程使用的Oracle共用資源信息則是在SGA中。這樣做可以使在進程以外中止時,能夠及時釋放和清除這些資源
12c引入了新的參數 PGA_AGGREGATE_LIMIT 以允許資料庫管理員限制 PGA記憶體使用總量
使用PGA_AGGREGATE_LIMIT初始化參數可以為PGA記憶體使用量指定硬性限制
一個資料庫實例運行時,會有多個會話或進程,它們都有各自使用的PGA記憶體,而有些會話或進程所使用的PGA記憶體是不可優化的
當資料庫實例的PGA運行總記憶體超過了PGA_AGGREGATE_LIMIT值,則Oracle會按特定的順序,中斷或者終止那些使用了最多不可優化的PGA記憶體的會話或進程