在 docker 容器內重新啟動 Oracle 23c 會導致偵聽器阻斷

在 docker 容器內重新啟動 Oracle 23c 會導致偵聽器阻斷

我正在使用免費的 Oracle 23c Docker 容器(看這裡)以幫助提供開發環境。

作為環境配置的一部分,我將腳本和 SQL 放入/docker-entrypoint-initdb.d/startupdocker-compose.yml 檔案中的 using 配置中。

其中一個腳本是設定 COMPATIBILITY 參數 ( ALTER SYSTEM SET COMPATIBLE = '19.0.0' SCOPE=SPFILE;),設定該參數後,需要重新啟動資料庫。

在伺服器資料庫安裝中,我將執行 SQL 來設定相容性,然後執行以下操作:

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

以便重新啟動資料庫。

但是,當我在docker 容器中執行此操作時(無論是如上所述自動執行,還是透過手動連接到容器上的sqlplus 並執行相同的命令),一旦資料庫重新啟動,清單器就會傳回阻塞的連接,我無法再連接到資料庫。

docker exec -ti app_db_1 lsnrctl status給出以下結果:

適用於 Linux 的 LSNRCTL:版本 23.0.0.0.0 - 開發人員於 2023 年 9 月 14 日 08:27:40 發布

版權所有 (c) 1991、2023,Oracle。版權所有。

連線至(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_FREE))) 偵聽器的狀態------------------------ 別名偵聽器適用於 Linux 的 TNSLSNR 版本:版本 23.0.0.0.0 - 開發人員發佈開始日期
2023 年 9 月 14 日 08:27:37 正常運作時間 0 天 0 小時。 0分鐘2 秒追蹤等級關閉 安全開啟:本機作業系統驗證 SNMP 關閉 預設服務
FREE 偵聽器參數檔
/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)tc HOST=0.0.0.0) (PORT=1521))) 服務摘要...服務「免費」有 1 個實例。實例“FREE”,狀態為 BLOCKED,有 1 個用於此服務的處理程序...服務“PLSExtProc”有 1 個實例。實例“PLSExtProc”,狀態未知,有 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,Oracle。版權所有。

連線至(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_FREE))) 偵聽器的狀態------------------------ 別名偵聽器適用於 Linux 的 TNSLSNR 版本:版本 23.0.0.0.0 - 開發人員發佈開始日期
2023 年 9 月 14 日 08:32:46 正常運作時間 0 天 0 小時。 0分鐘10 秒追蹤等級關閉 安全開啟:本機作業系統驗證 SNMP 關閉 預設服務
FREE 偵聽器參數檔
/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)tc HOST=0.0.0.0) (PORT=1521))) 服務摘要...服務「免費」有 1 個實例。實例“FREE”,狀態 READY,有 1 個用於此服務的處理程序...服務“PLSExtProc”有 1 個實例。實例“PLSExtProc”,狀態未知,有 1 個用於此服務的處理程序...指令成功完成

答案1

參數不能compatibility調低,只能調高;所以這導致資料庫無法啟動;因此偵聽器被阻止

相關內容