Computer >> 컴퓨터 >  >> 프로그램 작성 >> 데이터 베이스

Oracle의 대체 아카이브 대상

Oracle® 데이터베이스를 아카이빙하면 데이터를 장기간 보존하고 저장할 수 있지만 공간이 부족하면 어떻게 됩니까?

소개

아카이브 대상이 가득 차면 Oracle 데이터베이스가 중단되거나 정체될 수 있으며 다음 오류 중 하나가 표시될 수 있습니다.

  • 0RA-00257 :아카이버 오류, 해제될 때까지 내부에만 연결
  • ORA-16014 :로그 2 시퀀스# 1934가 보관되지 않고 사용 가능한 대상이 없습니다.

이 경우 원래 아카이브 대상이 실패할 때 사용할 대체 아카이브 대상이 있어야 합니다. 기본 아카이브 대상에 장애가 발생한 경우(공간, 하드웨어 등) 대체 아카이브 대상을 활용할 수 있습니다.

작동 방식을 이해하기 위해 간단한 데모를 살펴보겠습니다.

데모 파트 1

먼저 기본 아카이브 대상을 /u03/primary_dest location으로 설정했습니다. 현재 99% 활용되고 있습니다. 테스트와 동일한 작업을 수행할 수 있습니다.

그런 다음 다음 명령을 실행합니다.

SQL> select version from v$instance;

VERSION
-----------------
12.1.0.2.0

SQL> select DEST_NAME,TARGET,DESTINATION,VALID_ROLE,STATUS 
from v$archive_dest where status!='INACTIVE';

DEST_NAME             TARGET     DESTINATION          VALID_ROLE   STATUS
--------------------- ---------- -------------------- ------------ ---------
LOG_ARCHIVE_DEST_1    PRIMARY    /u03/primary_dest     ALL_ROLES    VALID

데모 파트 2

대체 아카이브 대상을 추가해 보겠습니다. /u04/alternate_dest , 기본 대상을 사용할 수 없는 경우 시스템에서 사용할 수 있습니다.

SQL> !df -h /u04/alternate_dest
Filesystem            Size  Used Avail Use% Mounted on
/dev/ddg2            1004M   18M 
936M   2% /u04

SQL> alter system set log_archive_dest_2='LOCATION=/u04/alternate_dest' scope=both;

System altered.

SQL> alter system set log_archive_dest_state_2=ALTERNATE scope=both;

System altered.

SQL> select DEST_NAME,TARGET,DESTINATION,VALID_ROLE,STATUS,ALTERNATE from v$archive_dest where status!='INACTIVE';

DEST_NAME           TARGET      DESTINATION         VALID_ROLE   STATUS      ALTERNATE
------------------- ----------- ------------------- ------------ ----------- ---------
LOG_ARCHIVE_DEST_1   PRIMARY    /u03/primary_dest    ALL_ROLES    VALID      NONE
LOG_ARCHIVE_DEST_2   PRIMARY    /u04/alternate_dest  ALL_ROLES    ALTERNATE  NONE

데모 파트 3

기본 및 대체 아카이브 대상을 연결할 수 있으며 기본 위치가 100% 사용량에 도달하면 Oracle이 대체 아카이브 위치로 장애 조치할 수 있습니다. 그러나 Oracle은 기본 대상을 다시 사용할 수 있게 된 후에는 기본 대상으로 장애 복구를 실행할 수 없습니다. 이 작업을 수행하려면 기본 보관 대상을 설정해야 합니다.LOG_ARCHIVE_DEST_1 , 대체 대체 아카이브 대상의 경우 LOG_ARCHIVE_DEST_2 , 다음 예와 같이:

SQL> alter system set log_archive_dest_2='LOCATION=/u04/alternate_dest 
NOREOPEN ALTERNATE=LOG_ARCHIVE_DEST_1' scope=both;

System altered.

SQL> alter system set log_archive_dest_1='LOCATION=/u03/primary_dest
NOREOPEN ALTERNATE=LOG_ARCHIVE_DEST_2' scope=both;

System altered.

SQL> select DEST_NAME,TARGET,DESTINATION,VALID_ROLE,STATUS,ALTERNATE
from v$archive_dest where status!='INACTIVE';

DEST_NAME            TARGET      DESTINATION          VALID_ROLE   STATUS     ALTERNATE
-------------------- ----------- -------------------- ------------ ---------- ------------------
LOG_ARCHIVE_DEST_1   PRIMARY     /u03/primary_dest     ALL_ROLES    VALID     LOG_ARCHIVE_DEST_2
LOG_ARCHIVE_DEST_2   PRIMARY     /u04/alternate_dest   ALL_ROLES    ALTERNATE LOG_ARCHIVE_DEST_1

아카이브 대상 1과 2를 연결했는지 확인할 수 있습니다. 이제 Oracle은 기본 대상에 여유 공간이 있으면 기본 대상으로 장애 복구할 수 있습니다.

데모 파트 4

다음으로 다음 출력과 같이 아카이브 대상이 100% 사용량에 도달하도록 일부 DML을 실행했습니다.

Thread 1 is advanced to log sequence 20 (LGWR switch)
  Current log# 2 seq# 20 mem# 0: /u01/app/oracle/oradata/MODI/redo02.log
2020-12-05T04:44:29.216275+05:30
ARC0: Encountered disk I/O error 19502
2020-12-05T04:44:29.216575+05:30
ARC0: Closing local archive destination LOG_ARCHIVE_DEST_1 '/u03/primary_dest/1_19_1058325294.dbf' (error 19502) (MODI)
2020-12-05T04:44:29.217417+05:30
Errors in file /u01/app/oracle/diag/rdbms/modi/MODI/trace/MODI_arc0_23015.trc:
ORA-27072: File I/O error
Additional information: 4
Additional information: 350208
Additional information: 446464
ORA-19502: write error on file "/u03/primary_dest/1_19_1058325294.dbf", block number 350208 (block size=512)
2020-12-05T04:44:32.583182+05:30
MODIP(3):Resize operation completed for file# 11, old size 1172480K, new size 1182720K
2020-12-05T04:44:33.183355+05:30
Errors in file /u01/app/oracle/diag/rdbms/modi/MODI/trace/MODI_arc0_23015.trc:
ORA-19502: write error on file "/u03/primary_dest/1_19_1058325294.dbf", block number 350208 (block size=512)
ORA-27072: File I/O error
Additional information: 4
Additional information: 350208
Additional information: 446464
ORA-19502: write error on file "/u03/primary_dest/1_19_1058325294.dbf", block number 350208 (block size=512)

5단계

Oracle은 항상 기본 대상에 아카이브를 시도하고 기본 대상에 대한 자동 장애 복구는 버전 12c에서 작동합니다. 기본 대상을 정리하고 아카이브에 사용할 수 있도록 설정한 후 Oracle은 v$archived_log<를 쿼리한 다음 예제와 같이 경고 로그 파일에 오류 또는 장애 복구 메시지를 보고하지 않고 기본 대상에 계속해서 다시 실행 로그를 아카이브합니다. /강한> :

SQL> v$archive_log에서 스레드 번호, 시퀀스 번호, 이름 선택;

THREAD#  SEQUENCE#  NAME
-------- ---------- -----------------------------------------------
     1          2 /u03/primary_dest/1_2_1058325294.dbf
     1          3 /u03/primary_dest/1_3_1058325294.dbf
     1          4 /u03/primary_dest/1_4_1058325294.dbf
     1          5 /u03/primary_dest/1_5_1058325294.dbf
     1          6 /u04/alternate_dest/1_6_1058325294.dbf
     1          7 /u04/alternate_dest/1_7_1058325294.dbf
     1          8 /u04/alternate_dest/1_8_1058325294.dbf
     1          9 /u04/alternate_dest/1_9_1058325294.dbf
     1         10 /u04/alternate_dest/1_10_1058325294.dbf
     1         11 /u04/alternate_dest/1_11_1058325294.dbf
     1         12 /u04/alternate_dest/1_12_1058325294.dbf
     1         13 /u04/alternate_dest/1_13_1058325294.dbf
     1         14 /u04/alternate_dest/1_14_1058325294.dbf
     1         15 /u04/alternate_dest/1_15_1058325294.dbf
     1         16 /u04/alternate_dest/1_16_1058325294.dbf
     1         17 /u04/alternate_dest/1_17_1058325294.dbf
     1         18 /u04/alternate_dest/1_18_1058325294.dbf
     1         19 /u04/alternate_dest/1_19_1058325294.dbf
     1         20 /u04/alternate_dest/1_20_1058325294.dbf
     1         21 /u04/alternate_dest/1_21_1058325294.dbf
     1         22 /u04/alternate_dest/1_22_1058325294.dbf
     1         23 /u04/alternate_dest/1_23_1058325294.dbf
     1         24 /u04/alternate_dest/1_24_1058325294.dbf
     1         25 /u04/alternate_dest/1_25_1058325294.dbf
     1         26 /u04/alternate_dest/1_26_1058325294.dbf
     1         27 /u04/alternate_dest/1_27_1058325294.dbf
     1         28 /u04/alternate_dest/1_28_1058325294.dbf
     1         29 /u03/primary_dest/1_29_1058325294.dbf
     1         30 /u03/primary_dest/1_30_1058325294.dbf
     1         31 /u03/primary_dest/1_31_1058325294.dbf
     1         32 /u03/primary_dest/1_32_1058325294.dbf

31행이 선택되었습니다.

결론

Oracle은 기본 대상과 대체 대상 간의 아카이브 대상 전환 자동 관리를 크게 개선했습니다. 제 데모를 사용하여 이 기능을 활용할 수 있기를 바랍니다.

대체 아카이브가 있으면 도움이 되지만 Oracle은 기본 아카이브 대상이 다시 준비될 때까지 기본 대상 실패에 대한 경고 로그 파일에 오류 메시지를 간헐적으로 기록한다는 점을 기억하십시오.

데이터 서비스에 대해 자세히 알아보세요.

피드백 탭을 사용하여 의견을 작성하거나 질문하십시오. 저희와 대화를 시작할 수도 있습니다.