Memory Max Target vs Memory Target on Oracle

หลายคนคงรู้อยู่แล้วว่า การทำงานของ Oracle Database ถูกออกแบบมาให้ทำงานบน Memory เพราะมันไวกว่าการไป Access Disk ซึ่งเราสามารถไปปรับค่า Parameter ต่าง ๆ บน Oracle Database ได้ ซึ่งของ Memory เองก็มี Parameter อยู่ 2 ตัวด้วยกัน


Memory Max Target vs Memory Target

การกำหนด Memory Max Target จะเป็นเหมือนกรอบของการกำหนด Memory Target เนื่องจากการ Start Database บน Oracle จะทำการจองพื้นที่บน Memory จากค่าที่เรากำหนดใน Memory Target ซึ่งการเปลี่ยนแปลงค่าบน Memory Target สามารถเปลี่ยนได้เลยโดยไม่ต้องทำการ Restart Database แต่จะไม่เกินค่าใน Memory Max Target ถ้าเราต้องการเปลี่ยนแปลงค่าบน Memory Max Target จะต้องทำการ Restart Database ซึ่งภายใน Memory Target จะถุกแบ่งเป็น SGA และ PGA

How to set Value

คำถามต่อมาคือ เราต้องกำหนดค่าเท่าไหร่ บน Oracle จะมีเครื่องมือที่จะอ่านการทำงานของเราเพื่อบอกว่าเราต้องกำหนดเท่าไหร่

  • เรามีสูตรการคำนวณง่าย ๆ ในการหา Memory Target
memory_target = sga_target + max(pga_aggregate_target, maximum PGA allocated)
  • หาค่า sga_target และ pga_aggregate_target
SQL> show parameter target

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target                   integer     0
db_flashback_retention_target        integer     1440
fast_start_io_target                 integer     0
fast_start_mttr_target               integer     0
memory_max_target                    big integer 1648M
memory_target                        big integer 1648M
parallel_servers_target              integer     16
pga_aggregate_target                 big integer 0
sga_target                           big integer 0
  • หาค่า maximum PGA allocated
SQL> select value from v$pgastat where name='maximum PGA allocated';

     VALUE
----------
 123243520
  •  ทำการเปลี่ยนค่า
SQL> ALTER SYSTEM SET MEMORY_TARGET = nM;
SQL> ALTER SYSTEM SET SGA_TARGET = 0;
SQL> ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0;
  • หรือดูจาก Memory Advisor บน Enterprise Manager ( EM ) แล้วคลิก Advice
  • จะแสดง Memory Size Advice

Monitoring Automatic Memory Management ( AMM )

SQL> V$MEMORY_DYNAMIC_COMPONENTS
SQL> V$MEMORY_RESIZE_OPS 
SQL> V$MEMORY_TARGET_ADVICE
  • has the current status of all memory components
  • has a circular history buffer of the last 800 memory resize requests
  • provides tuning advice for the MEMORY_TARGET initialization parameter

Question

ถ้าเครื่อง Oracle Server เรามี Memory 32 GB และมี 1 Instance เราจะกำหนด Memory Max Target ได้เท่าไหร่

answer> จะกำหนด Memory Max Target ได้ 28 GB เพราะต้องเหลือให้ OS 4 GB
โดยควรให้ Oracle ทำงานอยู่บน Memory เท่านั้น ไม่ควรให้มันล้นไปทำงานใน Swap
ถ้ามี 2 Instance ก็อย่าให้เกิน 28 GB

อ่านเพิ่มเติม : https://bit.ly/2FVl1KH


Leave a Reply

Your email address will not be published. Required fields are marked *