Điều chỉnh tham số Memory

   Các tham số cấp phát Memory trong Oracle

 

   Giới thiệu

 

Tối ưu database bằng cách điều chỉnh các tham số cấp phát Memory trong Oracle là cách thức đơn giản mà khá hiệu quả. Nhất là với các hệ thống mà người quản trị có ít kinh nghiệm, thường cài đặt theo mặc định.

 

Trong bài viết này tôi sẽ hướng dẫn các bạn cách thay đổi các tham số liên quan đến cấp phát Memory trong Oracle database nhé.

 

   Các tham số quy định Memory trong Oracle Database

Đầu tiên, bạn cần phải biết, kích thước Memory được cấp phát cho Oracle Database được quy định bởi các tham số sau:

 

   memory_target: Quy định lượng Memory được cấp phát cho Database

   sga_target: Quy định kích thước phân vùng SGA

   pga_aggregate_target: Quy định tổng kích thước của các phân vùng PGA

   db_cache_size: Quy định kích thước của Database Buffer Cache

   log_buffer: Quy định kích thước của Redo log buffer

   shared_pool_size: Quy định kích thước của Shared Pool

 

   Giải thích ý nghĩa:

Như tôi đã nói ở bài viết trước, Memory = SGA + PGA. Bên trong SGA hoặc PGA lại có những thành phần khác nhỏ hơn như Buffer Cache, Library Cache, … Do đó, có một nguyên tắc, tôi phát biểu như thế này cho các bạn dễ nhớ:

Đọc thêm  Oracle 12c - Kết nối với CDB và PDB

 

Khi bạn xác định kích thước của thành phần Cha, thì kích thước của thành phần Con sẽ tự động được điều chỉnh tùy vào nhu cầu của database.

 

Ý nghĩa của phát biểu trên cụ thể như sau:

 

Giả sử bạn đã đặt giá trị cho tham số Memory_target, tức là đã xác định kích thước Memory được cấp phát cho toàn bộ Database rồi. Mà trong Memory lại có SGA và PGA là những thành phần con, thế thì SGA và PGA sẽ tự động được Oracle cân nhắc điều chỉnh tùy vào nhu cầu của database, và không vượt quá kích thước đã được cấp phát cho thành phần Cha, tức là Memory

(cơ chế này gọi là Automatic Memory Management – AMM).

 

Cũng tương tự như vậy, nếu bạn đã đặt tham số Sga_target cho SGA thì các thành phần con của SGA như Buffer Cache, Redo Log Buffer, Share Pool cũng sẽ tự điều chỉnh kích thước. (cơ chế này gọi là Automatic Shared Memory Management – ASMM).

 

Bây giờ tôi sẽ hướng dẫn các bạn chỉnh sửa giá trị cho các tham số này

 


   Đặt giá trị Memory cấp phát cho Oracle Database

Đầu tiên bạn phải kết nối vào database bằng sqlplus

$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on Tue Jun 15 23:35:04 2021

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL>

Bây giờ, tôi kiểm tra xem dung lượng hiện đang cấp phát cho Database là bao nhiêu, bằng cách

SQL> show parameter memory_max_target;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
memory_max_target		     big integer 0

SQL> show parameter memory_target;

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
memory_target		             big integer 0

Như các bạn thấy đó, hiện tại các giá trị này chưa được thiết lập. Điều đó không có nghĩa là không có tý Memory nào được cấp phát cho Database nhé. Nó cho thấy có thể là các giá trị SGA và PGA đã được thiết lập sẵn.

Đọc thêm  Quản lý database trong PostgreSQL

Để thay đổi lượng Memory cấp phát cho Oracle Database bạn cần điều chỉnh 2 tham số Memory_max_target và Memory_max_size

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

System altered.

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

System altered.

Ở ví dụ trên, tôi đã thay đổi giá trị của Memory cấp phát cho Database là 20G

Sau khi đã thay đổi xong, bạn cần restart lại database để giá trị mới có hiệu lực

SQL> shutdown immediate
SQL> startup

   Đặt giá trị cấp phát cho SGA và PGA

 

Trước tiên tôi cũng cần kiểm tra xem hiện tại các tham số cho SGA và PGA đang có giá trị là bao nhiêu

 

SQL> show parameter sga_target   

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
sga_target			     big integer 2400M

SQL> show parameter sga_max_size 

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
sga_max_size			     big integer 2400M

 

Để thay đổi lượng Memory cấp phát cho SGA và PGA tôi thực hiện như sau:

 

SQL> alter system set sga_max_size=15G scope=spfile;

System altered.

SQL> alter system set sga_target=15G scope=spfile;

System altered.

SQL> alter system set pga_aggregate_target=5G;

 

Ở ví dụ trên, tôi đã thay đổi giá trị của SGA được cấp phát cho Database là 15G và PGA là 5G.

 

Và cuối cùng cũng như ví dụ trên, tôi sẽ cần phải restart database để các giá trị mới có hiệu lực.

 

PS: Nếu bạn muốn tham khảo chi tiết hơn về cách dùng các tham số này, bạn có thể xem tại trang documentation chính thức của Oracle nhé

https://docs.oracle.com/database/121/ADMIN/memory.htm

 

Nguồn: https://dangxuanduy.com/

Xin cho tôi được biết, bạn cảm thấy bài viết này như thế nào? Ý kiến của bạn sẽ giúp tôi nâng cao chất lượng bài viết của mình.

    Hãy chia sẻ bài viết này nếu bạn thấy có ích nhé
    0 0 votes
    Article Rating
    Subscribe
    Notify of
    guest
    0 Comments
    Inline Feedbacks
    View all comments