TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-08-29 |
제목 | ALTER USER를 실행한 사용자를 확인하는 방법(SYSTEM EVENT TRIGGER) | ||
---|---|---|---|
ALTER USER를 실행한 사용자를 확인하는 방법(SYSTEM EVENT TRIGGER)
================================================================ PURPOSE ------- 자신이나 또는 다른 user들의 password를 바꾸는 등의 alter user command를 사용한 사용자를 확인하는 방법을 알아보자. Explanation & Example ---------------------- 1. 사용자 정보를 저장할 event table을 생성한다. Create event table and users to store the alterations made: SQL> connect / as sysdba; create table event_table ( ora_sysevent varchar2(20), ora_login_user varchar2(30), ora_instance_num number, ora_database_name varchar2(50), ora_dict_obj_name varchar2(30), ora_dict_obj_type varchar2(20), ora_dict_obj_owner varchar2(30), timestamp date ) / create user test1 identified by test1; grant create session, alter user to test1; create user test2 identified by test2; grant create session to test2; 2. SYS user에서 AFTER ALTER Client Event Trigger 를 생성한다. Note: This step creates a trigger and it is fired whenever the user "test1" issues ALTER command (It can be ALTER USER or ALTER TABLE) SQL> CREATE or REPLACE TRIGGER after_alter AFTER ALTER on database BEGIN IF (ora_dict_obj_type='USER') THEN insert into event_table values (ora_sysevent, ora_login_user, ora_instance_num, ora_database_name, ora_dict_obj_name, ora_dict_obj_type, ora_dict_obj_owner, sysdate); END IF; END; / 3. test1 user로 접속한 후 test2 user의 password를 변경하는 작업을 실행한다. SQL> connect test1/test1 SQL> alter user test2 identified by foo; 4. test2 user의 password가 test1 user에 의해 변경되면 그런 내용을 event_table 에서 확인할 수 있다. Now that we have altered the "test2" user password from user "test1", the event_table should have captured this details. Now Login in as sys and Query on event_table: SQL> connect / as sysdba; SQL> select * from event_table; ORA_SYSEVENT ORA_LOGIN_USER ORA_INSTANCE_NUM -------------------- ------------------------------ ---------------- ORA_DATABASE_NAME -------------------------------------------------- ORA_DICT_OBJ_NAME ORA_DICT_OBJ_TYPE ------------------------------ -------------------- ORA_DICT_OBJ_OWNER TIMESTAMP ------------------------------ --------- ALTER TEST1 1 T901.IDC.ORACLE.COM TEST2 USER 13-JUN-02 event_table의 내용을 조회하여 LOGIN_USER와 ALTERED USER 는 ORA_LOGIN_USER와 ORA_DICT_OBJ_NAME column을 통해 확인할 수 있다. 비슷한 방법으로 아래의 event에서 trigger를 생성하여 확인할 수 있다. 1) BEFORE DROP 2) AFTER DROP 3) BEFORE ANALYZE 4) AFTER ANALYZE 5) BEFORE DDL 6) AFTER DDL 7) BEFORE TRUNCATE 8) AFTER TRUNCATE from otn |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |