創建監聽
1)靜態註冊LISTENER 15212)動態註冊LSNR2 1526
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = enmo)(PORT = 1521))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=ENMOEDU)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME=ENMOEDU))
)
LSNR2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = enmo)(PORT = 1526))
)
)
--用於動態註冊LSNR2監聽
LSNR2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = enmo)(PORT = 1526))
)
)
ENMOEDU =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = enmo)(PORT = 1526))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ENMOEDU)
)
)
sqlnet.ora
在SQLNET.ora文件中設置以下參數可以實現IP訪問限制:
$ pwd
/u01/app/oracle/product/10.2.0/db_1/network/admin
$ vi sqlnet.ora
tcp.validnode_checking=yes #確定是否對客戶機IP地址進行檢查
tcp.invited_nodes=(ip1,ip2......) #列舉允許連接的客戶機的IP地址,以逗號分隔
tcp.excluded_nodes=(ip1,ip2......) #列舉不允許連接的客戶機的IP地址,以逗號分隔
設置後需要重啓監聽:
$ lsnrctl reload
在設置這些參數前後可以通過“tnsping 網絡連接串”來測試是否可連:
$ tnsping orcldb
通過監聽器的限制,通常屬於輕量級,比在數據庫內部通過觸發器進行限制效率要高。
需要注意的地方:
1、tcp.invited_nodes與tcp.excluded_nodes都存在,以tcp.invited_nodes爲主。
2、一定要許可或不要禁止服務器本機的IP地址,否則通過lsnrctl將不能啓動或停止監聽,因爲該過程監聽程序會通過本機的IP訪問監聽器,而該IP被禁止了,但是通過服務啓動或關閉則不影響。
3、修改之後,一定要重起監聽才能生效,而不需要重新啓動數據庫。
4、任何平臺都可以,但是隻適用於TCP/IP協議。
我機子上的sqlnet.ora內容如下:
$ cat sqlnet.ora
# sqlnet.ora Network Configuration File: /u01/app/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES)
# wangnc added, 20080925
tcp.validnode_checking=yes
tcp.invited_nodes=(172.18.1.171,172.18.1.164,192.168.41.42)
2.禁用操作系統認證方式登錄數據庫
禁用的方法很簡單,僅需在sqlnet.ora配置文件中添加一條“SQLNET.AUTHENTICATION_SERVICES=(NONE)”即可。