delete from a_tablewhere a_table.col1 in (select a_table.col1from a_tablewhere a_table.col2 = true) * 이렇게 자기가 DML 을 진행할 table을 조건으로 사용하기위해 select 해서 가져올경우 에러가 발생한다 You can't specify target table 'a_table' for update in FROM clause * 그럴땐 select 를 다시 서브쿼리 처리하면된다(고한다) delete from a_tablewhere a_table.col1 in (select alias_name.col1from (select a_table.col1from a_tablewhere a_table.col2 = true) as a..
사용자가 DML (tx) 를 실행하게 되면 오라클은 내부적으로 다음과 같은 순서로 작업을 진행한다 해당 tx 에 대해 undo segment 를 할당한다 언두 세그먼트의 선택은 랜덤하게 이루어지며 다른 tx 가 사용중이라면 3번까지 재시도한다 이 과정이 실패하면 오프라인 상태의 언두 세그먼트를 활성해서 사용하고 실패하면 새로운 언두세그먼트를 할당한다 그래도 실패하면 롤백 세그먼트 알고리즘을 사용한다 언두 세그먼트를 할당 받으면 언두 세그먼트 헤더에 tx 테이블 슬롯을 생성한다 트랜젝션 테이블을 생성하고 나면 txid 를생성하고 현재 트랜젝션에 할당한다 트랜젝션의 대상이 되는 블록들을 버퍼개시로 적재하고 블록헤더의 ITL 에 트랜젝션 엔트리를 등록한다 변경한 블록들의 변경정보는 PGA 에 체인지 벡터라는 ..
사용자가 sql 문장을 수행요청하면 오라클은 메모리 영역과 래치를 이용해 필요한 작업을 수행하게 된다 사용자가 새로운 sql 문장을 수행요청하면 오라클은 기본적인 문법체크와 권한체크등을 수행한 후 해시버킷을 관리하는 library cache 래치를 획득하고 library cache 영역에 동일한 sql 문장 즉 동일한 LCO 가 존재하는지 확인한다 library cache 래치를 획득하는 과정에서 경합이 발생하면 latch : library cache 이벤트를 대기한다 동일한 LCO 가 존재하는경우에 소프트파싱단계로 가게된다 또한 sql 파싱요청이 있을때마다 parse count 통계값을 증가시킨다 만일 동일한 sql 문장이 존재하지 않는다면 shard pool 래치를 획득하고 가장 적절한 크기의 프리 ..
* 비교 분류 latch lock 목적 하나의 목적을 수행 메모리 구조에 대한 배타적인 접근을 위함 두가지 목적을 수행 락모드가 호환 가능하면 다수의 프로세스가 동일한 리소스를 공유하는 것을 허용하며 락모드가 호환가능하지 않으면 리소스에 대한 배타적인 접근만 허용 사용범위 SGA 내부의 데이터 구조에만 적용 테이블, 데이터 블록및 state object 와 같은 object 를 보호한다 획득방식 willing- to - wait / no - wait null, row shre, row exclusive, share, share row exclusive, exclusive 범위 SGA 내부에 정보가 존재 데이터베이스 내부에 정보가 존재 복잡도 단순한 명령어를 사용하여 구현 문맥교환을 포함한 일련의 명령어들..
[ORACLE] UNDO 와 REDO 그리고 차이점 Hengki's Oracle 2010/05/19 08:29 | 1-1. UNDO Segement란? - Rollback과 Undo는 기본적으로는 동의어 입니다. - Oracle 9i 이전엔 Rollback Segement라는 용어를 사용했는데, Oracle 9i 이후버전 부터는 Undo Segment라는 용어를 사용합니다. - Rollback(Oracle 9i 이전 버전) = Undo(Oracle 9i 이후 버전) - Undo 세그먼트는 관리 방식에 있어서 9i 이후 버전에서 자동 관리 모드와 수동 관리 모드를 선택 할 수 있는 기능이 추가 되었고, 트랜잭션 처리를 위한 알고리즘이 개선되었습니다. - Undo 세그먼트는 생성, 할당 및 튜닝을 오라클 서..
* system, sysaux table spaces are mandatory tablespaces the are created at the time of database creation.they must be online * SYSTEM tablespace is used for core functionality (dictionary tables) * the auxiliary SYSAUX tablespace is used for additonal database components ( such as the enterprise manager repository) * the system and sysaux tablespaces are not recommended to be used to store appli..
OWI (Oracle Wait Interface) 개요 * oracle 에서 어떤 특정작업을 수행하는 과정에서 원하는 리소스를 획득하지 못할 경우에 해당 리소스에 대한 점유가 해제될 때가지 리소스와 관련된 이벤트를 대기한다.이 대기현상을 관찰함으로써 프로세스에서 어떤 문제가 발생하였는지를 추론할수 있는데 이처럼 프로세스가 겪는 대기현상을 기록하고 관찰하는 일련의 기능과 인터페이스 , 방법론을 통칭하여 OWI 라고 부른다. * 대기이벤트는 P1, P2, P3 라는 세 개의 파라미터를 통해 현재 대기하는 리소스를 표현하는데 이 세개의 값은 V$SESSION , V$SESSION_WAIT view와 같은 dynamic view 나 SQL Trace file 등을 통해 관찰가능하다. * 오라클은 대기회수, 타임..