
-- sys 유져에서 scott 의 emp 테이블에서 월급이 3000 이상인 사원들의 data 를 조회하는
-- SQL을 누군가 수행하면 무조건 감사되게 설정합니다.
begin
dbms_fga.add_policy(object_schema=>'SCOTT',
object_name=>'EMP',
policy_name=>'POL7',
audit_condition=>'SAL >= 3000',
enable=>TRUE,
statement_types=>'INSERT,SELECT,UPDATE',
audit_trail=>DBMS_FGA.DB_EXTENDED);
END;
/
select ename, sal
from emp
where sal = 5000;
select to_char(TIMESTAMP,'yyyy/mm/dd HH24:MI:SS') timeinfo ,
userhost, os_user, OBJECT_NAME,SCN, SQL_TEXT,SQL_BIND
from dba_fga_audit_trail;

-- scott 유저에서
update emp
set sal=6000
where ename='ALLEN';
-- sys 유저에서
select to_char(TIMESTAMP,'yyyy/mm/dd HH24:MI:SS') timeinfo ,
userhost, os_user, OBJECT_NAME,SCN, SQL_TEXT,SQL_BIND
from dba_fga_audit_trail;
drop table salgrade;
create table salgrade
( grade number(10),
losal number(10),
hisal number(10) );
insert into salgrade values(1,700,1200);
insert into salgrade values(2,1201,1400);
insert into salgrade values(3,1401,2000);
insert into salgrade values(4,2001,3000);
insert into salgrade values(5,3001,9999);
commit;
begin
dbms_fga.add_policy(object_schema=>'SCOTT',
object_name=>'SALGRADE',
policy_name=>'POL8',
audit_condition=>'losal >= 4000',
enable=>TRUE,
statement_types=>'INSERT,UPDATE',
audit_trail=>DBMS_FGA.DB_EXTENDED);
END;
/
update salgrade
set losal = 6000
where grade= 5;
select to_char(TIMESTAMP,'yyyy/mm/dd HH24:MI:SS') timeinfo ,
userhost, os_user, OBJECT_NAME,SCN, SQL_TEXT,SQL_BIND
from dba_fga_audit_trail;
BEGIN
DBMS_FGA.DROP_POLICY(
object_schema => 'SCOTT',
object_name => 'SALGRADE',
policy_name => 'POL8'
);
END;
/
BEGIN
DBMS_FGA.DROP_POLICY(
object_schema => 'SCOTT',
object_name => 'EMP',
policy_name => 'POL7'
);
END;
/
-- 잘 drop 되었는지 확인
select *
from dba_audit_policies;
alter user hr identified by hr;
-- sys 계정에서
begin
dbms_fga.add_policy(object_schema=>'HR',
object_name=>'EMPLOYEES',
policy_name=>'POL9',
audit_condition=>'salary >= 50000',
enable=>TRUE,
statement_types=>'UPDATE',
audit_trail=>DBMS_FGA.DB_EXTENDED);
END;
/
-- hr 계정에서
update employees
set salary = 60000
where first_name='Donald';
-- sys 계정에서
select to_char(TIMESTAMP,'yyyy/mm/dd HH24:MI:SS') timeinfo ,
userhost, os_user, OBJECT_NAME,SCN, SQL_TEXT,SQL_BIND
from dba_fga_audit_trail;
