Какие различия SID и Service Name при использовании Oracle SQLDeveloper?

Английский не мой родной пожалуйста, поймите

Когда я пытаюсь войти как system/password как sysdba в Oracle(Linux), sqldeveloper(окно)

Не удается через сервисное имя и вернуть ORA-0131: недостаточные привилегии

но сид? успешно пройден

какие отличия? а как связаться с Service Name?

1 ответ

Томас Кайт красиво объяснил разницу:

Имя службы более гибкое, чем SID.

База данных может динамически регистрироваться в слушателе, используя одно или несколько имен служб. Фактически, более одной базы данных могут зарегистрироваться с помощью прослушивателя, используя одно и то же имя службы (подумайте о кластерной среде, где у вас есть несколько экземпляров, которые все являются одной и той же базой данных под прикрытием).

База данных, с другой стороны, имеет один SID. И один SID идет в одну базу данных. Это чистые отношения 1:1.

Услуга - это отношения многие ко многим.

Имена сервисов используются при динамической регистрации - данные регистрируются в слушателе после его запуска. Как только он это сделает, вы можете подключиться.

С SID - это больше похоже на сообщение слушателю: "Я хочу, чтобы вы подключились к этой конкретной базе данных, я знаю" адрес ", вот и все"

С помощью SERVICE - вы просите слушателя связать вас с базой данных, которая может обслуживать ваш запрос, с базой данных, которая регистрируется с использованием этой службы.

Более подробная информация здесь, https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1508737000346067364

Аналогичный вопрос задавался в переполнении стека 6 лет назад, как SID отличается от имени службы в Oracle tnsnames.ora

В вашей тестовой среде поиграйте с tnsnames.ora а также listener.ora, AFAIK, с 12c, Oracle использует только service_name, поскольку он гибкий и имеет много-много отношений. Я проверю из документации, если я нахожу это неправильным.

Другие вопросы по тегам