데이터 저장소 독점 액세스
메시징 엔진은 저장된 데이터에 대한 독점 액세스를 가지도록 데이터 저장소에 대한 잠금을 설정합니다. 이 프로세스는 데이터 저장소에 있는 데이터의 무결성을 보장합니다. 실제로는 여러 요소가 독점 액세스 잠금에 영향을 미칠 수 있습니다.
각 메시징 엔진은 데이터 저장소에 독점 잠금을 설정합니다. 메시징 엔진이 실행하는 동안 해당 잠금을 유지보수하여 데이터 저장소 데이터의 무결성을 보장합니다.
데이터 저장소 잠금은 데이터베이스 잠금을 사용하며 따라서 데이터 저장소 자체의 내재적 파트입니다. 관계형 데이터베이스 관리 시스템(RDBMS)은 JDBC 인프라 또는 기본 TCP/IP 프로토콜에 의존하여 메시징 엔진 또는 애플리케이션 서버의 장애를 표시합니다. 그러면 RDBMS가 자동으로 데이터베이스의 데이터 저장소 잠금을 해제할 수 있습니다.
메시징 엔진과 데이터 저장소에 대한 데이터베이스 서버 사이의 네트워크 연결의 활동성 검사 빈도가 클러스터에서 실행 중인 메시징 엔진의 즉각적인 장애 복구 활성화에 중요한 요소입니다. 클러스터에서 실행 중인 메시징 엔진이 서버 사이에 장애 복구하도록 구성될 때 데이터베이스 서버의 TCP/IP 활성화 상태 지속 매개변수를 줄여서 메시징 엔진의 장애를 발견하기 전의 시간을 최소화해야 합니다.
데이터 저장소의 SIBOWNER 테이블이 단일 행에 고유한 ID의 쌍으로서 잠금을 보유합니다. 시작할 때 메시징 엔진은 다음 두 ID를 사용하여 독점 잠금을 획득하고 유지보수합니다.
- MEUUID
- 메시징 엔진에 대한 고유한 ID로서 메시징 엔진이 중지하고 다시 시작할 때마다 동일하게 유지됩니다.
- INCUUID
- 메시징 엔진에 대한 구체적인 ID로서 메시징 엔진이 시작할 때마다 변경됩니다.
이러한 ID로 데이터 저장소를 사용 중인 메시징 엔진을 판별합니다. 이 ID는 또한 메시징 엔진의 실행 인스턴스가 해당 인스턴스가 실행하는 시간 동안 독점 잠금을 유지보수했는지 여부를 판별합니다.
데이터 저장소 잠금 프로세스에 사용되는 다른 테이블은 SIBOWNERO 테이블입니다. 이 테이블은 잠금에만 사용되며 하나의 EMPTY_COLUMN 열에는 데이터를 저장하지 않습니다.
메시징 엔진이 시작할 때 SIBOWNERO 테이블에서 독점으로 테이블을 잠글 수 있습니다. 그런 다음, 메시징 엔진은 SIBOWNER 테이블에서 독점으로 테이블을 잠그고 컨텐츠 확인을 계속할 수 있습니다. 메시징 엔진은 테이블에서 단일 행의 데이터를 찾거나 데이터를 찾지 못할 것으로 예상합니다. 기존 행이 있는 경우, 메시징 엔진은 발견되는 MEUUID가 자신의 고유한 ID와 일치하는 경우에만 시작합니다. MEUUID가 일치하지 않는 경우, 메시징 엔진은 서버 오류 로그에 오류 메시지 CWSIS1535를 기록하고 메시징 엔진이 시작하지 못합니다.
SIBOWNER 테이블에 행이 없는 경우, 메시징 엔진은 자신의 MEUUID 및 INCUUID를 포함하는 하나의 행을 삽입합니다. 테이블에 단일 행이 있고 MEUUID가 메시징 엔진에 대한 고유 ID와 일치하는 경우, 메시징 엔진은 INCUUID를 자신의 고유한 구체화 ID로 업데이트하고 SIBOWNER 테이블에 대한 새 공유 테이블 잠금을 얻으려고 시도합니다. 메시징 엔진은 다시 INCUUID가 여전히 고유한 구체화 ID와 일치하는지 검사하며, 그런 경우 다른 서버의 동일한 메시징 엔진의 다른 인스턴스가 동시에 시작하고 있습니다. 테이블의 INCUUID가 일치하지 않는 경우, 메시징 엔진이 시작하지 못합니다.
SIBOWNER 테이블의 공유 테이블 잠금이 여전히 실행 중인지 확인하기 위해 주기적으로 새로 고치며 메시징 엔진이 중지할 때까지 유지됩니다. 그런 다음, SIBOWNERO 테이블의 독점 테이블 잠금이 해제됩니다. 메시징 엔진이 SIBOWNER 테이블의 잠금을 새로 고칠 수 없거나 SIBOWNER 테이블의 데이터에서 다른 메시징 엔진 구체화가 데이터 저장소를 사용 중임을 발견하는 경우, 메시징 엔진이 메시지 CWSIS1594 및 CWSIS1519를 서버 오류 로그에 기록하고 메시징 엔진이 즉시 중지합니다.
일부 경우에는 메시징 엔진이 클러스터에서 실행하도록 구성될 때, 메시징 엔진이 잠금을 얻을 수 없는 경우 메시징 엔진이 중지하고 클러스터의 다른 서버로 장애 복구하지 못하게 합니다. 이러한 경우에 오류 로그를 검사해야 합니다. 메시징 엔진이 현재 데이터 저장소 구성을 사용하여 시작할 수 없거나 안전하지 않다고 나타내기 때문입니다. 장애가 발생할 수 있는 상황 및 사용자가 시험할 수 있는 가능한 해결책의 설명에 대해 데이터 저장소 독점 액세스 잠금의 문제점 진단의 내용을 참조하십시오.