Есть ли способ вернуть IP-адрес клиента в Netezza? В Oracle мы запускаем ниже запроса.Netezza SQL для поиска клиента IP
SELECT SYS_CONTEXT ('USERENV', 'IP_ADDRESS') FROM dual;
Благодаря
Есть ли способ вернуть IP-адрес клиента в Netezza? В Oracle мы запускаем ниже запроса.Netezza SQL для поиска клиента IP
SELECT SYS_CONTEXT ('USERENV', 'IP_ADDRESS') FROM dual;
Благодаря
Этот запрос может предоставить вам всю необходимую информацию о текущей_сегрессии.
select client_ip
from _v_session_detail
where session_id= CURRENT_SID
Вы можете использовать «шоу сессии», чтобы предоставить эту информацию, если вы не пытаетесь получить к нему доступ, как столбец в таблице.
SYSTEM.ADMIN(ADMIN)=> SYSTEM.ADMIN(ADMIN)=> show session;
SESSION_ID | PID | USERNAME | DBNAME | SCHEMA | TYPE | CONNECT_TIME | SESSION_STATE_NAME | SQLTEXT | PRIORITY_NAME | CLIENT_PID | CLIENT_IP | CLIENT_OS_USERNAME
------------+-------+----------+--------+--------+------+---------------------+--------------------+--------------+---------------+------------+-----------+--------------------
16228 | 10272 | ADMIN | SYSTEM | ADMIN | sql | 2014-12-10 10:56:48 | active | show session | normal | 10271 | 127.0.0.1 |
(1 row)
Вы также можете запросить против _v_session, который сообщит о сеансах у вас есть видимость/авторизация, чтобы увидеть, но не обязательно говорит вам, какой из них ваш. Для неадминистративного пользователя это обычно только ваши сеансы, поэтому это должно быть легко сказать.
SYSTEM.ADMIN(ADMIN)=> select * from _v_session;
ID | PID | USERNAME | DBNAME | TYPE | CONNTIME | STATUS | COMMAND | PRIORITY | CID | IPADDR | CLIENT_OS_USERNAME
-------+-------+----------+--------+------+---------------------+--------+--------------------------+----------+-------+-----------+--------------------
16228 | 10272 | ADMIN | SYSTEM | sql | 2014-12-10 10:56:48 | active | select * from _v_session | 3 | 10271 | 127.0.0.1 |
(1 row)
Если вам нужна информация только о конкретной сессии, в которой вы вызываете запрос, то это сделает трюк.
SYSTEM.ADMIN(ADMIN)=> select * from _v_session where id = current_sid;
ID | PID | USERNAME | DBNAME | TYPE | CONNTIME | STATUS | COMMAND | PRIORITY | CID | IPADDR | CLIENT_OS_USERNAME
-------+-------+----------+--------+------+---------------------+--------+-------------------------------------------------+----------+-------+-----------+--------------------
16837 | 22310 | ADMIN | SYSTEM | sql | 2014-12-10 19:06:21 | active | select * from _v_session where id = current_sid | 3 | 22309 | 127.0.0.1 |
(1 row)
Я хотел бы отметить, что то, что вы ищете здесь уже отслеживаются в базе данных истории запросов, которая, скорее всего, уже настроен на вашей системе.
Мое фактическое требование - зарегистрировать IP-адрес клиентской машины пользователей, выполняющих процедуры. Запрос _V_session будет возвращать несколько строк, если подключено более одного пользователя. Ищете замену для функции ниже. создать или заменить функцию F_USER_IP return varchar2 is V_IP Varchar2 (25); begin SELECT SYS_CONTEXT ('USERENV', 'IP_ADDRESS') в V_IP FROM dual; return (V_IP); конец F_USER_IP; СПАСИБО. – Ben
А, ОК. Обновлено, чтобы отразить это. Обратите внимание, что то, что вы запрашиваете, уже отслеживается для вас в базе данных истории запросов (которая, скорее всего, уже настроена в вашей системе), если вы не пытаетесь интегрировать ее в какое-либо другое приложение. – ScottMcG