Как использовать sqlplus для подключения к базе данных Oracle Database, расположенной на другом хосте, не изменяя собственный файл tnsnames.ora

Я хочу подключиться к базе данных oracle, расположенной на другом хосте, используя sqlplus. Эта страница предложила добавить элемент в мои tnsnames для подключения к этой базе данных.

local_SID =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL= TCP)(Host= hostname.network)(Port= 1521))
    (CONNECT_DATA = (SID = remote_SID))
  )

и затем использовать его в sqlplus

sqlplus user/pass@local_SID

Однако в моих условиях модификация локальных tnsnames невозможна. Можно ли подключиться к удаленной базе данных просто с помощью аргумента sqlplus, не изменяя tnsnames? Что-то вроде

sqlplus user/pass@remote_SID@hostname.network ;( I know, this one is not valid)
Комментарии к вопросу (2)
Решение
 sqlplus user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))

Возможно, и это может зависеть от используемой среды командной строки, необходимо заключить строку в кавычки, например

 sqlplus "user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))"

или

 sqlplus 'user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))'
Комментарии (0)

Для этого можно использовать easy connect:

sqlplus usr/pass@hostname.network/remote_service_name

Чтобы включить easy connect на вашей машине, необходимо добавить его в NAMES.DIRECTORY_PATH в sqlnet.ora, например:

NAMES.DIRECTORY_PATH=(EZCONNECT)

Если ваш приемник находится на порту, не заданном по умолчанию, используйте ...@hostname.network:port/....

На самом деле, похоже, что вам нужно указать имя службы, а не SID; возможно, они одинаковы, но если нет, то вам придется получить их от сервера.

Комментарии (3)

Создайте копию файла tnsnames.ora в каталоге, в который можно писать, внесите в него соответствующие изменения, а затем установите переменную окружения TNS_ADMIN в местоположение этого каталога.

Например:

cp $ORACLE_HOME/network/admin/tnsnames.ora /tmp/tnsnames.ora
# edit the /tmp/tnsnames.ora file to add your entries

# Set the $TNS_ADMIN environment variable so that sqlplus knows where to look 
export TNS_ADMIN=/tmp
Комментарии (2)

В системе Unix / Linux вы можете использовать файлы конфигурации на уровне пользователя для переопределения записей на уровне системы.

& Лт; pre > Пользовательский уровень системного уровня Файл конфигурации Файл конфигурации


sqlnet.ora $ HOME / .sqlnet.ora tnsnames.ora $ HOME / .tnsnames.ora & Лт; / pre >

Файлы конфигурации системного уровня можно найти в каталоге $ TNS_ADMIN . Если переменная TNS_ADMIN не установлена, то они ищутся в каталоге $ ORACLE_HOME / network / admin.

Файлы конфигурации на уровне пользователя не заменяют файлы конфигурации на уровне системы в целом (поскольку каталог TNS_ADMIN заменяет весь каталог $ ORACLE_HOME / network / admin), но они добавляют или изменяют записи конфигурации на уровне системы файлы. Если запись существует в файле конфигурации на уровне пользователя, то эта используется, если она не существует в файле конфигурации на уровне пользователя, то используется запись файла конфигурации на уровне системы.

Комментарии (0)