D. Kết luận về phơng pháp tối u trong Oracle
3. Tối u vùng nhớ hệ thống SGA
Khi Oracle hoạt động thì mọi thông tin phải chứa trong bộ nhớ hoặc đĩa. Do việc truy xuất trên RAM sẽ nhanh hơn nhiều với việc truy xuất trên đĩa cho nên
một trong những thao tác cơ bản trong tối u để hệ thống có thể hoạt động hiệu quả hơn bằng việc thay đổi các tham số của vùng nhớ SGA (các tham số nằm trong Init File, có thể tìm thấy file này ở th mục DATABASE). Chú ý rằng nên cấu hình làm sao để cho toàn bộ vùng nhớ SGA nằm trong Physical Memory là tốt nhất. Có thể thay đổi kích thớc của SGA thông qua việc thay đổi từng thành phần của SGA và độ lớn của SGA chính là tổng độ lớn của ba thành phần Share Pool + Buffer Cache + Redo Log Buffer.
Database Buffer Cache
Vùng nhớ hệ thống SGA
SGA
Shared Pool RedoLog
Buffer Data Buffer Cache
• Điều chỉnh kích thớc Share Pool qua thông số shared_pool_size ở trong Parameter File. Trong Share Pool có ba thành phần là Library cache, Data dictionary cache và Session information. Kích thớc của Share Pool là thích hợp khi nó thoả mãn các điều kiện dới đây.
- Với độ lớn Library cache thích hợp khi mà tỉ lệ số lần thủ tục và hàm trong th viện đợc thực hiện (PINS) chia cho số lần hàm và thủ tục đó phải nạp từ đĩa (RELOADS). Tỉ lệ này nhỏ hơn hoặc bằng 1% và càng gần 0 càng tốt. Để biết đợc tỉ lệ này cần thực hiện câu lệnh sau:
SELECT (sum(reloads)/sum(pins))*100,’%’ FROM v$librarycache;
Kết quả thực hiện với Database Center 0.09366945%, nh vậy bộ nhớ dành cho Library Cache khá nhiều.
- Độ lớn của Data dictionary cache thích hợp khi tỉ lệ số lần lấy thông tin (GETS) chia cho số lần thông tin không có (GETMISSES) nằm trong khoảng 10% đến 15% và càng gần 0 càng tốt. Giá trị này đợc biết qua câu lệnh sau:
SELECT (SUM(GETMISSES)/SUM(GETS))*100,'%' FROM V$ROWCACHE;
Kết quả thực hiện với Database Center là 2.0352019%, nh vậy vùng bộ nhớ dành cho Data dictionary cache khá nhiều.
• Điều chỉnh độ lớn của Database Bufer Cache: Thành phần này đợc Oracle chia làm nhiều Block mỗi Block có kích thớc cố định tuỳ thuộc hệ điều hành và xác định qua tham số db_block_size trong Parameter File. Bằng cách thay đổi số Block (qua tham số db_block_buffers) sẽ thay đổi đợc kích thớc của Database Bufer Cache.
Độ lớn của Database Bufer Cache thích hợp khi tỉ lệ số khối dữ liệu đợc đọc từ đĩa (physical reads) chia cho tổng số các khối đợc yêu cầu (db block gets + constent gets). Tỉ lệ này nên nhỏ hơn 30% đến 40% và càng gần 0 càng tốt. Có thể xác định đợc tỉ lệ này qua các câu lệnh sau.
CREATE TABLE kq (ratio number); DECLARE p NUMBER; d NUMBER; c NUMBER; r NUMBER; BEGIN
SELECT value INTO p FROM v$sysstat WHERE name='physical reads'; SELECT value INTO d FROM v$sysstat WHERE name='db block gets'; SELECT value INTO c FROM v$sysstat WHERE name='consistent gets'; r := p/(d+c);
r := r*100;
INSERT INTO kq VALUES (r); EXCEPTION
WHEN ZERO_DIVIDE THEN INSERT INTO kq VALUES (0); END;
/
SELECT ratio,'%' FROM kq; DROP TABLE kq;
Kết quả thực hiện Database Center là 64.517194 %, điều này chứng tỏ vùng bộ nhớ dành cho Database Bufer Cache đủ tốt và nên dành thêm vùng bộ nhớ từ Share Pool sang.
• Kích thớc của Redo Log Buffer có thể điều chỉnh đợc bằng tham số log_buffer trong Parameter File.