[oracle] 오라클 서버 관리 - 데이터베이스 저장 영역 구조 관리
오라클 서버 관리 - 데이터베이스 저장 영역 구조 관리
Oracle Storage Structure
데이터베이스 저장 영역 구조 관리 : 11gWS1 교재 7장
Oracle Storage Structure
- Tablespace : 하나 또는 여러 개의 datafile을 재료로 만들어진 컨테이너
- Segment : space occupying object
- Extent : continuous block
- Block : (저장 및 I/O의 최소단위)
cf.object와 segment 비교 object : table, index, undo, view, sequence, procedure, function, ... segment : table, index, undo, ...
예제로 개념이해하기
(1)
create table myts
datafile '/경로/myts01.dbf' size 2G,
'/경로/myts02.dbf' size 2G;
-> segment 몇 개? 0
-> extent 몇 개? 2
(2)
create table emp(컬럼 설정, ...)
tablespace myts;
-> segment 몇 개? 1
-> extent 몇 개? 3
-> 데이터가 계속 입력되어 emp가 extent 2개를 더 받음
-> segment 몇 개? 1
-> extent 몇 개? 5
(3)
create table dept컬럼 설정, ...)
tablespace myts;
-> segment 몇 개? 2
-> extent 몇 개? 6
-> 데이터가 계속 입력되어 emp가 extent 1개를 더 받음
-> segment 몇 개? 2
-> extent 몇 개? 7
(4)
Meta data를 쿼리해서 이런 상황을 확인해 봅시다.
[orcl:~]$ export ORACLE_SID=orcl
[orcl:~]$ sqlplus / as sysdba
SQL> set linesize 400
SQL> col segment_name format a40
SQL> select owner, segment_type, segment_name, extents, tablespace_name
from dba_segments
where owner = 'SH';
SQL> col segment_name format a10
SQL> select segment_name,
extent_id, file_id, block_id, blocks
from dba_extents
where owner = 'SH'
and segment_name = 'TIMES';
References
개발자님들 덕분에 많이 배울 수 있었습니다. 감사의 말씀 드립니다.