--==========================
-- 配置sqlnet.ora 限制IP訪問Oracle
--==========================
與防火牆類似的功能,Oracle 提供限制與允許特定的IP或主機名稱通過Oracle Net來訪問資料庫。這個功能由sqlnet.ora設定檔來實
現。該檔案通常$ORACLE_HOME/network/admin/ 目錄下,與tnsnames.ora以及listener.ora位於同一路徑。用法也比較簡單。通過監聽器的
限制,實現輕量級訪問限制,比在資料庫內部通過觸發器進行限制效率要高。
1. 實現方式
通過在sqlnet.ora檔案中增加下列記錄來實現
tcp.validnode_checking = yes<br />tcp.invited_nodes = (hostname1, hostname2,ip1,ip2)<br />tcp.excluded_nodes = (10.103.11.17,hostname1,hostname2)<br />
當使用invited_nodes時,則所有沒有包含在invited_nodes值中的IP或主機將無法通過Oracel Net串連到資料庫。而如果使用
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,串連正常<br />C:\>tnsping demo92 </p><p>TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 25-JUN-2011 18:55:39<br />Copyright (c) 1997, 2010, Oracle. All rights reserved.<br />Used parameter files:<br />d:\app\Robinson\Oracle_client\product\11.2.0\client_1\network\admin\sqlnet.ora </p><p>Used TNSNAMES adapter to resolve the alias<br />Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.11.20<br />9)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = demo92)))<br />OK (0 msec) </p><p>-->查看設定檔<br />[oracle@test admin]$ more sqlnet.ora<br /># SQLNET.ORA Network Configuration File: /oracle/92/network/admin/sqlnet.ora<br /># Generated by Oracle configuration tools. </p><p>NAMES.DIRECTORY_PATH= (ONAMES, TNSNAMES, HOSTNAME) </p><p>#Added by Robinson<br />tcp.validnode_checking = yes<br />tcp.excluded_nodes = (10.103.11.17) </p><p>-->重新reload<br />[oracle@test admin]$ lsnrctl reload listener_demo92 </p><p>LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 26-JUN-2011 10:03:11 </p><p>Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved. </p><p>Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=test)(PORT=1521)))<br />The command completed successfully </p><p>-->再次tnsping時,收到TNS-12547錯誤<br />C:\>tnsping demo92 </p><p>TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 25-JUN-2011 19:01:21<br />Copyright (c) 1997, 2010, Oracle. All rights reserved.<br />Used parameter files:<br />d:\app\Robinson\Oracle_client\product\11.2.0\client_1\network\admin\sqlnet.ora </p><p>Used TNSNAMES adapter to resolve the alias<br />Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.11.20<br />9)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = demo92)))<br />TNS-12547: TNS:lost contact </p><p>-->下面的示範中如果excluded_nodes與invited_nodes都存在,則invited_nodes優先,不再示範<br />[oracle@test admin]$ more sqlnet.ora<br /># SQLNET.ORA Network Configuration File: /oracle/92/network/admin/sqlnet.ora<br /># Generated by Oracle configuration tools. </p><p>NAMES.DIRECTORY_PATH= (ONAMES, TNSNAMES, HOSTNAME) </p><p>#Added by Robinson<br />tcp.validnode_checking = yes<br />tcp.excluded_nodes = (10.103.11.17)<br />tcp.invited_nodes = (10.103.11.17)<br />
4.使用觸發器限制單使用者或IP段
-->限制單使用者從單IP登入,下面限制scott使用者從用戶端的登入<br />CREATE OR REPLACE TRIGGER disablelogin<br />AFTER logon ON scott.schema -->注意使用方式為username.schema<br />DECLARE<br />ipaddr VARCHAR2(30);<br />BEGIN<br />SELECT sys_context('userenv', 'ip_address')<br />INTO ipaddr<br />FROM dual;<br />IF ipaddr = '10.103.11.17' THEN<br />raise_application_error('-20001',<br />'You can not login,Please contact administrator');<br />END IF;<br />END disablelogin;<br />/ </p><p>-->限制IP段登入<br />CREATE OR REPLACE TRIGGER chk_ip_range<br />AFTER logon ON scott.schema<br />DECLARE<br />ipaddr VARCHAR2(30);<br />BEGIN<br />SELECT sys_context('userenv', 'ip_address')<br />INTO ipaddr<br />FROM dual;<br />IF ipaddr LIKE ('10.103.11.%') THEN<br />raise_application_error('-20001',<br />'You can not login,Please contact administrator');<br />END IF;<br />END chk_ip_range;<br />/<br />
5.更多參考
http://psoug.org/reference/net_services.html
http://forums.oracle.com/forums/thread.jspa?messageID=4566449
6.快捷參考
有關效能最佳化請參考
Oracle硬解析與軟解析
共用池的調整與最佳化(Sharedpool Tuning)
Buffercache 的調整與最佳化(一)
Oracle表緩衝(cachingtable)的使用
有關ORACLE體繫結構請參考
Oracle資料表空間與資料檔案
Oracle密碼檔案
Oracle參數檔案
Oracle聯機重做記錄檔(ONLINE LOG FILE)
Oracle控制檔案(CONTROLFILE)
Oracle歸檔日誌
Oracle復原(ROLLBACK)和撤銷(UNDO)
Oracle資料庫執行個體啟動關閉過程
Oracle10g SGA 的自動化管理
Oracle執行個體和Oracle資料庫(Oracle體繫結構)
有關閃回特性請參考
Oracle閃回特性(FLASHBACK DATABASE)
Oracle閃回特性(FLASHBACK DROP & RECYCLEBIN)
Oracle閃回特性(Flashback Query、FlashbackTable)
Oracle閃回特性(Flashback Version、Flashback Transaction)
有關基於使用者管理的備份和備份恢複的概念請參考
Oracle冷備份
Oracle熱備份
Oracle備份恢複概念
Oracle執行個體恢複
Oracle基於使用者管理恢複的處理(詳細描述了介質恢複及其處理)
SYSTEM資料表空間管理及備份恢複
SYSAUX資料表空間管理及恢複
有關RMAN的備份恢複與管理請參考
RMAN 概述及其體繫結構
RMAN 配置、監控與管理
RMAN 備份詳解
RMAN 還原與恢複
RMANcatalog 的建立和使用
基於catalog 建立RMAN儲存指令碼
基於catalog 的RMAN 備份與恢複
使用RMAN遷移檔案系統資料庫到ASM
RMAN 備份路徑困惑(使用plus archivelog時)
有關ORACLE故障請參考
ORA-32004的錯誤處理
ORA-01658錯誤
CRS-0215錯誤處理
ORA-00119,ORA-00132 錯誤處理
又一例SPFILE設定錯誤導致資料庫無法啟動
對參數FAST_START_MTTR_TARGET= 0 的誤解及設定
SPFILE錯誤導致資料庫無法啟動(ORA-01565)
有關ASM請參考
建立ASM執行個體及ASM資料庫
ASM 磁碟、目錄的管理
使用 ASMCMD 工具管理ASM目錄及檔案
有關SQL/PLSQL請參考
SQLPlus常用命令
替代變數與SQL*Plus環境設定
使用Uniread實現SQLplus翻頁功能
SQL 基礎-->SELECT 查詢
SQL 基礎--> NEW_VALUE的使用
SQL 基礎--> 集合運算(UNION與UNION ALL)
SQL 基礎--> 常用函數
SQL 基礎--> 視圖(CREATEVIEW)
SQL 基礎--> 建立和管理表
SQL 基礎--> 多表查詢
SQL 基礎--> 過濾和排序
SQL 基礎--> 子查詢
SQL 基礎--> 分組與分組函數
SQL 基礎--> 層次化查詢(STARTBY ... CONNECT BY PRIOR)
SQL 基礎--> ROLLUP與CUBE運算子實現資料匯總
PL/SQL--> 遊標
PL/SQL--> 異常處理(Exception)
PL/SQL--> 語言基礎
PL/SQL--> 流程式控制制
PL/SQL--> PL/SQL記錄
PL/SQL--> 包的建立與管理
PL/SQL--> 隱式遊標(SQL%FOUND)
PL/SQL--> 包重載、初始化
PL/SQL--> DBMS_DDL包的使用
PL/SQL--> DML 觸發程序
PL/SQL--> INSTEAD OF 觸發器
PL/SQL--> 預存程序
PL/SQL--> 函數
PL/SQL--> 動態SQL
PL/SQL--> 動態SQL的常見錯誤
有關ORACLE其它特性
Oracle常用目錄結構(10g)
使用OEM,SQL*Plus,iSQL*Plus 管理Oracle執行個體
日誌記錄模式(LOGGING、FORCE LOGGING 、NOLOGGING)
表段、索引段上的LOGGING與NOLOGGING
OralceOMF 功能詳解
Oracle使用者、對象許可權、系統許可權
Oracle角色、設定檔
Oracle分區表
Oracle外部表格
使用外部表格管理Oracle 警示日誌(ALAERT_$SID.LOG)
簇表及簇表管理(Index clustered tables)
資料泵 EXPDP 匯出工具的使用
資料泵 IMPDP 匯入工具的使用
匯入匯出 Oracle 分區表資料
SQL*Loader使用方法
啟用使用者進程跟蹤
配置非預設連接埠的動態服務註冊
配置ORACLE 用戶端串連到資料庫
systemsys,sysoper sysdba 的區別
ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAME
Oracle補丁全集 (Oracle 9i 10g 11g Path)
Oracle10.2.0.1 升級到10.2.0.4
Oracle徹底 kill session