1. Table에 FGA 설정 TEST 1) 유저생성 CREATE USER USER1 IDENTIFIED BY "oracle4321" ; GRANT CONNECT, RESOURCE, CREATE VIEW TO USER1 ; CREATE TABLE USER1.T_TEST1 ( C1 NUMBER , C2 VARCHAR(10) ); INSERT INTO USER1.T_TEST1 VALUES(1,'TEST1'); COMMIT; 2) 감사 설정 begin dbms_fga.add_policy(object_schema => 'USER1', object_name => 'T_TEST1', policy_name => 'T_TEST1_DEL_POLICY', -- audit_condition => NULL, -- audit_..
1. set autot option set autotrace off/on -. off : trace기능을 끄는 것 -. on : SQL 실행결과를 함께 화면에 출력 하라는 의미 -. traceonly : 실행결과는 출력하지 말라는 의미 1. set autotrace on -> 실제 수행O + 수행 결과O + 실행 계획 + 실행 통계 2. set autotrace on explain -> 실제 수행O + 수행 결과O + 실행 계획 3. set autotrace on statistics -> 실제 수행O + 수행 결과O + 실행 통계 ▶ 1 ~ 3은 실행결과를 출력해야 하므로 쿼리를 실제 수행한다. 4. set autotrace traceonly -> 실제 수행 O + 수행결과 X + 실행계획 + 실행통계 ..
1. TM Lock Table을 보호하는 락 경합 발생시 enq:TM - contention 대기 2. TM Lock MODE 구분 모드 Ex LEVEL 2 RS(ROW Shared Table Locks), SS(Subshare Table Locks) LOCK TABLE EMP IN ROW SHARE MODE; LEVEL 3 RX(ROW Exclusive Table Locks), SX(Subexclusive Table Locks) LOCK TABLE EMP IN ROW EXCLUSIVE MODE; LEVEL 4 S(Share Table Locks), SS(Subshare Table Locks) LOCK TABLE EMP IN SHARE MODE; LEVEL 5 SRS(Share Row Exclusive ..
1. Object 변경작업시 고려해야 할 상황 사용량이 많은 Table에 column을 추가하려고 할때 ORA-0054: resource busy and acquire with NOWATI specifed 에러가 발생하거나 행이걸린 상황이 발생할 수 있다. alter 명령어는 dynamic sql로 밖에 실행을 할 수 없기 떄문에, 이 부분에서 hard parsing을 유발시킨다. Table 변경의 가장 큰 문제는 작업 테이블과 연관된 Object들이 Invaild 상태로 빠졋을 경우 recompile 해주는 작업이다. 2. Object 변경 작업 전 (dependency check) SELECT decode(name, UPPER('&&object_name'), 'REF', 'REF BY') ref, d..
1. Direct Patch I/O 일반적인 블록 I/O는 DB 버퍼 캐시를 경유한다. 읽고자 하는 블록을 먼저 버퍼캐시에서 찾아보고, 찾지 못할 때만 디스크에서 읽는다. 데이터 변경도 버퍼캐시에 적재된 블록에서 이루어지며, DBWR 프로세스가 주기적으로 변경된 블록(Dirty Buffer Blcok)을 데이터파일에 기록한다. -> 오라클은 버퍼 캐시를 경유하지 않고 데이터블록을 읽고 쓸 수 있는 Direct I/O 기능을 제공한다. Temp Segment Block을 읽고 쓸 떄 병렬 쿼리로 Full scan을 수행할 때 Nocache 옵션을 지정한 LOB Column을 읽을 때 Direct 옵션을 지정하고 export를 수행할 때 Parleele DML을 수행할 때 Direct Path Insert를..
1. Paging 처리 정의 데이터베이스에서 읽어와 화면에 출력할 때 한꺼번에 모든 데이터를 가져오는 것보다 출력될 페이지의 데이터만 나눠서 가져오는 것을 페이징(Paging)이라고 한다. 1) 표준 패턴 var num_page_no number; exec :num_page_no :=2; -- 페이지번호 var num_page_size number; exec :num_page_size := 10; -- 한페이지출력개수(사이즈) select a,b,c from ( select x.rnum no,a,b,c from ( select rownum rnum, a,b,c from t_board t order by reg_dt desc )x where rnum < (:num_page_no * :num_page_siz..