출처 : http://forums.oracle.com/forums/thread.jspa?threadID=471926&tstart=195
제품 : ORACLE SERVER
작성날짜 : 2002-11-07
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
Related Documents
-------------------------------------------------------------------------------------------------
Oracle Application Developer's Guide
'::: DB ::: > Oracle' 카테고리의 다른 글
프로시저 대신 패키지를 써야 하는 이유 - Part1 (0) | 2010.12.13 |
---|---|
[OTN] DELETE, DROP, TRUNCATE의 비교 (1) | 2010.12.13 |
[OTN] INVALID 상태의 OBJECT를 RECOMPILE하는 PROCEDURE (0) | 2010.12.10 |
[OTN] 테이블의 COLUMN 이름을 변경하는 방법 (0) | 2010.12.10 |
[OTN] 힌트를 사용할 때 고려되어야 하는 사항 (0) | 2010.12.10 |