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

Oracle DB

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 로그인 전제 조건에 대한 자세한 설명은 다음 글을 참조하십시오.

눈깨비 정보창고 - 분기탱천
마우스 영역 지정 이미지 캡처를 문자 인식 및 번역하기 버튼 클릭 만으로  을 실행 해 주는 소프트웨어를 작성 했습니다. 자세한 도움말은 여기를 참조 하십시오. 웹 서비스 구축 눈깨비가 본업으로 하고 있는 기술적인 ...

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

다음 명령으로 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” 스키마를 작성하려면 다음 글을 참조하십시오.

눈깨비 정보창고 - 분기탱천
마우스 영역 지정 이미지 캡처를 문자 인식 및 번역하기 버튼 클릭 만으로  을 실행 해 주는 소프트웨어를 작성 했습니다. 자세한 도움말은 여기를 참조 하십시오. 웹 서비스 구축 눈깨비가 본업으로 하고 있는 기술적인 ...

테스트용 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을 복사했습니다