Oracle修改sqlnet.ora限制IP访问
linux上的sqlnet.ora限制IP访问

配置sqlnet.ora限制IP访问Oracle与防火墙类似的功能,Oracle 提供限制与允许特定的IP或主机名通过Oracle Net来访问数据库。
这个功能由sqlnet.ora配置文件来实现。
该文件通常$ORACLE_HOME/network/admin/ 目录下,与tnsnames.ora以及listener.ora位于同一路径。
用法也比较简单。
通过监听器的限制,实现轻量级访问限制,比在数据库内部通过触发器进行限制效率要高。
1. 实现通过在sqlnet.ora文件中增加下列记录来实现tcp.validnode_checking = yestcp.invited_nodes = (hostname1, hostname2,ip1,ip2)tcp.excluded_nodes = (10.103.11.17,hostname1,hostname2)当使用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,连接正常C:\>tnsping demo92TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on25-JUN-2011 18:55:39Copyright (c) 1997, 2010, Oracle. All rights reserved.Used parameter files:d:\app\Robinson\Oracle_client\product\11.2.0\client_1\network\admin\sqlne t.oraUsed TNSNAMES adapter to resolve the aliasAttempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.11.209)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = demo92)))OK (0 msec)-->查看配置文件[oracle@test 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 Robinsontcp.validnode_checking = yestcp.excluded_nodes = (10.103.11.17)-->重新reload[oracle@test admin]$ lsnrctl reload listener_demo92LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 26-JUN-2011 10:03:11Copyright (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 demo92TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 25-JUN-2011 19:01:21Copyright (c) 1997, 2010, Oracle. All rights reserved.Used parameter files:d:\app\Robinson\Oracle_client\product\11.2.0\client_1\network\admin\sqlne t.oraUsed TNSNAMES adapter to resolve the aliasAttempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.11.209)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = demo92)))TNS-12547: TNS:lost contact-->下面的演示中如果excluded_nodes与invited_nodes都存在,则invited_nodes 优先,不再演示[oracle@test 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 Robinsontcp.validnode_checking = yestcp.excluded_nodes = (10.103.11.17)tcp.invited_nodes = (10.103.11.17)4.使用触发器限制单用户或IP段-->限制单用户从单IP登录,下面限制scott用户从客户端的登录CREATE OR REPLACE TRIGGER disableloginAFTER logon ON scott.schema -->注意使用方式为username.schemaDECLAREipaddr VARCHAR2(30);BEGINSELECT sys_context('userenv', 'ip_address')INTO ipaddrFROM dual;IF ipaddr = '10.103.11.17' THENraise_application_error('-20001','You can not login,Please contact administrator');END IF;END disablelogin;/-->限制IP段登录CREATE OR REPLACE TRIGGER chk_ip_rangeAFTER logon ON scott.schemaDECLAREipaddr VARCHAR2(30);BEGINSELECT sys_context('userenv', 'ip_address')INTO ipaddrFROM dual;IF ipaddr LIKE ('10.103.11.%') THENraise_application_error('-20001','You can not login,Please contact administrator');END IF;END chk_ip_range;/5.更多参考/reference/net_services.html/forums/thread.jspa?messageID=45664496.快捷参考有关性能优化请参考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迁移文件系统数据库到ASMRMAN 备份路径困惑(使用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--> 动态SQLPL/SQL--> 动态SQL的常见错误有关ORACLE其它特性Oracle常用目录结构(10g)使用OEM,SQL*Plus,iSQL*Plus 管理Oracle实例日志记录模式(LOGGING、FORCE LOGGING 、NOLOGGING) 表段、索引段上的LOGGING与NOLOGGINGOralceOMF 功能详解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_NAMEOracle补丁全集(Oracle 9i 10g 11g Path)Oracle10.2.0.1 升级到10.2.0.4Oracle彻底kill session院子网络的配置。
限制访问SQLServer的客户端IP地址

限制访问SQLServer的客户端IP地址今天被问到这个问题,以前没有处理过,在网上找了一些资料,看起来是可以做到的。
特摘录如下,以备查阅有时候,我们只想使某个IP的计算机才能连接到SQL Server服务器,不允许其他客户端连接,怎么办呢?解决方法可以直接在防火墙中做限制,只允许与指定的IP地址建立1433的通讯。
当然,从更为安全的角度来考虑,应该把1433端口改成其他的端口。
其他解决方法1(限从指定IP接入的客户端)如果使用SQL Server 2005,还可以通过端点限制的方法来实现,此方法要求一块专门的网卡,所有可以连接SQL Server的客户端均通过此网卡接入(假设此网卡的IP是192.168.1.1):1.在“SQL Server 配置管理器”的“SQL Server 2005网络配置中”,禁止除TCP/IP之外的所有协议;2.使用如下的T-SQL禁止默认的TCP端点ALTER ENDPOINT [TSQL Default TCP]STATE = STOPPED3.使用如下的T-SQL建立新的TCP端点和授权USE masterGO-- 建立一个新的端点CREATE ENDPOINT [TSQL User TCP]STATE = STARTEDAS TCP(LISTENER_PORT = 1433,LISTENER_IP = (192.168.1.1) -- 侦听的网络地址)FOR TSQL()GO-- 授予所有登录(或者指定登录)使用此端点的连接权限GRANT CONNECT ON ENDPOINT::[TSQL User TCP]TO [public]完成上述配置之后,只有通过网络地址配置为192.168.1.1的网卡接入的客户端才能访问SQL Server;另外,如果只授予指定登录对端点的连接权限,则只有指定的登录才能接入SQL Server实例。
其他解决方法2(限指定IP的客户端接入)当SQL Server 2005升级到SP2或者更高的版本的时候,还可以通过新增的触发器来实现控制。
Oracle的常见错误及解决办法

Oracle的常见错误及解决办法ORA-12528:TNS:listener: all appropriate instances are blocking new connectionsORA-12528问题是因为监听中的服务使⽤了动态服务,实例虽然启动,但没有注册到监听。
实例是通过PMON进程注册到监听上的,⽽PMON进程需要在MOUNT状态下才会启动。
所以造成了上⾯的错误。
解决这个问题,有三种⽅法:1、把监听设置为静态;2、在tnsnames.ora中追加(UR=A);3、重新启动服务;⽅法1、通过修改listener.ora的参数,把listener.ora动态注册设置为静态注册,然后重新启动监听# listener.ora Network Configuration File: $ORACLE_HOME\network\admin\listener.ora# Generated by Oracle configuration tools.LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))(ADDRESS = (PROTOCOL = TCP)(HOST = [IP])(PORT = 1521))))SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = [DBNAME])(ORACLE_HOME = [$ORACLE_HOME])(SID_NAME = [SID])))静态注册的风险:如果在instance运⾏中,lisener重新启动,就找不到instance了。
静态注册需要先启动lisener,再启动instance。
且静态模式下,lisener status显⽰的是unknown⽅法2、启动到nomount状态,通过修改tnsnames.ora的参数# tnsnames.ora Network Configuration File: $ORACLE_HOME\network\admin\tnsnames.ora# Generated by Oracle configuration tools.SYK =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = [IP])(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = SYK)(UR=A)))然后连接上数据库SQL>alter database mount;SQL>alter database open;⽅法3、重启ORACLE或者重启ORACLE服务在oracle帐户下依序执⾏如下命令:sqlplus / as sysdba;//在其它帐户(如root)下执⾏可能会报错(ORA-01031)因为这些帐户没有在dba组中shutdown immediate;startup;oracle实例名: error while loading shared libraries: libskgxp10.so: cannot open shared object file: No such file or directory是环境变量LD_LIBRARY_PATH的问题。
Oracle数据库利用sqlnet限制ip访问

Oracle数据库利用sqlnet.ora限制ip访问
实验环境准备工作:
一台windows server 服务器、oracle数据库
第一步:在server服务器安装oralce数据库,想对比较简单,此处不做多余赘述。
第二步:找到oracle安装路径sqlnet.ora文件,原始文件配置如下图所示:
添加如下配置:
Tcp.validnode_checking=yes
Tcp.invited_nodes=(127.0.0.1,其它想要限制的ip地址)
配置完成后保存退出
第三步:重启监听
Lsnrctl stop/start
报错信息如下所示:
TNS-12537: tns:连接关闭
TNS-12560: tns:协议适配器错误
TNS-00507: 连接已关闭
第四步:排查监听及服务名配置文件
发现在监听及服务名配置文件中,数据库连接地址为:主机名称
第五步:修改sqlnet.ora文件。
调整为如下配置:
Tcp.validnode_checking=yes
Tcp.invited_nodes=(主机名称,其它想要限制的ip地址)
配置完成后重启监听进行oracle数据库的连接性测试,发现配置参数生效,达到预期效果。
sqlnet.ora配置详解

一、sqlnet.orasqlnet.ora用在oracle client端,用于配置连接服务端oracle的相关参数。
1).NAMES.DEFAULT_DOMAIN:域名domain定义,在你用sqlplus访问数据库的时候,会在tns别名后面加上".domain"示例:.NAMES.DEFAULT_DOMAIN=.com在客户端执行命令:sqlplus username/password@local_dev的时候,会出现如下错误信息:"ORA-12154: TNS: 无法处理服务名"或者"ORA-12154: TNS:could not resolve service name"这样的错误信息。
因为sqlplus username/password@orcl的时候,将tns别名“orcl”转换成了“”,所以在tnsnames.ora中找不到,就报错了。
修改tnsnames.ora中的定义如下: =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.147)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))再执行sqlplus username/password@orcl连接成功。
2)NAMES.DIRECTORY_PATH:定义了在客户端连接数据库时,采用什么样的匹配方式。
示例:NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)那么在客户端执行sqlplus username/password@local_dev连接数据库的时,首先采用tnsnames.ora的别名配置连接数据库;如果连接上;再采用ONAMES进行解析,最后采用主机名进行解析。
linux上的sqlnet.ora限制IP访问

配置sqlnet.ora限制IP访问Oracle与防火墙类似的功能,Oracle 提供限制与允许特定的IP或主机名通过Oracle Net来访问数据库。
这个功能由sqlnet.ora配置文件来实现。
该文件通常$ORACLE_HOME/network/admin/ 目录下,与tnsnames.ora以及listener.ora位于同一路径。
用法也比较简单。
通过监听器的限制,实现轻量级访问限制,比在数据库内部通过触发器进行限制效率要高。
1. 实现通过在sqlnet.ora文件中增加下列记录来实现tcp.validnode_checking = yestcp.invited_nodes = (hostname1, hostname2,ip1,ip2)tcp.excluded_nodes = (10.103.11.17,hostname1,hostname2)当使用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,连接正常C:\>tnsping demo92TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on25-JUN-2011 18:55:39Copyright (c) 1997, 2010, Oracle. All rights reserved.Used parameter files:d:\app\Robinson\Oracle_client\product\11.2.0\client_1\network\admin\sqlne t.oraUsed TNSNAMES adapter to resolve the aliasAttempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.11.209)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = demo92)))OK (0 msec)-->查看配置文件[oracle@test 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 Robinsontcp.validnode_checking = yestcp.excluded_nodes = (10.103.11.17)-->重新reload[oracle@test admin]$ lsnrctl reload listener_demo92LSNRCTL for Linux: Version 9.2.0.8.0 - Production on 26-JUN-2011 10:03:11Copyright (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 demo92TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 25-JUN-2011 19:01:21Copyright (c) 1997, 2010, Oracle. All rights reserved.Used parameter files:d:\app\Robinson\Oracle_client\product\11.2.0\client_1\network\admin\sqlne t.oraUsed TNSNAMES adapter to resolve the aliasAttempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.103.11.209)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = demo92)))TNS-12547: TNS:lost contact-->下面的演示中如果excluded_nodes与invited_nodes都存在,则invited_nodes 优先,不再演示[oracle@test 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 Robinsontcp.validnode_checking = yestcp.excluded_nodes = (10.103.11.17)tcp.invited_nodes = (10.103.11.17)4.使用触发器限制单用户或IP段-->限制单用户从单IP登录,下面限制scott用户从客户端的登录CREATE OR REPLACE TRIGGER disableloginAFTER logon ON scott.schema -->注意使用方式为username.schemaDECLAREipaddr VARCHAR2(30);BEGINSELECT sys_context('userenv', 'ip_address')INTO ipaddrFROM dual;IF ipaddr = '10.103.11.17' THENraise_application_error('-20001','You can not login,Please contact administrator');END IF;END disablelogin;/-->限制IP段登录CREATE OR REPLACE TRIGGER chk_ip_rangeAFTER logon ON scott.schemaDECLAREipaddr VARCHAR2(30);BEGINSELECT sys_context('userenv', 'ip_address')INTO ipaddrFROM dual;IF ipaddr LIKE ('10.103.11.%') THENraise_application_error('-20001','You can not login,Please contact administrator');END IF;END chk_ip_range;/5.更多参考/reference/net_services.html/forums/thread.jspa?messageID=45664496.快捷参考有关性能优化请参考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迁移文件系统数据库到ASMRMAN 备份路径困惑(使用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--> 动态SQLPL/SQL--> 动态SQL的常见错误有关ORACLE其它特性Oracle常用目录结构(10g)使用OEM,SQL*Plus,iSQL*Plus 管理Oracle实例日志记录模式(LOGGING、FORCE LOGGING 、NOLOGGING) 表段、索引段上的LOGGING与NOLOGGINGOralceOMF 功能详解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_NAMEOracle补丁全集(Oracle 9i 10g 11g Path)Oracle10.2.0.1 升级到10.2.0.4Oracle彻底kill session院子网络的配置。
sqlnet.ora配置详解

用在oracleclient端,用于配置连接服务端oracle的相关参数。
1).:域名domain定义,在你用sqlplus访问数据库的时候,会在tns别名后面加上".domain"示例:.=在客户端执行命令:sqlplususername/password@local_dev的时候,会出现如下错误信息:"ORA-12154:TNS:无法处理服务名"或者"ORA-12154:TNS:couldnotresolveservicename"这样的错误信息。
因为sqlplususername/password@orcl的时候,将tns别名“orcl”转换成了“”,所以在中找不到,就报错了。
修改中的定义如下:=(DESCRIPTION=(ADDRESS_LIST=)(CONNECT_DATA=(SERVICE_NAME=orcl)))再执行sqlplususername/password@orcl连接成功。
2):定义了在客户端连接数据库时,采用什么样的匹配方式。
示例:=(TNSNAMES,ONAMES,HOSTNAME)那么在客户端执行sqlplususername/password@local_dev连接数据库的时,首先采用的别名配置连接数据库;如果连接上;再采用ONAMES进行解析,最后采用主机名进行解析。
ONAMES表示Oracle使用自己的名称服务器(OracleNameServer)来解析,目前Oracle建议使用轻量目录访问协议LDAP来取代ONAMES;HOSTNAME表示使用host文件,DNS,NIS等来解析;3):定义登录数据库的认证方式,这个参数默认没有设置。
示例:=(NONE,NTS)NONE表示Oracle数据库身份验证,NTS表示操作系统身份验证,两种方式可以并用,先后顺序表明验证的优先方式。
4)=yes:表示启用客户端的IP检查,非法的IP将被拒绝访问Oracle。
sqlnetora配置详解

一、用在oracle client端,用于配置连接服务端oracle的相关参数。
1).:域名domain定义,在你用sqlplus访问数据库的时候,会在tns别名后面加上".domain"示例:.=在客户端执行命令:sqlplus username/password@local_dev的时候,会出现如下错误信息:"ORA-12154: TNS: 无法处理服务名"或者"ORA-12154: TNS:could not resolve service name"这样的错误信息。
因为sqlplus username/password@orcl的时候,将tns别名“orcl”转换成了“”,所以在中找不到,就报错了。
修改中的定义如下:=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))再执行sqlplus username/password@orcl连接成功。
2):定义了在客户端连接数据库时,采用什么样的匹配方式。
示例:= (TNSNAMES, ONAMES, HOSTNAME)那么在客户端执行sqlplus username/password@local_dev连接数据库的时,首先采用的别名配置连接数据库;如果连接上;再采用ONAMES进行解析,最后采用主机名进行解析。
ONAMES表示Oracle使用自己的名称服务器(Oracle Name Server)来解析,目前Oracle建议使用轻量目录访问协议LDAP来取代ONAMES;HOSTNAME表示使用host文件,DNS,NIS等来解析;3):定义登录数据库的认证方式,这个参数默认没有设置。
示例:=(NONE,NTS)NONE表示Oracle数据库身份验证,NTS表示操作系统身份验证,两种方式可以并用,先后顺序表明验证的优先方式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
业务需求:限制连接Oracle的IP,检查非法连接,降低数据库安全风险。
业务实施:修改oracle安装目录下的配置文件sqlnet.ora来限制能够连接数据库的IP。
下面以RHL6.4上安装的Oracle 11g R2为例,修改sqlnet.ora配置文件来限制访问IP。
RHL6.4 IP:192.168.40.129;访问PC IP:192.168.40.1。
1.Linux安装Oracle后,发现/XXX/network/admin 没有sqlnet.ora这个配置文件,可以在
/XXX/network/admin/samples找到同名的配置文件说明,并复制到/XXX/network/admin。
2.在/XXX/network/admin下修改配置文件sqlnet.ora。
visqlnet.ora
添加
#需要设置参数为YES才能激活
tcp.validnode_checking=yes
#允许访问IP,建议设置允许访问IP,因为IP地址被随意修改后,excluded_nodes设置#就不起作用了。
tcp.invited_nodes=(192.168.40.1)
#不允许访问IP,当参数TCP.INVITED_NODES和TCP.EXCLUDED_NODES设置的地址相#同的时候将覆盖TCP.EXCLUDED_NODES设置。
tcp.excluded_nodes=(192.168.40.2)
3.修改完成后重启监听器生效配置。
这种限制方式是通过监听器来限制的,在服务器上直接连接数据库不受影响。
[oracle@localhost admin]$ lsnrctl reload
验证:
①不允许192.168.40.1
在192.168.40.1登录PL./SQL报错:
②当允许和不允许同时存在IP 192.168.40.1时,IP 192.168.40.1能登录PL/SQL
另附通过建触发器来限制IP用户名及IP段方法:
①限制单用户从单IP登录,下面限制scott用户从客户端的登录
create or replace triggerdisablelogin
after logon on scott.schema
declare
ipaddr VARCHAR2(30);
begin
selectsys_context('userenv', 'ip_address')
intoipaddr
from dual;
ifipaddr = '192.168.40.1' then
raise_application_error('-20001',
'You can notlogin,Please contact administrator'); end if;
enddisablelogin;
②限制IP段登录
create or replace trigger chk_ip_range
after logon on scott.schema
declare
ipaddr VARCHAR2(30);
begin
selectsys_context('userenv', 'ip_address')
intoipaddr
from dual;
ifipaddr like ('192.168.40.%') then
raise_application_error('-20001',
'You can notlogin,Please contact administrator'); end if;
endchk_ip_range;。