Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle में आफ्टर सर्वरर ट्रिगर कैसे विकसित करें?

v$sql से पूछताछ न करें; 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;
 /

फिर:

SQL> select * from c;

यह पैदा करता है:

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

यह अब पूछताछ की जा सकती है:

select * from servererror_log;

उत्पादन करने के लिए:

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. हाइबरनेट + जावा पर धीमा प्रदर्शन लेकिन तेज जब मैं उसी मूल ओरेकल क्वेरी के साथ TOAD का उपयोग करता हूं

  2. एसक्यूएल का उपयोग करके लापता तिथियां खोजें

  3. मैं Oracle में NOT IN और NOT LIKE कथनों में नल कैसे संभाल सकता हूँ?

  4. LIKE '%...%' वाइल्डकार्ड क्वेरीज़ के लिए PL/SQL प्रदर्शन ट्यूनिंग

  5. क्या कोई इस प्रश्न की व्याख्या कर सकता है?