목차
1. Redo log file
1-1 Redo log file 개요
2. Redo log file 관리
2-1 Redo log file 확인
2-2 Log switch와 checkpoint
2-3 Redo log group 추가와 삭제
2-4 Redo log member 추가와 삭제
2-5 Redo log file 재배치
3. 오라클 Network 설정과 접속
3-1 오라클 서버 설정 : 리스너(Listener) 구동
3-2 리눅스 클라이언트 설정과 접속
4. 테이블 스페이스
4-1 테이블 스페이스 종류
4-2 테이블 스페이스의 영역 관리
4-3 테이블 스페이스 크기 조정
1. Redo log file
1-1 Redo log file 개요
● 리두 로그 파일 역할
리두 로그 파일은 데이터베이스의 데이터를 복구하기 위해 존재한다. 데이터베이스에 일어난 모든 일을 순서대로 기록하므로 앞쪽 데이터가 날아가면 나머지 뒤쪽 데이터도 쓰레기 값이 된다. 이에 대한 대책으로 데이터를 백업받고 그 이후의 로그 정보만 저장하는 방식을 사용한다.
원본 데이터베이스 성능의 60%정도의 스탠바이 데이터베이스를 함께 운영하여 원본 데이터베이스를 복구하는 동안 이용한다.
- 파일의 크기가 너무 커지는 것을 방지한다.
- 안전한 완전 복구를 보장한다.
● 리두 로그 파일 구조
리두 로그 파일은 그룹 단위로 이용되며 그룹 안의 각 리두 로그 파일을 멤버라고 한다. 그룹은 최소 2개, 한 그룹의 멤버는 최소 1개 있어야 한다.
- 정상적인 운영을 위해 보통 3개나 5개의 그룹을 사용한다.
- 같은 그룹 안의 멤버는 서로 다른 디스크에 있어야 한다. (미러링 시스템)
- 로그 스위치로 동작한다.
: 첫 그룹을 사용하다가 용량이 다 차면 다음 그룹으로 넘어가 사용한다.
: 로그 스위치가 동작할 때마다 시퀀스 넘버가 증가한다. 데이터베이스가 계속 정상 운영되는 경우 시퀀스 넘버는 리셋되지 않는다.
: 데이터베이스 재부팅 시 리두 로그 파일 작성 시작 위치는 컨트롤 파일에 저장되어있다.
- 그림 상 3번 그룹까지 용량이 다 차면 첫 그룹인 1번 그룹에 데이터를 덮어쓴다.
: 덮어쓰기 전에 기존 정보를 아카이브 파일에 기록한다.
● 리두 로그 파일 STATUS
- INACTIVE : 현재 사용 중이지 않은 그룹
- ACTIVE : 현재 사용 중인 그룹 직전에 사용되었던 그룹. CURRENT에 준하는 상태
- CURRENT : 현재 사용 중인 그룹
관리자가 그룹에 대한 작업을 수행할 때는 반드시 INACTIVE 상태여야 한다. 체크 포인트를 강제로 발동시켜 ACTIVE 상태를 INACTIVE 상태로 변경할 수 있다.
● 리두 로그 파일 관리
v$log: 로그 그룹에 대한 정보를 반환한다.
v$logfile: 그룹의 모든 멤버, 즉 로그 파일에 대한 정보를 반환한다.
2. Redo log file 관리
2-1 Redo log file 확인
● 사용 명령어
SQL> SELECT A.GROUP#, A.MEMBER, B.BYTES, B.STATUS, B.SEQUENCE#
2 FROM V$LOGFILE A, V$LOG B
3 WHERE A.GROUP# = B.GROUP#
4 ORDER BY 1;
- 현재 로그 그룹과 멤버의 운영 상황을 조회한다.
- GROUP# : 그룹 번호
- MEMBER : 멤버 파일의 경로 및 파일명
- BYTES : 멤버 파일의 크기
- STATUS : 그룹의 상태
SQL> ARCHIVE LOG LIST
- Archive log 관련 내용을 조회한다.
- Archive log mode가 아닌 경우 조회된 내용은 별 의미가 없다.
● 실습
2-2 Log switch와 checkpoint
● 사용 명령어
SQL> ALTER SYSTEM SWITCH LOGFILE;
- 로그 스위치를 강제로 발생시킨다.
SQL> ALTER SYSTEM CHECKPOINT;
- 체크 포인트를 강제로 발생시킨다.
- current, active 상태의 그룹에 대해 관리자가 작업을 진행할 수 없으므로 원할한 작업을 위해 이용한다.
● 실습
- 스위치 로그파일 작동 시 사용하는 로그파일 그룹을 변경한다.
- 체크 포인트 작동 시 active 상태 그룹을 inactive 상태로 전환한다.
- 원활한 로그 파일 관리를 위한 스크립트를 작성한다.
- sql 파일을 작동시킨다.
2-3 Redo log group 추가와 삭제
● 사용 명령어
SQL> ALTER DATABASE DROP LOGFILE GROUP [group number];
- 지정한 리두 로그 그룹을 삭제한다.
- 그룹을 드랍하더라도 등록 정보만 없어질 뿐 실제 파일은 경로에 남아있다.
- 실제 파일은 rm을 이용하여 경로에서 삭제한다.
SQL> ALTER DATABASE ADD LOGFILE GROUP [group number]
2 (['member file1', 'member file2', ... ]) SIZE [크기];
- 리두 로그 그룹을 추가한다. [group number]는 생략 가능하다.
● 실습
- 로그 파일 그룹 추가/삭제 작업을 진행한다.
- 남아있는 파일은 다시 이용할 수 없으므로 필히 지운다.
- 실제 경로의 로그 파일을 삭제한다.
2-4 Redo log member 추가와 삭제
● 사용 명령어
SQL> ALTER DATABASE DROP LOGFILE MEMBER
2 ['member file1', 'member file2', ...];
- 지정한 멤버 파일을 삭제한다.
SQL> ALTER DATABASE ADD LOGFILE MEMBER
2 ['member file'] TO GROUP [group nember],
3 ... ;
- 리두 로그 멤버 파일을 지정한 그룹에 추가한다.
● 실습
- 새로운 멤버를 생성한다.
- 새로운 멤버는 같은 그룹의 기존 멤버와 아직 동기화 되지 않았으므로 그룹 멤버 드랍이 되지 않는다.
- 동기화 진행을 위해 로그 스위치를 진행한다.
- 동기화가 완료되었으므로 멤버 드랍이 정상적으로 진행된다.
2-5 Redo log file 재배치
● 실습
리두 로그 그룹과 멤버를 시스템 상태에 다음 조건에 따라 재배치한다.
- /app/ora19c/oradata/DB19 디렉토리에 위치한 리두 로그 파일을 3개의 그룹과 2개의 멤버 파일로 서로 다른 디스크의 마운트 디렉토리인 disk4와 disk5에 다중화 한다.
- 단 그룹의 번호는 1,2,3으로, 멤버 파일의 크기는 50M로 제한한다.
ALTER DATABASE DROP LOGFILE GROUP 1;
ALTER DATABASE DROP LOGFILE GROUP 3;
!rm /app/ora19c/oradata/DB19/redo01.log
!rm /app/ora19c/oradata/DB19/redo02.log
!rm /app/ora19c/oradata/DB19/redo03.log
ALTER DATABASE ADD LOGFILE GROUP 1 '/app/ora19c/oradata/disk4/redo01.log' SIZE 50M;
ALTER DATABASE ADD LOGFILE MEMBER '/app/ora19c/oradata/disk5/redo01.log' TO GROUP 1;
ALTER DATABASE ADD LOGFILE GROUP 2 '/app/ora19c/oradata/disk4/redo02.log' SIZE 50M;
ALTER DATABASE ADD LOGFILE MEMBER '/app/ora19c/oradata/disk5/redo02.log' TO GROUP 2;
ALTER DATABASE ADD LOGFILE GROUP 3 '/app/ora19c/oradata/disk4/redo03.log' SIZE 50M;
ALTER DATABASE ADD LOGFILE MEMBER '/app/ora19c/oradata/disk5/redo03.log' TO GROUP 3;
ALTER DATABASE DROP LOGFILE GROUP 4;
ALTER DATABASE DROP LOGFILE GROUP 5;
3. 오라클 Network 설정과 접속
오라클 서버에 같은 컴퓨터에서 접속하는 경우, 유저 프로세스와 서버 프로세스는 직접 연결될 수 있다.
다른 컴퓨터에서 네트워크를 통해 접속하는 경우, 유저 프로세스는 tnsnames.ora 파일의 정보를 보고 리스너 프로세스에 접근하여 서버 프로세스에 접근한다.
리스너 프로세스를 띄우기 위해서는 listener.ora 파일이 있어야 한다.
● 시스템 구성
1. 오라클 서버
- IP : 192.168.10.19(oracle), 192.168.10.11(dal)
- Host명 : DB19.itclass.co.kr
- ORACLE_OWER : ora19c
- ORACLE_HOME : /app/ora19c/19c
- TNS_ADMIN : $ORACLE_HOME/network/admin
- ORACLE_SID : DB19
2. Linux 클라이언트
- IP : 192.168.10.110
- ORACLE_HOME : /app/ora19c/19c
3. 윈도우 클라이언트
- IP : 192.168.10.111
- ORACLE_HOME : C:₩DB₩ora19c₩19c
3-1 오라클 서버 설정 : 리스너(Listener) 구동
3-2 리눅스 클라이언트 설정과 접속
● Local naming 방식에서 sqlnet.ora 파일의 구성 - 자동으로 생성된다.
● Local naming 방식에서 tnsnames.ora 파일의 구성
<TNS> 명 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = <IP 주소>) (PORT = <포트 번호>))
(CONNECT_DATA = (SID = DB19))
)
● 실습
4. 테이블 스페이스
테이블 스페이스는 한 개 이상의 데이터 파일을 묶어놓은 논리적인 저장공간이다.
테이블을 파티션에 저장하면 파티션의 용량에 영향을 받으므로 테이블 스페이스에 저장한다.
여러 데이터 파일이 동시에 입출력 할 수 있으므로 하드웨어 입출력 속도가 빠르다.
4-1 테이블 스페이스 종류
● 'system'이라는 이름의 테이블 스페이스
: 딕셔너리가 저장되어 있다.
: 오라클 설치 시 자동으로 생긴다. 내가 생성하거나 삭제하지 않는다.
● 'system'을 제외한 나머지 테이블 스페이스
- 일반 사용자 테이블 스페이스
: 테이블을 저장한다.
: 일반 사용자에게 일정 구역을 할당해준다.(= quota 할당)
- undo 테이블 스페이스
: 언두 세그먼트를 저장한다. 데이터베이스에 딱 하나 할당한다.
- temporary 테이블 스페이스
: temporary 세그먼트를 저장한다.
: temporary 세그먼트는 sort set을 저장한다.
: 3~4명 정도가 하나의 temporary 테이블 스페이스를 사용하게 해주며, 그 안의 temporary 세그먼트는 하나 할당한다.
서버 프로세스의 PGA 안에서 작동하는 sort_area_size가 5m 일 때, 크기가 100m인 테이블을 정렬하기 위해 sort set 20개가 필요하다. 이 sort set 들을 합쳐 값을 정렬하는 것을 marge라고 하며 marge 완료 전까지 테이블 스페이스 안에 존재한다.
4-2 테이블 스페이스의 영역 관리
- 로컬리 매니지먼트 테이블 스페이스
: 현재 기본적으로 지정되는 관리옵션이다. 테이블 스페이스 공간 할당을 자체적으로 관리한다. 작업 효율이 딕셔너리 매니지먼트 테이블에 비해 뛰어나다.
- 딕셔너리 매니지먼트 테이블 스페이스
: 테이블 스페이스 확장 영역이 딕셔너리에서 관리된다. 로컬리 매니지먼트와 비교하여 장점은 없다.
- 기본 임시 테이블 스페이스
: 모든 데이터베이스에서 사용되는 기본 임시 테이블 스페이스를 지정한다.
: 데이터베이스 생성 시 기본 임시 테이블 스페이스를 생성하면 system 테이블 스페이스는 임시 공간에 사용될 수 없다.
: 영구 테이블 스페이스로 변경할 수 없다.
: 새 기본값을 사용할 수 있을 때까지 삭제할 수 없다.
: 오프라인으로 설정할 수 없다.
- 읽기 전용 테이블 스페이스
: 테이블 스페이스를 읽기 전용으로 설정 시 체크 포인트가 발생한다.
: 읽기 전용임에도 drop은 정상 작동한다.
4-3 테이블 스페이스 크기 조정
● 테이블 스페이스 크기 확장 방법
- 데이터 파일 추가
: 하드 드라이브가 추가되었을 경우에 한하여 데이터 파일을 추가한다.
- 데이터 파일 용량 확장
: 하드 드라이브가 추가되지 않은 나머지 경우 용량 확장 방식을 사용한다. 수동 혹은 자동 확장이 가능하다.
: 데이터 파일의 용량은 확장만 가능하다. (축소는 불가능하다.)
'일일 정리' 카테고리의 다른 글
오라클 유저 관리, 유저 생성과 관리 실습, 권한 관리, 롤 관리 (1) | 2025.04.22 |
---|---|
오라클 자동 실행, Tablespace와 data file (0) | 2025.04.19 |
오라클 서버 설치, 오라클 구성 요소, 오라클 STARTUP과 SHUTDOWN, Parameter file 관리, Control file 관리 (0) | 2025.04.17 |
Dos 공격 (2) | 2025.04.15 |
스푸핑, 터널링과 은닉채널 (0) | 2025.04.14 |