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
등록된 코멘트가 없습니다.