Oracle

如何為某些目標值配置自動記憶體管理?

  • October 3, 2021

我對 Oracle 數據庫配置有點困惑。

我的伺服器:

  • 作業系統:Windows Server 2012 R2 64bit
  • 記憶體:40GB
  • 甲骨文:甲骨文數據庫 12c (12.1.0.2.0) 64 位

我的目標:

  • Oracle 應使用 32GB 的 40GB RAM
  • 應該啟動 AMM(我不想自己配置所有內容)

目前參數:

SQL> SHOW PARAMETER SGA
NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------
lock_sga                             boolean     FALSE
pre_page_sga                         boolean     TRUE
sga_max_size                         big integer 20G
sga_target                           big integer 0


SQL> SHOW PARAMETER PGA
NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------
pga_aggregate_limit                  big integer 9827M
pga_aggregate_target                 big integer 8G


SQL> SHOW PARAMETER MEMORY
NAME                                 TYPE        VALUE
------------------------------------ ----------- ---------
memory_max_target                    big integer 32G
memory_target                        big integer 32G
  1. 我應該將sga_max_sizeandpga_aggregate_target設置為零嗎?
  2. 其他所有配置是否正確?

SGA_MAX_SIZE使用 AMM 時不應設置參數。它修復了 SGA 大小。

如果pga_aggregate_target在使用 AMM 時設置為非零值,則為 PGA 大小設置下限。這通常不是必需的。

參數pga_aggregate_limit設置 PGA 上限。首先,將其保留為預設值。

*Oracle® 數據庫,管理員指南,12c 第 1 版 (12.1)*對此進行了描述

啟用自動記憶體管理

設置 MEMORY_TARGET 後,SGA_TARGET 設置成為 SGA 的最小大小,而 PGA_AGGREGATE_TARGET 設置成為實例 PGA 的最小大小。如圖所示,通過將這兩個都設置為零,沒有最小值,只要它們的總和小於或等於 MEMORY_TARGET 設置,SGA 和實例 PGA 就可以根據需要增長。SQL 工作區的大小仍然是自動的。

您可以省略將 SGA_TARGET 和 PGA_AGGREGATE_TARGET 參數值設置為零的語句,並將其中一個或兩個值保留為正數。在這種情況下,這些值充當 SGA 或實例 PGA 大小的最小值。

此外,您可以使用 PGA_AGGREGATE_LIMIT 初始化參數為 PGA 記憶體設置實例範圍的硬限制。無論您是否使用自動記憶體管理,您都可以設置 PGA_AGGREGATE_LIMIT。請參閱“使用自動 PGA 記憶體管理”。

引用自:https://dba.stackexchange.com/questions/300288