不允許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