일일 정리

Redo log file, Redo log file 관리, 오라클 Network 설정과 접속, 테이블 스페이스

mysecurity 2025. 4. 17. 23:25

목차

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 파일 작성

- 원활한 로그 파일 관리를 위한 스크립트를 작성한다.

 

sql 파일 이용

- 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) 구동

수정된 listener.ora
리스너 프로세스 정상 작동 화면

 

3-2 리눅스 클라이언트 설정과 접속

● Local naming 방식에서 sqlnet.ora 파일의 구성 - 자동으로 생성된다.

자동 생성된 sqlnet.ora 파일

 

● Local naming 방식에서 tnsnames.ora 파일의 구성 

<TNS> 명 =
  (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP) (HOST = <IP 주소>) (PORT = <포트 번호>))
   (CONNECT_DATA = (SID = DB19))
  )

 

● 실습

설정한 tnsnames.ora 파일

 

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 테이블 스페이스 크기 조정

● 테이블 스페이스 크기 확장 방법

- 데이터 파일 추가

: 하드 드라이브가 추가되었을 경우에 한하여 데이터 파일을 추가한다.

 

- 데이터 파일 용량 확장

: 하드 드라이브가 추가되지 않은 나머지 경우 용량 확장 방식을 사용한다. 수동 혹은 자동 확장이 가능하다.

: 데이터 파일의 용량은 확장만 가능하다. (축소는 불가능하다.)