SQLP

[SQLP] 테이블 스페이스

songsua 2024. 8. 15. 18:46

테이블스페이스

테이블스페이스는 데이터베이스 오브젝트 내 실제 데이터를 저장하는 공간이다.

이것은 데이터베이스의 물리적인 부분이며, 세크먼드로 관리되는 모든 DBMS 에 대해 저장소를 할당

예)

- 테이블 스페이스 공간 생성

##테이블스페이스 생성하기
create tablespace ts_t1 datafile 'C:\oracle\oradata\orcl\ts_t101.dbf' size 10m autoextend on;
create tablespace ts_t2 datafile 'C:\oracle\oradata\orcl\ts_t102.dbf' size 10m autoextend on;
create tablespace ts_t3 datafile 'C:\oracle\oradata\orcl\ts_t103.dbf' size 10m autoextend on;
create tablespace ts_t4 datafile 'C:\oracle\oradata\orcl\ts_t104.dbf' size 10m autoextend on;
create tablespace ts_t5 datafile 'C:\oracle\oradata\orcl\ts_t105.dbf' size 10m autoextend on;

#테이블스페이스 조회하기
select tablespace_name, bytes/1024/1024MB, file_name from dba_data_files;

 

- dba_data_files 조회

SQL> desc dba_data_files;
 이름                                      널?      유형
 ----------------------------------------- -------- ----------------------------
 FILE_NAME                                          VARCHAR2(513)
 FILE_ID                                            NUMBER
 TABLESPACE_NAME                                    VARCHAR2(30)
 BYTES                                              NUMBER
 BLOCKS                                             NUMBER
 STATUS                                             VARCHAR2(9)
 RELATIVE_FNO                                       NUMBER
 AUTOEXTENSIBLE                                     VARCHAR2(3)
 MAXBYTES                                           NUMBER
 MAXBLOCKS                                          NUMBER
 INCREMENT_BY                                       NUMBER
 USER_BYTES                                         NUMBER
 USER_BLOCKS                                        NUMBER
 ONLINE_STATUS                                      VARCHAR2(7)
 
 
SQL>  select FILE_NAME,TABLESPACE_NAME,BLOCKS,MAXBLOCKS,USER_BYTES/1024/1024MB,USER_BLOCKS from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME                    BLOCKS  MAXBLOCKS         MB USER_BLOCKS
------------------------------ ---------- ---------- ---------- -----------
C:\ORACLE\ORADATA\ORCL\USERS01.DBF
USERS                               35200    4194302        274       35072

C:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF
UNDOTBS1                            13440    4194302        104       13312

C:\ORACLE\ORADATA\ORCL\SYSAUX01.DBF
SYSAUX                              76800    4194302        599       76672


FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME                    BLOCKS  MAXBLOCKS         MB USER_BLOCKS
------------------------------ ---------- ---------- ---------- -----------
C:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF
SYSTEM                              89600    4194302        699       89472

C:\ORACLE\ORADATA\ORCL\EXAMPLE01.DBF
EXAMPLE                             12800    4194302         99       12672

C:\ORACLE\ORADATA\ORCL\TS_T102.DBF
TS_T2                                1280    4194302          9        1152


FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME                    BLOCKS  MAXBLOCKS         MB USER_BLOCKS
------------------------------ ---------- ---------- ---------- -----------
C:\ORACLE\ORADATA\ORCL\TS_T101.DBF
TS_T1                                1280    4194302          9        1152

C:\ORACLE\ORADATA\ORCL\TS_T103.DBF
TS_T3                                1280    4194302          9        1152

C:\ORACLE\ORADATA\ORCL\TS_T104.DBF
TS_T4                                1280    4194302          9        1152


FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME                    BLOCKS  MAXBLOCKS         MB USER_BLOCKS
------------------------------ ---------- ---------- ---------- -----------
C:\ORACLE\ORADATA\ORCL\TS_T105.DBF
TS_T5                                1280    4194302          9        1152

 

-범위 파티션 실습 예제

create table ename
(
edate varchar2(8),
ecode number(3),
pqty number(5)
)
partition by range(edate)
(
partition q1 values less than ('20100401') tablespace ts_t1,
partition q2 values less than ('20100701') tablespace ts_t2,
partition q3 values less than ('20100801') tablespace ts_t3,
partition q4 values less than ('20101001') tablespace ts_t4,
partition q5 values less than ('20101101') tablespace ts_t5);


#계속해서 테이블 삽입하기
insert into ename
values('20100301', 150,20);

insert into ename
values('20100583', 150,20);

insert into ename
values('20100803', 150,20);

insert into ename
values('20100723', 150,20);


##파티션 q1 조회
select * from ename partition(q2);

=====================================
20100533	150	20
20100583	150	20

 

Hash partition

해쉬함수가 사용되어 테이블마다 값이 균등하게 분포되는 것

장점: 데이터가 균등하게 들어가서 성능이 좋다

 

단점: 데이터 보관주기에 따라 쉽게 삭제하는 것이 불가능하다. 데이터가 정확하게 어디에 들어가 있는지 파악하기 힘들다.

 

 

'SQLP' 카테고리의 다른 글

[SQLP] 쿼리 변환  (0) 2024.08.19
[SQLP] 데이터베이스 call 과 네트워크 부하 ★★★★★  (0) 2024.08.17
[SQLP] 커서 공유  (0) 2024.08.15
[SQLP]바인딩 변수  (0) 2024.08.14
[SQLP] 조인 수행 원리2  (0) 2024.08.13