Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để phát triển một kích hoạt lỗi máy chủ sau trong Oracle?

Không truy vấn v $ sql; lấy câu lệnh bằng cách sử dụng ora_sql_txt.

CREATE OR REPLACE TRIGGER log_server_errors
AFTER SERVERERROR
ON DATABASE
DECLARE
sql_text ora_name_list_t;
stmt clob;
n number;
BEGIN
  n := ora_sql_txt(sql_text);
  if n > 1000 then n:= 1000; end if ;
  FOR i IN 1..n LOOP
     stmt := stmt || sql_text(i);
   END LOOP;

   INSERT INTO servererror_log
   (error_datetime, error_user, db_name,
    error_stack, captured_sql)
   VALUES
   (systimestamp, sys.login_user, sys.database_name,
   dbms_utility.format_error_stack, stmt);
   commit;
 END log_server_errors;
 /

Sau đó:

SQL> select * from c;

Điều này tạo ra:

select * from c
              *
ERROR at line 1:
ORA-00942: table or view does not exist

Điều đó hiện có thể được truy vấn:

select * from servererror_log;

Để sản xuất:

ERROR_DATETIME
---------------------------------------------------------------------------
ERROR_USER                     DB_NAME
------------------------------ ---------
ERROR_STACK
--------------------------------------------------------------------------------
CAPTURED_SQL
--------------------------------------------------------------------------------
11-FEB-09 02.55.35.591259 PM
SYS                            TS.WORLD
ORA-00942: table or view does not exist
select * from c


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sqlplus oracle:Làm cách nào để chạy lệnh sql trên bash trong 1 dòng?

  2. JDBC ResultSet:Tôi cần getDateTime, nhưng chỉ có getDate và getTimeStamp

  3. Lỗi truy vấn Oracle

  4. Trình tự trong tiên tri là gì

  5. Có thể chuyển tên bảng làm tham số trong Oracle không?