테이블스페이스의 추가 및 변경
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 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'; |
|