Thứ Tư, 28 tháng 9, 2022

Hướng dẫn chạy DBMS_SQLTUNE với câu lệnh SQL xác định

SQL Tuning Advisor

Tôi biết có thể thuận tiện hơn để chạy báo cáo tối ưu SQL bằng DBMS_SQLTUNE trong các công cụ như EM hoặc TOAD. Nhưng trong bài đăng này, tôi sẽ nói về cách tạo báo cáo tối ưu SQL chỉ bằng cách thực thi các câu lệnh theo nghĩa đen cho ID SQL cụ thể trong trường hợp bạn không thể sử dụng các công cụ và thứ hai, cách chấp nhận và triển khai các đề xuất điều chỉnh SQL sau đó.

Chạy SQL Tuning Advisor Report

Tóm lại, có 3 hành động trong quy trình này để tạo báo cáo tối ưu SQL:

  1. Tạo
  2. Sử dụng DBMS_SQLTUNE.CREATE_TUNING_TASK .

  3. Thực thi
  4. Sử dụng DBMS_SQLTUNE.EXECUTE_TUNING_TASK .

  5. Báo cáo
  6. Sử dụng DBMS_SQLTUNE.REPORT_TUNING_TASK .

1. CREATE_TUNING_TASK

Trước hết, chúng tôi tạo một nhiệm vụ tối ưu SQL cho một ID SQL cụ thể. Chương trình con DBMS_SQLTUNE.CREATE_TUNING_TASK thực chất là một hàm và trả về tên tác vụ mà nó đã tạo.

SQL> select DBMS_SQLTUNE.CREATE_TUNING_TASK ( sql_id => '21zq47mj49f7w', scope => 'COMPREHENSIVE', time_limit => 1800, task_name => 'SQLTUNE_21zq47mj49f7w_0105_01') task_name from dual;

TASK_NAME
------------------------------
SQLTUNE_21zq47mj49f7w_0105_01

Lưu ý: Tên nhiệm vụ được giới hạn trong 30 ký tự.

Nếu bạn gặp lỗi sau, có nghĩa là ID SQL không tồn tại trong bộ nhớ (bộ đệm con trỏ) tại thời điểm này.

ORA-13780: SQL statement does not exist.

Để giải quyết lỗi này, bạn cũng cần chỉ định khoảng thời gian chụp nhanh AWR ( begin_snap và end_snap ) cho nó. Vui lòng tham khảo: DBMS_SQLTUNE.CREATE_TUNING_TASK Các chức năng của cơ sở dữ liệu 19c .

2. EXECUTE_TUNING_TASK

Bây giờ chúng ta có thể thực hiện nhiệm vụ.

SQL> exec DBMS_SQLTUNE.EXECUTE_TUNING_TASK ( task_name => 'SQLTUNE_21zq47mj49f7w_0105_01');

PL/SQL procedure successfully completed.

Kiểm tra trạng thái của tác vụ tơi ưu này.

SQL> select status from dba_advisor_tasks where task_name = 'SQLTUNE_21zq47mj49f7w_0105_01';

STATUS
-----------
EXECUTING

3. REPORT_TUNING_TASK

Để nhận được báo cáo, bạn nên xuất kết quả bằng các công cụ GUI.

SQL> select dbms_sqltune.report_tuning_task( 'SQLTUNE_21zq47mj49f7w_0105_01' ) report from dual;
...

Một cách khác để tạo báo cáo bằng PL/SQL:

SET SERVEROUTPUT ON SIZE UNLIMITED;
DECLARE
  tuning_report CLOB;
BEGIN
  tuning_report := DBMS_SQLTUNE.REPORT_TUNING_TASK ( task_name => 'SQLTUNE_21zq47mj49f7w_0105_01' , type => 'TEXT' , level => 'TYPICAL' , section => 'ALL' );
  DBMS_OUTPUT.PUT_LINE(tuning_report);
END;
/

Có thể có một số đề xuất trong báo cáo này mà bạn có thể thực hiện tất cả hoặc một phần của chúng vì lợi ích về hiệu suất. Ví dụ, advisor có thể đề nghị tạo một số index thích hợp.

Xin lưu ý rằng, sẽ dễ đọc hơn nếu bạn nhận được báo cáo trong các công cụ cơ sở dữ liệu như SQL Developer hoặc Toad for Oracle.

Một số khuyến nghị có thể chứa cấu hình SQL thay thế. Tiếp theo, chúng ta sẽ xem cách chúng ta chấp nhận SQL profile.

ACCEPT_SQL_PROFILE

Nếu bất kỳ cấu hình SQL nào được đề xuất trong báo cáo, bạn có thể triển khai và chấp nhận nó như sau:

SQL> exec dbms_sqltune.accept_sql_profile(task_name => 'SQLTUNE_21zq47mj49f7w_0105_01', task_owner => 'SYS', replace => TRUE, name => 'sql_profile_for_21zq47mj49f7w');

PL/SQL procedure successfully completed.

Kiểm tra trạng thái profile mới.

SQL> column name format a30;
SQL> column category format a15;
SQL> column status format a15;
SQL> select name, category, status from dba_sql_profiles;

NAME                           CATEGORY        STATUS
------------------------------ --------------- ---------------
sql_profile_for_21zq47mj49f7w  DEFAULT         ENABLED

SQL profile khác nhau cũng giống như một bức chân dung khác của một người từ một góc độ khác, nó có thể xem xét một lộ trình thực thi khác cho cùng một câu lệnh SQL.

CREATE_SQL_PLAN_BASELINE

Nếu bạn thấy kế hoạch cụ thể đủ tốt để thiết lập đường cơ sở, bạn có thể chấp nhận kết quả điều chỉnh bằng cách này:

SQL> exec dbms_sqltune.create_sql_plan_baseline(task_name => 'SQLTUNE_21zq47mj49f7w_0105_01', owner_name => 'SYS', plan_hash_value => 1283456102);
=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master