RAC 환경에서 ORA-12545가 간헐적으로 발생
희안하고 재미있는 현상이었다.
RAC 설치 후 클라이언트에서 토드 같은 툴을 통해 접속시 하나 접속할때는 괜찮은데 다른 접속을 추가하면
ORA-12545가 나타난다.
tnsnames.ora 설정의 내용을 간략히 보면 아래와 같다 형식은 틀리지만 내용중 중요한 부분만 파악해두자.
1.1.1.5와 1.1.1.6은 각 rac1-vip, rac2-vip의 ip이다.
ora=
(load_balance=off)
(faolover=on)
(protocol=tcp)(address=1.1.1.5)(port=1521)
(service=ora)
(protocol=tcp)(address=1.1.1.6)(port=1521)
(service=ora)
그런데 DB가 설치된 서버에서 직접 같은 tnsnames.ora로 해보면 아주 잘 된다.
서버는 리스너 크로스 등록을 해둬서 서버측 로드밸런스를 구현한 상태이다.
listener.ora 설정은 대략 아래와 같다.
rac1
listener=
(protocol=tcp)(address=rac1-vip)(port=1521)
(protocol=tcp)(address=1.1.1.1)(port=1521)
rac2
listener=
(protocol=tcp)(address=rac2-vip)(port=1521)
(protocol=tcp)(address=1.1.1.2)(port=1521)
당연히 서버의 /etc/hosts 파일에 rac1-vip와 rac2-vip 내용은 등록되어있다.
그럼 뭐가 문제일까?
클라이언트측 로드밸런싱과 달리 서버측 로드밸런싱은 클라이언트에서도 리스너의 주소를 resolution 할 수 있어야 하는 점이 포인트였다.
호스트 측에서 /etc/hosts 혹은 /windows/system32/drivers/hosts 파일에
1.1.1.5 rac1-vip
1.1.1.6 rac2-vip
설정 후 정상화되었다.