某些时候,需要在同一个内网环境下,限制某些PC机器不能直接连接生产的数据库,首先想到了通过listener来搞定,修改sqlnet.ora文件,然后重新reload一次listener,但是客户有所担心,万一reload的时候,监听不能连接的问题,并且监听只能限制IP,不能对用户名,机器名等信息进行限制,于是想到了通过触发器,但是在测试的时候,有dba权限的用户无效。下面是整个测试过程。
测试环境:
OS:RHEL 5.6
DB:11.2.0.4
1,创建触发器oracleplus>create or replace trigger chk_ip
after logon on database
declare
ipaddr VARCHAR2(30);
begin
select sys_context('userenv', 'ip_address') into ipaddr from dual;
if ipaddr ='192.168.1.90' then
raise_application_error('-20001', 'you can not logon by scott');
end if;
end chk_ip;
/
Trigger created.
2,远程用户登陆成功[oracle@migrate ~]$ sqlplus scott/oracle@orcl10g
SQL*Plus: Release 11.2.0.3.0 Production o