-- 내장된 감사 추적 기능 활용
create table t1 ( x int );
audit insert on t1 by access;
-- 트리거를 이용하여 직접 감사
create table t2 ( x int );
create table t2_audit
as
select sysdate dt
,a.*
from v$session a
where 1=0;
create index t2_audit_idx on t2_audit(sid,serial#);
-- 트리거 작성시 오류가 발생했음.
create trigger t2_audit
after insert on t2
begin
insert into t2_audit
select sysdate
,a.*
from v$session a
where sid = ( select sid
from v$mystat
where rownum=1 );
end;
/
-- 두가지 방법의 성능을 비교하는 프로시저 작성
create table t1_times ( xstart timestamp, xstop timestamp );
create or replace procedure p1( n in number )
as
l_rowid rowid;
begin
insert into t1_times (xstart) values (systimestamp)
returning rowid into l_rowid;
for i in 1 .. n
loop
insert into t1 values (i);
commit;
end loop;
update t1_times set xstop = systimestamp where rowid = l_rowid;
commit;
end;
/
-- T2에 대해서도 동일한 작업 수행 한 후 매번 30,000개의 행을 삽입하는 이 프로시저를 백그라운드로 다섯 번을 실행
내부 감사를 포함한 T1 | DIY 감사를 포함한 T2 | 비고 | |
---|---|---|---|
트랜잭션/초 | 380 | 278 | 27% 감소 |
CPU 시간 | 302 | 443 | 46% 증가 |
- 강좌 URL : http://www.gurubee.net/lecture/3458
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.