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

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

Они настроены одинаково, поэтому у них обоих есть экземпляр с именем "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. Что вы делаете, когда у вас есть кластеры в одной подсети? Что-то особенное, что я должен был настроить? Я читал, и я думаю, что я должен был дать им разные названия служб. Ты согласен? (В настоящее время я пытаюсь выяснить, как это сделать на 11g)

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

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

1 ответ

То, что вы описали, является очень распространенным сценарием. Часто у вас будут бета-версия, среда разработки и производственная среда, которые соответствуют друг другу. Вам просто нужно отредактировать файл 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)))

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