2012-07-24 2 views

답변

1

좋은 질문입니다. 나를 궁금하게 만들었다. 나는 here이라는 대답을 발견했다. LOGMINER 유틸리티도 여기에 언급되어 있습니다. 들여다 볼만한 가치가 있을까요?

SQL> CREATE OR REPLACE FUNCTION cur_sql_txt 
    2 RETURN CLOB 
    3 AS 
    4 v_cnt BINARY_INTEGER; 
    5 v_sql ORA_NAME_LIST_T; 
    6 v_rtn CLOB; 
    7 BEGIN 
    8 v_cnt := ora_sql_txt (v_sql); 
    9 FOR l_bit IN 1..v_cnt LOOP 
10  v_rtn := v_rtn || RTRIM (v_sql (l_bit), CHR (0)); 
11 END LOOP; 
12 RETURN RTRIM (v_rtn, CHR (10)) || ';'; 
13 END; 
14/

Function created. 

SQL> CREATE OR REPLACE TRIGGER trigger_name 
    2 BEFORE UPDATE ON emp 
    3 FOR EACH ROW 
    4 BEGIN 
    5 DBMS_OUTPUT.PUT_LINE (cur_sql_txt); 
    6 END; 
    7/

Trigger created. 

SQL> SET SERVEROUTPUT ON; 
SQL> UPDATE emp 
    2 SET empno = empno, 
    3   ename = ename 
    4 WHERE ROWNUM = 1; 
UPDATE emp 
SET empno = empno, 
     ename = ename 
WHERE ROWNUM = 
:"SYS_B_0"; 

1 row updated. 

SQL> 
+0

불행히도 ora_sql_txt 함수가 시스템 이벤트 트리거에서만 작동하는 것 같습니다 (http://www.orafaq.com/forum/mv/msg/90623/272957/0/#msg_272957) . – JCD70

+0

아마도 V $ 뷰를 사용하여이 작업을 수행 할 수 있습니까? – JCD70

0

왜 감사 문을 사용하지 않습니까? 이를 통해 테이블에 대한 인스턴스 업데이트를 모니터링 할 수 있습니다.

관련 문제