Güvenlik anlamında bir adım daha ileri giderek sisteme connect olan bazı userların sadece bir (veya birkaç ip’ den) gelmesini istiyorsunuz. Veya zaten birkaç ip’ den geliyordur siz bunların dışındaki olası girişlerin önüne geçmek isteyebilirsiniz. Aşağıdaki trigger da aynen bu işlemi gerçekleştirmektedir. Belirlenmiş olan kullanıcıların hangi ip adresinden geldiğine bakıp izin verilen adres ise connect’ inı kurmasını sağlayıp, farklı bir ip (bizim tanımlamadığımız bir ip) adresinden ise kullanıcıya hata dönüp sisteme connection kurmasına izin vermemektedir.
CREATE OR REPLACE TRIGGER kamil.logon_trigger
AFTER LOGON ON DATABASE
BEGIN
IF SYS_CONTEXT (‘USERENV’, ‘SESSION_USER’) IN
( ‘KAMIL’)
AND SYS_CONTEXT (‘USERENV’, ‘IP_ADDRESS’) NOT IN
(‘192.168.2.50’, ‘192.168.2.49’, ‘192.168.2.48’)
THEN
raise_application_error
(-20003,
‘Erişim engellendi! Lütfen Veritabanı Yöneticileriyle görüşünüz.’
);
ELSIF SYS_CONTEXT (‘USERENV’, ‘SESSION_USER’) IN
(‘HAKAN’)
AND SYS_CONTEXT (‘USERENV’, ‘IP_ADDRESS’) NOT IN
(‘192.168.2.47’, ‘192.168.2.46’, ‘192.168.2.45’)
THEN
raise_application_error
(-20003,
‘Erişim engellendi! Lütfen Veritabanı Yöneticileriyle görüşünüz.’
);
END IF;
END;
Yukarıda örneğimizde KAMIL userının sisteme connect olabilmesi için 192.168.2.50-49-48 nolu ip’ lerden HAKAN kullanıcısının da 192.168.2.47-46-45 nolu ip adreslerinden gelmesi gerekmektedir.