Memory

如何限制 Oracle 的記憶體使用?

  • November 20, 2020

我想使用Oracle的自動記憶體管理,限制在4GB左右。(過去的經驗表明,這對我的開發 PC 來說已經足夠了,而且更容易了解任何性能問題。)

我相信這些是要遵循的說明:

Oracle 12 自動記憶體管理

簡而言之,要啟用自動記憶體管理,請設置 memory_target 和(可選)memory_max_target。前一個參數應該是一個動態值,而後一個參數應該是一個更硬的限制,只能在停止/啟動數據庫時更改。

我將這些設置為 sysdba:

SQL> alter system set memory_target = 4G scope = spfile;

System altered.

SQL> alter system set memory_max_target = 8G scope = spfile;

System altered.

並檢查值

SQL> show parameter target;

範圍可以只是目前正常執行時間的“記憶體”、“spfile”或“兩者”;我選擇 spfile,因為我將重新啟動:

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup

然而,這太簡單了:

ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 13104M

恢復並不難,但在我看來,如何通過記憶體調整也不是很明顯,所以我將在下面發布我所做的,高級海報可以糾正/粉碎我。無論哪種情況,我都認為將它放在一個地方很好。

問題是在安裝數據庫時,設置了衝突的其他參數。所以我需要將它們從“spfile”導出到“pfile”,備份它們,編輯它們,測試它們並從pfile導入到spfile:

SQL> create pfile='some/file/path' from spfile;

File created.

然後我將衝突的參數設置為零:

...
--*.pga_aggregate_target=3270m
*.pga_aggregate_target=0m
...
--*.sga_target=9811m
*.sga_target=0m
...

然後我嘗試重新啟動:

SQL> startup pfile='some/file/path';

ORACLE instance started.
...

並檢查上面的 memory_target 和 memory_max_target 參數。一旦對事情感到滿意,就保留我所做的設置:

SQL> create spfile from pfile='some/file/path';

File created.

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