TNS Redirection? - PullRequest
       26

TNS Redirection?

2 голосов
/ 03 декабря 2009

Можно ли перенаправить декларацию TNS на другую?

Для моего текущего проекта мне требуется «переключаться» с сервера на сервер при определенных обстоятельствах. Для этого я использую 3 записи TNS.

Один для хранения имени TNS, к которому будет подключаться мое приложение:

# application access to DB
DB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = SAMPLENAME)
    )
  )

Чтобы я мог подключаться «вручную» к любой из баз данных сам, я использую еще 2 записи TNS:

# Central_Server "Manual"
Central_Server =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = SAMPLENAME)
    )
  )

# Local "Manual"
Local =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = SAMPLENAME)
    )
  )

Вместо того, чтобы постоянно настраивать запись TNS для БД, можно ли что-то сделать в соответствии с ::

DB = Local

or

DB = Central_Server

Из-за стратегии развертывания я бы не стал напрямую реализовывать эту логику в своем приложении.

Спасибо:)

Ответы [ 5 ]

1 голос
/ 03 декабря 2009

Вы можете настроить несколько адресов в файле tnsnames.ora. Из вашего описания не ясно, делаете ли вы это для восстановления после сбоя или распределения нагрузки. Документация Oracle дает хорошее представление о том, как это должно выглядеть.

0 голосов
/ 14 января 2010

Рассматривали ли вы решения вне tnsnames.ora?

Если у вас есть контроль над локальным DNS, вы можете настроить псевдоним. Когда приходит время переключаться, вы можете обновить запись DNS ... конечно же, необходимо учитывать распространение DNS и любые локальные кэши DNS.

Второй возможностью является Oracle Connection Manager. Он может служить в качестве прокси-сервера и легко настраивается. У вас будет одна точка входа TNSNAMES для экземпляра диспетчера подключений. Затем, когда вы хотите что-то изменить, внесите изменения в конфигурации диспетчера подключений, чтобы указать входящий порт на новый исходящий сервер, а затем внесите изменения в игру.

0 голосов
/ 14 января 2010

После всех выдвинутых предложений я обнаружил, что самым простым способом было остаться с моей ручной «полной» переписью записей tnsnames.ora.

0 голосов
/ 04 декабря 2009

Мне кажется, вам придется кое-что «подправить». Если вы подключаетесь через sqlplus в Windows, попробуйте:

set local=<Your TNS Alias Here>
sqlplus userid

На * nix, попробуйте:

TWO_TASK=<your TNS Alias here>; export TWO_TASK
sqlplus userid

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

userid@$TWO_TASK

или

userid@%local%
0 голосов
/ 04 декабря 2009

В зависимости от среды вы можете использовать переменную среды ORACLE_SID.

Например, SQLPLUS fred / flintstone (без @ для явной идентификации базы данных) подключится к базе данных, указанной в ORACLE_SID.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...