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