728x90
반응형
데이터 파일(Data Files)
데이터 파일은 실제 데이터가 저장되는 하드디스크상의 물리적인 파일이다. 물리적이란 말은 데이터베이스를 위해 할당된 공간을 의미하는데, 오라클은 생성과 동시에 크기를 할당받게된다. 테이블이나 인덱스같은 데이터베이스의 논리적인 구조들은 이 공간에 저장된다. 오라클 시스템이 관리하기때문에 운영체제레벨로 생성이나 삭제할 수 없지만, 읽기전용 테이블스페이스의 테이블은 삭제할 수 있다.
-목차-
1. 계획
2. 실습
3. 확인
1. 계획
MOUNT 상태에서 data file을 disk3으로 옮긴다.
실습 목표
SYSAUX /app/ora19c/oradata/disk3/sysaux01.dbf
SYSTEM /app/ora19c/oradata/disk3/system01.dbf
UNDOTBS1 /app/ora19c/oradata/disk3/undotbs01.dbf
USERS /app/ora19c/oradata/disk3/users01.dbf
TEMP /app/ora19c/oradata/disk3/temp01.dbf
실습 순서
1. DB SHUTDOWN
2. DATA FILE 이동
3. DB MOUNT
4. RENAME
5. DB OPEN
2. 실습
DB SHUTDOWN
SQL> SHUTDOWN IMMEDIATE
Database closed.
Database dismounted.
ORACLE instance shut down.
system이나 undo용 테이블스페이스는 OPEN상태에서 offline되지 않기에 CLOSE상태에서 테이블스페이스를 이동해야 한다.
DATA FILE 이동
SQL> !mv /app/ora19c/oradata/DB19/sysaux01.dbf /app/ora19c/oradata/disk3/
SQL> !mv /app/ora19c/oradata/DB19/system01.dbf /app/ora19c/oradata/disk3/
SQL> !mv /app/ora19c/oradata/DB19/undotbs01.dbf /app/ora19c/oradata/disk3/
SQL> !mv /app/ora19c/oradata/DB19/temp01.dbf /app/ora19c/oradata/disk3/
데이터파일을 !mv명령어로 옮긴다.
DB MOUNT
SQL> STARTUP MOUNT
ORACLE instance started.
Total System Global Area 763359832 bytes
Fixed Size 8901208 bytes
Variable Size 532676608 bytes
Database Buffers 218103808 bytes
Redo Buffers 3678208 bytes
Database mounted.
데이터베이스를 마운트까지만 STARTUP 한다.
RENAME
SQL> SELECT t.name tablespace_name, d.bytes, d.name file_name
2 FROM v$tablespace t, v$datafile d
3 WHERE t.ts#=d.ts#
4 ORDER BY 1;
TABLESPACE_NAME BYTES FILE_NAME
--------------------------------------------------------------------------------
SYSAUX 0 /app/ora19c/oradata/DB19/sysaux01.dbf
SYSTEM 0 /app/ora19c/oradata/DB19/system01.dbf
UNDOTBS1 0 /app/ora19c/oradata/DB19/undotbs01.dbf
USERS 5242880 /app/ora19c/oradata/disk3/users01.dbf
데이터파일은 이동했지만 오라클은 모르고있는 상태다. 이럴 땐 파일에 리네임을 해주어야 한다.
SQL> ALTER DATABASE RENAME file
2 '/app/ora19c/oradata/DB19/sysaux01.dbf'
3 TO '/app/ora19c/oradata/disk3/sysaux01.dbf';
Database altered.
SQL> ALTER DATABASE RENAME file
2 '/app/ora19c/oradata/DB19/system01.dbf'
3 TO '/app/ora19c/oradata/disk3/system01.dbf';
Database altered.
SQL> ALTER DATABASE RENAME file
2 '/app/ora19c/oradata/DB19/undotbs01.dbf'
3 TO '/app/ora19c/oradata/disk3/undotbs01.dbf';
Database altered.
SQL> ALTER DATABASE RENAME file
2 '/app/ora19c/oradata/DB19/temp01.dbf'
3 TO '/app/ora19c/oradata/disk3/temp01.dbf';
Database altered.
ALTER DATABASE RENAME으로 /app/ora19c/oradata/DB19/ *.dbf파일경로를 /app/ora19c/oradata/disk3/*.dbf로 수정해준다.
SQL> SELECT t.name tablespace_name, d.bytes, d.name file_name
2 FROM v$tablespace t, v$datafile d
3 WHERE t.ts#=d.ts#
4 ORDER BY 1;
TABLESPACE_NAME BYTES FILE_NAME
--------------------------------------------------------------------------------
SYSAUX 608174080 /app/ora19c/oradata/disk3/sysaux01.dbf
SYSTEM 943718400 /app/ora19c/oradata/disk3/system01.dbf
UNDOTBS1 361758720 /app/ora19c/oradata/disk3/undotbs01.dbf
USERS 5242880 /app/ora19c/oradata/disk3/users01.dbf
잘 수정되었다. 1장에서 계획한대로 결과물이 나왔다.
SQL> SELECT t.name tablespace_name, d.bytes,d.name file_name
2 FROM v$tablespace t, v$tempfile d
3 WHERE t.ts#=d.ts#
4 ORDER BY 1;
TABLESPACE_NAME BYTES FILE_NAME
--------------------------------------------------------------------------------
TEMP 136314880 /app/ora19c/oradata/disk3/temp01.dbf
9i버전부터는 temporary tablespace의 파일은 data file이 아니라 temp file로 관리하게 되었다.
DB OPEN
SQL> SELECT name FROM v$controlfile;
NAME
--------------------------------------------------------------------------------
/app/ora19c/oradata/disk4/control.ctl
/app/ora19c/oradata/disk5/control.ctl
SQL> SELECT member FROM v$logfile;
MEMBER
--------------------------------------------------------------------------------
/app/ora19c/oradata/disk4/redo01.log
/app/ora19c/oradata/disk5/redo01.log
/app/ora19c/oradata/disk4/redo02.log
/app/ora19c/oradata/disk5/redo02.log
/app/ora19c/oradata/disk4/redo03.log
/app/ora19c/oradata/disk5/redo03.log
6 rows selected.
SQL> !rm -rf /app/ora19c/oradata/DB19
SQL> !ls /app/ora19c/oradata/
disk1 disk2 disk3 disk4 disk5
SQL> ALTER DATABASE OPEN;
Database altered.
datafile이외의 컨트롤 파일이나 리두 로그 파일이 어디에 위치하는지 확인하고 불필요한 DB19디렉토리를 삭제한다.
3. 확인
SQL> SELECT t.name tablespace_name, d.bytes, d.name file_name
2 FROM v$tablespace t, v$datafile d
3 WHERE t.ts#=d.ts#
4 ORDER BY 1;
TABLESPACE_NAME BYTES FILE_NAME
--------------------------------------------------------------------------------
SYSAUX 608174080 /app/ora19c/oradata/disk3/sysaux01.dbf
SYSTEM 943718400 /app/ora19c/oradata/disk3/system01.dbf
UNDOTBS1 361758720 /app/ora19c/oradata/disk3/undotbs01.dbf
USERS 5242880 /app/ora19c/oradata/disk3/users01.dbf
728x90
반응형
'데이터베이스' 카테고리의 다른 글
Jupyter notebook, Pandas, Python (0) | 2023.03.15 |
---|---|
[ORACLE] ORA-00942: table or view does not exist 에러 원인, 해결법 (1) | 2022.12.02 |
[ORACLE] Redo log 파일 미러링하기 (0) | 2022.11.18 |
[ORACLE] control file 다중화하기 (0) | 2022.11.18 |