Назад | Перейти на главную страницу

Как обрабатывать установки Oracle с одинаковым идентификатором безопасности в одной подсети?

У меня есть два кластера Oracle RAC в одной подсети. Для этого обсуждения предположим, что один - это кластер QA, а другой - кластер DEV. Оба они работают на 64-разрядной версии RedHat Enterprise Linux 5.

Они настроены одинаково, поэтому у них обоих есть экземпляр с именем MyInstance и одинаковые пользователи (как система, так и БД), пароли и все остальное.

С помощью:

oracle @ QA1> sqlplus -S пользователь / пароль @my_sql_file

фактически запускает my_sql_file.sql для экземпляра DEV, даже если я нахожусь на сервере QA1. Я могу попробовать что-то вроде:

oracle @ QA1> sqlplus -S пользователь / пароль @ QA1 / MyInstance @my_sql_file

но это дает мне ошибки о том, что целевой хост или объект не существует (QA1 находится в моем файле hosts, а MyInstance находится в моем выводе lsnrctl status).

  1. Что вы делаете, когда у вас есть кластеры в одной подсети? Есть ли что-то особенное, что я должен был настроить? Я читал и думаю, что должен был дать им разные названия сервисов. Вы, dbas, согласны? (Я сейчас пытаюсь узнать, как это сделать на 11g)

  2. Есть ли способ заставить SQLPLUS подключаться только к локальным экземплярам?

  3. Нужно ли настраивать мои идентификаторы безопасности или прослушиватели каким-либо особым образом, чтобы разрешить подключение user / password @ host / sid к SQLPLUS? Прямо сейчас это не так.

Вы описали очень распространенный сценарий. Часто у вас будут бета-версия, среда разработки и производственная среда, которые соответствуют друг другу. Вам просто нужно отредактировать файл tnsdames. См. Пример ниже

# Generated by Oracle configuration tools.

QA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = computer.somedomain.com) (PORT = 1521))) (CONNECT_DATA = (sid = samesid)))

DEV = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = "computer2.somedomain.com") (PORT = 1521))) (CONNECT_DATA = (sid = samesid)))