-- INIT_CLEANUP ( PURGE JOB 생성 위해 필요) BEGIN DBMS_AUDIT_MGMT.INIT_CLEANUP( AUDIT_TRAIL_TYPE => dbms_audit_mgmt.AUDIT_TRAIL_OS, default_cleanup_interval => 24*7); -- 1주일에 1번 실행 END;
-- 주기적으로 삭제하는 JOB 생성 BEGIN DBMS_AUDIT_MGMT.CREATE_PURGE_JOB ( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS, AUDIT_TRAIL_PURGE_INTERVAL => 24*7, AUDIT_TRAIL_PURGE_NAME => 'STANDARD_OS_AUDIT_TRAIL_PURGE', USE_LAST_ARCH_TIMESTAMP => FALSE ); END;
-- 등록된 PURGE JOB 은 DBA_AUDIT_MGMT_CLEANUP_JOBS 뷰에서 확인가능
SELECT * FROM DBA_AUDIT_MGMT_CLEANUP_JOBS;
-- DBA_SCHEDULER_JOBS 에서도 확인 가능 SELECT * FROM DBA_SCHEDULER_JOBS WHERE OWNER='AUDSYS';
-- 기타 AUDIT UTIL 관련 뷰 select * from DBA_AUDIT_MGMT_LAST_ARCH_TS; select * from DBA_AUDIT_MGMT_CLEAN_EVENTS;
-- 등록된 PURGE JOB 삭제하기
BEGIN DBMS_AUDIT_MGMT.DROP_PURGE_JOB('STANDARD_OS_AUDIT_TRAIL_PURGE'); END;
-- INIT CLEANUP 삭제하기
BEGIN DBMS_AUDIT_MGMT.DEINIT_CLEANUP( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS); END;
-- 1회성 AUDIT 삭제
BEGIN DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS, use_last_arch_timestamp => FALSE); END;
오라클은 8i 에서부터 백업을 위해 rman 이라는 것을 처음 소개했다. 백업과 복구가 보다 쉬워진다는 것이 오라클이 내세운 명분이다. 하지만 새로운 것을 다시 배워야 하기에 한동안 DBA 들에겐 외면받아왔다. 그렇지만 본격적으로 오라클이 ASM 이라는 개념을 들고왔다. 그리고 이것은 rman 을 통해서만 백업이 가능해서 이제 DBA 들은 RMAN 을 반드시 익혀야 하는 현실이다.
각설하고..
Recovery catalog DB 란
한마디로 rman 이 사용할 metadata 들을 저장한 db스키마 라고 생각하면된다. RMAN 을 사용하려면 백업과 복구를 위한 정보들을 저장할 공간이 필요하다. 별도로 CATALOG DB 를 설치하지 않아도 rman 사용에는 지장이 없다. 이 경우 controlfile 에 해당 정보들이 저장된다.
안써도 사용가능하지만 굳이 catalog db 를 사용해서 얻는 이점은 아래와 같다. 1) redundancy of controlfile => catalog db 를 쓴다고 controlfile 에 metadata 를 저장하지 않는 것은 아니다. 정보의 중복 저장이다. 이것이 이점이 될수 있을까 싶지만, 원본db 의 controlfile 이 삭제되었을때도 카탈로그에는 남아있는 장점이 있다.
** backup, restore, and crosscheck 같은 operation 발생시 metadata 가 변경이 된다. 이때 순서는 언제나 target db controlfile 우선 update, 카탈로그db 는 후에 sync 된다.
2) 모든 타겟 DB metadata 중앙관리화 => 여러 서버를 가진 경우 한곳에서 metadata 정보 관리하기 편함.
3) longer metadata history => controlfile 에 저장할때 보다 더 긴 기간 정보 저장이 가능.
4) stored script 사용 => catalog 에서만 가능한 것. 한번 스크립트를 생성해서 재사용 가능. 아래에서 확인해보자
- 프로그램코드 - DB에 연결된 세션 정보 (inactive 포함) - 프로그램 실행 중에 필요한 정보(예: 결과 rows 을 가져오는 쿼리의 현재 상태) - 프로세스 간에 공유되는 lock 정보 - 캐싱된 data (data blocks, redo record)
1. 오라클 메모리 구조
1) SGA (System Global Area)
- Shared pool : SQL statements, data dictionary, Stored procedures 등을 캐싱하여 공유
- DB buffer cache : data block 을 disk I/O 를 통해 캐싱하여 공유. - Redo log buffer : redo log file 을 캐싱하여 성능 향상 - Large pool : 아래 case 에서 shared pool 을 사용할수 있는데 large pool 을 사용하는 것을 고려해볼수 있다. shared server (session memory) Parallel query (message buffers) Recovery Manager(I/O buffers )
- Java pool
2) PGA (Program Global Area)
: Server process 가 사용하는 메모리 영역 ( oracle 에서는 작업대 정도로 비유함) 각 server process 간에 각자의 PGA 를 사용하고 서로 공유되지 않음. 세션 A 가 쿼리를 날렸을때 중간계산된 값이 다른 세션에 의해 사용이 되면 안될것이다.
각 서버프로세스는 각자의 PGA 를 할당받는다고 했는데, 시스템 전체의 PGA를 total instance PGA 혹은 Instance PGA 라고 부름.
SGA 는 시스템 전체에서 하나이기에 (single node 기준) sga_max_size, sga_target 을 설정하지만 PGA 는 서버프로세스별 할당하므로 연관된 초기화 파라미터에 전체를 의미하는 aggregate 가 붙는다.(pga_aggregate_limit,pga_aggregate_target)
PGA 는 전체의 크기만 설정 가능하고 개별 세션의 PGA 를 조정하려면 아래와 같이 해야함.
alter session set workarea_size_policy = manual; alter session set sort_area_size = 1024000;
하지만 오라클에서는 memory 관리를 수동으로 조정하는 것을 권장하지 않고 있다.
3) UGA (User Global Area) The UGA is memory associated with a user session.
alias grid_env='export ORACLE_HOME=$GRID_HOME;export ORACLE_SID=+ASM;export PATH=$GRID_HOME/bin:$PATH' alias db_env='export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/db_1;export ORACLE_SID=orcl' alias ss='sqlplus / as sysdba' alias oh='cd $ORACLE_HOME' alias gh='cd $GRID_HOME' ===== oracle bash profile =====
This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hitting <ENTER> without typing an answer will keep that current value. Ctrl-C will abort.
Default user to own the driver interface []: oracle Default group to own the driver interface []: asmadmin Start Oracle ASM library driver on boot (y/n) [n]: y Scan for Oracle ASM disks on boot (y/n) [y]: y Writing Oracle ASM library driver configuration: done [root@asmtest oracle]#
[root@asmtest oracle]# oracleasm init Creating /dev/oracleasm mount point: /dev/oracleasm Loading module "oracleasm": oracleasm Configuring "oracleasm" to use device physical block size Mounting ASMlib driver filesystem: /dev/oracleasm [root@asmtest oracle]# oracleasm status Checking if ASM is loaded: yes Checking if /dev/oracleasm is mounted: yes [root@asmtest oracle]# oracleasm configure ORACLEASM_ENABLED=true ORACLEASM_UID=oracle ORACLEASM_GID=asmadmin ORACLEASM_SCANBOOT=true ORACLEASM_SCANORDER="" ORACLEASM_SCANEXCLUDE="" ORACLEASM_SCAN_DIRECTORIES="" ORACLEASM_USE_LOGICAL_BLOCK_SIZE="false" [root@asmtest oracle]#
- FDISK
디스크 추가 전
[root@asmtest dev]# ls /dev/sd* /dev/sda /dev/sda1 /dev/sda2
ASM 에서 사용할 디스크그룹을 아래와 같이 추가하자
- crs1,2,3 : asm 파일용, 대충 각 1G - data : database 용, 최소 20G - reco : recovery 영역, 대충 5G
VM관리자에서 설정 클릭
* 디스크는 online 상에선 추가가 안되고 vm 이 down 된 상태에서 가능하다. 처음부터 준비하면 좋다.