Linux
JDBC oracle監聽隨機埠
我的偵聽器嘗試將隨機埠分配給 JDBC 連接時遇到問題。
我們有一個 19c oracle db 在 RHEL 伺服器上執行,打開了兩個埠 1523 和 1524。當應用程序嘗試使用 JDBC 連接時,它連接到分配給偵聽器的上述埠之一,但是我們可以在日誌中看到偵聽器分配了一些隨機埠範圍為 30000-65000。
...(HOST=`_jdbc_`)(USER=xyz))) * (ADDRESS=(PROTOCOL=tcp)(HOST=1.2.3.4)(PORT=60579)) * establish * hostname * 0
但應用程序不會收到有關連接的資訊,因為這些隨機埠沒有打開。
知道我們如何設置要使用的特定埠而不是那些隨機埠嗎?
日誌中的埠是客戶端機器上的埠,而不是伺服器上的埠。客戶端埠在您指定的範圍內基本上是隨機的,因為它們是由客戶端作業系統根據傳出連接的需要按順序分配的。它們無法設置。
例如,
netstat -an
在建立數據庫連接後從我的客戶端執行會顯示以下內容:Active Connections Proto Local Address Foreign Address State TCP 10.89.0.116:52861 10.89.0.65:1521 ESTABLISHED
請注意,伺服器埠仍然是 1521,而我的客戶端埠在您指定的同一高範圍內。在您的客戶端或數據庫伺服器上執行
netstat -an
,您應該能夠確認在連接的每一端使用的實際埠號。
通常防火牆可以處理這個問題,因為它可以“看到”移交給客戶端的埠是正常的並且應該被允許。任何有狀態的防火牆都應該能夠應對這種情況。
如果由於某種原因未正確配置,您可以配置共享伺服器連接,您可以在調度上設置固定埠號。請參閱DISPATCHERS 初始化參數屬性