AMM調整為ASMM命令(關閉memory_target自動管理方式)


客戶生產系統,AIX oracle 11.2.0.4 數據庫版本,2節點RAC。

操作系統內存,均為125G,調整前,使用oracle memory_target自動調整分配方式,memory_max_target大小80G大小,但是shared pool大小為21G。

客戶之前存在內存不夠用(由於客戶應用問題,導致幾乎所有的SQL都需要重新硬解析,最終導致oracle shared pool大小不斷變大、異常增長),導致數據庫shutdown的情況,因此客戶想調整oracle內存的分配方式。

 

本次采用治標方法:將oracle內存限制,從memory_target自動管理分配方式,進行降級使用oracle automatic shared memory management,及sga/pga分別自動管理。

一、從AMM調整為ASMM

1)查詢操作系統內存大小
# svmon -G -O unit=GB Unit: GB ------------------------------------------------------------------------------- size inuse free pin virtual available memory 125.22 18.2 107.06 5.74 17.4 107.05 pg space 16.0 0.05 work pers clnt other pin 2.04 0 0.13 3.57 in use 17.4 0 0.73 # svmon -G -O unit=GB Unit: GB ------------------------------------------------------------------------------- size inuse free pin virtual available memory 125.00 102.58 22.4 19.7 77.9 43.0 pg space 16.0 0.21 work pers clnt other pin 16.0 0 0.13 3.57 in use 77.9 0 24.7 根據操作系統內存大小,進行比例分配。本次采用sga=64 /pga=24G不變大小,操作系統預留37G
2)關閉memory_target,使用oracle sga/pga分別自動管理 alter system
set memory_max_target=0 scope=spfile; alter system set memory_target=0 scope=spfile; alter system set sga_max_size=64G scope=spfile; alter system set sga_target=64G scope=spfile; pga_aggregate_target big integer 24G
3)發現一個問題,關閉節點2所在數據庫,重啟節點1所在數據庫報錯
ORA-00843: Parameter not taking MEMORY_MAX_TARGET into account
ORA-00849: SGA_TARGET 10737418240 cannot be set to more than MEMORY_MAX_TARGET 0.
本次采用的方式是一種較危險的操作,如果不熟悉oracle 參數文件管理方式,
建議使用文檔后續學習的mos建議,blog鏈接方法

4)創建pfile參數文件,手工注釋memory這兩個oracle內存參數
#備份 create pfile
='/tmp/20190125_node2.ora' from memory; create pfile='/tmp/20190125_spfile_node2.ora' from spfile; #拷貝編輯 cp /tmp/20190125_spfile_node2.ora /tmp/new_pfile.ora 注釋new_pfile文件中的兩個memory_target內存參數 SQL> show parameter pfile NAME VALUE ------------------------------------ ----------- ------------------------------ spfile +DATANEWDG/dbcnr/parameterfile/spfile.ora
5)根據之前查詢到的內容,重新覆蓋生成最新的pfile文件,啟動數據庫即可(rac環境,使用所有的參數需要指明路徑,以免出錯)
create spfile='+DATANEWDG/dbcnr/parameterfile/spfile.ora' from pfile='/tmp/new_pfile.ora';

 

二、學習mos/blog搜索學習

MOS

ORA-00843, ORA-00849 When Trying To Change SGA_TARGET With MEMORY_MAX_TARGET=0 Being Active (文檔 ID 1397761.1)
Oracle Database - Enterprise Edition - Version 11.1.0.6 and later


SYMPTOMS
When trying to set SGA_TARGET using an ALTER SYSTEM command, the following errors are raised:

ORA-00843: Parameter not taking MEMORY_MAX_TARGET into account
ORA-00849: SGA_TARGET 10737418240 cannot be set to more than MEMORY_MAX_TARGET 0.

CHANGES
MEMORY_MAX_TARGET was set to 0.

CAUSE
The problem is caused by the MEMORY_MAX_TARGET parameter explicitly being set to 0. In case AMM should not be used, MEMORY_MAX_TARGET should not be set at all.

SOLUTION
The solutions to the problem are:
1.0  本次使用的是方法1
create a PFILE from the SPFILE being used and remove the MEMORY_MAX_TARGET=0 and MEMORY_TARGET=0 lines. 
After that, use the modified PFILE to create a new SPFILE and start the instance with this new setup.

2.0 另一種方式是通過參數rest重置清空參數(如果是隱含參數,使用reset將恢復默認值(待驗證)) should the instance be running, then use the following commands to remove the
explicit setting of MEMORY_TARGET=0 and MEMORY_MAX_TARGET=0: alter system reset memory_target; alter system reset memory_max_target;

BLOG

http://www.dbsnake.net/how-to-disable-asm-instance-amm.html
--參考
特別注意的是——如果要禁掉ASM實例的AMM,就一定不要同時reset memory_target和memory_max_target,
而是應該將memory_target設為0並只reset memory_max_target,但很惡心的是基本上所有的MOS文檔都在說要同時reset memory_target和memory_max_target,
所以如果你沒有注意到這一點,你會發現你怎么也禁不掉ASM實例的AMM。 未驗證(如果是我下一次操作,可能會進行測試,這種影響較小,操作簡便)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM