ORA-12542:
TNS:address already in use
Cause:
Specified listener address is already being used.
Action:
Start your listener with a unique address.
訊息:
ORA-12542: TNS:位址已使用
環境:
Windows Server 2003 + IIS + Oracle Database Server
狀況:
系統執行程式時出現TNS:位址已使用的訊息,但實際上並沒有其它的服務使用1521或1526埠
且此狀況在不做任何處理下就回復正常。
原因:
Oracle Client會透過TNS Client連到Database Server, 而作業系統會為Client連線動態配置連接埠 (MaxUserPort; Default=1024-5000)
而當連線結束時, 此連接埠會保留240秒 (TcpTimedWaitDelay; Default=240)
所以在短時間(240秒)內, 同時系統有大量連線時, 而超過可動態配置的連接埠的話, Windows 會沒有可用的連接埠可用, 因而造成此訊息.
處理:
- 增加可用的動態配置連接埠數
- 在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 新增機碼
- Value Name: MaxUserPort
- Data Type: REG_DWORD
- Value: 65534
- Valid Range: 5000-65534 (decimal)
- Default: 0x1388 (5000 decimal)
- 減少連線結束時, 此連接埠的保留時間
- 在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters新增機碼
- Value Name: TcpTimedWaitDelay
- Data Type: REG_DWORD
- Value: 60
- Valid Range: 30-300 (decimal)
- Default: 0xF0 (240 decimal)
- 減少動態連線的需求
參考資料:
發表留言