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가 저장되는 것을 확인합니다.
댓글