В дополнение к парольной защите, многие предприятия практикуют ограничение подключений к серверу Oracle по IP адресу, т.е. разрешая подключаться клиентам с определенными IP адресами. При подключении клиента, Oracle получает IP адрес входящего соединения и сравнивает его с IP адресами хранящимися в таблице, содержащей все авторизованные адреса.
Для построения такой проверки, используется команда USERENV:
SELECT SYS_CONTEXT('USERENV','IP_ADDRESS')
FROM DUAL;
Создаем таблицу для записи доступной информации о подключении и IP адресов:
CONNECT SYS/MANAGER;
CREATE TABLE STATS$USER_LOG
(
USER_ID VARCHAR2(30),
SESSION_ID NUMBER(8),
HOST VARCHAR2(30),
IP_ADDRESS VARCHAR2(30)
);
Далее создается триггер на системном уровне, который будет записывать доступную информацию о подключении:
CREATE OR REPLACE TRIGGER
LOGON_AUDIT_TRIGGER
AFTER LOGON ON DATABASE
BEGIN
INSERT INTO STATS$USER_LOG VALUES(
USER,
SYS_CONTEXT('USERENV','SESSIONID'),
SYS_CONTEXT('USERENV','HOST'),
SYS_CONTEXT('USERENV','IP_ADDRESS')
);
END;