ps -ef | egrep "$ORACLE_SID" | awk '{print $2}' | xargs -n 1 ps vw \
| awk '{print $7-$10,$0;priv+=$7-$10;trs[$9]=$10} \
END{for(tsiz in trs){TRS+=trs[tsiz]}; print priv+TRS," :TOTAL (",priv,"private memory,",TRS,"shared code segments - TRS)"}' \
| sed '1p;/^0/d' | sort -n +0

접속한 유저의 ORACLE_SID 환경변수를 가져오므로 필요시 변경.

 

사용 예 )

[lfmalldb01d:/DBMS/LFMQ] ps -ef | egrep "$ORACLE_SID" | awk '{print $2}' | xargs -n 1 ps vw \
> | awk '{print $7-$10,$0;priv+=$7-$10;trs[$9]=$10} \
> END{for(tsiz in trs){TRS+=trs[tsiz]}; print priv+TRS," :TOTAL (",priv,"private memory,",TRS,"shared code segments - TRS)"}' \
> | sed '1p;/^0/d' | sort -n +0
0       PID    TTY STAT  TIME PGIN  SIZE   RSS   LIM  TSIZ   TRS %CPU %MEM COMMAND
164  62980774  pts/0 A     0:00    0   164   184    xx    16    20  0.0  0.0 tail -f /DBMS/LFMQ/LFDBA/batch/logs/clon_LFMQ.20230322 
168   4916192  pts/3 A     0:00    0   168   188    xx    16    20  0.0  0.0 tail -f alert_LFMQ.log 
536  27263876      - A     0:00    1   536   848    xx   266   312  0.0  0.0 /bin/ksh /DBMS/LFMQ/LFDBA/batch/scripts/02_RMAN_restore.sh
552  65405570      - A     0:00    0   552   864    xx   266   312  0.0  0.0 /bin/ksh /DBMS/LFMQ/LFDBA/batch/scripts/clon_LFMQ.sh.20230
752  11666330      - A     0:00    0   752   784    xx    13    32  0.0  0.0 ora_dism_LFMQ 
1080  27132932      - A    61:46    1  1084  1160    xx    78    80  0.0  0.0 mxg_sndf c LFMQ D 
1100  31916982      - A     0:30    2  1100  1200    xx    97   100  0.0  0.0 mxg_obsd -c LFMQ -OTHERD -i 10 -D 
16824  33292958      - A     0:00  453 16824 17404    xx   737   580  0.0  0.0 /DBMS/LFMQ/product/12c/bin/tnslsnr LFMQ -inherit 
21680  64684780      - A     0:00    0 21680 227184    xx 398736 205504  0.0  0.0 ora_tt01_LFMQ 
21936   2687940      - A     0:00    0 21936 227440    xx 398736 205504  0.0  0.0 ora_mman_LFMQ 
21936   3933090      - A     0:00    0 21936 227440    xx 398736 205504  0.0  0.0 ora_psp0_LFMQ 
21936   5440628      - A     0:00    0 21936 227440    xx 398736 205504  0.0  0.0 ora_vkrm_LFMQ 
21936  19071944      - A     0:00    0 21936 227440    xx 398736 205504  0.0  0.0 ora_clmn_LFMQ 
21936  25428778      - A     0:00    0 21936 227440    xx 398736 205504  0.0  0.0 ora_vktm_LFMQ 
21936  27657160      - A     0:00    0 21936 227440    xx 398736 205504  0.0  0.0 ora_pmon_LFMQ 
21936  32113800      - A     0:00    0 21936 227440    xx 398736 205504  0.0  0.0 ora_reco_LFMQ 
21936  32179106      - A     0:00    0 21936 227440    xx 398736 205504  0.0  0.0 ora_pman_LFMQ 
21936  34538574      - A     0:00    0 21936 227440    xx 398736 205504  0.0  0.0 ora_pxmn_LFMQ 
21936  59507318      - A     0:00    0 21936 227440    xx 398736 205504  0.0  0.0 ora_diag_LFMQ 
21936  59965698      - A     0:00    0 21936 227440    xx 398736 205504  0.0  0.0 ora_tmon_LFMQ 
21936  63635820      - A     0:00    0 21936 227440    xx 398736 205504  0.0  0.0 ora_smon_LFMQ 
22000  22414500      - A     0:00    0 22000 227504    xx 398736 205504  0.0  0.0 ora_mmon_LFMQ 
22256  61604748      - A     0:00    0 22256 227760    xx 398736 205504  0.0  0.0 ora_o000_LFMQ 
22448   3408896      - A     0:00    0 22448 227952    xx 398736 205504  0.0  0.0 ora_svcb_LFMQ 
22448   5571450      - A     0:06    0 22448 227952    xx 398736 205504  0.0  0.0 ora_mmnl_LFMQ 
22832   5702820      - A     0:01    0 22832 228336    xx 398736 205504  0.0  0.0 ora_dbrm_LFMQ 
24176   3539926      - A     0:01    0 24176 229680    xx 398736 205504  0.0  0.0 ora_fenc_LFMQ 
24816  52560520      - A     0:00    0 24816 230320    xx 398736 205504  0.0  0.0 ora_gen0_LFMQ 
25008  22938874      - A     0:00    0 25008 230512    xx 398736 205504  0.0  0.0 ora_rbal_LFMQ 
25200   9962302      - A     0:00    0 25200 230704    xx 398736 205504  0.0  0.0 ora_asmb_LFMQ 
25712  24183766      - A     0:00    0 25712 231216    xx 398736 205504  0.0  0.0 ora_ofsd_LFMQ 
25712  26805160      - A     0:00    0 25712 231216    xx 398736 205504  0.0  0.0 ora_gen1_LFMQ 
26032  11076438      - A     0:00    0 26032 231536    xx 398736 205504  0.0  0.0 ora_lgwr_LFMQ 
27248  64225762      - A     0:02    0 27248 232752    xx 398736 205504  0.0  0.0 oracleLFMQ (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)
27376   9438136      - A     0:00    0 27376 232880    xx 398736 205504  0.0  0.0 ora_ckpt_LFMQ 
28016   8520670      - A     0:00    0 28016 233520    xx 398736 205504  0.0  0.0 ora_lreg_LFMQ 
28848   1311664      - A     0:00    0 28848 234352    xx 398736 205504  0.0  0.0 ora_dbw3_LFMQ 
28848   3736714      - A     0:00    0 28848 234352    xx 398736 205504  0.0  0.0 ora_dbw1_LFMQ 
28848  14943182      - A     0:00    0 28848 234352    xx 398736 205504  0.0  0.0 ora_dbw5_LFMQ 
28848  61997408      - A     0:00    0 28848 234352    xx 398736 205504  0.0  0.0 ora_dbw6_LFMQ 
28848  65274420      - A     0:00    0 28848 234352    xx 398736 205504  0.0  0.0 ora_dbw7_LFMQ 
28848  65405338      - A     0:00    0 28848 234352    xx 398736 205504  0.0  0.0 ora_dbw4_LFMQ 
28848  65929692      - A     0:00    0 28848 234352    xx 398736 205504  0.0  0.0 ora_dbw2_LFMQ 
30896  24839072      - A     0:00    0 30896 236400    xx 398736 205504  0.0  0.0 ora_dbw0_LFMQ 
45104   1049490      - A     0:00    0 45104 250608    xx 398736 205504  0.0  0.0 ora_tt00_LFMQ 
45680   7537580      - A     0:00    0 45680 251184    xx 398736 205504  0.0  0.0 ora_arc3_LFMQ 
45680  53019128      - A     0:00    0 45680 251184    xx 398736 205504  0.0  0.0 ora_arc1_LFMQ 
46000  54722908      - A     0:00    0 46000 251504    xx 398736 205504  0.0  0.0 ora_arc0_LFMQ 
46000  55050626      - A     0:00    0 46000 251504    xx 398736 205504  0.0  0.0 ora_arc2_LFMQ 
63032  55575448      - A    1173:59 1328 63544 64148    xx  1118  1116  0.0  0.0 mxg_rts c LFMQ r D 
73456  18285624      - A     0:01    3 73456 278960    xx 398736 205504  0.0  0.0 oracleLFMQ (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)
75120   8717264      - A     0:25    0 75120 280624    xx 398736 205504  0.0  0.0 ora_dia0_LFMQ 
82096  20054886      - A     0:00    0 82096 287600    xx 398736 205504  0.0  0.0 ora_mark_LFMQ 
1616696  51118350      - A     5:16    1 1616696 1822200    xx 398736 205504  0.1  2.0 oracleLFMQ (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)
1616696  60621190      - A     5:05    0 1616696 1822200    xx 398736 205504  0.1  2.0 oracleLFMQ (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)
1682296  10027908      - A     4:11    1 1682296 1887800    xx 398736 205504  0.1  2.0 oracleLFMQ (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)
1682296  10421162      - A     4:33    2 1682296 1887800    xx 398736 205504  0.1  2.0 oracleLFMQ (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)
1682296  11601008      - A     4:58    2 1682296 1887800    xx 398736 205504  0.1  2.0 oracleLFMQ (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)
1682296  15074266      - A     5:00    2 1682296 1887800    xx 398736 205504  0.1  2.0 oracleLFMQ (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)
1682296  16974894      - A     5:21    0 1682296 1887800    xx 398736 205504  0.1  2.0 oracleLFMQ (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)
1682296  30736686      - A     5:14    0 1682296 1887800    xx 398736 205504  0.1  2.0 oracleLFMQ (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)
1682296  56426814      - A     5:24    0 1682296 1887800    xx 398736 205504  0.1  2.0 oracleLFMQ (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)
1682296  65012452      - A     4:47    1 1682296 1887800    xx 398736 205504  0.1  2.0 oracleLFMQ (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)
1682936  60948954      - A     5:36    1 1682936 1888440    xx 398736 205504  0.1  2.0 oracleLFMQ (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)
20014808  :TOTAL ( 19807064 private memory, 207744 shared code segments - TRS)

맨 마지막에 20014808 가 총 사이즈로 단위는 KB로 본 예제에서는 총 20G 정도 사용 중.

 

'OraclE' 카테고리의 다른 글

sqlarea 쿼리 확인  (0) 2022.07.21
SPM - 튜닝된 SQL의 실행계획을 등록하고 적용 하는 방법  (0) 2022.06.13
SPM(SQL PLAN MANAGEMENT)  (0) 2022.06.13
OGG 동기화 테이블 추가  (0) 2022.04.04
active session history  (0) 2022.01.30

기본적으로 100만개의 레코드를 벌크 인서트 할 때 아래 방법을 사용 합니다.

create table LARGE_TBL (id number, value varchar2(50));

 

begin

        for i in 1 .. 1000000 loop

                insert into large_tbl values (i,'foobar');

        end loop;

        commit;

end;

/

 

PL/SQL procedure successfully completed.

 

Elapsed: 00:00:40.53

 

call     count       cpu    elapsed       disk      query    current        rows

------- ------  -------- ---------- ---------- ---------- ----------  ----------

Parse        1      0.00       0.00          0          0          0           0

Execute 1000000     15.67      15.42         11       2838    1040617     1000000

Fetch        0      0.00       0.00          0          0          0           0

------- ------  -------- ---------- ---------- ---------- ----------  ----------

total   1000001     15.67      15.42         11       2838    1040617     1000000

 

그럼 테이블 레코드 형식의 배열에 값을 저장하고 한번에 insert 하면,

declare

        TYPE tbl_ins IS TABLE OF LARGE_TBL%ROWTYPE index by binary_integer;

        w_ins tbl_ins;

begin

        for i in 1 .. 1000000 loop

                w_ins(i).id := i;

                w_ins(i).value := 'foobar';

        end loop;

       

        forall i in 1 .. 1000000 insert into large_tbl values w_ins(i);

        commit;

end;

/

 

PL/SQL procedure successfully completed.

 

Elapsed: 00:00:01.26

 

call     count       cpu    elapsed       disk      query    current        rows

------- ------  -------- ---------- ---------- ---------- ----------  ----------

Parse        1      0.00       0.00          0          0          0           0

Execute      1      0.49       0.50         11       4804      24093     1000000

Fetch        0      0.00       0.00          0          0          0           0

------- ------  -------- ---------- ---------- ---------- ----------  ----------

total        2      0.49       0.51         11       4804      24093     1000000

 

느낌이 오시나요?

sql 실행 횟수가 줄어 듭니다.

'OraclE' 카테고리의 다른 글

active session history  (0) 2022.01.30
orange plan 테이블 생성  (0) 2022.01.30
RMAN backup set 에서 archivelog 추출하여 logminor 수행  (0) 2018.02.22
Oracle RAC 마스터 노드 찾기 (find Master Node)  (0) 2017.09.14
DATAPUMP 암호화  (0) 2017.01.19

오라클 RAC에 두가지 유형의 마스터가 있는데,

하나는 Clusterware 레벨의 마스터고, 하나는 특정 리소스 또는 블록, 객체를 위한 마스터 노드가 있다.



Clusterware 레벨의 마스터 노드를 찾는 방법은 아래와 같은 방법이 있다.

$ cat $ORA_CRS_HOME/log/`hostname`/cssd/ocssd* |grep master

or

$ for x in `ls -tr $ORA_CRS_HOME/log/`hostname`/cssd/ocssd* `; do grep -i "master node" $x ; done | tail -1 


또 다른 방법은 OCR 자동 백업을 이용한 방법이다.

OCR 자동 백업은 마스터 노드에서 수행 되고, 실패시 새로운 마스터 노드에서 백업이 생성된다.

[HOST01]oracle@host01:/home/oracle/DBA/hoon/mon> ocrconfig -showbackup

host02     2017/09/14 12:01:14     /u01/app/12.1.0.2/grid/cdata/cluster-clu1/backup00.ocr     1146027977

host02     2017/09/14 08:01:13     /u01/app/12.1.0.2/grid/cdata/cluster-clu1/backup01.ocr     1146027977

host02     2017/09/14 04:01:12     /u01/app/12.1.0.2/grid/cdata/cluster-clu1/backup02.ocr     1146027977

host02     2017/09/13 04:01:09     /u01/app/12.1.0.2/grid/cdata/cluster-clu1/day.ocr     1146027977

host02     2017/09/04 04:00:34     /u01/app/12.1.0.2/grid/cdata/cluster-clu1/week.ocr     1146027977

host01     2015/06/01 12:17:26     /u01/app/12.1.0.2/grid/cdata/cluster-clu1/backup_20150601_121726.ocr     1146027977

host02     2015/06/01 11:14:17     /u01/app/12.1.0.2/grid/cdata/cluster-clu1/backup_20150601_111417.ocr     0



그럼 리소스에 대한 마스터는 어떻게 찾을까?

select distinct o.owner, o.object_name, DECODE(m.CURRENT_MASTER,0,'host01',1,'host02') AS CURRENT_NODE

from   dba_objects o, v$gcspfmaster_info m

where o.data_object_id = m.data_object_id

and object_name = 'MEMBERS';


OWNER        OBJECT_NAME                    CURRENT_NODE

------------ ------------------------------ --------------------

SCOTT        MEMBERS                        host01


리소스 마스터를 메뉴얼로 변경하는 방법은 아래와 같다.

 oradebug lkdebug -m pkey <objectid>

예) members 의 오브젝트 아이디가 253672 라면 

     oradebug lkdebug -m pkey 253672


리마스터링에 대한 자세한 내용은 다음 사이트를 참조 하자.

http://oracleinaction.com/dynamic-remastering/



12c 에서 새로 나온 UNIFIED AUDIT 사용하면 기존 FGA 보다 편리하게 audit 기능을 사용할 수 있다.

UNIFIED AUDIT은 아래와 같이 다양한 소스로 부터 감사 정보를 수집할 수 있다.


  • Audit records (including SYS audit records) from unified audit policies and AUDIT settings

  • Fine-grained audit records from the DBMS_FGA PL/SQL package

  • Oracle Database Real Application Security audit records

  • Oracle Recovery Manager audit records

  • Oracle Database Vault audit records

  • Oracle Label Security audit records

  • Oracle Data Mining records

  • Oracle Data Pump

  • Oracle SQL*Loader Direct Load



기본 저장 TBS가 SYSTEM으로 지정 되어 있으니 별도의 TBS를 생성하여 관리한다.


-- 감사 전용 테이블 스페이스 생성

CREATE TABLESPACE TBS_AUDIT DATAFILE SIZE 4G;


col table_name for a20

SELECT table_name, tablespace_name

FROM   dba_tables

WHERE  table_name IN ('AUD$', 'FGA_LOG$')

ORDER BY table_name;


TABLE_NAME           TABLESPACE_NAME

-------------------- ------------------------------

AUD$                 SYSTEM

FGA_LOG$             SYSTEM




-- 감사 테이블 스페이스 SYSTEM -> TBS_AUDIT 변경

BEGIN

  DBMS_AUDIT_MGMT.set_audit_trail_location(

    audit_trail_type           => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,

    audit_trail_location_value => 'TBS_AUDIT');

END;

/


BEGIN

  DBMS_AUDIT_MGMT.set_audit_trail_location(

    audit_trail_type           => DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD,

    audit_trail_location_value => 'TBS_AUDIT');

END;

/


BEGIN

  DBMS_AUDIT_MGMT.set_audit_trail_location(

    audit_trail_type           => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,

    audit_trail_location_value => 'TBS_AUDIT');

END;

/



col table_name for a20

SELECT table_name, tablespace_name

FROM   dba_tables

WHERE  table_name IN ('AUD$', 'FGA_LOG$')

ORDER BY table_name;


TABLE_NAME           TABLESPACE_NAME

-------------------- ------------------------------

AUD$                 TBS_AUDIT

FGA_LOG$             TBS_AUDIT



COLUMN parameter_name FORMAT A30

COLUMN parameter_value FORMAT A20

COLUMN audit_trail FORMAT A20

SELECT * FROM dba_audit_mgmt_config_params;


PARAMETER_NAME                 PARAMETER_VALUE      AUDIT_TRAIL

------------------------------ -------------------- --------------------

DB AUDIT TABLESPACE            TBS_AUDIT            STANDARD AUDIT TRAIL

DB AUDIT TABLESPACE            TBS_AUDIT            FGA AUDIT TRAIL

DB AUDIT TABLESPACE            TBS_AUDIT            UNIFIED AUDIT TRAIL

AUDIT FILE MAX SIZE            10000                OS AUDIT TRAIL

AUDIT FILE MAX SIZE            10000                XML AUDIT TRAIL

AUDIT FILE MAX AGE             5                    OS AUDIT TRAIL

AUDIT FILE MAX AGE             5                    XML AUDIT TRAIL

DB AUDIT CLEAN BATCH SIZE      10000                STANDARD AUDIT TRAIL

DB AUDIT CLEAN BATCH SIZE      10000                FGA AUDIT TRAIL

OS FILE CLEAN BATCH SIZE       1000                 OS AUDIT TRAIL

OS FILE CLEAN BATCH SIZE       1000                 XML AUDIT TRAIL

AUDIT WRITE MODE               QUEUED WRITE MODE    UNIFIED AUDIT TRAIL

AUDIT FILE MAX SIZE            10000                UNIFIED AUDIT TRAIL

AUDIT FILE MAX AGE             5                    UNIFIED AUDIT TRAIL



정책은 BIG, DW 스키마에 대하여 SELECT, INSERT, UPDATE, DELETE 가 성공했을 때 AUDIT 이 실행 되도록 설정 한다.


-- DI_ALL_ACTION_POL 을 정책 이름으로 사용

-- 정책 생성

CREATE AUDIT POLICY DI_ALL_ACTION_POL 

ACTIONS SELECT, UPDATE, DELETE, INSERT;


COL POLICY_NAME FOR A20

COL AUDIT_OPTION FRO A20

COL AUDIT_OPTION FOR A20

COL OBJECT_SCHEMA FOR A20

COL OBJECT_NAME FOR A20

SELECT POLICY_NAME, AUDIT_OPTION, AUDIT_OPTION_TYPE, OBJECT_SCHEMA, OBJECT_NAME, OBJECT_TYPE

FROM AUDIT_UNIFIED_POLICIES

where policy_name='DI_ALL_ACTION_POL';


POLICY_NAME          AUDIT_OPTION         AUDIT_OPTION_TYPE  OBJECT_SCHEMA        OBJECT_NAME          OBJECT_TYPE

-------------------- -------------------- ------------------ -------------------- -------------------- -----------------------

DI_ALL_ACTION_POL    INSERT               STANDARD ACTION    NONE                 NONE                 NONE

DI_ALL_ACTION_POL    SELECT               STANDARD ACTION    NONE                 NONE                 NONE

DI_ALL_ACTION_POL    UPDATE               STANDARD ACTION    NONE                 NONE                 NONE

DI_ALL_ACTION_POL    DELETE               STANDARD ACTION    NONE                 NONE                 NONE



생성된 정책에 대하여 각 스키마를 할당 하여 액션이 성공 하였을때만 AUDIT 되도록 활성화 한다.


-- 정책에 대한 대상 활성화

AUDIT POLICY DI_ALL_ACTION_POL BY BIG, DW WHENEVER SUCCESSFUL;


COL USER_NAME FOR A30

SELECT * FROM SYS.AUDIT_UNIFIED_ENABLED_POLICIES;


USER_NAME                      POLICY_NAME          ENABLED_ SUC FAI

------------------------------ -------------------- -------- --- ---

BIG                            DI_ALL_ACTION_POL    BY       YES NO

DW                             DI_ALL_ACTION_POL    BY       YES NO

ALL USERS                      ORA_SECURECONFIG     BY       YES YES

ALL USERS                      ORA_LOGON_FAILURES   BY       NO  YES


※ 정책에 대한 대상 비 활성화

NOAUDIT POLICY DI_ALL_ACTION_POL BY BIG, DW WHENEVER SUCCESSFUL;



UNIFIED_AUDIT_TRAIL 을 조회하여 위에 설정 된 스키마로 접속하여 수행된 액션에 대하여 AUDIT LOG를 확인 한다.


-- 로그 조회

select SESSIONID, OS_USERNAME, USERHOST, TERMINAL, AUTHENTICATION_TYPE, DBUSERNAME, CLIENT_PROGRAM_NAME, 

ENTRY_ID, STATEMENT_ID, EVENT_TIMESTAMP, ACTION_NAME, RETURN_CODE, 

OBJECT_SCHEMA, OBJECT_NAME, SQL_TEXT, UNIFIED_AUDIT_POLICIES

from SYS.UNIFIED_AUDIT_TRAIL

WHERE EVENT_TIMESTAMP >= TRUNC(SYSDATE)

ORDER BY EVENT_TIMESTAMP DESC;


select ENTRY_ID, STATEMENT_ID, SQL_TEXT

from SYS.UNIFIED_AUDIT_TRAIL

where SESSIONID=2952368630

ORDER BY EVENT_TIMESTAMP DESC;



정책에 따라 다량의 AUDIT LOG가 수집될 수 있다.

수집된 로그에 대한 관리를 진행한다.

12시간 간격으로 audit에 대한 초기화를 진행한다.


-- 파라미터 조회

COLUMN parameter_name FORMAT A30

COLUMN parameter_value FORMAT A20

COLUMN audit_trail FORMAT A20

SELECT * FROM dba_audit_mgmt_config_params;


PARAMETER_NAME                 PARAMETER_VALUE      AUDIT_TRAIL

------------------------------ -------------------- --------------------

DB AUDIT TABLESPACE            TBS_AUDIT            STANDARD AUDIT TRAIL

DB AUDIT TABLESPACE            TBS_AUDIT            FGA AUDIT TRAIL

DB AUDIT TABLESPACE            TBS_AUDIT            UNIFIED AUDIT TRAIL

AUDIT FILE MAX SIZE            10000                OS AUDIT TRAIL

AUDIT FILE MAX SIZE            10000                XML AUDIT TRAIL

AUDIT FILE MAX AGE             5                    OS AUDIT TRAIL

AUDIT FILE MAX AGE             5                    XML AUDIT TRAIL

DB AUDIT CLEAN BATCH SIZE      10000                STANDARD AUDIT TRAIL

DB AUDIT CLEAN BATCH SIZE      10000                FGA AUDIT TRAIL

OS FILE CLEAN BATCH SIZE       1000                 OS AUDIT TRAIL

OS FILE CLEAN BATCH SIZE       1000                 XML AUDIT TRAIL

AUDIT WRITE MODE               QUEUED WRITE MODE    UNIFIED AUDIT TRAIL

AUDIT FILE MAX SIZE            10000                UNIFIED AUDIT TRAIL

AUDIT FILE MAX AGE             5                    UNIFIED AUDIT TRAIL



-- 감사 체크 파라미터 설정

BEGIN

  DBMS_AUDIT_MGMT.init_cleanup(

    audit_trail_type         => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,

    default_cleanup_interval => 12 /* hours */);

END;

/



COLUMN parameter_name FORMAT A30

COLUMN parameter_value FORMAT A20

COLUMN audit_trail FORMAT A20

SELECT * FROM dba_audit_mgmt_config_params;


PARAMETER_NAME                 PARAMETER_VALUE      AUDIT_TRAIL

------------------------------ -------------------- --------------------

DB AUDIT TABLESPACE            TBS_AUDIT            STANDARD AUDIT TRAIL

DB AUDIT TABLESPACE            TBS_AUDIT            FGA AUDIT TRAIL

DB AUDIT TABLESPACE            TBS_AUDIT            UNIFIED AUDIT TRAIL

AUDIT FILE MAX SIZE            10000                OS AUDIT TRAIL

AUDIT FILE MAX SIZE            10000                XML AUDIT TRAIL

AUDIT FILE MAX AGE             5                    OS AUDIT TRAIL

AUDIT FILE MAX AGE             5                    XML AUDIT TRAIL

DB AUDIT CLEAN BATCH SIZE      10000                STANDARD AUDIT TRAIL

DB AUDIT CLEAN BATCH SIZE      10000                FGA AUDIT TRAIL

OS FILE CLEAN BATCH SIZE       1000                 OS AUDIT TRAIL

OS FILE CLEAN BATCH SIZE       1000                 XML AUDIT TRAIL

AUDIT WRITE MODE               QUEUED WRITE MODE    UNIFIED AUDIT TRAIL

AUDIT FILE MAX SIZE            10000                UNIFIED AUDIT TRAIL

AUDIT FILE MAX AGE             5                    UNIFIED AUDIT TRAIL

DEFAULT CLEAN UP INTERVAL      12                   STANDARD AUDIT TRAIL

DEFAULT CLEAN UP INTERVAL      12                   FGA AUDIT TRAIL

DEFAULT CLEAN UP INTERVAL      12                   OS AUDIT TRAIL

DEFAULT CLEAN UP INTERVAL      12                   XML AUDIT TRAIL


-- 감사 체크 파라미터 설정 확인

SET SERVEROUTPUT ON

BEGIN

  IF DBMS_AUDIT_MGMT.is_cleanup_initialized(DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL) THEN

    DBMS_OUTPUT.put_line('YES');

  ELSE

    DBMS_OUTPUT.put_line('NO');

  END IF;

END;

/


'YES' 로 나오면 설정이 잘 되었다.



※ 감사 체크 파라미터 설정 삭제

BEGIN

  DBMS_AUDIT_MGMT.deinit_cleanup(

    audit_trail_type         => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL);

END;

/



30일 이전에 생성된 AUDIT LOG는 timestamp를 통해 삭제 하도록 한다.


-- 로그 삭제 타임 스탭프 관리

BEGIN

  DBMS_AUDIT_MGMT.set_last_archive_timestamp(

    audit_trail_type  => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,

    last_archive_time => SYSTIMESTAMP-30);

END;

/



-- 타임 스탬프 확인

COLUMN audit_trail FORMAT A20

COLUMN last_archive_ts FORMAT A40

SELECT * FROM dba_audit_mgmt_last_arch_ts;


AUDIT_TRAIL          RAC_INSTANCE LAST_ARCHIVE_TS                          DATABASE_ID CONTAINER_GUID

-------------------- ------------ ---------------------------------------- ----------- ---------------------------------

UNIFIED AUDIT TRAIL             0 12-JUN-16 04.50.32.000000 PM +00:00        152219430 2BCBF61973D6C209E053146E12AC5B3C


※ 타임 스탬프 초기화

BEGIN

  DBMS_AUDIT_MGMT.clear_last_archive_timestamp(

    AUDIT_TRAIL_TYPE     =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED);

END;

/



설정된 timestamp를 통해 AUDIT LOG를 삭제 한다.


-- 감사 로그 수동 삭제

BEGIN

  DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(

   AUDIT_TRAIL_TYPE        => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,

   USE_LAST_ARCH_TIMESTAMP => TRUE);

END;

/



※ USE_LAST_ARCH_TIMESTAMP => FALSE 로 설정하면 timestamp를 사용 하지 않는다.



timestamp를 통해 자동으로 삭제 되도록 스케줄을 생성 한다.


-- 감사 로그 삭제 잡 생성

BEGIN

  DBMS_AUDIT_MGMT.create_purge_job(

    audit_trail_type           => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,

    audit_trail_purge_interval => 24 /* hours */,  

    audit_trail_purge_name     => 'PURGE_ALL_AUDIT_TRAILS',

    use_last_arch_timestamp    => TRUE);

END;

/



-- 감사 로그 삭제 잡 확인

SELECT job_action

FROM   dba_scheduler_jobs

WHERE  job_name = 'PURGE_ALL_AUDIT_TRAILS';


JOB_ACTION

------------------------------------------------------------------------------------------------------------------------------------------------------

BEGIN DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(15, TRUE, 1);  END;



-- 감사 로그 삭제 잡 비활성/활성

BEGIN

  DBMS_AUDIT_MGMT.set_purge_job_status(

    audit_trail_purge_name   => 'PURGE_ALL_AUDIT_TRAILS',

    audit_trail_status_value => DBMS_AUDIT_MGMT.PURGE_JOB_DISABLE);


  DBMS_AUDIT_MGMT.set_purge_job_status(

    audit_trail_purge_name   => 'PURGE_ALL_AUDIT_TRAILS',

    audit_trail_status_value => DBMS_AUDIT_MGMT.PURGE_JOB_ENABLE);

END;

/



※ 감사 로그 잡 삭제

BEGIN

  DBMS_AUDIT_MGMT.drop_purge_job(

     audit_trail_purge_name     => 'PURGE_ALL_AUDIT_TRAILS');

END;

/



timestamp는 자동으로 설정 되지 않으니 스케줄을 통해 설정 한다.


-- 로그 삭제 타임 스탭프 관리 잡 생성

BEGIN

  DBMS_SCHEDULER.create_job (

    job_name        => 'audit_last_archive_time',

    job_type        => 'PLSQL_BLOCK',

    job_action      => 'BEGIN 

                          DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, TRUNC(SYSTIMESTAMP)-30);

                        END;',

    start_date      => SYSTIMESTAMP,

    repeat_interval => 'freq=daily; byhour=0; byminute=0; bysecond=0;',

    end_date        => NULL,

    enabled         => TRUE,

    comments        => 'Automatically set audit last archive time.');

END;

/



+ Recent posts