Проверка sid oracle и имени базы данных
Я хочу проверить SID и текущее имя базы данных.
Я использую следующий запрос для проверки oracle SID
select instance from v$thread;
но таблица или представление не существует ошибка идет.
Я использую следующий запрос для проверки текущей базы данных имя
select name from v$database;
но таблица или представление не существует ошибка идет.
любая идея для выше двух проблем?
6 ответов:
предполагаю
select user from dual;
должен дать вам текущего пользователяи
select sys_context('userenv','instance_name') from dual;
имя экземпляраЯ считаю, что вы можете получить Сид как
SELECT sys_context('USERENV', 'SID') FROM DUAL;
(не могу проверить это сейчас)
Если, как и я, ваша цель-получить хост базы данных и SID для создания url-адреса Oracle JDBC, как
jdbc:oracle:thin:@<server_host>:1521:<instance_name>
помогут следующие команды:
команда запроса Oracle для проверки SID (или имени экземпляра):
select sys_context('userenv','instance_name') from dual;
команда запроса Oracle для проверки имени базы данных (или хоста сервера):
select sys_context('userenv', 'server_host') from dual;
Att. Серхио Марсело
просто для полноты, вы также можете использовать ORA_DATABASE_NAME.
возможно, стоит отметить, что не все методы дают вам один и тот же результат:
SQL> select sys_context('userenv','db_name') from dual; SYS_CONTEXT('USERENV','DB_NAME') -------------------------------------------------------------------------------- orcl SQL> select ora_database_name from dual; ORA_DATABASE_NAME -------------------------------------------------------------------------------- ORCL.XYZ.COM SQL> select * from global_name; GLOBAL_NAME -------------------------------------------------------------------------------- ORCL.XYZ.COM
представления V$ в основном являются динамическими представлениями системных метрик. Они используются для оптимизации производительности, мониторинга сессии, и т. д. Таким образом, доступ ограничен пользователями DBA по умолчанию, поэтому вы получаете
ORA-00942
.самый простой способ найти имя базы данных:
select * from global_name;
это представление предоставляется общественности, так что любой может запросить его.
типа
sqlplus
командная строкаSQL> select * from global_name;
тогда u будет видеть результат в командной строке
SQL ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM
здесь первый "ORCL" - это имя базы данных,может быть ваша система" XE " и другое, что было дано во время загрузки oracle.
Как уже было сказано выше,
select global_name from global_name;
- это путь.
вы не можете запросить V$database/V$instance/V$thread, потому что у вашего пользователя нет необходимых разрешений. Вы можете предоставить их (через учетную запись DBA) с помощью:
grant select on v$database to <username here>;