오라클11G 이력관리 쿼리문 0 4 1,419

by 냥냥펀치원투 [PL/SQL] 이력 LOG 히스토리 HISTORY [2019.07.04 11:58:39]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
안녕하세요. 오라클11G 이력 관리를 하려 합니다.
아래와 같이 코드를 작성하여 실행을 하면 문제 없이 설정이 됩니다.
하지만 패키지와 SP를  수정 하면 아래와 같은 오류가 발생 됩니다.
 
ORA-04098 '' 트리거가 부적합하며 재검증을 실패 했습니다.
 
 
--테이블 삭제
--DROP TABLE SOURCE_HISTORY
 
--테이블 생성
CREATE TABLE SOURCE_HISTORY AS
        SELECT SYSDATE              AS CHANGE_DATE
             , SI.SYSDATE2         
             , US.NAME              AS NAME
             , US.TYPE
             , WMSYS.WM_CONCAT(US.TEXT) AS TEXT
             , 'N'                  AS COMMIT
             , SI.IP
             , SI.DBUSER
             , SI.PCNAME
             , SI.TERMINAL
             , SI.PC_USERNAME
             , SI.LOGIN_MODE
          FROM USER_SOURCE US, (
                             SELECT sys_context('USERENV', 'IP_ADDRESS')   AS IP,
                                    sys_context('USERENV', 'SESSION_USER') AS DBUSER,
                                    sys_context('USERENV', 'HOST')         AS PCNAME,
                                    sys_context('USERENV', 'TERMINAL')     AS TERMINAL,
                                    sys_context('USERENV', 'OS_USER')      AS PC_USERNAME,
                                    sys_context('USERENV', 'isDBA')        AS LOGIN_MODE,
                                    TO_CHAR(SYSDATE, 'YYYYMMDDHHmmss')     AS SYSDATE2
                               FROM DUAL
                             )SI
             WHERE NAME = '패키지명'
           GROUP BY SYSDATE
             , SI.SYSDATE2
             , US.NAME
             , US.TYPE
             , SI.IP
             , SI.DBUSER
             , SI.PCNAME
             , SI.TERMINAL
             , SI.PC_USERNAME
             , SI.LOGIN_MODE
              
              
 
--drop trigger SOURCE_HISTORY_T
--스키마 생성
CREATE OR REPLACE TRIGGER SOURCE_HISTORY_T
AFTER CREATE ON APPS.SCHEMA
     
DECLARE
BEGIN
    IF ORA_DICT_OBJ_TYPE IN ('PROCEDURE', 'FUNCTION', 'PACKAGE', 'PACKAGE BODY', 'TYPE') THEN
        INSERT INTO SOURCE_HISTORY
        SELECT SYSDATE                  AS CHANGE_DATE
             , SI.SYSDATE2         
             , US.NAME                  AS NAME
             , US.TYPE
             , WMSYS.WM_CONCAT(US.TEXT) AS TEXT
             , 'N'                      AS COMMIT
             , SI.IP
             , SI.DBUSER
             , SI.PCNAME
             , SI.TERMINAL
             , SI.PC_USERNAME
             , SI.LOGIN_MODE
          FROM USER_SOURCE US, (
                             SELECT sys_context('USERENV', 'IP_ADDRESS')   AS IP,
                                    sys_context('USERENV', 'SESSION_USER') AS DBUSER,
                                    sys_context('USERENV', 'HOST')         AS PCNAME,
                                    sys_context('USERENV', 'TERMINAL')     AS TERMINAL,
                                    sys_context('USERENV', 'OS_USER')      AS PC_USERNAME,
                                    sys_context('USERENV', 'isDBA')        AS LOGIN_MODE,
                                    TO_CHAR(SYSDATE, 'YYYYMMDDHHmmss')     AS SYSDATE2
                               FROM DUAL
                             )SI
         WHERE TYPE = ORA_DICT_OBJ_TYPE
           AND NAME = ORA_DICT_OBJ_NAME
           GROUP BY SYSDATE
             , SI.SYSDATE2
             , US.NAME
             , US.TYPE
             , SI.IP
             , SI.DBUSER
             , SI.PCNAME
             , SI.TERMINAL
             , SI.PC_USERNAME
             , SI.LOGIN_MODE
END IF;
     
EXCEPTION
     WHEN OTHERS THEN
         RAISE_APPLICATION_ERROR(-200000, SQLERRM);
END;

 

고수님들의 조언 부탁 드립니다.

by 우리집아찌 [2019.07.04 16:31:43]

11g가 없어서 테스트는 못했는데

wm_concat이 되나요??


by 우리집아찌 [2019.07.04 16:33:34]

YYYYMMDDHHmmss mm-> mi


by 마농 [2019.07.05 10:05:04]

1. wm_concat --> listagg
2. hhmm --> hh24mi
3. -200000 --> -20000


by 냥냥펀치원투 [2020.04.27 17:42:50]

감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입