논리적 저장영역
1. Data Block
- Oracle에서 Data를 저장하는 가장 작은 단위, 블록단위로 DataBase의 DataFile에 있는 저장영역
을 관리한다.
- Data Block의 크기는 최대한계내에는 운영체제 블록크기의 배수여야 한다.
- 구성
Head : 블록주소와 Segment유형(Data,Index,RollBack…)등의 일반적인 블록정보를 포함
Table Directory : 해당블록에 행을 가지는 Table에대한 정보를 가진다.
Row Directory : 블록내의 실제 행에 대한 정보를 가진다.
Row Data : Table Data Or Index Data를 포함한다.
빈영역
트랜잭션 입력항목에 사용되는 영역 : 블록내의 하나이상의 행을 Access하는
Insert/Update/Delete/Select등의 명령문은
블록에 하나의 트랜잭션 입력항목을 필요로 한다.
대부분의 운영체제에서는 약23 Byte정도를 필
요로함
2. Extents
- 저장영역할당을 위한 논리적인 단위로 연속적인 몇 개의 Data Block으로 구성된다.
- 각 Segment는 적어도 하나이상의 Extents(RollBack Segment는 2개이상)를 자지고 생성됩니다.
이러한 확장을 initial extents라고 한다.
- 일반적으로 한 Segment의 확장영역은 drop table또는 drop cluster명령으로 개체를 삭제하여
TableSpace에 반환한다.
(예외)truncate … drop storage를 이용하여 Table이나 Cluster를 Truncate시킬수 있슴
Oracle은 주기적으로 RollBack Segment에 있는 하나이상의 Extents를 해제할수
있다.
DBA는 alter table table_name deallocate unused명령을 이용하여 확장영역을 해제할
수 있다.
3. Segment
- Extents(확장영역)의 집합
A. Data Segment
- DataBase의 SnapShot과SnapShot Log를 포함한 모든 Cluster화 되지 않은 Table은 자신의
Data를 저장하기위해 단일데이터세그먼트(Single Data Segment)를 가진다. Create
Table/SnapShot/SnapShot Log명령을 사용하여 Object를 생성할때 Data Segment를
생성하며 Create Cluster명령이 실행될때 Cluster 에 대한 Data Segment를 생성한다.
B. Index Segment
- Index생성시 Segment할당된다.(Create Index…)
C. RollBack Segment
- Transaction이 RollBack되어야할 경우 트랜잭션 작동을 기록
- 각 DataBase에는 하나이상의 RollBack Segment가 있슴
- Transaction별로 변경되기전의 Data를 기록
- Transaction을 Commit할때 RollBack Segment의 정보를 해체하지만 바로 없애지는 않는다.
Transaction을 Commit 하기전에 시작된 Query에 관련된 Data의 read-consistent view(읽기
일관성 뷰)를 생성하지위해 data가 RollBack Segment에 남아 있다.
그러한 View를 생성할 가능성이 있는한 RollBack Data를 사용할 수 있도록 Oracle은
RollBack Segment의 확장영역을 순차적으로 사용한다.
RollBack Segment의 마지막 영역이 꽉차면 첫번째 Extents로 돌아가서 RollBack Data를 기록함.
또한 장기적으로 실행되는 Transaction은 RollBack Segment에 새로운 Extents(확장영역)를
요구할수도 있슴.
D. Temp Segment
- Create Index, Select Order By, Select Distinct, Select Group By, Select Union,
Select,Minus,Select ,Intersect등의 명령은 Temp Sefment를 필요로 한다.
예를들어 Query에 Distint,Group By,Order by등이 있으면 Oralce은 두개의 Temp
Segment를 요구할수도 있다. 명령이 완료되면 Oracle은 Temp Segment를 삭제한다.
- Oracle은 사용자 Session기간 동안 필요한만큼의 Temp Segment를 생성한다.
Create User나 Alter User등의 명령에 Temporary TableSpace다음의 TableSpace에 Temp
Segment를 생성한다. 사용자가 Temp Segment를 생성하지 않으면 Default System TableSpace임
예)create user scott identified by tiger default tablespace users temporary
tablespace temp;
1. Data Block
- Oracle에서 Data를 저장하는 가장 작은 단위, 블록단위로 DataBase의 DataFile에 있는 저장영역
을 관리한다.
- Data Block의 크기는 최대한계내에는 운영체제 블록크기의 배수여야 한다.
- 구성
Head : 블록주소와 Segment유형(Data,Index,RollBack…)등의 일반적인 블록정보를 포함
Table Directory : 해당블록에 행을 가지는 Table에대한 정보를 가진다.
Row Directory : 블록내의 실제 행에 대한 정보를 가진다.
Row Data : Table Data Or Index Data를 포함한다.
빈영역
트랜잭션 입력항목에 사용되는 영역 : 블록내의 하나이상의 행을 Access하는
Insert/Update/Delete/Select등의 명령문은
블록에 하나의 트랜잭션 입력항목을 필요로 한다.
대부분의 운영체제에서는 약23 Byte정도를 필
요로함
2. Extents
- 저장영역할당을 위한 논리적인 단위로 연속적인 몇 개의 Data Block으로 구성된다.
- 각 Segment는 적어도 하나이상의 Extents(RollBack Segment는 2개이상)를 자지고 생성됩니다.
이러한 확장을 initial extents라고 한다.
- 일반적으로 한 Segment의 확장영역은 drop table또는 drop cluster명령으로 개체를 삭제하여
TableSpace에 반환한다.
(예외)truncate … drop storage를 이용하여 Table이나 Cluster를 Truncate시킬수 있슴
Oracle은 주기적으로 RollBack Segment에 있는 하나이상의 Extents를 해제할수
있다.
DBA는 alter table table_name deallocate unused명령을 이용하여 확장영역을 해제할
수 있다.
3. Segment
- Extents(확장영역)의 집합
A. Data Segment
- DataBase의 SnapShot과SnapShot Log를 포함한 모든 Cluster화 되지 않은 Table은 자신의
Data를 저장하기위해 단일데이터세그먼트(Single Data Segment)를 가진다. Create
Table/SnapShot/SnapShot Log명령을 사용하여 Object를 생성할때 Data Segment를
생성하며 Create Cluster명령이 실행될때 Cluster 에 대한 Data Segment를 생성한다.
B. Index Segment
- Index생성시 Segment할당된다.(Create Index…)
C. RollBack Segment
- Transaction이 RollBack되어야할 경우 트랜잭션 작동을 기록
- 각 DataBase에는 하나이상의 RollBack Segment가 있슴
- Transaction별로 변경되기전의 Data를 기록
- Transaction을 Commit할때 RollBack Segment의 정보를 해체하지만 바로 없애지는 않는다.
Transaction을 Commit 하기전에 시작된 Query에 관련된 Data의 read-consistent view(읽기
일관성 뷰)를 생성하지위해 data가 RollBack Segment에 남아 있다.
그러한 View를 생성할 가능성이 있는한 RollBack Data를 사용할 수 있도록 Oracle은
RollBack Segment의 확장영역을 순차적으로 사용한다.
RollBack Segment의 마지막 영역이 꽉차면 첫번째 Extents로 돌아가서 RollBack Data를 기록함.
또한 장기적으로 실행되는 Transaction은 RollBack Segment에 새로운 Extents(확장영역)를
요구할수도 있슴.
D. Temp Segment
- Create Index, Select Order By, Select Distinct, Select Group By, Select Union,
Select,Minus,Select ,Intersect등의 명령은 Temp Sefment를 필요로 한다.
예를들어 Query에 Distint,Group By,Order by등이 있으면 Oralce은 두개의 Temp
Segment를 요구할수도 있다. 명령이 완료되면 Oracle은 Temp Segment를 삭제한다.
- Oracle은 사용자 Session기간 동안 필요한만큼의 Temp Segment를 생성한다.
Create User나 Alter User등의 명령에 Temporary TableSpace다음의 TableSpace에 Temp
Segment를 생성한다. 사용자가 Temp Segment를 생성하지 않으면 Default System TableSpace임
예)create user scott identified by tiger default tablespace users temporary
tablespace temp;
오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터
(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)
댓글 없음:
댓글 쓰기