第一种方法通过sqlnet.ora文件实现, 在sqlnet.ora里面增加如下参数
tcp.validnode_checking = yes #通信协议
tcp.invited_nodes=() #允许访问的IP列表,各IP之间用逗号分隔
tcp.excluded_nodes=() #限制访问的IP列表,各个IP之间用逗号分隔
 
注意:
不能同时使用tcp.invited_nodes和tcp.excluded_nodes
只能指定具体的IP地址,不能指定IP段
只能限制TCP协议
需要重启监听生效
 
第二种方法使用触发器实现
1、这个触发器实现了192.168.137开始的IP不能访问test用户的功能
create or replace trigger chk_ip
after logon on test.schema 
declare
ipaddr VARCHAR2(30);
begin
select sys_context('userenv', 'ip_address') into ipaddr from dual;
if ipaddr like ('192.168.137.%') then
raise_application_error('-20001', 'you can not logon by test');
end if;
 end ;
/