Oracle 12c ARCHIVELOG 저장 장소 변경하기

ARCHIVELOG 저장장치는 여러 가지 이유로 가용성이 떨어지거나, 용량 부족 등의 문제가 발생할 수 있습니다. 이를 방지하기 위해 ARCHIVELOG 저장장치를 변경하는 경우가 있습니다. 또한, 보안 요구사항에 따라서 ARCHIVELOG 저장장소를 외부 저장 장치로 이전하는 경우도 있습니다. 이러한 이유로 이 글에서는 Oracle Database 12c를 인스톨할 때 디폴트로 지정된 ARCHIVELOG 저장 장소를 변경하는 방법을 소개합니다.

디폴트 ARCHIVELOG 저장 장소

sysdba 관리자로 로그인

다음과 같은 명령으로 SQL*Plus 클라이언트를 사용하여 모든 데이터베이스 권한을 가진 SYS 사용자의 “SYSDBA” 권한으로 Oracle 데이터베이스에 로그인합니다.

D:\>sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on 토 1월 22 17:36:43 2022
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
다음에 접속됨:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production

sqlplus / as sysdba 로그인 전제 조건에 대한 자세한 설명은 다음 글을 참조하십시오.

sqlplus / as sysdba 로그인 전제 조건
sqlplus / as sysdba 로그인에는 다음 3가지의 전제 조건을 만족해야 합니다. "sqlplus / as sysdba" 명령을 사용할 때 이 전제 조건을 기억 한다면 쉽게 문제를 해결 할 수 있습니다. "...

연결된 인스턴스의 현재 아카이브 저장 장소 정보 표시

다음 명령으로 Oracle 데이터베이스에서 현재 활성화 된 로그 아카이빙 설정을 확인할 수 있습니다. 여기서는 아카이브 대상이 어디에 저장되는지 확인합니다.

SQL> ARCHIVE LOG LIST
데이터베이스 로그 모드 아카이브 모드
자동 아카이브 사용으로 설정됨
아카이브 대상 C:\app\oracle\product\12.2.0\dbhome_1\RDBMS
가장 오래된 온라인 로그 순서 37
아카이브할 다음 로그 39
현재 로그 순서 39

인스턴스의 각 아카이브 대상에 대한 저장 장소 현재 상태

또한 다음 명령으로 기본적으로 Oracle Database 시스템에서 지원하는 최대 아카이브 로그 대상(31행)을 확인할 수 있습니다. 그리고 오라클에서 권장하는 기본 로그 대상 LOG_ARCHIVE_DEST_1에 디폴트로 ARCHIVELOG 저장 장소가 설정되어 있음을 확인할 수 있습니다.

SQL> SET PAGESIZE 100
     SET LINESIZE 90
     COLUMN dest_name FORMAT A20;
     COLUMN status FORMAT A10;
     COLUMN destination FORMAT A50;
SQL> SELECT dest_name, status, destination FROM v$archive_dest;

DEST_NAME            STATUS     DESTINATION
-------------------- ---------- --------------------------------------------------
LOG_ARCHIVE_DEST_1   VALID      C:\app\oracle\product\12.2.0\dbhome_1\RDBMS
LOG_ARCHIVE_DEST_2   INACTIVE
...중간 생략...
LOG_ARCHIVE_DEST_30  INACTIVE
LOG_ARCHIVE_DEST_31  INACTIVE

31 행이 선택되었습니다.

ARCHIVELOG 저장 장소 변경하기

아카이브 대상 변경하기

다음 SQL문으로 Oracle 데이터베이스에서 권장하는 기본 로그 대상 LOG_ARCHIVE_DEST_1에 디폴트로 설정된 ARCHIVELOG 저장 장소를 변경합니다.

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=E:\app\oracle\arch';

시스템이 변경되었습니다.

연결된 인스턴스의 변경된 아카이브 정보 표시

다음 SQL문으로 Oracle 데이터베이스에서 현재 활성화 된 로그 아카이빙 설정이 변경되었음을 확인합니다.

SQL> ARCHIVE LOG LIST
데이터베이스 로그 모드              아카이브 모드
자동 아카이브             사용으로 설정됨
아카이브 대상            E:\app\oracle\arch
가장 오래된 온라인 로그 순서     37
아카이브할 다음 로그   39
현재 로그 순서           39

인스턴스의 각 아카이브 대상에 대한 변경후 상태

다음 SQL문으로 기본적으로 Oracle Database 시스템에서 지원하는 최대 아카이브 로그 대상(31행)에서 오라클에서 권장하는 기본 로그 대상 LOG_ARCHIVE_DEST_1에 설정된 디폴트 ARCHIVELOG 저장 장소가 변경되었음을 확인합니다.

SQL> SET PAGESIZE 100
     SET LINESIZE 90
     COLUMN dest_name FORMAT A20;
     COLUMN status FORMAT A10;
     COLUMN destination FORMAT A50;
SQL> SELECT dest_name, status, destination FROM v$archive_dest;

DEST_NAME            STATUS     DESTINATION
-------------------- ---------- --------------------------------------------------
LOG_ARCHIVE_DEST_1   VALID      E:\app\oracle\arch
LOG_ARCHIVE_DEST_2   INACTIVE
...중간 생략...
LOG_ARCHIVE_DEST_30  INACTIVE
LOG_ARCHIVE_DEST_31  INACTIVE

31 행이 선택되었습니다.

ARCHIVELOG작성 확인용 대량 데이터 작성

ARCHIVELOG가 생성되는것을 확인하기 위해 테스트용 “SCOTT” 스키마에 대량 데이터를 작성 해 봅니다. 11g 버전 이후 Oracle 12c(12.1.0.2) 버전부터 “SCOTT” 스키마는 기본적으로 설치되지 않도록 변경되었습니다.  “SCOTT” 스키마를 작성하려면 다음 글을 참조하십시오.

Oracle 일반 데이터베이스 인스턴스에 연습 데이터용 샘플 스키마 "SCOTT" 작성하기
"SCOTT" 스키마가 디폴트로 설치된 마지막 오라클 버전은 11g(11.2.0.x) 입니다. 11g 버전 이후 Oracle 12c(12.1.0.2) 버전부터 "SCOTT" 스키마는 기본적으로 설치되지 않도록 변경되...

테스트용 SCOTT/TIGER 로그인

다음 명령을 실행하여 “SCOTT” 스키마 로그인 합니다.

C:\> sqlplus scott/tiger
SQL*Plus: Release 12.2.0.1.0 Production on 토 1월 22 21:02:01 2022
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
마지막 성공한 로그인 시간: 토 1월  22 2022 20:55:20 +09:00
다음에 접속됨:
Oracle Database 12c Standard Edition Release 12.2.0.1.0 - 64bit Production

BONUS테이블에 대량 데이터 삽입

다음과 같이 BONUS테이블이 비어있는지를 확인합니다.

SQL> desc bonus
 이름                                      널?      유형
 ----------------------------------------- -------- ----------------------------
 ENAME                                              VARCHAR2(10)
 JOB                                                VARCHAR2(9)
 SAL                                                NUMBER
 COMM                                               NUMBER

SQL> select count(*) from bonus;
  COUNT(*)
----------
         0

만약 데이터가 존재한다면 다음 SQL문을 실행하여 bonus 테이블의 모든 데이터를 삭제합니다.

SQL> TRUNCATE TABLE bonus;

다음과 같이 익명 PL/SQL 블록(anonymous PL/SQL block)를 실행하면 bonus 테이블의 ename, job, sal, comm에 무작위 값을 가진 1억개의 데이터를 insert합니다.

SQL> 
 declare
   vEname     varchar2(10);
   vjob       varchar2(9);
 begin
   dbms_random.seed(uid);
   for i in 1..100000000
   loop
     vEname := to_char(i, 'FM000000000');
     vjob := dbms_random.string('x', 9);
     insert into bonus
       (ename, job, sal, comm) 
     values
       (vEname, vjob,i,50000);
     if (mod(i, 100) = 0) then
             commit;
     end if;
   end loop;
   commit;
 end;
 /
PL/SQL 처리가 정상적으로 완료되었습니다.

다음 SQL문으로 데이터가 1억건 삽입되어 있는지 확인합니다.

SQL> select count(*) from bonus;
  COUNT(*)
----------
 100000000

변경된 ARCHIVELOG 저장 장소 확인하기

변경된 ARCHIVELOG 저장 장소 E:\app\oracle\arch에 다음과 같이 위에서 Insert한 1억건 데이터의 ARCHIVELOG가 저장되는 것을 확인합니다.

댓글

제목과 URL을 복사했습니다