Docker 컨테이너 내에서 Oracle 23c를 다시 시작하면 리스너가 차단됩니다.

Docker 컨테이너 내에서 Oracle 23c를 다시 시작하면 리스너가 차단됩니다.

저는 무료 Oracle 23c Docker 컨테이너를 사용하고 있습니다(여기를 보아라) 개발 환경을 프로비저닝하는 데 도움이 됩니다.

/docker-entrypoint-initdb.d/startup환경 구성의 일부로 docker-compose.yml 파일의 구성을 사용하여 스크립트와 SQL을 넣습니다 .

이러한 스크립트 중 하나는 COMPATIBILITY 매개변수( ALTER SYSTEM SET COMPATIBLE = '19.0.0' SCOPE=SPFILE;)를 설정하는 것인데, 이를 설정한 후에는 데이터베이스를 다시 시작해야 합니다.

서버 데이터베이스 설치에서는 SQL을 실행하여 호환성을 설정한 후 다음과 같이 실행합니다.

echo -e "shutdown immediate \n startup mount" | sqlplus -s / as sysdba

데이터베이스를 다시 시작하려면.

그러나 docker 컨테이너에서 이 작업을 수행할 때(위에서 설명한 대로 자동으로 수행하든, 컨테이너에서 sqlplus에 수동으로 연결하고 동일한 명령을 실행하든), 일단 db가 다시 시작되면 리스터가 차단된 연결로 돌아옵니다. 더 이상 데이터베이스에 연결할 수 없습니다.

docker exec -ti app_db_1 lsnrctl status다음을 제공합니다:

Linux용 LSNRCTL: 버전 23.0.0.0.0 - 2023년 9월 14일 08:27:40에 개발자 릴리스

저작권 (c) 1991, 2023, 오라클. 판권 소유.

LISTENER의 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_FREE))) STATUS에 연결 중 ----------- 별칭 LISTENER Linux용 버전 TNSLSNR: 버전 23.0.0.0.0 - 개발자 릴리스 시작 날짜
2023년 9월 14일 08:27:37 가동 시간 0일 0시간. 0분 2초 추적 수준 꺼짐 보안 켜짐: 로컬 OS 인증 SNMP 꺼짐 기본 서비스
무료 리스너 매개변수 파일
/opt/oracle/product/23c/dbhomeFree/network/admin/listener.ora 리스너 로그 파일
/opt/oracle/diag/tnslsnr/854ac05c3c0f /listener/alert/log.xml 수신 끝점 요약...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_FREE)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0) (PORT=1521))) 서비스 요약... 서비스 "FREE"에는 1개의 인스턴스가 있습니다. 인스턴스 "FREE", 상태 BLOCKED에는 이 서비스에 대한 1개의 핸들러가 있습니다... 서비스 "PLSExtProc"에는 1개의 인스턴스가 있습니다. 인스턴스 "PLSExtProc", UNKNOWN 상태에 이 서비스에 대한 처리기가 1개 있습니다... 명령이 성공적으로 완료되었습니다.

Instance "FREE", status BLOCKED출력 섹션을 참고하세요 .

이런 일이 발생하지 않고 컨테이너 내에서 프로그래밍 방식으로 데이터베이스를 다시 시작하려면 어떻게 해야 합니까?

업데이트 - 대화식으로 로그인하고 다시 시작을 실행하면 다음이 표시됩니다.

ORA-00201: 제어 파일 버전 23.0.0.0.0은 ORACLE 버전 19.0.0.0.0과 호환되지 않습니다. ORA-00202: 제어 파일: '/opt/oracle/oradata/FREE/control01.ctl'


다시 시작하기 전에 lsnrctl status다음을 반환합니다.

Linux용 LSNRCTL: 버전 23.0.0.0.0 - 2023년 9월 14일 08:32:57에 개발자 릴리스

저작권 (c) 1991, 2023, 오라클. 판권 소유.

LISTENER의 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_FREE))) STATUS에 연결 중 ----------- 별칭 LISTENER Linux용 버전 TNSLSNR: 버전 23.0.0.0.0 - 개발자 릴리스 시작 날짜
2023년 9월 14일 08:32:46 가동 시간 0일 0시간. 0분 10초 추적 수준 꺼짐 보안 켜짐: 로컬 OS 인증 SNMP 꺼짐 기본 서비스
무료 리스너 매개변수 파일
/opt/oracle/product/23c/dbhomeFree/network/admin/listener.ora 리스너 로그 파일
/opt/oracle/diag/tnslsnr/05cf8b8b6d41 /listener/alert/log.xml 수신 끝점 요약...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC_FOR_FREE)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0) (PORT=1521))) 서비스 요약... 서비스 "FREE"에는 1개의 인스턴스가 있습니다. 인스턴스 "FREE", 상태 READY에는 이 서비스에 대한 1개의 핸들러가 있습니다... 서비스 "PLSExtProc"에는 1개의 인스턴스가 있습니다. 인스턴스 "PLSExtProc", UNKNOWN 상태에 이 서비스에 대한 처리기가 1개 있습니다... 명령이 성공적으로 완료되었습니다.

답변1

매개변수를 더 낮게 설정할 수는 없으며 compatibility더 높게만 설정할 수 있습니다. 그래서 이로 인해 데이터베이스가 시작되지 않았습니다. 따라서 청취자가 차단됩니다.

관련 정보