반응형
확인사항
| 1. .dbf 확장자 꼭 붙일 것 2. INSA, INSA -> 실무에서는 원래 이렇게 파일을 2개 만들지 않음 실습 Tablespace 확장 부분 3. '/usr01.dbf' SIZE 2M AUTOEXTEND ON, '/usr02.dbf' SIZE 2M AUTOEXTEND ON NEXT 5M, '/usr03.dbf' SIZE 2M AUTOEXTEND ON NEXT 5M MAXSIZE 20M; -> AUTOEXTEND 뒤에 콤마 불가함 실습 Tablespace 삭제 부분 4. SQL> DROP TABLESPACE <tablespace 명> |

Tablespace와 Data file 상태 조회 실습
[Tablespace 상태 조회]![]() SELECT tablespace_name, status, contents, extent_management, segment_space_management FROM dba_tablespaces ORDER BY 1; * 오류 나면 한줄로 명령어 적는다 STATUS: 상태(ONLINE/OFFLINE/READ ONLY) - 사용 가능 여부 CONTENTS: 종류(PERMANENT/TEMPORARY/UNDO) - 저장 Segment의 종류 EXTENT_MANAGEMENT: EXNENT 할당 및 관리 방식(LOCAL/DICTIONARY) SEGMENT_SPACE_MANAGEMENT: 세그먼트 공간 관리 방식(Block 내의 공간 관리 방식) (AUTO/MANUAL) [Tablespace별 data file 상태 조회] * Data File: Oracle DB의 실제 데이터가 저장되는 물리적 파일 (.dbf) ![]() 1. SELECT tablespace_name, bytes, file_name FROM dba_data_files; BYTES : Data file의 크기 FILE_NAME : Data file의 경로명을 포함한 이름 2.v$ 붙은 동적 성능 뷰가 MOUNT 상태에서도 조회 가능 - DB가 완전히 열리지 않아도 조회 가능 SELECT t.name tablespace_name, d.bytes, d.name file_name FROM v$tablespace t, v$datafile d - WHERE t.ts#=d.ts#; * v$tablespace t → tablespace 정보 테이블을 t로 별칭 * v$datafile d → datafile 정보 테이블을 d로 별칭 * 왜 t.name, d.name 인가? 두 테이블 모두 name 컬럼이 있어서 어느 테이블의 name인지 구분하려고 * 왜 WHERE t.ts#=d.ts# 인가? 두 테이블을 연결하는 공통 키가 ts# (tablespace 번호)이기 때문에 이걸 기준으로 조인해야 tablespace와 datafile이 올바르게 매칭됨 [v$datafile 뷰 조회 ] ![]() SELECT ts#, file#, name FROM v$datafile; TS#: Tablespace 번호 (SYSTEM=0, SYSAUX=1, UNDO=2 ...) FILE#: 데이터 파일 번호 (DB 전체에서 고유한 번호) NAME: 데이터 파일의 실제 물리적 경로 [v$tablespace 조회] ![]() SELECT ts#, name FROM v$tablespace; TS#: 테이블스페이스 번호 NAME: 테이블스페이스 이름 [temp file 상태 조회] ![]() SELECT tablespace_name, bytes, file_name FROM dba_temp_files; |
Tablespace 생성 실습
| 사용 명령어 개념 SQL> CREATE TABLESPACE <tablespace명> 2 DATAFILE '<data file>' SIZE <크기>; * 오라클 10g 이후부터는 Extent management 는 locally 방식으로, segment space management는 AUTO 방식으로 생성된다 CREATE TABLESPACE 이름 DATAFILE '파일경로' SIZE 크기; [실제 예시] ![]() CREATE TABLESPACE insa DATAFILE '/app/ora19c/oradata/DB19/insa01.dbf' SIZE 1M; CREATE TABLESPACE insa → insa라는 이름의 tablespace 생성 DATAFILE '/app/ora19c/oradata/DB19/insa01.dbf' → 해당 경로에 data file 생성 SIZE 1M → data file 크기 1MB로 설정 [생성된 tablespace의 설정과 data file을 확인] - 실제 예시 결과물 출력 ![]() SELECT tablespace_name, bytes, file_name FROM dba_data_files; - data file의 이름, 크기, 경로를 조회하는 명령어 [다시 Tablespace 상태 조회] ![]() |
Tablespace 확장 1 - 수동 실습
| 사용 명령어 개념 1. 지정된 파일의 크기를 늘리기 SQL> ALTER DATABASE DATAFILE 2 '<data file>' RESIZE <크기>; 2. Data file 추가하기 SQL> ALTER TABLESPACE <tablespace명> 2 ADD DATAFILE '<추가될 data file>' SIZE <크기>; [기존 data file 목록 및 크기 확인] ![]() SELECT tablespace_name, bytes, file_name FROM dba_data_files; [파일 크기 늘리기] ![]() ALTER DATABASE DATAFILE '/app/ora19c/oradata/DB19/insa01.dbf' RESIZE 2M; * data file 크기를 1M → 2M으로 변경 [파일 크기 변경 되었는지 확인] ![]() [2m 크기의 data file 을 추가하기] ![]() ALTER TABLESPACE insa ADD DATAFILE '/app/ora19c/oradata/DB19/insa02.dbf' SIZE 2M; [2m 크기의 data file 을 추가 된것을 확인] ![]() |
Tablespace 확장 2 - 자동 실습
| 사용명령어 1. 자동적으로 커지는 data file 갖는 tablespace 생성 - 시점: 처음 만들때 SQL> CREATE TABLESPACE <tablespace명> 2 DATAFILE '<data file명>' SIZE <크기> 3 AUTOEXTEND ON [NEXT <크기> MAX SIZE <크기>]; * NEXT: 증가치 * MAX SIZE; 최대 크기 2. tablespace에 자동으로 커지는 data file을 추가 - 시점: 나중에 추가할 때 SQL> ALTER TABLESPACE <tablespace명> 2 ADD DATAFILE '<추가될 data file명>' SIZE <크기> 3 AUTOEXTEND ON [NEXT <크기> MAX SIZE <크기>]; 3. 지정한 data file을 자동증가를 설정 SQL> ALTER DATABASE 2 DATAFILE '<변경할 data file명> 3 AUTOEXTEND [ON | OFF] [NEXT <크기> MAX SIZE <크기>]; [자동적으로 커지는 data file 갖는 tablespace 생성] * 서로 다른 세 개의 data file을 추가함. 크기가 자동으로 증가하는 autoextend 설정은 data file 별로 따로 설정 ![]() CREATE TABLESPACE usr DATAFILE '/app/ora19c/oradata/DB19/usr01.dbf' SIZE 2M AUTOEXTEND ON, '/app/ora19c/oradata/DB19/usr02.dbf' SIZE 2M AUTOEXTEND ON NEXT 5M, '/app/ora19c/oradata/DB19/usr03.dbf' SIZE 2M AUTOEXTEND ON NEXT 5M MAXSIZE 20M; * usr01.dbf → 자동증가 ON (증가량/최대 미지정) * usr02.dbf → 자동증가 ON, 5M씩 증가 * usr03.dbf → 자동증가 ON, 5M씩 증가, 최대 20M * data file이 꽉 찼을때 자동으로 크기가 늘게 된다 [자동적으로 커지는 data file 갖는 tablespace 생성된 것을 확인] ![]() SELECT tablespace_name, bytes, file_name FROM dba_data_files; [USR tablespace의 data file 자동증가 설정 확인] ![]() SELECT tablespace_name, file_name, autoextensible, increment_by, maxbytes FROM dba_data_files WHERE tablespace_name = 'USR'; * autoextensible → 자동증가 여부 (YES/NO) * increment_by → 자동증가 블록 수 * maxbytes → 최대 크기 * WHERE tablespace_name = 'USR' → USR tablespace만 필터링 [tablespace에 자동으로 커지는 data file을 추가] -insa tablespace에 data file 추가하면서 자동증가 설정까지 같이 한 명령어 ![]() ALTER TABLESPACE insa ADD DATAFILE '/app/ora19c/oradata/DB19/insa03.dbf' SIZE 2M AUTOEXTEND ON NEXT 5M MAXSIZE 20M; * ADD DATAFILE → insa03.dbf 파일 추가 (2M) * AUTOEXTEND ON → 자동증가 활성화 * NEXT 5M → 꽉 차면 5M씩 증가 * MAXSIZE 20M → 최대 20M까지만 증가 [tablespace에 자동으로 커지는 data file을 추가된 것을 확인] ![]() SELECT tablespace_name, file_name, autoextensible, increment_by, maxbytes FROM dba_data_files WHERE lower(tablespace_name) = 'insa'; * lower(tablespace_name) = 'insa' → 대소문자 구분 없이 insa 필터링 [insa01.dbf data file 자동증가 활성화] ![]() ALTER DATABASE DATAFILE '/app/ora19c/oradata/DB19/insa01.dbf' AUTOEXTEND ON; [insa01.dbf data file 자동증가 활성화된 것을 확인] ![]() SELECT tablespace_name, file_name, autoextensible, increment_by, maxbytes FROM dba_data_files WHERElower(tablespace_name) = 'insa'; |
Tablespace 삭제 실습
| 사용명령어 1. 지정된 tablespace를 삭제 SQL> DROP TABLESPACE <tablespace 명> 2 [INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS]; * INCLUDING CONTENT : Tablespace에 segment가 존재할 때 segment를 같이 삭제 * CASCADE CONSTRAINTS : 삭제되는 tablespace의 table을 다른 tablespace의 table이 참조하는 경우에 해당함. constraint를 같이 삭제함 * AND DATAFILES: Tablespace에 포함된 data file을 같이 지운다. 이 옵션을 쓰지 않으면 데이터 파일은 OS상에서 직접 지워야한다 [default permanent tablespace 삭제 시 오류 발생 화면] ![]() [비어있는 테이블 삭제 하기] ![]() DROP TABLESPACE insa; [tablespace(insa 파일) 삭제해도 data file이 OS상에서 지워지지 않음을 확인] ![]() SQL> !ls /app/ora19c/oradata/DB19/ [OS명령으로 data file 삭제] ![]() !rm /app/ora19c/oradata/DB19/insa01.dbf !rm /app/ora19c/oradata/DB19/insa02.dbf !rm /app/ora19c/oradata/DB19/insa03.dbf [data file 삭제 됨을 확인] ![]() SELECT tablespace_name, bytes, file_name FROM dba_data_files; [usr 파일 삭제] ![]() DROP TABLESPACE usr; [usr 파일 os 에서 제대로 하고, 삭제 됨을 확인] ![]() 1. !rm /app/ora19c/oradata/DB19/usr* 2. !ls /app/ora19c/oradata/DB19/ |


























