테이블스페이스(TABLESPACE)
-------------------------
- 오라클 서버가 데이터를 저장하는 논리적인 구조
- 테이블스페이스는 1개 또는 여러 개의 데이터파일을 가진 논리적인 데이터 저장 구조
- LMT(Locally Managed Tablespace)
- DMT(Dictionary Managed Tablespace)
- Next Extent크기는 64KB, 1MB, 8MB, 64MB 순으로 사용됨
- AUTOALLOCATE의 경우
처음 테이블의 EXTENT는 64KB부터 시작, 1MB가 될 때까지 64KB단위로 증가,
1MB가 된 이후부터는 1MB단위로 증가, 이후부터는 64MB가 되었을 때 8MB,
1GB가 되었을 때 64MB단위로 증가
--------------------------------------------
테이블스페이스 생성
--------------------------------------
1. 데이터파일 raw device인 경우(9i~)
SQL> CREATE TABLESPACE 테이블스페이스명
datafile '/dev/vg_data01/rlvol_test' [size 99M]
EXTENT MANAGEMENT LOCAL -- Default is LOCAL
-- (LOCAL/DICTIONARY Managed Tablespace)
[AUTOALLOCATE] or [UNIFORM SIZE 1M] -- Auto Extent Size or Uniform Extent Size
-- (initial이 지정되었을 경우 initial Size)
SEGMENT SPACE MANAGEMENT AUTO -- freelist 및 pctused 등을 자동으로 관리
; -- (AUTO/MANUAL)
2. 데이터파일 file system인 경우
SQL> CREATE TABLESPACE 테이블스페이스명
datafile '/data01/데이터파일명' size 100M
AUTOEXTEND ON NEXT 10M
MAXSIZE 4000M MINIMUM EXTENT 1M -- datafile에 대한 option 임
EXTENT MANAGEMENT LOCAL -- Default is LOCAL (LOCAL or DICTIONARY)
[AUTOALLOCATE] or [UNIFORM SIZE 1M] -- Auto Extent Size or Uniform Extent Size
-- (initial이 지정되었을 경우 initial Size)
SEGMENT SPACE MANAGEMENT AUTO -- freelist 및 pctused 등을 자동으로 관리
-- (AUTO/MANUAL)
--------------------------------------------
테이블스페이스 관리
--------------------------------------
1. COALESCE
SQL> alter tablespace 테이블스페이스명 coalesce ;
- ORACLE 7, 8, 8i, 9i DICTIONARY Management Tablespace일 경우 사용
(Locally Managed Tablespace는 coalesce가 필요 없음)
- For each datafile in the tablespace,
this clause coalesces all contiguous free extents
into larger contiguous extents.
2. RENAME
SQL> ALTER TABLESPACE 구테이블스페이스명 RENAME TO 신규테이블스페이스명;
- 9i이하에서는 지원하지 않음, 10g부터 지원
- 사용자의 DEFAULT TABLESPACE 함께 변경됨
SQL> SELECT * FROM DBA_USERS;
SQL> ALTER USER 사용자명 DEFAULT TABLESPACE 테이블스페이스명;
3. Read/Write
SQL> alter tablespace 테이블스페이스명 read only ;
- read only 테이블스페이스는 온라인(HOT) 백업에서 제외됨
SQL> alter tablespace 테이블스페이스명 read write ;
4. Online/Offline
SQL> alter tablespace 테이블스페이스명 online;
SQL> alter tablespace 테이블스페이스명 offline;
5. Drop
SQL> drop tablespace 테이블스페이스명;
SQL> drop tablespace 테이블스페이스명 including contents cascade;
SQL> drop tablespace 테이블스페이스명 including contents cascade constraints;
SQL> DROP TABLESPACE TBS1 INCLUDING CONTENTS AND DATAFILES;
- (9i~) 데이타파일도 함께 삭제
6. LMT to DMT/DMT to LMT
- 8.1.5는 LMT에서 DMT로 변환만이 가능
- 8.1.6 이상부터 LMT와 DMT 상호변환 가능
- 테이블스페이스의 Segment Management가 Auto로 되어 있거나 Compress되어 있으면
테이블스페이스 마이그레이션이 되지 않음
SQL> EXECUTE DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_FROM_LOCAL('테이블스페이스명');
SQL> EXEC DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL('테이블스페이스명');
7. 온라인(HOT) 백업
SQL> ALTER TABLESPACE 테이블스페이스명 BEGIN BACKUP;
테이블스페이스에 속하는 데이터파일들 cp 명령어 또는 dd 명령어로 복사
SQL> ALTER TABLESPACE 테이블스페이스명 END BACKUP;
8. 데이터파일이 손상되었을 때 데이터파일 offline drop 후 복구
SQL> alter database datafile '/data01/데이터파일명' offline drop;
- 해당 테이블스페이스 온라인 백업 불가
9. 데이터파일에 사용하는 세그먼트가 없을 경우 해당 데이터파일 DROP 가능
SQL> alter tablespace drop datafile '/data01/데이터파일명';
10. 사용량/사용율 조회
SQL> SELECT A.TABLESPACE_NAME,
SUM(A.BYTES)/1024 AS "TOTAL(KB)",
SUM(A.BYTES)/1024 - NVL(SUM(SZ_KB),0) AS "USED(KB)",
NVL(SUM(SZ_KB),0) AS "FREE(KB)",
NVL(( 1. - SUM(SZ_KB)/(SUM(A.BYTES)/1024.) ) * 100,100) AS "USED RATIO(%)"
FROM DBA_DATA_FILES A,
( SELECT FILE_ID ,
SUM(BYTES)/1024. AS SZ_KB
FROM DBA_FREE_SPACE
GROUP BY FILE_ID
) B
WHERE A.FILE_ID = B.FILE_ID(+)
GROUP BY A.TABLESPACE_NAME;
create tablespace
/* datafile 생성시 size 는 반드시 지정해야 함 */
/* option 을 주지 않으면 extent_management: local, allocation_type: system, segment_space_management: auto 로 생성됨 */
create tablespace ts_flm01 datafile 'C:\ORACLE\ORADATA\ORCL\flm01.DBF' SIZE 10M AUTOEXTEND ON;
/* segment space management manual option 을 주면 segment_space_management: manual 로 생성됨 */
create tablespace ts_flm02 datafile 'C:\ORACLE\ORADATA\ORCL\flm02.DBF' SIZE 10M AUTOEXTEND ON segment space management manual;
/* uniform size 를 주면 initial_extent 와 next_extent 동일하게 잡히고, allocation_type 이 uniform 으로 설정됨 */
create tablespace ts_flm03 datafile 'C:\ORACLE\ORADATA\ORCL\flm03.DBF' SIZE 10M extent management local uniform size 1m segment space management auto;
/* size 설정: 처음 size는 file size 이고, uniform size는 initial/next extent size 임 */
create tablespace ts_flm04 datafile 'C:\ORACLE\ORADATA\ORCL\flm04.DBF' SIZE 50M extent management local uniform size 5m segment space management auto;
/* db block_size를 변경하기 위해서는 DB_CACHE_SIZE와 적어도 하나의 DB_2/4/8/16/32K_CACHE_SIZE 를 설정하고 해야 함 */
alter system set db_cache_size = 8k;
alter system set db_16k_cache_size = 32M;
create tablespace ts_flm05 datafile 'C:\ORACLE\ORADATA\ORCL\flm05.DBF' size 10M blocksize 16384 ;
/* autoextend on next size 지정 */
create tablespace ts_flm06 datafile 'C:\ORACLE\ORADATA\ORCL\flm06.DBF' size 10M autoextend on next 10M blocksize 16384 ;
/* autoextend on uniform size 지정 */
create tablespace ts_flm07 datafile 'C:\ORACLE\ORADATA\ORCL\flm07.DBF' size 10M autoextend on uniform size 5M blocksize 16384 ;
/* autoextend off : 바뀐게 없네 ... */
create tablespace ts_flm08 datafile 'C:\ORACLE\ORADATA\ORCL\flm08.DBF' size 10M autoextend off uniform size 5M blocksize 16384 ;
create tablespace ts_flm09 datafile 'C:\ORACLE\ORADATA\ORCL\flm09.DBF' size 10M autoextend off;
/* tablespace 조회 */
select tablespace_name, block_size, initial_extent, next_extent, pct_increase, min_extlen
, extent_management, allocation_type, SEGMENT_SPACE_MANAGEMENT
from dba_tablespaces where tablespace_name like 'TS_%';
/* tablespace & datafile 삭제 */
drop tablespace ts_flm05 including contents and datafiles;
======================
SQL> /* tablespace 조회 */
SQL> select tablespace_name, block_size, initial_extent, next_extent, pct_increase
, min_extlen, extent_management, allocation_type
, SEGMENT_SPACE_MANAGEMENT
from dba_tablespaces where tablespace_name like 'TS_%';
TABLESPACE_NAME BLOCK_SIZE INITIAL_EXT NEXT_EXTENT PCT_INCREAS MIN_EXTLEN EXTENT_MAN ALLOCATIO SEGMEN
------------------------------ ----------- ----------- ----------- ----------- ----------- ---------- --------- ------
TS_FLM01 8192 65536 65536 LOCAL SYSTEM AUTO
TS_FLM02 8192 65536 65536 LOCAL SYSTEM MANUAL
TS_FLM03 8192 1048576 1048576 0 1048576 LOCAL UNIFORM AUTO
TS_FLM04 8192 5242880 5242880 0 5242880 LOCAL UNIFORM AUTO
TS_FLM05 16384 65536 65536 LOCAL SYSTEM AUTO
TS_FLM06 16384 65536 65536 LOCAL SYSTEM AUTO
TS_FLM07 16384 5242880 5242880 0 5242880 LOCAL UNIFORM AUTO
TS_FLM08 16384 5242880 5242880 0 5242880 LOCAL UNIFORM AUTO
TS_FLM09 8192 65536 65536 LOCAL SYSTEM AUTO
'OraclE' 카테고리의 다른 글
[펌] INBOUND_CONNECT_TIMEOUT (0) | 2011.09.15 |
---|---|
Resumable Space Allocation (0) | 2011.01.27 |
Automatic Undo Retention 개요 [펌] (0) | 2010.10.12 |
10G RAC Fail-Over test중 CRS가 listener down을 늦게 감지 (0) | 2010.09.01 |
Managing Job Queues (0) | 2010.07.11 |