Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Ср Май 29, 2013 06:23  как узнать имя схемы? |
|
Полезность: Нет оценки
|
Здравствуйте, уважаемые знатоки.
Пожалуйста подскажите, кто вкурсе, как узнать имя схемы?
Сразу хочу сказать, что в таблице V$INSTANCE содержится немного не то имя...
у нас тест имеет имя TMP_RBO, а в таблице HOST_NAME = tmprbo..
есть ли другие способы? |
|
 |
Serj Профи
Вступление в Клуб: 02.08.2007
|
Ср Май 29, 2013 06:38   |
|
Полезность: Нет оценки
|
нужен аналог login.sql для SQLPLUS что ли? |
|
 |
devor Профи
Вступление в Клуб: 13.02.2012
|
Ср Май 29, 2013 07:42  Re: как узнать имя схемы? |
|
Полезность: Нет оценки
|
wolfio пишет: | Здравствуйте, уважаемые знатоки.
Пожалуйста подскажите, кто вкурсе, как узнать имя схемы?
Сразу хочу сказать, что в таблице V$INSTANCE содержится немного не то имя...
у нас тест имеет имя TMP_RBO, а в таблице HOST_NAME = tmprbo..
есть ли другие способы? |
Т.е. надо достать алиас схемы, настроенный на клиенте?
Разве что клиент-скриптом.
Но, мне кажется, название инстанса более информативно. Тем более, что алиасы на на всех клиентских машинах настраивают одинаковые |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Ср Май 29, 2013 08:07   |
|
Полезность: Нет оценки
|
Ну например вот так в коде можно:
Код: |
nameBASE varchar(32);
begin
nameBASE :=sys_context('USERENV','DB_NAME');
end;
|
|
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
|
 |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Чт Май 30, 2013 00:40   |
|
Полезность: Нет оценки
|
Serj пишет: | нужен аналог login.sql для SQLPLUS что ли? |
?? ))
в таблице v$database содержится не то, что я ищу..
в общем то уточню вопрос - мне нужно выдернуть откуданибудь имя базы, которое пишется в поле СЕРВЕР при подключении через Навигатор. Может ктонибудь подсказать где выдернуть такое? |
|
 |
devor Профи
Вступление в Клуб: 13.02.2012
|
Чт Май 30, 2013 04:25   |
|
Полезность: Нет оценки
|
wolfio пишет: |
в общем то уточню вопрос - мне нужно выдернуть откуданибудь имя базы, которое пишется в поле СЕРВЕР при подключении через Навигатор. Может ктонибудь подсказать где выдернуть такое? |
Я же написал выше - клиентх-скриптом с файла tnsnames на клентской машине.
Можно попробовать такую конструкцию, описанную в доке
Цитата: | Синтаксис
Runtime.ApplicationEnvironment.ConnectString() As String
Описание
Получить строку соединения с сервером.
|
Но это я теоретизирую, сам не проверял. |
|
 |
Serj Профи
Вступление в Клуб: 02.08.2007
|
Чт Май 30, 2013 04:57   |
|
Полезность: Нет оценки
|
wolfio пишет: |
в общем то уточню вопрос - мне нужно выдернуть откуданибудь имя базы, которое пишется в поле СЕРВЕР при подключении через Навигатор. Может ктонибудь подсказать где выдернуть такое? | - дык это tnsalias лежит на клиенте в $ORACLE_HOME/network/admin/tnsnames.ora, что касаемо login.sql сценарий - который помогает определить куда подключен клиент - он формирует "указатель курсора " в sqlplus |
|
 |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Чт Май 30, 2013 08:04   |
|
Полезность: Нет оценки
|
я дико извиняюсь, но я сопровожденец, не программист, и мне очень нужен практический пример, без попыток изобрести колесо..
поэтому если можно клиентскриптом, то можно прям кусок кода, как его получить? что такое sqlplus мне вообще не известно  |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Май 30, 2013 08:13   |
|
Полезность: Нет оценки
|
Я дико извиняюсь и боюсь спросить, вам всё таки TNS name нужен или SID?
И где вы собрались использовать данную конструкцию не в коде PL+? Если вы SQL подключаетесь вы уже знаете всё что вам надо, по другому вы не подключитесь. |
|
 |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Чт Май 30, 2013 08:53   |
|
Полезность: Нет оценки
|
мне нужно получить эту инфу через plp или через вставку plsql на крайний случай
SID как раз и содержится в таблице v$instance
видимо мне нужно имя схемы из TNS.. |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Май 30, 2013 09:04   |
|
Полезность: Нет оценки
|
wolfio пишет: |
видимо мне нужно имя схемы из TNS.. |
Т.е. вы не определились ещё
Имя схемы может быть вообще любым. Оно прописывается в файле tnsnames.ora в клиентской части оракла в папке network/admin, при чём если клиентская часть на локальных машинах, то подключение к одной и той же базе могут происходить под разными именами в зависимости от:
NAME_BASE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.10)(PORT = 1521))
)
(CONNECT_DATA =
(SID = IBSO_BASE)
)
)
В данном случае SID = IBSO_BASE и он постоянен для всех подключений, а TNS_NAME = NAME_BASE его вы и прописываете
wolfio пишет: |
которое пишется в поле СЕРВЕР при подключении через Навигатор
|
И оно может быть различным на каждой машине с клиентской частью Оракла. Вам как это поможет? |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
Чт Май 30, 2013 09:20   |
|
Полезность: Нет оценки
|
Выполните на тестовой и рабочей БД
select UPPER(name), UPPER(db_unique_name) from v$database ; |
|
 |
wolfio Участник - экстремал
Вступление в Клуб: 22.10.2012
|
Чт Май 30, 2013 10:43   |
|
Полезность: Нет оценки
|
vtar пишет: | Выполните на тестовой и рабочей БД
select UPPER(name), UPPER(db_unique_name) from v$database ; |
да я понимаю что оно выдает... результат с теста меня не устраивает. Когда на тест захожу, имя схемы пишу TMP_RBO. При запуске вашего запроса на ней получаю TMPRBO. Разницу ощущаете? |
|
 |
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Чт Май 30, 2013 10:50   |
|
Полезность: Нет оценки
|
wolfio пишет: |
да я понимаю что оно выдает... результат с теста меня не устраивает. Когда на тест захожу, имя схемы пишу TMP_RBO. При запуске вашего запроса на ней получаю TMPRBO. Разницу ощущаете? |
Я вам разницу написал откуда берётся. Смотрите в tnsnames.ora там всё написано.
Хотите по человечи - пусть ваши админы меняют или СИД на тесте на TMP_RBO либо вы сами в файле поменяйте имя подключения на TMPRBO.
Последний раз редактировалось: yaffil (Чт Май 30, 2013 10:50), всего редактировалось 1 раз |
|
 |
|