Oracle

Oracle 11.2 使用的記憶體太少

  • July 13, 2014

我將伺服器從 Oracle 10g 更改為 11.2g 大約有一年時間(並且還將硬體和 Windows 從 2003R2 更改為 2012)。

問題是 CPU 功率增加了一倍以上,記憶體大約是 3 倍,磁碟速度更快,我的新伺服器比以前慢!!!我正在調查它,但擁有標準版一個許可證我沒有診斷包或其他東西……

聽起來我很糟糕的一件事是,在舊伺服器上,如果我將 SGA+PGA 記憶體設置為 16GB,oracle 會立即分配所有 16GB,我也可以在 Windows 任務管理器中檢查它。現在,我的 memory_target = memory_max_target = 20GB,但在 Windows 任務管理器中,oracle 使用的記憶體不超過 10GB。這怎麼可能?我可以強制它使用更多的記憶體嗎?

這是我的 pfile

SICOR .__ DB_CACHE_SIZE = 5796528128

SICOR .__ JAVA_POOL_SIZE = 58720256 SICOR .__ LARGE_POOL_SIZE = 12582912 SICOR

.__ PGA_AGGREGATE_TARGET =

12377391104

SICOR .__ SGA_TARGET = 9097445376

SICOR .__ shared_io_pool_size = 0 SICOR .__ SHARED_POOL_SIZE

= 3154116608

SICOR .__ STREAMS_POOL_SIZE = 25165824

  • .db_block_size = 8192

  • .distributed_lock_timeout = 300

*.job_queue_processes=1000

*.memory_max_target=21474836480

*.memory_target=21474836480

*.open_cursors=1500

*.parallel_automatic_tuning=FALSE

*.parallel_max_servers=80

*.parallel_servers_target=32

*.parallel_threads_per_cpu

=0 *.pga_11200.target

=

*.sessions=1325

*.sga_max_size=12884901888

*.sga_target=0

這是從 1 開始的 DB Cache Advice 的查詢

5536____682312__1_______39052864

5984____737528__0,9056__35366617

6528____804576__0,8461__33043015

7072____871624__0,8149__31825392

7616____938672__0,789___30813474

8160____1005720_0,766___29912665

8704____1072768_0,7442__29064260

9248____1139816_0,7219__28193363

9792____1206864_0,6997__27324768

10336___1273912_0,6778__26468501

10880___1340960_0,6558__25610722

所以看起來加倍記憶體會顯著提高性能..

如何設置它以使用至少 24-28GB 的​​記憶體?謝謝

預設情況下,Oracle 不會預先分頁 SGA,這意味著當您啟動數據庫實例時,它最初不會佔用所有記憶體,直到它需要它。

請參閱http://docs.oracle.com/cd/E11882_01/server.112/e40402/initparams201.htm#REFRN10174

我會試試這個:

  1. 設置 memory_target = memory_max_target = 24GB。
  2. 去掉 init 參數中的 sga_max_size、sga_target、pga_aggregate_target,除非某些瘋狂的供應商應用程序特別需要(換句話說,讓 11g AMM 來代替它)。
  3. 還要從 pfile 中清除 db_cache_size。您基本上將記憶體限制為 5.4 GB。
  4. 反彈實例。
  5. 用幾個小時/幾天的工作負載來擊敗它(SQL 查詢、收集統計資訊、重建索引、RMAN 備份、expdp)。
  6. 檢查任務管理器的記憶體使用率。

取消設置 sga_max_size。

sicor.__db_cache_size是自動記憶體管理 (AMM) 使用的最後一個值。雖然您可以從 pfile 中清除它,但 Oracle 會將其放回原處。您在啟動時看到的 9GB 記憶體分配是sicor.__sga_target(9097445376),它應該大致是這些sicor.__*_size值的總和。

即使設置了sga_*,pga_*等參數 unset 和 pre_page_sga 設置,Oracle 也不會在啟動時分配 memory_max_target。一些空間是為 PGA 保留的,直到需要時才分配。

您還應該刪除 pga_aggregate_target=0 ,除非您特別需要這樣設置:

將 PGA_AGGREGATE_TARGET 設置為 0 會自動將 WORKAREA_SIZE_POLICY 參數設置為 MANUAL。這意味著使用 *_AREA_SIZE 參數調整 SQL 工作區的大小。

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