在论坛里看到一个帖子,如何限制某些IP访问数据库。 这种限制可以通过两种层面实现。一是数据库层面,另一个是防火墙的层面。这里只说明一下数据库层面的限制。 测试如下。

一.  修改sqlnet.ora 文件

sqlnet.ora文件在$ORACLE_HOME/network/admin 目录下,添加如下内容:

tcp.validnode_checking=yes

#允许访问的IP

tcp.invited_nodes=(ip1,ip2…)

#禁止访问的IP

tcp.excluded_nodes=(ip1,ip2…)

修改之后重新启动监听器即可,DB 服务器本身连接实例不走监听,所以不受此限制。

1.1  先看官网对这几个参数的说明:

(1)TCP.VALIDNODE_CHECKING

Purpose

To create a hard failure when host names in the invited or excluded list fail to resolve to an IP address. This ensures a customer's desired configuration is enforced, meaning that valid node checking cannot take place unless the host names are resolvable to IP addresses.

This is important in the context of the TCP.INVITED_NODES parameter, because it requires that every one of the client nodes be listed in the server's sqlnet.invited_nodes list. When one of the clients is decommissioned, and removed from the host name database, it becomes unresolvable, and causes the listener to fail to start.

Note:

In order to use the TCP.VALIDNODE_CHECKING parameter invited nodes, the host name database must be kept in up-to-date with the sqlnet.invited_node list.

注意这句话: 如果要验证invited节点,最新的数据库主机名必须要在sqlnet.invited_node列表中。

(2)TCP.EXCLUDED_NODES

Purpose

To specify which clients are denied access to the database. This parameter does not use wildcards for IP addresses or partial IP addresses.

Syntax

TCP.EXCLUDED_NODES=(hostname | ip_address, hostname | ip_address, ...)

Example

TCP.EXCLUDED_NODES=(finance.us.example.com, mktg.us.example.com, 192.168.2.25, 172.30.*, 2001:DB8:200C:417A/32)

(3)TCP.INVITED_NODES

Purpose

To specify which clients are allowed access to the database. This parameter does not use wildcards for IP addresses or partial IP addresses. This list takes precedence over the TCP.EXCLUDED_NODES parameter if both lists are present.

Syntax

TCP.INVITED_NODES=(hostname | ip_address, hostname | ip_address, ...)

Example

TCP.INVITED_NODES=(sales.us.example.com, hr.us.example.com, 192.168.2.73)

From:

http://download.oracle.com/docs/cd/E11882_01/network.112/e10835/sqlnet.htm#NETRF238

1.2  测试

[wangou@qs-test-web log]$ ifconfig eth0

eth0      Link encap:Ethernet  HWaddr 00:0D:56:2F:78:2D

inet addr:192.168.2.245  Bcast:192.168.2.255  Mask:255.255.255.0

inet6 addr: fe80::20d:56ff:fe2f:782d/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:9490305 errors:0 dropped:0 overruns:0 frame:0

TX packets:3268512 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:1010246991 (963.4 MiB)  TX bytes:3052311073 (2.8 GiB)

Interrupt:201 Memory:fcf10000-fcf20000

1.2.1 添加参数之前:

[wangou@qs-test-web log]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on ÐÇÆÚ¶þ 1ÔÂ 25 11:01:13 2011

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn sys/admin@dave as sysdba;

SQL> select name from v$database;

NAME

---------

NEWCCS

1.2.2  添加到Exclude 列表:

tcp.validnode_checking=yes

#允许访问的IP

tcp.invited_nodes=( daviddai, 192.168.3.*)

#注意这里的DB 主机名,daviddai, 如果不写,连不上并报ORA-12505错误。

#禁止访问的IP

tcp.excluded_nodes=(192.168.2.*)

[wangou@qs-test-web log]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on ÐÇÆÚ¶þ 1ÔÂ 25 11:08:20 2011

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn sys/admin@dave as sysdba;

ERROR:

ORA-12537: TNS: connection closed

当IP 被添加到受限访问时,会报ORA-12537错误:

[wangou@qs-test-web log]$ oerr tns 12537

12537, 00000, "TNS:connection closed"

// *Cause: "End of file" condition has been reached; partner has disconnected.

// *Action: None needed; this is an information message.

1.2.3 添加到Invited 列表

tcp.validnode_checking=yes

#允许访问的IP

tcp.invited_nodes=( daviddai,192.168.2.*)

#注意这里的DB 主机名,daviddai, 如果不写,连不上并报ORA-12505错误。

#禁止访问的IP

tcp.excluded_nodes=(192.168.3.*)

[wangou@qs-test-web admin]$ sqlplus system/admin@dave;

SQL*Plus: Release 11.2.0.1.0 Production on  25 11:24:01 2011

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select name from v$database;

NAME

---------

NEWCCS

二. 通过触发器

2.1 创建触发器

create or replace trigger logon_audit

after logon on database

begin

if ora_client_ip_address='192.168.2.245' or ora_client_ip_address='192.168.3.115' then

raise_application_error(-20001,'该用户不允许登录',false);

----抛出自定义的错误

end if;

end;

注意: AFTER LOGON ON DATABASE触发器对有DBA权限的用户不起作用。

2.2  测试

SQL> conn dave/dave@dave;

ERROR:

ORA-00604: error occurred at recursive SQL level 1

ORA-20001: 该用户不允许登录 --用户自己定义

ORA-06512: 在 line 4

------------------------------------------------------------------------------

Blog: http://blog.csdn.net/tianlesoftware

网上资源: http://tianlesoftware.download.csdn.net

相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx

DBA1 群:62697716(满); DBA2 群:62697977(满)

DBA3 群:62697850   DBA 超级群:63306533;

聊天 群:40132017

--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请

限制IP 访问 Oracle 的方法相关推荐

  1. 【方法】如何限定IP访问Oracle数据库

    [方法]如何限定IP访问Oracle数据库 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知 ...

  2. bde oracle 商友的流程_BorlandC++使用BDE访问Oracle的方法

    BorlandC++使用BDE访问Oracle的方法 BorlandC++使用BDE访问Oracle是我们计算机朋友经常遇到的问题,下面小编为大家整理了一些方法,希望对你有所帮助! 系统环境: 1.操 ...

  3. SQL Server不能通过外部IP访问,解决方法

    SQL Server不能通过外部IP访问,解决方法 参考文章: (1)SQL Server不能通过外部IP访问,解决方法 (2)https://www.cnblogs.com/lxhaaron/p/1 ...

  4. 本机器禁止访问mysql服务器_限制指定机器IP访问oracle数据库

    通过使用数据库服务器端的sqlnet.ora文件可以实现禁止指定IP主机访问数据库的功能,这对于提升数据库的安全性有很大的帮助,与此同时,这个技术为我们管理和约束数据库访问控制提供了有效的手段. 下面 ...

  5. mysql不被其他ip访问_mysql数据库无法被其他ip访问的解决方法

    前言 还是之前说的项目,环境目前已经准备好了,项目准备验证阶段发现了一个问题,从上层应用输入鉴权访问应用,一直在等待状态,输入了正确的用户名及密码,却无法访问.看起来像是没办法访问到数据库连接的意思. ...

  6. 3种方式限制ip访问Oracle数据库

    墨墨导读:本文来自墨天轮读者投稿,分享了3种限制某个ip或某个ip段访问Oracle数据库的方式,希望对大家有帮助. 一.概述 本文将给大家介绍如何限制某个ip或某个ip段才能访问Oracle数据库 ...

  7. mysql数据库无法被其他ip访问的解决方法

    前言 还是之前说的项目,环境目前已经准备好了,项目准备验证阶段发现了一个问题,从上层应用输入鉴权访问应用,一直在等待状态,输入了正确的用户名及密码,却无法访问.看起来像是没办法访问到数据库连接的意思. ...

  8. 局域网访问电脑上的html,Win10让局域网内其他电脑通过IP访问网站的方法

    最近,有位win10系统用户在电脑上制作好网站后,希望能让局域网内的其他电脑通过IP直接访问自己电脑的网站,以便得到更好地测试效果.可是,该用户操作了很久都没成功.那么,我们如何配置win10电脑的I ...

  9. java 屏蔽地域性访问_外贸网站屏蔽中国IP访问的多种方法

    大家都知道的原因,做外贸站,国人喜欢研究你的站,还总是帮你进行压力测试-- 首先想到要屏蔽中国IP就会是把中国IP库加入Nginx配置文件中,然后WEB服务器对比IP来达到屏蔽. 在Nginx中加de ...

最新文章

  1. postman请求soap 请求_postman测试调用web service asmx
  2. Linux常用压缩命令
  3. java:BIO, NIO
  4. ListListObject list = new ArrayListListObject(); 求回答补充问题 list.get(position).add(Object);为什么会...
  5. codeigniter文件上传问题
  6. cvc 降噪_蓝牙耳机“底噪”、“主动降噪”和“CVC降噪”有什么不同
  7. maven编译项目时提示:cached in the local repository
  8. SQL Server 2005中的分区表(四):删除(合并)一个分区
  9. 普通域用户设置共享文件夹
  10. php 环境优化,Nginx与PHP-fpm环境在大流量下的优化配置
  11. jtoken判断是否包含键_Redis源码解析十三--有序集合类型键实现(t_zset)
  12. Eclipse中引用依赖库library失败的原因
  13. Lintcode 51.上一个排列[Medium]
  14. python程序员工资高吗_Python程序员必备:EDA数据分析神器,老板疯狂加工资
  15. ImageLoader的简单解析(六)
  16. 云计算核心技术剖析学习笔记_1
  17. 批处理保存windows10开机壁纸
  18. 加密流量分类任务的深度学习方法(一般框架总结)
  19. Windows10+clion+opencv时报错0xC0000139和0xC0000135的解决方法之一
  20. Matlab GUI编程技巧(十七):Matlab GUI设计总结

热门文章

  1. ES6关于Promise的用法详解
  2. SQL Server 2005 For XML[学习]
  3. Azure操作手册集合
  4. 10 python中的常量
  5. STM32 逐次逼近寄存器型(SAR)模拟数字转换器(ADC)
  6. Mysqli的批量CRUD数据
  7. EXPORT_SYMBOL的作用是什么
  8. leetcode 【 Find Peak Element 】python 实现
  9. Source Insight 有用设置配置
  10. 染成茜色的坂道 汉化版攻略