본문 바로가기

Database

테이블스페이스의 추가 및 변경

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

 

  • TABLESPACE 생성

 

실습을 위해 아래의 조건으로 TABLESPACE 생성한다.

TABLESPACE NAME : SALESTBS

 

D:\khdata\SALESTBS01.DBF 20M

D:\projectdata\SALESTBS02.DBF 16M

(=테이블 스페이스 1개에 구성되어지는 파일은 2개로 생성)

 

CREATE TABLESPACE SALESTBS

DATAFILE 'D:\khdata\SALESTBS01.DBF' SIZE 20M

EXTENT MANAGEMENT LOCAL

SEGMENT SPACE MANAGEMENT AUTO;

 

ALTER TABLESPACE SALESTBS

ADD DATAFILE 'D:\projectdata\SALESTBS02.DBF' SIZE 16M;

 

 

  • 테이블 생성

 

CREATE TABLE TBLSALES01

(NAME VARCHAR2(10)

,DANGA NUMBER

)TABLESPACE SALESTBS;

 

  • 자료 삽입

 

INSERT INTO TBLSALES01 VALUES

('새우깡',800);

 

COMMIT;

 

  • 테이블의 내용 확인

 

SELECT *

FROM TBLSALES01;

        

        

 

실습가정>

위에서 SALESTBS 물리적인 하드 공간(D드라이브 공간 OVERFLOW 상태) 찼다.

이를 해결하기 위한 방법으로 기존의 테이블 스페이스를 공간이 꽉찬 D드라이브가 아닌 다른 드라이버로 이동시켜보자.

 

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

 

방법1>

  • D 드라이브에 폴더를 하나 만들고 그것을 가상의 드라이버로 실습

 

 

  • 테이블스페이스에 존재하는 데이터파일 확인

     

SELECT FILE_NAME

FROM DBA_DATA_FILES

WHERE TABLESPACE_NAME='SALESTBS';

 

    

 

  • 테이블스페이스의 상태 확인 (온라인)

 

SELECT STATUS

FROM DBA_TABLESPACES

WHERE TABLESPACE_NAME='SALESTBS';

 

    

 

  • 테이블스페이스를 이동시키는 사용자의 Access 막기 위해 테이블을 OFFLINE상태로 변경시킨다.

 

ALTER TABLESPACE SALESTBS OFFLINE;

 

  • 접근 불가 확인을 위해 테이블에 접근을 시도

 

SELECT * FROM TBLSALES01;

        (ORA-00376: 현재 파일 11 읽을 없습니다)

(ORA-01110: 11 데이터 파일: 'D:\KHDATA\SALESTBS01.DBF')

 

 

  • 이제 DBF 파일을 HDD 다른 드라이브로 이동시킨다.

 

    

 

  • 그리고 아래와 같이 ORACLE에게 TABLESPACE위치의 변경을 입력한다.

 

    ALTER TABLESPACE SALESTBS

RENAME DATAFILE 'D:\KHDATA\SALESTBS01.DBF' TO 'D:\EDRIVE\SALESTBS01.DBF';

 

    ALTER TABLESPACE SALESTBS

    RENAME DATAFILE 'D:\PROJECTDATA\SALESTBS02.DBF' TO 'D:\EDRIVE\SALESTBS02.DBF';

 

 

  • 마지막으로 테이블스페이스의 상태를 온라인(활성화)시킨다.

 

    ALTER TABLESPACE SALESTBS ONLINE;

 

 

  • 변경 정보 확인

 

    SELECT *

    FROM DBA_DATA_FILES

    WHERE TABLESPACE_NAME='SALESTBS';

 

 

    SELECT *

    FROM TBLSALES01;

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

 

방법2>

 

SHUTDOWN IMMEDIATE ORACLE 내린 ,

위에서 변경시켜준 DBF 파일의 위치를 다시 위치로 변경시켜준다.

 

그리고 다시 Oracle 구동시켜보면 오류가 난다.

 

STARTUP MOUNT 우선 구동 아래의 내용들을 실행한다.

 

 

SQL> STARTUP MOUNT

ORACLE 인스턴스가 시작되었습니다.

 

Total System Global Area 369098752 bytes

Fixed Size 788932 bytes

Variable Size 145749564 bytes

Database Buffers 222298112 bytes

Redo Buffers 262144 bytes

ORA-00205: ????? ????? ??, ?? ??? ? ?? ??? ?? ??? ??????

( 위와 같이 정상적이지 않은 메시지가 오류 Message 출력된다.)

  • 다시 테이블스페이스의 위치를 변경시켜 준다.

 

SQL> ALTER DATABASE

2 RENAME FILE 'D:\EDRIVE\SALESTBS01.DBF'

3 TO 'D:\KHDATA\SALESTBS01.DBF';

 

SQL> alter database

2 rename file 'd:\edrvie\salestbs02.dbf'

3 to 'd:\projectdata\salestbs02.dbf';

  • 마지막으로 SQL>ALTER DATABASE OPEN 명령으로 ORACLE을 정상적으로 구동한다.