配置sqlnet ora限制IP訪問Oracle
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
--==========================-- 配置sqlnet.ora 限制IP訪問Oracle
--==========================
與防火牆類似的功能,Oracle 提供限制與允許特定的IP或主機名通過Oracle Net來訪問資料庫。這個功能由sqlnet.ora配置檔案來實
現。該檔案通常$ORACLE_HOME/network/admin/ 目錄下,與tnsnames.ora以及listener.ora位於同一路徑。用法也比較簡單。通過監聽器的
限制,實現輕量級訪問限制,比在資料庫內部通過觸發器進行限制效率要高。
1. 實現方式
通過在sqlnet.ora檔案中增加下列記錄來實現
當使用invited_nodes時,則所有沒有包含在invited_nodes值中的IP或主機將無法通過Oracel Net連線到資料庫。而如果使用tcp.validnode_checking = yes tcp.invited_nodes = (hostname1, hostname2,ip1,ip2) tcp.excluded_nodes = (10.103.11.17,hostname1,hostname2)
excluded_nodes時,除了excluded_nodes值中列出的IP和主機不可訪問之外,其餘的節點都可以訪問資料庫。通常情況下,更傾向於使
用excluded_nodes引數。
2. 注意事項
使用excluded_nodes與invited_nodes的一些特性
不支援萬用字元的使用(如hostname不能寫為svhs0*,IP地址不能寫為10.103.11.*)
excluded_nodes與invited_nodes為互斥方式,要麼使用前者,要麼使用後者
如果tcp.invited_nodes與tcp.excluded_nodes都存在,則tcp.invited_nodes優先
要將本地地址,或者Cluster群集其他節點的地址都加入到允許列表,否則監聽器可能無法啟動
修改之後,一定要重起監聽或reload才能生效,而不需要重新啟動資料庫
僅提供對TCP/IP協議的支援
3. 實戰演習
-->使用tnsping demo92,連線正常 C:\>tnsping demo92 TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 25-JUN-2011 18:55:39 Copyright (c) 1997, 2010, Oracle. All rights reserved. Used parameter files: d:\app\Robinson\Oracle_client\product\11.2.0\client_1\network\admin\sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.11.20 9)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = demo92))) OK (0 msec) -->檢視配置檔案 [[email protected] admin]$ more sqlnet.ora # SQLNET.ORA Network Configuration File: /oracle/92/network/admin/sqlnet.ora # Generated by Oracle configuration tools. NAMES.DIRECTORY_PATH= (ONAMES, TNSNAMES, HOSTNAME) #Added by Robinson tcp.validnode_checking = yes tcp.excluded_nodes = (10.103.11.17) -->重新reload [[email protected] admin]$ lsnrctl reload listener_demo92 LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 26-JUN-2011 10:03:11 Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521))) The command completed successfully -->再次tnsping時,收到TNS-12547錯誤 C:\>tnsping demo92 TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 25-JUN-2011 19:01:21 Copyright (c) 1997, 2010, Oracle. All rights reserved. Used parameter files: d:\app\Robinson\Oracle_client\product\11.2.0\client_1\network\admin\sqlnet.ora Used TNSNAMES adapter to resolve the alias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.11.20 9)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = demo92))) TNS-12547: TNS:lost contact -->下面的演示中如果excluded_nodes與invited_nodes都存在,則invited_nodes優先,不再演示 [[email protected] admin]$ more sqlnet.ora # SQLNET.ORA Network Configuration File: /oracle/92/network/admin/sqlnet.ora # Generated by Oracle configuration tools. NAMES.DIRECTORY_PATH= (ONAMES, TNSNAMES, HOSTNAME) #Added by Robinson tcp.validnode_checking = yes tcp.excluded_nodes = (10.103.11.17) tcp.invited_nodes = (10.103.11.17)
4.使用觸發器限制單使用者或IP段
-->限制單使用者從單IP登入,下面限制scott使用者從客戶端的登入 CREATE OR REPLACE TRIGGER disablelogin AFTER logon ON scott.schema -->注意使用方式為username.schema DECLARE ipaddr VARCHAR2(30); BEGIN SELECT sys_context('userenv', 'ip_address') INTO ipaddr FROM dual; IF ipaddr = '10.103.11.17' THEN raise_application_error('-20001', 'You can not login,Please contact administrator'); END IF; END disablelogin; / -->限制IP段登入 CREATE OR REPLACE TRIGGER chk_ip_range AFTER logon ON scott.schema DECLARE ipaddr VARCHAR2(30); BEGIN SELECT sys_context('userenv', 'ip_address') INTO ipaddr FROM dual; IF ipaddr LIKE ('10.103.11.%') THEN raise_application_error('-20001', 'You can not login,Please contact administrator'); END IF; END chk_ip_range; /
5.更多參考
http://psoug.org/reference/net_services.html6.快捷參考
http://forums.oracle.com/forums/thread.jspa?messageID=4566449
有關效能優化請參考
有關ORACLE體系結構請參考
Oracle聯機重做日誌檔案(ONLINE LOG FILE)
Oracle例項和Oracle資料庫(Oracle體系結構)
有關閃回特性請參考
Oracle閃回特性(FLASHBACK DATABASE)
Oracle閃回特性(FLASHBACK DROP & RECYCLEBIN)
Oracle閃回特性(Flashback Query、FlashbackTable)
Oracle閃回特性(Flashback Version、Flashback Transaction)
有關基於使用者管理的備份和備份恢復的概念請參考
Oracle基於使用者管理恢復的處理(詳細描述了介質恢復及其處理)
有關RMAN的備份恢復與管理請參考
RMAN 備份路徑困惑(使用plus archivelog時)
有關ORACLE故障請參考
對引數FAST_START_MTTR_TARGET= 0 的誤解及設定
有關ASM請參考
有關SQL/PLSQL請參考
SQL 基礎--> 集合運算(UNION與UNION ALL)
SQL 基礎--> 層次化查詢(STARTBY ... CONNECT BY PRIOR)
SQL 基礎--> ROLLUP與CUBE運算子實現資料彙總
有關ORACLE其它特性
使用OEM,SQL*Plus,iSQL*Plus 管理Oracle例項
日誌記錄模式(LOGGING、FORCE LOGGING 、NOLOGGING)
使用外部表管理Oracle 告警日誌(ALAERT_$SID.LOG)
簇表及簇表管理(Index clustered tables)
ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAME
Oracle補丁全集 (Oracle 9i 10g 11g Path)