It's Repository

blog.selpa.co.kr

포토로그



[오라클] 테이블스페이스 생성 oracle/mysql

먼저 오라클이 테이블스페이스는 2종류가 있다

default tablespace
temporary tablespace

0. 오라클 버전정보 확인
select * from v$version


1. 내정보 확인
select * from user_users


2. 기존 테이블스페이스 및 저장소 위치를 확인한다.
SELECT FILE_NAME, TABLESPACE_NAME, AUTOEXTENSIBLE, MAXBYTES, INCREMENT_BY 
FROM DBA_DATA_FILES;


3. 테이블스페이스를 생성한다.
CREATE TABLESPACE SELPA_DATA
DATAFILE 'D:\ORADATA\SELPA_DATA.DBF' SIZE 1G
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;


CREATE TABLESPACE SELPA_IDX
DATAFILE 'D:\ORADATA\SELPA_IDX.DBF' SIZE 1G
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
LOGGING
ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;


4. 유저의 테이블스페이스를 변경한다.
alter user SELPA default tablespace SELPA_DATA;


-끝-

추가1 : 1개의 테이블스페이스가 여러개의 데이터 파일을 가질수 있는가?  정답은 그렇다.

alter tablespace selpa  add datafile 'D:\ORADATA\SELPA_DATA_02.DBF' size 1G; 
이럴경우 데이터가 여러개의 데이터파일에 존재하며 1개의 데이터파일이 깨지만 전체 데이터 파일을 사용할수 없다.
물론 데이터가 많을경우 속도는 빠르다.

추가2 : 기존 생성된 테이블과 인덱스의 테이블스페이스 변경은 가능한가? 정답은 그렇다.
<TABLE>
ALTER TABLE 테이블명 MOVE TABLESPACE 테이블스페이스명;

<INDEX>
ALTER INDEX 인덱스명 REBUILD TABLESPACE 테이블스페이스명;

<LOBINDEX, LOBSEGMENT> - 데이터타입이 lob 이면 자동으로 인덱스가 생성됨.
ALTER TABLE 테이블명 MOVE LOB(컬럼명) STORE AS (TABLESPACE 테이블스페이스명)

<아래처럼 스그림트로 쉽게 뽑아 낼수 있음>
SELECT 'alter table ' || SEGMENT_NAME || ' move tablespace SELPA_DATA;' FROM USER_SEGMENTS where SEGMENT_TYPE = 'TABLE';



덧글

댓글 입력 영역