오라클 테이블 생성
DB CAFE
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 오라클 테이블 생성 , CREATE TABLE[편집]
The syntax to create a table is:
CREATE TABLE [table name]
( [column name] [datatype], ... );
For 예시:
CREATE TABLE employee
(id int, name varchar(20));
1.1 BLOCK SIZE[편집]
- 8K
- 기본 사이즈
- 32K
- 평균 row size가 커서 8K사용중인 테이블에서 row migration , row chaining이 자주발생할경우
- 한번에 대량 i/o가 발생 하는 테이블인 경우
1.2 PCTFREE[편집]
- 10
- 기본
- 0
- DML이 발생되지 않는 테이블, 백업용 압축테이블
- 20
- Update/Delete 가 빈번하게 발생되는 테이블
- 90
- 채번 테이블
1.3 INITRANS 와 MAXTRANS[편집]
- INITRANS
- 데이터 블록에 동시에 접근 가능한 트랜잭션의 처리 갯수를 의미(미리 확보할 ITL entry수)
- 트랜잭션이 많이 발생하는 경우 MAXTRANS 까지 늘어나며, PCTFREE 로 확보된 영역에 추가 확장 됨
- MAXTRANS
- 데이터 블록에 접근 가능한 최대 트랜잭션 수를 의미
- 접근하는 트랜잭션 수가 MAXTRNAS 값을 초과하는 경우, 앞의 트랜잭션이 COMMIT 혹은 ROLLBACK 을 해야 다음 트랜잭션이 접근 가능
- 최대 255개
assignment INITRANS 를 크게 설정 하면?
- INITRANS 을 위한 슬롯도 블록에 공간을 차지하며, 트랜잭션이 많지 않은 경우 낭비를 하게 되므로 굳이 크게 설정할 필요 없음
2 -- 기본
10 ~ 20 -- 트랜잭션이 빈번하게 발생할것으로 예상되는 테이블
15 -- 로그성 테이블
30 -- 채번테이블
1.4 INITRANS 와 MAXTRANS[편집]
assignment INITRANS
- 데이터 블럭을 처음 사용하기 위해 포맷시 블럭헤더에 있는 itl slot을 몇개를 할당할지 지정하는 값
- 테이블 과 인덱스 생성시 지정 함.
- 초기값은 INITRANS의 값으로 정의되며 미리 확보할 ITL entry수를 의미한다.(테이블 생성시 initttans 기본값은 2 임)
- 최대값은 MAXTRANS 값으로 ITL Entry의 최대 수를 의미한다. (기본 255)
- 만약 모든 가용한 ITL이 사용중이고 새로운 ITL 슬롯을 동적으로 할당하기위한 PCTFREE 영역의 공간이 충분하지 않을때는 엔트리를 할당받지 못하여 TX Lock 경합이 발생하게 된다.
- - 이때는 ITL entry를 차지한 다른 트랜잭션이 커밋이나 롤백을 수행하여 ITL 슬롯을 재사용할 수 있을때까지 대기함
- - enq:TX allocate itl entry 대기 이벤트 발생
- 오라클은 row단위의 lock을 걸지만 일단 데이터의 Access시 블럭 단위로 엑세스 하므로 결국 block 단위의 lock이 필요하다.
assignment MAXTRANS
- 블럭헤더에 미리 할당한 itl slot 이 모두 사용중이라면 maxtrans로 지정된 개수 만큼 추가 itl slot을 할당 할수 있음.