在Oracle数据库中因为版本的差别,能够经过不一样的方式来解决这些问题。
有几种方式来实现这样的功能:
一、 修改SQLNET.ora文件限制访问数据库的IP。
二、 使用触发器实现。
sqlnet.ora文件的功能:
1. Specify the client domain to append to unqualified names
2. Prioritize naming methods
3. Enable logging and tracing features
4. Route connections through specific processes
5. Configure parameters for external naming
6. Configure Oracle Advanced Security
7. Use protocol-specific parameters to restrict access to the database
这里使用的就是sqlnet.ora文件的第七项功能限制访问数据库的链接。
适用版本:oracle 9i以上版本
在9i提供了几个参数:
TCP.EXCLUDED_NODES
设置禁止访问数据库的IP地址列表。
TCP.INVITED_NODES
设置容许访问数据库的IP地址列表,当这个参数和TCP.EXCLUDED_NODES设置的地址相同的时候将覆盖TCP.EXCLUDED_NODES设置。
TCP.VALIDNODE_CHECKING
检测上述参数的设置。
node
例如:web
tcp.validnode_checking=yes #容许访问的ip tcp.invited_nodes =(ip1,ip2,……) #不容许访问的ip tcp.excluded_nodes=(ip1,ip2,……)sql
经过这样的设置就能够根据本身的须要更改,
须要注意的问题:
一、 须要设置参数为YES,这样才能激活。
二、 建议设置容许访问的IP,由于IP地址有可能被随意修改,就不能起到本身的目的。
三、 TCP当参数TCP.INVITED_NODES和TCP.EXCLUDED_NODES设置的地址相同的时候将覆盖TCP.EXCLUDED_NODES设置。
四、 须要重启监听器才能生效。
五、 这个方式只是适合TCP协议。
六、 这个配置适用于9i以上版本。在9i以前的版本使用文件protocol.ora。
七、 在服务器上直接链接数据库不受影响。
八、 这种限制方式事经过监听器来限制的。
九、 这个限制只是针对IP检测,对于用户名检测事不支持的。数据库
範例(sqlnet.ora設置):服务器
# SQLNET.ORA Network Configuration File: d:\oracle\ora92\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
tcp.validnode_checking=yes
tcp.invited_nodes=(10.107.7.32,10.107.7.26)oracle