Memory
如何限制 Oracle 的記憶體使用?
我想使用Oracle的自動記憶體管理,限制在4GB左右。(過去的經驗表明,這對我的開發 PC 來說已經足夠了,而且更容易了解任何性能問題。)
我相信這些是要遵循的說明:
簡而言之,要啟用自動記憶體管理,請設置 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.