|
|
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Вопрос меня мучает: давно хотел спросить, но всё стеснялся. Вопрос наверное к DBA-икам (сам я разработчик, живого DBA в жизни не видел) Проблема: С точки зрения разработчика очень привлекательно выглядит EZ CONNECT, но вот беда - он требует некоего service_name Опытным путём я установил, что если прописывать в коннект строку, которую возвращает запрос Код: plsql 1. - то всё гарантированно работает. Получается, что global_name как бы работает и как service_name ??! Смущают две вещи: не произойдёт ли чего плохого, если я переименую GLOBAL_NAME как-то покороче (DB_DOMAIN по неопытности был сначала сделан ооочень длинный). Ну чтобы в строке подключения ссылка на базу выглядела компактно. в v$Session я тоже вижу какие-то service_name , но они выглядят странно: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2016, 08:46:22 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2016, 08:48:44 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
Ну допустим... То есть правильно я понял, что не следует пытаться устанавливать нужные service_name в базе через init-параметр service_names, а вместо этого пакет DBMS_SERVICE - это наше всё? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2016, 08:56:23 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
До кучи Как понять чем занят SYS ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 05:54:08 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
Спасибо, почитал. Для меня увы это - дебри, слишком далеко не хотелось бы углубляться. Не уверен, зачем мне вообще эти service_names, но пока я понял, что если я хочу использовать какой-то service_name попроще в EZConnect'е, то не обязательно менять global_name базы, достаточно использовать пакет dbms_service. И бонусом в v$session я увижу свой красивый service_name. Правильно? Надеюсь, если какой-то сервис прописан в статической регистрации, то это не мешает ему быть в динамической? Правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 11:39:16 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
Также не понимаю, для чего нужен параметр в init.ora SERVICE_NAMES. Я боюсь его трогать ;-) но иногда заглядываю. Кажется, там всегда написано то же, что и select * from global_name ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 11:43:14 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
Как ты думаешь, почему параметр называется service_nameS ? Все таки S - признак множественного числа... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 12:05:57 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
MaxmixТакже не понимаю, для чего нужен параметр в init.ora Ну для начала неплохо бы понять для чего нужен сам init.ora - когда, как и для зачем он используется . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 21:23:26 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
tru55, Замечание справедливое. Но на это я возражу, что вьюха DBA_SERVICES тоже содержит намёк на множественное число, но почему-то отображает совсем другой список. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 07:46:43 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, Неплохо бы, да. С 1995 года мне это не удалось сделать. Поэтому я решил идти от простого к сложному, и выяснить для начала, как правильно использовать один конкретный параметр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 07:52:34 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
MaxmixЗамечание справедливое. Но на это я возражу Зачем возражать, когда проще прочесть том доки Database Reference. SERVICE_NAMES specifies one or more names for the database service to which this instance connects. You can specify multiple service names in order to distinguish among different uses of the same database. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 08:59:57 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
tru55MaxmixЗамечание справедливое. Но на это я возражу Зачем возражать, когда проще прочесть том доки Database Reference. SERVICE_NAMES specifies one or more names for the database service to which this instance connects. You can specify multiple service names in order to distinguish among different uses of the same database. Да, так написано. Я читал это раз 300, наверное. Но ведь примерно то же самое написано про DBMS_SERVICE. А поспецифицировав вдоволь через два этих средства, мы видим два разных списка, и они не совпадают. От этого же с ума можно сойти! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 10:49:45 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
MaxmixС 1995 года мне это не удалось сделать. В 1995 году init.ora был гораздо нужнее, чем сегодня. Современным версиям он нужен, скажем так, в исключительных ситуациях, поскольку для обычной работы заменен на spfile. Управление spfile осуществляется посредством alter system set ... SCOPE = {spfile|both}. Это я к тому, что параметры, обнаруженные в init.ora, имеют к работающему экземпляру весьма косвенное отношение - за исключением случая, когда экземпляр принудительно стартован с данного конкретного pfile (в общем случае - с какого-то pfile, не обязательно даже расположенного на сервере БД, что может привнести дополнительную путаницу). Если выбросить из рассмотрения init.ora как неактуальный способ изменения параметров БД в обычной жизни, то добавление/удаление сервиса не потребует перезапуска базы. Конкретно по сервисам: - сервисы можно создавать и сносить по потребности, одна база может отзываться на кучу разных сервисов. - сервис - не только строчка в дескрипторе соединения, но и объект администрирования. Ресурсный профиль, набор обслуживающих нод кластера и т.п. могут быть ассоциированы с сервисом. В конце концов, можно предотвратить соединение с базой конкретных приложений, просто погасив предназначенных для них сервис - к примеру, на время регламентных работ - не закрывая базу и не препятствуя работе других приложений. - dbms_services - работает. - dbms_services - позволяет делегировать вопросы управления сервисами СОЧ, не делегируя alter system. В общем, я - за этот подход :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 12:53:00 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
andrey_anonymous, ну spfile я тоже считаю как init.ora, в том смысле что сервисы появляются в v$parameter а не в dba_services. Немного я продвинулся в понимании, всем спасибо. Теперь я могу EZ Connect подключаться к одному из сервисов, перечисленных в dba_services, правда только если не забыть dbms_service.start_service, а иначе: авторORA-12514: TNS:listener does not currently know of service requested in connect descriptor ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 05:43:48 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
З.Ы. СОЧ - не смог расшифровать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 05:48:52 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
Активные сервисы (поднятые) в V$ACTIVE_SERVICES (или V$SERVICES) Те сервисы, которые указаны в SERVICE_NAMES сразу поднимаются при старте экземпляра Можно на лету добавлять и поднимать сервисы просто изменяя SERVICE_NAMES (они автоматом добавятся и в DBA_SERVICES) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 06:17:58 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
Итак, что вкратце удалось нарыть, может пригодится кому-нибудь: При желании коннектиться через нами же придуманный произвольный SERVICE_NAME, существует минимум 3 способа: Создание в Listener.ora в секции SID_LIST_LISTENER записи вида Код: plaintext 1. 2. 3. 4. Выполняем последовательность Код: plsql 1. 2. 3. Коннектиться можно по Код: plaintext Лучше быть явным и сразу задавать сложное имя, в этом случае "домен" может быть любым, необязательно == db_domain : Код: plsql 1. 2. 3. В момент старта сервиса он дописывается к текущему значению параметра SERVICE_NAMES . В сеансе в v$sessions появляется имя сервиса ServiceB.oralovers.ru Можно добавлять/перезаписывать параметр SERVICE_NAMES : Код: plsql 1. Здесь также коннектиться можно сразу. Несмотря на то, что теперь в параметре service_names содержится только один только что созданный сервис, остальные всё ещё живы, и могут быть просмотрены через Код: plsql 1. и к ним можно коннектиться. К сервису SYS$USERS нельзя подключиться по этому имени (мне не удалось во всяком случае) Дополнения/замечания приветствуются. Замечание №1: того, кто такую систему придумал, я бы по головке не погладил! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 06:59:16 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Спасибо за уточнение о том, что сервис может быть не поднят, вьюха V$ACTIVE_SERVICES занесена в мемориз! У вас некий tst.feb.ru прокрался как-то...которого изначально не было и в примере он не создаётся.. ошибка копипастинга? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 07:16:31 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
Перестартовал базу, и все сервисы, которые прекрасно работали - исчезли?!! Что ж за невезуха. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 10:31:52 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
Те, которые прописаны в SERVICE_NAMES должны подняться А для остальных делают триггер на STARTUP (и DB_ROLE_CHANGE), где их и запускают через DBMS_SERVICE Ну и в случае RAC (или Oracle Restarter) пользуются SRVCTL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 12:22:19 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Это становится совсем интересным. После серии экспериментов, получается примерно следующее. После перезагрузки в service_names хранится только моё global_name, остальные сервисы лежат мёртвым грузом в DBA_SERVICES. Я выполняю begin dbms_service.delete_service('A.B'); end; begin dbms_service.create_service('A.B', 'A.B'); end; begin dbms_service.start_service('A.B'); end; и в результате сервис A.B становится временно рабочим. Заодно автоматически изменяется параметр service_names=A.B (global_name как бы стёрлось оттуда !) После перезагрузки всё по новой. До этого момента у меня сложилось впечатление, что DBMS_SERVICE - это предпочтительный способ создания сервисов. Получается, все кто в теме - триггеры используют? (озадаченно чешу затылок). Есть ли ещё какие-нибудь части головоломки "как начать использовать подключения по SERVICE_NAME, а не по SID?" P.S. К счастью, я не знаю что такое RAC! (мне не надо знать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 06:51:35 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
Открой для себя файл параметров (значения параметров сохраняются при перезапуске) и значение параметра в памяти PS. Нет тут ничего интересного ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 06:54:33 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
Вячеслав Любомудров, Пускай даже DBMS_SERVICE добавляет сервис в список service_names временно, то есть как бы с опцией scope=memory. На каком основании он заменяет действующее значение параметра? То есть сразу после запуска базы: service_names=global_name После добавления сервиса "в память" должно быть: service_names=global_name; A.B По факту имеем: service_names=A.B А вот, как я бы реализовал: Никаких параметров вообще, сервисы просматриваются только через системные вью и управляются только через пакет. Сервис добавляется так: DBMS_SERVICE.CREATE_SERVICE (p_new_service varchar2, p_autostart varchar2 := 'YES'); Все счастливы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 07:58:55 |
|
||
|
Разные Service_Name в INIT.ora и v$Session ?
|
|||
|---|---|---|---|
|
#18+
MaxmixВячеслав Любомудров, Пускай даже DBMS_SERVICE добавляет сервис в список service_names временно, то есть как бы с опцией scope=memory. На каком основании он заменяет действующее значение параметра? То есть сразу после запуска базы: service_names=global_name После добавления сервиса "в память" должно быть: service_names=global_name; A.B По факту имеем: service_names=A.BТы так нихрена и не понял MaxmixА вот, как я бы реализовал: Никаких параметров вообще, сервисы просматриваются только через системные вью и управляются только через пакет. Сервис добавляется так: DBMS_SERVICE.CREATE_SERVICE (p_new_service varchar2, p_autostart varchar2 := 'YES'); Все счастливы.Реализуй, че Все-таки подумай еще например про стендбаи, раки и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 08:04:13 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39304960&tid=1887502]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
428ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 786ms |

| 0 / 0 |
