對Oracle 檢查ip合法性,就必須在服務器端的sqlnet.ora文件中設置如下參數
TCP.INVITED_NODES=(10.0.0.36,10.0.0.1,10.0.0.35) TCP.EXCLUDED_NODES=(10.0.0.2)
啟動監聽出現如下錯誤
[oracle@oracle11 admin]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 12-MAR-2018 18:32:13 Copyright (c) 1991, 2009, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) TNS-12541: TNS:no listener TNS-12560: TNS:protocol adapter error TNS-00511: No listener Linux Error: 111: Connection refused
錯誤輸出並沒有打印詳細的信息,從lisenter.ora,tnsnames.ora入手,但沒有發現文件是錯誤的。最后檢查sqlnet.ora,發現TCP.INVITED_NODES參數有如下約束是官方文檔沒有給出的

tcp.invited_nodes需要滿足如下條件才可成功啟動監聽
1、需要設置參數TCP.VALIDNODE_CHECKING為YES才能激活該特性。
2、tcp.invited_nodes的值中一定要包括本機地址(127.0.0.1 / 10.0.0.36)或localhost,因為監聽需要通過本機ip去訪問監聽,一旦禁止lsnrct將不能啟動或停止監聽。
3、不能設置ip段和通配符。
4、此方式只適合tcp/ip協議。
5、此方式是通過監聽限制白名單的。
6、針對的是ip地址而不是其他(如用戶名等)。
7、此配置適用於9i以上版本。本次踩坑是oracle11gr2。
8、修改配置后需要重啟監聽才可生效。
TCP.INVITED_NODES=(10.0.0.36,10.0.0.1)
此時在啟動監聽不會出現報錯了。而對與TCP.EXCLUDED_NODES參數並沒有以上的限制,需要將禁止訪問的ip傳參即可。
