Найти имя сервера для базы данных Oracle - PullRequest
31 голосов
/ 03 марта 2010

Есть ли способ найти имя сервера, на котором размещена база данных Oracle?

Ответы [ 4 ]

65 голосов
/ 03 марта 2010

Если у вас нет доступа к представлениям v $ (как предложил Quassnoi), есть две альтернативы

select utl_inaddr.get_host_name from dual

и

select sys_context('USERENV','SERVER_HOST') from dual

Лично я бы склонялся кпоследний, поскольку он не требует каких-либо грантов / привилегий, что облегчает использование хранимых процедур.

45 голосов
/ 03 марта 2010
SELECT  host_name
FROM    v$instance
6 голосов
/ 07 июня 2018

Запрос ниже демонстрирует использование пакета и некоторую информацию, которую вы можете получить.

select sys_context ( 'USERENV', 'DB_NAME' ) db_name,
sys_context ( 'USERENV', 'SESSION_USER' ) user_name,
sys_context ( 'USERENV', 'SERVER_HOST' ) db_host,
sys_context ( 'USERENV', 'HOST' ) user_host
from dual

ПРИМЕЧАНИЕ. Параметр «SERVER_HOST» доступен только в 10G.

Любой пользователь Oracle, который может подключиться к базе данных, может выполнить запрос на «двойной». Никаких специальных разрешений не требуется, и SYS_CONTEXT предоставляет больший диапазон специфичной для приложения информации, чем «sys.v $ instance».

0 голосов
/ 28 декабря 2017

Я использую этот запрос для получения имени сервера моей базы данных Oracle.

SELECT program FROM v$session WHERE program LIKE '%(PMON)%';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...