12c 新特性之 Limiting the Size of the Program Global Area
在自動PGA管理模式下,Oracle使用動態引數PGA_ARRGREATE_TARGET來控制PGA中Work Areas大小的分配。不過,PGA記憶體的分配是可以超過PGA_ARRGREATE_TARGET設定的值的,原因如下:
1.引數PGA_ARRGREATE_TARGET實際上只作為一個目標,而不是實際的限制。
2.引數PGA_ARRGREATE_TARGET僅僅能夠限制那些可調的記憶體(work areas)。
PGA記憶體分配過多可能導致伺服器記憶體不足進而產生換頁操作,如果發生大量換頁,系統將變得響應緩慢效能不穩,如果是RAC還可能引起腦裂。從12c開始,如果遇到這種情況,可以考慮使用PGA_AGGREGATE_LIMIT引數來徹底限制PGA記憶體的過度分配問題。
引數PGA_AGGREGATE_LIMIT允許你對PGA記憶體的使用指定一個硬性的限制。如果PGA記憶體的使用超過了引數設定的值,Oracle會根據下面的順序中止或終結耗費了大部分不可調節PGA記憶體的程式或會話:
1.耗費了大部分不可調節PGA記憶體的會話呼叫將被中止(注意是會話呼叫被中止,而不是會話或程式)。
2.在上面的情況被處理後,如果PGA記憶體仍然超過PGA_AGGREGATE_LIMIT值,則耗費大部分PGA記憶體的程式和會話將被終止(相當於被kill掉)。
Oracle會將並行執行的查詢作為一個整體單位進行處理。
預設情況下,PGA_AGGREGATE_LIMIT引數至少被設定為大於2GB,或者PGA_ARRGREATE_TARGET值的2倍,或者PROCESSES引數值的3倍,三者之中取最大值。無論怎樣,它都不應該超過實體記憶體減去SGA記憶體大小的120%,該引數的預設值會被記錄在alert log中。
無論是否使用自動記憶體管理,你都可以設定PGA_AGGREGATE_LIMIT,該引數是動態引數,修改後即生效,不需要重啟資料庫。
PGA_AGGREGATE_LIMIT值可以是K,M,G。設定為0則禁止PGA記憶體分配的硬限制。
Example:
ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=12G;
以下內容來自我的測試環境,pga_aggregate_target設定為500M,根據上面的演算法,500M*2=1000M,300*3=900M。 這兩個條件均還沒有超過2G,所以pga_aggregate_limit預設值為2G。
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit big integer 2G
pga_aggregate_target big integer 500M
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 300
現在我將processes引數擴大至1000,可以看到根據演算法pga_aggregate_limit被修改成了3GB。
SQL> alter system set processes=1000 scope=spfile;
System altered.
SQL> startup force
ORACLE instance started.
Total System Global Area 2147483648 bytes
Fixed Size 3712904 bytes
Variable Size 1056966776 bytes
Database Buffers 1073741824 bytes
Redo Buffers 13062144 bytes
Database mounted.
Database opened.
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 1000
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit big integer 3000M
pga_aggregate_target big integer 500M
再來看我的另一個測試環境,由於pga_aggregate_target值較大,所以該引數預設被設定成了pga_aggregate_target的2倍大小。
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit big integer 12880M
pga_aggregate_target big integer 6440M
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 300
結論就是pga_aggregate_limit引數的預設值取自2G,pga_aggregate_target*2,processes*3這三個值中的最大值。
原文來自
Oracle Database Performance Tuning Guide-->Tuning the Program Global Area-->Limiting the Size of the Program Global Area
1.引數PGA_ARRGREATE_TARGET實際上只作為一個目標,而不是實際的限制。
2.引數PGA_ARRGREATE_TARGET僅僅能夠限制那些可調的記憶體(work areas)。
PGA記憶體分配過多可能導致伺服器記憶體不足進而產生換頁操作,如果發生大量換頁,系統將變得響應緩慢效能不穩,如果是RAC還可能引起腦裂。從12c開始,如果遇到這種情況,可以考慮使用PGA_AGGREGATE_LIMIT引數來徹底限制PGA記憶體的過度分配問題。
引數PGA_AGGREGATE_LIMIT允許你對PGA記憶體的使用指定一個硬性的限制。如果PGA記憶體的使用超過了引數設定的值,Oracle會根據下面的順序中止或終結耗費了大部分不可調節PGA記憶體的程式或會話:
1.耗費了大部分不可調節PGA記憶體的會話呼叫將被中止(注意是會話呼叫被中止,而不是會話或程式)。
2.在上面的情況被處理後,如果PGA記憶體仍然超過PGA_AGGREGATE_LIMIT值,則耗費大部分PGA記憶體的程式和會話將被終止(相當於被kill掉)。
Oracle會將並行執行的查詢作為一個整體單位進行處理。
預設情況下,PGA_AGGREGATE_LIMIT引數至少被設定為大於2GB,或者PGA_ARRGREATE_TARGET值的2倍,或者PROCESSES引數值的3倍,三者之中取最大值。無論怎樣,它都不應該超過實體記憶體減去SGA記憶體大小的120%,該引數的預設值會被記錄在alert log中。
無論是否使用自動記憶體管理,你都可以設定PGA_AGGREGATE_LIMIT,該引數是動態引數,修改後即生效,不需要重啟資料庫。
PGA_AGGREGATE_LIMIT值可以是K,M,G。設定為0則禁止PGA記憶體分配的硬限制。
Example:
ALTER SYSTEM SET PGA_AGGREGATE_LIMIT=12G;
以下內容來自我的測試環境,pga_aggregate_target設定為500M,根據上面的演算法,500M*2=1000M,300*3=900M。 這兩個條件均還沒有超過2G,所以pga_aggregate_limit預設值為2G。
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit big integer 2G
pga_aggregate_target big integer 500M
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 300
現在我將processes引數擴大至1000,可以看到根據演算法pga_aggregate_limit被修改成了3GB。
SQL> alter system set processes=1000 scope=spfile;
System altered.
SQL> startup force
ORACLE instance started.
Total System Global Area 2147483648 bytes
Fixed Size 3712904 bytes
Variable Size 1056966776 bytes
Database Buffers 1073741824 bytes
Redo Buffers 13062144 bytes
Database mounted.
Database opened.
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 1000
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit big integer 3000M
pga_aggregate_target big integer 500M
再來看我的另一個測試環境,由於pga_aggregate_target值較大,所以該引數預設被設定成了pga_aggregate_target的2倍大小。
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_limit big integer 12880M
pga_aggregate_target big integer 6440M
SQL> show parameter processes
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 300
結論就是pga_aggregate_limit引數的預設值取自2G,pga_aggregate_target*2,processes*3這三個值中的最大值。
原文來自
Oracle Database Performance Tuning Guide-->Tuning the Program Global Area-->Limiting the Size of the Program Global Area
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26753337/viewspace-2121957/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 12c RMAN新特性之Recover Table
- 【Oracle】排序與sort_area_sizeOracle排序
- 【12c】12c RMAN新特性之recover table(表級別恢復)
- Oracle 12c新特性--ASMFD(ASM Filter Driver)特性OracleASMFilter
- Oracle 12C新特性-History命令Oracle
- Oracle 12C新特性In-MemoryOracle
- Oracle 12c 兩個新特性Oracle
- lockdown profile 12c之後的許可權控制新特性
- Oracle 12c 新特性之臨時Undo--temp_undo_enabledOracle
- Oracle 12C新特性-RMAN恢復表Oracle
- Oracle 12c新特性---Rapid Home Provisioning (RHP)OracleAPI
- Oracle 12C新特性-資料泵新引數(LOGTIME)Oracle
- [20190718]12c rman新特性 表恢復.txt
- Oracle資料庫work area size & pga_aggregate_target引數Oracle資料庫
- 【12c】12c RMAN新特性之通過網路遠端恢復資料庫(RESTORE/Recover from Service)資料庫REST
- 12c新特性,線上move資料檔案
- Oracle 12C新特性-資料泵新引數(VIEWS_AS_TABLES)OracleView
- 12C新特性___In-Memory列式儲存的總結
- 【12c】12c RMAN新特性之UNTIL AVAILABLE REDO--自動恢復到REDO終點的步驟簡化AI
- What is rate limiting?MIT
- 【DATAGUARD】Data Guard 12C 新特性:Far Sync Standby (Doc ID 2179719.1)
- 12c DG新特性 - Active Data Guard Far Sync (Doc ID 2179719.1)
- Java 10 新特性之 AppCDSJavaAPP
- Oracle:On ROWNUM and Limiting ResultsOracleMIT
- HTML5 新特性之 WebsocketHTMLWeb
- JDK8新特性之stream()JDK
- MySQL 8 新特性之Clone PluginMySqlPlugin
- MySQL 8 新特性之Invisible IndexesMySqlIndex
- Java8新特性之:OptionalJava
- Java 8 新特性之方法引用Java
- IOS11新特性之maskedCornersiOS
- iOS 8 之後UINavigationController新特性iOSUINavigationController
- ES6 新特性之SymbolSymbol
- Oracle 12C R2新特性-本地UNDO模式(LOCAL_UNDO_ENABLED)Oracle模式
- ORACLE 12C 優化器的一些新特性總結(二)Oracle優化
- ORACLE 12C 優化器的一些新特性總結(一)Oracle優化
- [20181026]12c Attribute Clustering特性.txt
- 開心檔之Java 9 新特性Java
- JDK 9新特性之Flow API 初探JDKAPI