문제 증상 및 개요
zCloud 플랫폼을 통해 Oracle 데이터베이스 인스턴스를 관리 및 모니터링하는 과정에서, 일부 인스턴스의 연결 상태가 계속하여 '알 수 없음 (Unknown)'으로 표시되는 문제가 발생했습니다. 실제 데이터베이스 서버는 정상 작동함에도 불구하고 모니터링 툴이 상태를 인식하지 못하는 현상이 관찰되었습니다.
초기 진단 및 접근 가능성 확인
우선 해당 문제가 zCloud 플랫폼 자체의 오작동인지, 혹은 데이터베이스 서버의 네트워크/접근권한 문제인지 파악하기 위해 외부 환경에서 직접 접속을 시도하였습니다. 명령어 터미널을 통해 SQL*Plus 유틸리티를 사용하여 원격 접속을 테스트한 결과는 다음과 같습니다.
## 데이터베이스 직접 접속 테스트
$ sqlplus admin_user/password@target_host/service_name
SQL*Plus 실행 환경 정보가 출력됨
Connected to:
Oracle Database Enterprise Edition Release 19.x.x.x - Production
With Partitioning, Real Application Testing options
사용자 접속 성공: session_id 생성됨
직접 접속이 원활하게 이루어졌으므로, 물리적인 네트워크나 DBMS 설정상의 문제는 배제할 수 있습니다. 문제는 zCloud 내부에서 데이터를 수집하는 에이전트 구성에 있을 가능성이 높습니다.
내부 로그 분석
모니터링 대시보드 (Prometheus 등) 를 확인해도 상세 에러는 보이지 않으므로, zCloud 가 구동 중인 Docker 컨테이너 내부로 진입하여 로그 파일을 직접 조사해야 합니다. 특히 Oracle 상태 정보를 추출하는 컴포넌트인 exporter 의 로그가 핵심입니다.
# 컨테이너 목록 확인
# 관리자 권한으로 실행 시 특정 컨테이너 식별
$ docker ps | grep zcloud
# 해당 컨테이너 내부 쉘 진입
$ docker exec -it zcloud_container_name /bin/bash
# 프로젝트 내 로그 디렉토리 탐색
$ cd /path/to/zcloud/proxy/logs
$ ls -la oracle_exporter.log
로그 파일을 열어서 최근 에러 메시지를 검색하면, 공유 라이브러리 로딩 실패와 관련된 내용이 명확히 드러납니다.
## 로거 메시지 내용 요약
[ERROR] collect connectCount failed
[Detail] ORA-00000: DPI-1047
[Reason] Cannot locate a 64-bit Oracle Client library
[Path] /home/zcloud/proxy/common/instantclient/lib/libclntsh.so
[System Message] cannot open shared object file: No such file or directory
위 메시지에서 알 수 있듯이, Oracle Instant Client 라이브러리가 필요한 의존성인 `libaio` 패치가 시스템에 부재하여 라이브러리 연계를 할 수 없는 상태였습니다.
해결 방안 및 적용
확정된 원인은 zCloud 이미지 내에 포함된 OS 환경에서 비동기 I/O 라이브러리가 누락된 것입니다. 이를 수정하기 위해서는 호스트 머신에서 적절한 RPM 패키지를 준비하여 컨테이너 내부로 주입하고 설치해야 합니다.
1. 의존성 패키지 확보
시스템 아키텍처 (x86_64) 와 일치하는 버전의 `libaio` 패키지를 준비합니다.
## 호스트 파일 시스템 상 경로 예시
/soft/package/libaio-0.3.109-13.el7.x86_64.rpm
2. 컨테이너로 파일 이동
준비한 패키지를 실행 중인 컨테이너의 임시 디렉토리로 복사합니다.
$ docker cp ./libaio-0.3.109-13.el7.x86_64.rpm zcloud_container_id:/tmp/rpm_package.rpm
3. 패키지 설치 실행
컨테이너 내부 루트 권한으로 패키지 매니저를 호출하여 의존성을 등록합니다.
$ docker exec -u root -it zcloud_container_id rpm -ivh /tmp/rpm_package.rpm
설치 과정 중 서명 검증 경고가 발생할 수 있으나, 신뢰할 수 있는 소스의 패키지일 경우 정상 진행됩니다.
수정 결과 검증
패키지 설치가 완료되면Exporter 프로세스가 자동으로 재시작되거나 상태 polling 이 갱신됩니다. 다시 로그를 점검하면 에러 메시지가 사라지고, 정상적인 커넥션 수 정보 수집 로그가 남게 됩니다.
## 업데이트 이후 로그 샘플
[INFO] permit to create long connection
[INFO] create connection , start...
[INFO] query connection count succeeded
이를 확인하면 zCloud 웹 인터페이스에서도 인스턴스 상태가 '연결됨' 으로 정상적으로 변경되었음을 관찰할 수 있으며, 이슈 해결이 완료된 것으로 간주합니다.