목차
1. 오라클 자동 실행
1-1 오라클 자동 실행 설정
2. Tablespace와 data file
2-1 Tablespace와 Data file 상태 조회
2-2 Tablespace 생성
2-3 Tablespace 확장 1 - 수동
2-4 Tablespace 확장 2 - 자동
2-5 Tablespace 삭제
2-6 Tablespace READ ONLY
2-7 OPEN 상태에서 tablespace 이동
2-8 Close 상태에서 tablespace 이동
2-9 Default permanent tablespace
2-10 Temporary tablespace 생성과 default temporary tablespace 변경
2-11 Undo 관련 설정 및 상태 확인
1. 오라클 자동 실행
1-1 오라클 자동 실행 설정
오라클 서버를 시작함과 동시에 오라클 데이터베이스를 자동으로 스타트업하도록 설정할 수 있다. 설정은 root 계정으로 진행한다.
① /etc/oratab 파일 수정
오라클 데이터베이스 자동 실행을 위해 /etc/oratab 파일을 수정한다.
# vi /etc/oratab

- 기본 값은 문장 끝이 N이므로 Y로 수정하여 자동 실행을 하도록 설정한다.
② /etc/rc.d/rc.local 파일 수정
/etc/rc.d/rc.local에 다음과 같이 실행 스크립트를 추가한다.
# vi /etc/rc.d/rc.local

- ora19c 계정으로 '-c' 뒤의 커맨드를 실행한다.
- 이런 식의 명령어는 공백을 읽지 못하므로 lsnrctl start 는 따옴표로 묶어 작성한다.
- 리스너 프로세스와 데이터베이스를 스타트한다.
설정 후 반드시 rc.local 파일에 x 퍼미션을 추가한다.
다음과 같이 오라클 서버 부팅 시 자동으로 오라클 데이터베이스가 OPEN 상태인 것을 확인할 수 있다.

2. Tablespace와 data file
2-1 Tablespace와 Data file 상태 조회
● 사용 명령어
SQL> SELECT tablespace_name, status, contents,
2 extent_management, segment_space_management
3 FROM dba_tablespaces;
- 테이블 스페이스의 상태를 조회한다.
- STATUS : 사용 가능여부
- CONTENTS : 저장 세그먼트의 종류
- EXTENT_MANAGEMENT : Extent의 할당 및 관리 방식
- SEGMENT_SPACE_MANAGEMENT : 블록 내의 공간 관리 방식
SQL> SELECT tablespace_name, bytes, file_name
2 FROM dba_data_files;
- 테이블 스페이스별 데이터 파일의 상태를 조회 한다.
- BYTES : 데이터 파일의 크기
- FILE_NAME : 데이터 파일의 경로명을 포함한 이름
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#;
- 테이블 스페이스 별 데이터 파일의 상태를 조회 한다.
- 딕셔너리가 아니라 퍼포먼스 뷰를 조회하는 것이므로 MOUNT 상태에서도 조회 가능하다.
두 번째 sql 예시문은 딕셔너리에서, 세 번째 sql 예시문은 퍼포먼스 뷰에서 조회하지만 같은 결과를 조회한다.
● 실습

- 테이블 스페이스의 상태를 조회 한다. 테이블 스페이스 생성 시 기본적으로 auto로 생성된다.
- 데이터 파일의 상태를 조회한다.
- 템프 파일의 상태를 조회한다.
- TEMPORARY 파일은 데이터 파일이 아닌 템프 파일로 분류된다.

- 테이블 스페이스 넘버, 파일 넘버, 이름을 조회한다.
- 파일 넘버는 다음 두 종류가 있다. 현재 조회된 파일 넘버는 앱솔루트 파일 넘버이다.
: Absolute : 절대 파일 넘버
: Relative : 상대 파일 넘버
2-2 Tablespace 생성
● 사용 명령어
SQL> CREATE TABLESPACE
2 DATAFILE '<data file>' SIZE <크기>;
- 오라클 10g 이후 버전에서 사용자용 테이블 스페이스를 생성하는 명령어이다.
- 생성 시 기본적으로 AUTO 방식으로 생성된다.
● 실습

2-3 Tablespace 확장 1 - 수동
● 사용 명령어
SQL> ALTER DATABASE DATAFILE
2 '<data file>' RESIZE <크기>;
- 지정된 파일의 크기를 늘린다.
SQL> ALTER TABLESPACE <tablespace명>
2 ADD DATAFILE '<추가될 data file>' SIZE <크기>;
- 데이터 파일을 추가한다.
● 실습

- 원래 크기가 1M인 데이터 파일의 크기를 2M로 늘린다.
- insa 테이블 스페이스에 2M 크기의 데이터 파일을 추가한다.
- 시스템은 insa 테이블 스페이스를 4M의 공간으로 인식한다.
2-4 Tablespace 확장 2 - 자동
● 사용 명령어
SQL> CREATE TABLESPACE <tablespace명>
2 DATAFILE '<data file명>' SIZE <크기>
3 AUTOEXTEND ON NEXT <크기> MAX SIZE <크기>;
- 자동으로 커지는 데이터 파일을 갖는 테이블 스페이스를 생성한다.
- NEXT : 증가치
- MAX SIZE : 최대 크기로 기재하지 않을 시 파티션이 다 찰때까지 늘릴 수 있다.
SQL> ALTER TABLESPACE <tablespace명>
2 ADD DATAFILE '<추가될 data file명>' SIZE <크기>
3 AUTOEXTEND ON NEXT <크기> MAX SIZE <크기>;
- 테이블 스페이스에 자동으로 커지는 데이터 파일을 추가한다.
SQL> ALTER DATABASE
2 DATAFILE '<변경할 data file명>
3 AUTOEXTEND [ON | OFF] NEXT <크기> MAX SIZE <크기>;
- 지정한 데이터 파일에 자동 증가를 설정한다.
● 실습

- 각각 설정이 서로 다른 세 개의 데이터 파일을 추가 한다. 크기가 자동으로 증가하는 autoextend 설정은 데이터 파일 별로 따로 설정한다.

- 데이터 파일의 자동 증가는 데이터 파일 각각의 설정이므로 기존 테이블 스페이스에 자유롭게 추가할 수 있다.
- INCREMENT_BY : 블록 갯수를 나타낸다.
2-5 Tablespace 삭제
● 사용 명령어
SQL> DROP TABLESPACE <tablespace 명>
2 [INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS];
- 지정된 테이블 스페이스를 삭제한다.
- INCLUDING CONTENT : 테이블 스페이스에 세그먼트가 존재할 때 세그먼트를 함께 삭제한다.
- CASCADE CONSTRAINTS : 삭제되는 테이블 스페이스의 테이블을 다른 테이블 스페이스의 테이블이 참조하는 경우, 해당 제약 조건을 함께 삭제한다.
- AND DATAFILES : 테이블 스페이스에 포함된 데이터 파일을 같이 지운다. 이 옵션을 쓰지 않으면 데이터 파일은 OS상에서 직접 지워야한다.
● 실습

- users 테이블 스페이스는 디폴트 퍼머넌트 테이블 스페이스로 지정되어 있으므로 삭제되지 않는다.
- 비어있는 테이블 스페이스만 삭제가 가능하다.
- 테이블 스페이스를 삭제하더라도 실제 데이터 파일이 삭제되지 않으므로 직접 삭제한다.

2-6 Tablespace READ ONLY
● 사용 명령어
SQL> ALTER TABLESPACE <tablespace명> [ READ ONLY / READ WRITE ]
- 지정한 테이블 스페이스를 읽기전용 / 읽기쓰기 모드로 변경한다.
- 읽기전용 테이블 스페이스에 대한 DML 작업은 불가하나 drop 작업은 가능하다.
: drop 작업은 딕셔너리에서 해당 테이블 등록 정보를 지우므로 테이블 스페이스에 접근할 필요가 없다.
: 읽기전용 모드는 사용자에게 제약을 거는 것이 아닌 오라클이 해당 테이블 스페이스에 대한 동기화 작업을 하지 않게 하기 위해 사용된다. 복구에 대한 부담이 없어 기민한 데이터베이스 사용이 가능하다.
2-7 OPEN 상태에서 tablespace 이동
테이블 스페이스 이동 작업은 실제로는 데이터 파일을 옮기는 작업으로, 정해진 프로세스에 맞춰 작업하지 않을 시 파일이 손상되므로 반드시 프로세스에 맞춰 작업한다. 컨트롤 파일에서 데이터 파일의 위치를 확인할 수 있다.
● 사용 명령어
SQL> ALTER TABLESPACE <tablespace명> OFFLINE;
- 지정된 테이블 스페이스를 오프라인 상태로 변경한다.
- 오프라인된 테이블 스페이스는 더 이상 접근이 불가능하다.
SQL> ALTER TABLESPACE <tablespace> RENAME DATAFILE
2 <원래 data file명> TO <이동한 data file>;
- 데이터 파일 등록 정보를 수정한다.
SQL> ALTER TABLESPACE <tablespace> ONLINE;
- 지정된 테이블 스페이스를 온라인 상태로 변경한다.
필요하다면 데이터 파일 레벨에서도 오프라인 가능하다.
SQL> ALTER DATABASE DATAFILE '<data file>' OFFLINE [DROP];
- DROP은 데이터 파일 손상시 사용한다.
- 위험하므로 사용하지 않는다.
● 실습

- users 테이블 스페이스를 이동하기 위해 우선 오프라인으로 변경한다.
- 오프라인이 된 테이블 스페이스는 데이터 파일의 크기가 공백 혹은 0으로 표시된다.

- users 테이블 스페이스의 데이터 파일을 이동시킨다.
- 딕셔너리의 데이터 파일 위치 정보는 아직 변경되지 않았으므로 변경된 위치로 정보를 수정한다.

- 이동된 users 테이블 스페이스를 온라인으로 변경한다.
- 시스템이나 언두용 테이블 스페이스는 오프라인으로 변경되지 않으므로 반드시 DB 종료 후 옮긴다.
2-8 Close 상태에서 tablespace 이동
오프라인 변경이 되지않는 데이터 파일을 이동시키기 위해서는 다음과 같이 DB를 셧다운 한 상태에서 작업을 진행한다. 해당 작업 방식은 모든 테이블 스페이스에 적용 가능하다.
● MOUNT 상태에서 데이터 파일을 이동하는 과정
① DB SHUTDOWN
② DATA FILE 이동
③ DB MOUNT
④ ALTER DATABASE 명령으로 DATA FILE 등록
⑤ DB OPEN
테이블 스페이스 관련 명령어는 open 상태에서만 사용할 수 있다.
● 사용 명령어
SQL> ALTER DATABASE RENAME FILE
2 <원래 data file명> TO <이동한 data file명>;
- 데이터 파일 등록 정보 수정
- ALTER TABLESPACE ~ RENAME DATAFILE 명령과 동일한 효과가 있다.
- 리두 로그의 경우 옮기지 않고 재생성한다.
● 실습

- DB 셧다운 이후 데이터 파일을 이동시킨다.
- MOUNT 상태로 DB를 스타트업한다.
- 딕셔너리의 데이터 파일 위치 정보는 아직 변경되지 않았다.

- 딕셔너리의 데이터 파일 위치 정보를 수정한다.

- 정상적으로 테이블 스페이스가 이동된 것을 확인한다.


- 데이터 파일 이외에 컨트롤 파일이나 리두 로그 파일의 위치 확인 후 불필요한 DB19 디렉토리를 삭제한다.
2-9 Default permanent tablespace
● 사용 명령어
SQL> SELECT * FROM DATABASE_PROPERTIES
2 WHERE PROPERTY_NAME = 'DEFAULT_PERMANENT_TABLESPACE';
- DB 전체에 대해서 정의된 디폴트 테이블 스페이스를 조회한다.
● 실습


- 유저 별 디폴트 테이블 스페이스를 지정하지 않으면 DB 전체에 지정된 디폴트 스페이스가 자동으로 지정된다.

- te 디폴트 스페이스 생성 후 DB 전체에 지정된 디폴트 스페이스를 te로 변경한다.
- 새로 생성된 사용자를 포함하여 유저 레벨에서 디폴트 테이블 스페이스가 지정되지 않은 모든 유저의 디폴트 테이블 스페이스가 변경된다.
- 유저 생성 시 반드시 사용할 테이블 스페이스를 지정하여 생성한다.
2-10 Temporary tablespace 생성과 default temporary tablespace 변경
● 사용 명령어
SQL> CREATE TEMPORARY TABLESPACE <tablespace명>
2 TEMPFILE '<temp file명>' SIZE <크기>;
- 템포러리 테이블 스페이스를 생성한다.
- 로컬리 매니지먼트가 기본이다.
- DATAFILE 절이 아닌 TEMPFILE 절을 사용한다.
SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE <tablespace명>;
- 지정된 테이블 스페이스를 디폴트 템포러리 테이블 스페이스로 설정한다.
SQL> SELECT * FROM DATABASE_PROPERTIES
2 WHERE PROPERTY_NAME LIKE '%TEMP%';
● 실습

- 시스템에 지정된 디폴트 템포러리 테이블 스페이스를 조회 한다.
- 템포러리 테이블 스페이스는 말 그대로 임시 공간이므로 오프라인 대상이 아니며 읽기 전용일 필요도 없다.
- 일반 템포러리 테이블 스페이스는 아무 제약 없이 삭제가 가능하나, 디폴트 템포러리 테이블 스페이스는 삭제가 불가능하다.

- tmp 템포러리 테이블 스페이스 생성 후 이를 디폴트 템포러리 테이블 스페이스로 변경한다.
- 더이상 디폴트 템포러리 테이블 스페이스가 아닌 temp 테이블 스페이스를 삭제한다.
2-11 Undo 관련 설정 및 상태 확인
● 사용 명령어
SQL> SELECT SEGMENT_NAME, TABLESPACE_NAME, STATUS
2 FROM DBA_ROLLBACK_SEGS;
- 언두 세그먼트의 상태를 조회한다.
SQL> SELECT N.USN, N.NAME, S.STATUS
2 FROM V$ROLLNAME N, V$ROLLSTAT S
3 WHERE N.USN=S.USN;
- 현재 사용 중이거나 사용 가능한 언두 세그먼트를 조회한다.
● 실습

- undo_retention : 언두 정보가 사라져도 정보를 유지하는 시간을 지정한다. (900 = 900초)

- 언두 관련 파라미터 설정 및 데이터 파일의 상태를 확인한다.
- 현재 시스템에 존재하는 언두 세그먼트의 목록을 확인 한다. 온라인 상태인 세그먼트만 사용된다.
'일일 정리' 카테고리의 다른 글
| 권한과 Role, 패스워드 보안 및 리소스 관리, Profile 관리 (0) | 2025.04.22 |
|---|---|
| 오라클 유저 관리, 유저 생성과 관리 실습, 권한 관리, 롤 관리 (1) | 2025.04.22 |
| Redo log file, Redo log file 관리, 오라클 Network 설정과 접속, 테이블 스페이스 (0) | 2025.04.17 |
| 오라클 서버 설치, 오라클 구성 요소, 오라클 STARTUP과 SHUTDOWN, Parameter file 관리, Control file 관리 (0) | 2025.04.17 |
| Dos 공격 (2) | 2025.04.15 |