Lấy thông tin SQL_ID TRƯỚC KHI chạy truy vấn

Có 2 lý do để bạn thực hiện điều này như sau:

Đây là một chiến lược tốt.
Bạn thường nghĩ “Tại sao tôi lại cần lấy SQL_ID làm gì?” cho đến khi một vài vấn đề về tối ưu hiệu năng được đặt ra. Khi biết được SQL_ID, chúng ta có thể lấy được rất nhiều các thông tin thống kê từ V$SQL, V$SQL_PLAN và nhiều thông tin khác nữa. Chúng ta có thể biết ngay câu lệnh query nào tốn nhiều thời gian thực hiện để tối ưu nó một cách hiệu quả.

Một cách mới, dễ dàng hơn.
Nếu bạn đã nhấp vào các bài đăng của Tanel hoặc Nenad và quyết định rằng các mã base32, hex và nối các đầu cuối null vào chuỗi nghe có vẻ như quá nhiều công việc khó khăn, bạn sẽ hài lòng khi biết rằng có một cách dễ dàng hơn nhiều để có được SQL_ID từ câu lệnh SQL. Bây giờ bạn chỉ cần gọi DBMS_SQL_TRANSLATOR. Dưới đây là một ví dụ về điều đó:

SQL> set feedback only sql_id
SQL> SELECT * FROM SCOTT.EMP;

14 rows selected.

SQL_ID: 4ay6mhcbhvbf2

SQL> set feedback on
SQL> select dbms_sql_translator.sql_id('SELECT * FROM SCOTT.EMP')
  2  from   dual;

DBMS_SQL_TRANSLATOR.SQL_ID('SELECT*FROMSCOTT.EMP')
--------------------------------------------------------------------
4ay6mhcbhvbf2

1 row selected.