문서유형ㅣ장애해결
분야ㅣ백업/복구
적용제품버전ㅣ7FS02PS
문서번호ㅣTBATS013
현상
Veritas Infoscale 8.0 이상의 공유 파일 시스템에 생성된 Archive Log의 일부 block 내용이 비정상적으로 Zeroing 되는 현상이 발생 되며, 추후 복구 시에 비정상적인 Archive Log로 인해 복구가 실패 됩니다.
--Vxfs에 생성된 Archive Log의 Hexdump 일부 $ tblogdump log-t0-r0-s185.arc > arc_log_dump.log $ vi arc_log_dump.log … 0020400 0000 0000 0000 0000 0000 0000 0000 0000 ← 258~512번째 block까지 모두 zeroing 되어 있는 상태 * *16진수0020400은 258번째 block을 의미 0040200 0060 0000 0201 0000 0cbf 0c04 0000 0000 0040210 7c78 1a0b 070c 0034 0000 0000 0105 0000 0040220 c000 c516 3b01 0101 c102 0381 dfc2 06ba --tblogdump 수행 시 Archive Log의 비정상으로 Archive logdump가 추출되지 않습니다. $ tblogdump log-t0-r0-s185.arc Tblogdump (Redo log dump) LOG FILE SEQ# 33 DUMP START WAIT_LOG - scan_rba(33.256.32) WAIT_LOG - scan_rba(33.257.32) WAIT_LOG - scan_rba(33.258.32) WAIT_LOG - scan_rba(33.259.32)
원인
1. Veritas Infoscale 8.0 부터 vx_parallel_dio parameter가 default로 enable(1) 되었고,
Tibero의 archivelog 생성 로직과 관련된 _INIT_ARCHIVELOG_WITH_FALLOCATE=Y(default) 기능을 함께
사용하면 해당 현상이 발생 합니다.
2. vx_parallel_dio를 disable(0), _INIT_ARCHIVELOG_WITH_FALLOCATE=Y 의 경우
정상적인 Archive Log가 생성됩니다.
3. vx_parallel_dio를 enable(1), _INIT_ARCHIVELOG_WITH_FALLOCATE=N 의 경우
정상적인 Archive Log가 생성됩니다.
4. Archive Log를 Vxfs에 생성하지 않고 일반 filesystem에 생성 시_INIT_ARCHIVELOG_WITH_FALLOCATE=Y 로 사용하여도 정상적인 archivelog가 생성됩니다.어 생성 되었습니다.
참고_INIT_ARCHIVELOG_WITH_FALLOCATE parameter 설명_INIT_ARCHIVELOG_WITH_FALLOCATE=Y (default) 시 Archiving 할 파일에 대하여 fallocate 방식으로동작하며 N으로 설정 시 ftruncate로 동작하게 됩니다.ftruncate 동작은 특정 파일에 대하여 요청한 length byte 크기가 되도록 해주며, 파일이 요청한 크기보다컷으면 뒤쪽 데이터를 잃게 됩니다. 또한 파일이 요청한 크기보다 작으면 확장된 부분은 zeroing 됩니다.반면에 fallocate 방식은 zeroing 해주는 대신에 단지 할당만 해주게 됩니다.initialize 되지 않은 채로 두기 때문에 i/o가 발생하지 않게 되고 ftruncate에 비해 빠르게 동작합니다.그러므로 해당 기능을 비활성화 하면 Archiving 할 파일 생성 시 성능이 약간 저하 될 수 있습니다.
해결
1) 제조사 검토 후 Veritas Infoscale의 vx_parallel_dio parameter를 disable 하거나,
2) fallocate 방식이 아닌 ftruncate 방식을 사용하도록 Tibero에서 fallocate 방식을 사용하는 아래 2개의
기능에 대하여 parameter를 비활성화 합니다.
--Parameter 설정 방법(동적변경 가능)
1. SYS로 tbsql 접속
SQL> ALTER SYSTEM SET _INIT_ARCHIVELOG_WITH_FALLOCATE=N;
System altered.
SQL> ALTER SYSTEM SET _INIT_DATAFILE_WITH_FALLOCATE=N;
System altered.
2. 재기동시에도 적용 되도록 초기화 파라미터 파일에 추가
$ vi $TB_HOME/config/$TB_SID.tip
_INIT_ARCHIVELOG_WITH_FALLOCATE=N
_INIT_DATAFILE_WITH_FALLOCATE=N