Oracle instance memory manage

Бид мэдээллийн сан үүсгэхдээ санах ойг багаар өгсөнөөр мэдээллийн сангийн ажиллах хурд удаашрах, гацах тохиолдолууд гардаг билээ.
Санах ойн хэмжээ багадаж гацахад дараах алдаа гарах ба мэдээллийн сан ажиллахгүй болдог.

ORA-00604: error occurred at recursive SQL level 2
ORA-04031 unable to allocate n (example:3896) bytes of shared memory ....

энэ тохиолдол санах ойн хэмжээг нэгмэгдүүлэх заалшгүй хэрэгцээ гардаг.
Oracle DB нь үндсэн хоёр санах ойн компонинент байдаг.

PGA - Program Global Area
SGA - System Global Area

TOTAL MEMORY=SGA+PGA гэж тооцоолно

Дараа алхмын дагуу хийж гүйцэтгэхэд асуудал бүрэн шийдэгдэх боломжтой.

###1. SGA хэрэглээг шалгах

select ((select sum(value) from v$sga) – (select current_size from v$sga dynamic_free_memory)) “SGA_TARGET” from dual;

###2.SGA -д хуваарласан санах ойн хэмжээг шалгах

show parameter sga_target

хэрэв 0 утгатай байх юм бол shared pool, stream pool зэрэг pool уудын утгуудыг зааж өгөх шаардлагатай бөгөөд харин эсрэгээрэй утга зааж өгсөн бол тухайн утгыг автоматаар бусад pool-уудэд хуваарилж ажиллана. Уг утга нь sga_max_size параметрийн утгаар хязгаарлагдана.

###3.PGA -д хуваарласан санах ойн хэмжээг шалгах

Show parameter pga_aggregate_target

хэрэв 0 утгатай байх юм бол Automate memory management тохиргоотой байна.

###4.PGA хамгийн ихдээ авч болох санах ойн хэмжээг харах

select value/1048576 from v$pgastat where name=’maximum pga allocated’;

###5.Санах ойн хэмжээгээ тооцоолох

MEMORY_TARGET=SGA_TARGET+MAX(PGA_AGGREGATE_TARGET,MAXIMUM PGA ALLOGATED)

###6.Мэдээллийн сангийн хамгийн ихдээ авч болох санах ойн хэмжээг шалгах

show parameter memory_max_target;

###7.Хуваарьлагдсан санах ойн хэмжээг шалгах

Show parameter memory_target;

8. memory_max_target - memory_target = 0 -с их байвал MAX хүртэл мэдээллийн сангаа унтраалгүй санах ойг нэмэх боломжтой.

жишээ нь:

memory_max_target=10G
memory_target=7G
10G - 7G = 3G

Энэ тохиолдол бид мэдээллийн сангаа унтраалгүй 3G санах ойгоор нэмэгдүүлэх боломжтой юм.

ALTER SYSTEM SET MEMORY_TARGET=10G SCOPE=both;
хэрэв: memory_max_target - memory_target=0 бол

###9. ALTER SYSTEM SET MEMORY_MAX_TARGET=15G SCOPE=spfile

10.Shutdown immediate

###11.Startup
###11.

ALTER SYSTEM SET MEMORY_TARGET=15G scope=both

MEMORY_MAX_TARGET хэтрэхгүй байх

ALTER SYSTEM SET SGA_TARGET=0;

###12. ALTER SYSTEM SET PGA_AGGREGATE_TARGET=0;
Дээрх алмаар та санах ойн хэмжээгээ нэмэгдүүлэх боломжтой юм.

3 Likes