현상
아카이브 경로에 물리 파일은 존재하지만 프로싱크 추출 로그에서 archived log not found 발생 및 동기화가 중단되면서 아카이브 찾지 못하는 현상이 발생할 수 있습니다.
원인
v$archived_log 뷰에 디폴트 500개까지의 아카이브 시퀀스만 저장되어 동기화에 필요한 시퀀스가 롤링 되어 사라지면 동기화 불가합니다.
해결
1. 참조 우회 방법
소스 prosync 유저에서 v$archive_dest_files 참조하는 임시 뷰 생성하여 prosync 유저의 v$archived_log를 강제적으로 참조하여 우회합니다.
CREATE OR REPLACE FORCE VIEW PROSYNC_XX_TO_US.V$ARCHIVED_LOG
(NAME, THREAD#, SEQUENCE#, FIRST_CHANGE#, FIRST_TIME, NEXT_CHANGE#, RESETLOGS_CHANGE#, RESETLOGS_TIME)
AS SELECT
"NAME", "THREAD#", "SEQUENCE#", "FIRST_CHANGE#", "FIRST_TIME", "NEXT_CHANGE#", "RESETLOGS_CHANGE#", "RESETLOGS_TIME"
FROM SYS.V$ARCHIVE_DEST_FILES;
SQL
복사
2. 반영 후 재기동
아카이브 모두 반영 이후, 임시 뷰 drop 및 프로싱크 재기동이 필요합니다.
DROP VIEW PROSYNC_XX_TO_US.V$ARCHIVED_LOG;
SQL
복사
참고
임시 뷰를 drop하지 않고 사용할 시에 V$ARCHIVE_DEST_FILES와 V$ARCHIVED_LOG 뷰 구조가 달라 sys.log에 아래 에러 로그 발생할 수 있습니다.
[06-30T13:27:42.026731] [FRM-128] [I] THROW. ec=ERROR_CACHE_FILE_OPEN_FAILED(-1003) [ Unable to open file /DBMS/PCMLAS/LOG/ARCH/log-t0-r0-s70617.arc. ] (csr_id:5055)
SQL
복사