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內存的會話或進程優化