不允许test用户在 192.168.1.3 机器上访问数据库。
两种写法。
1
CREATE OR REPLACE TRIGGER DOPR
AFTER LOGON ON test.schema
BEGIN
IF ORA_CLIENT_IP_ADDRESS IN ('192.168.1.3') THEN
RAISE_APPLICATION_ERROR(-20001,'USER '||ORA_LOGIN_USER||' IS NOT ALLOWED TO CONNECT FROM '||ORA_CLIENT_IP_ADDRESS);
END IF;
END;
2.
CREATE OR REPLACE TRIGGER dopr
AFTER logon ON test.schema
DECLARE
ipaddr VARCHAR2(30);
BEGIN
SELECT sys_context('userenv', 'ip_address')
INTO ipaddr
FROM dual;
IF ipaddr = '192.168.1.3' THEN
raise_application_error('-20001',
'You can not login,Please contact administrator');
END IF;
END dopr;
/
这里说下ORA_CLIENT_IP_ADDRESS 这个函数,直接调用是空的。
这个函数只在系统触发器中有用,在DDL 无效。
http://blog.csdn.net/edcvf3/article/details/8987335
在sqlnet.ora 可以限制IP
tcp.validnode_checking=yes
tcp.excluded_nodes=(192.168.1.3)
参考:
http://blog.itpub.net/28602568/viewspace-2092858/
http://blog.csdn.net/leshami/article/details/6629141