Возможно ли для Oracle sqlldr принять запись TNS в качестве квалификатора экземпляра в Oracle 10 и 11?

Можно ли использовать полностью квалифицированную запись TNS, используя sqlldr в комплекте с Oracle 10/11?

Например, в SQLPlus:

    sqlplus user/password@(description=(address=(host=localhost)(protocol=tcp)(port=1521))(connect_data=(sid=orcl))) @script.sql

Но при использовании sqlldr (SQL Loader) возникают проблемы с непосредственным использованием записи TNS. В частности:

    sqlldr user/password@(description=(address=(host=localhost)(protocol=tcp)(port=1521))(connect_data=(sid=orcl))) bad='bad_file.txt' control='control.ctl' data='data.txt' log='log.txt' direct='true'

Вот сообщение об ошибке:

    LRM-00116: syntax error at 'address' following '('

    SQL*Loader: Release 11.2.0.1.0 - Production on Tue Sep 13 15:41:54 2011

    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

    SQL*Loader-100: Syntax error on command-line

Попытка инкапсулировать запись TNS в кавычки приводит к той же ошибке.

Посмотрел документацию по sqlldr и попытался использовать аргумент командной строки 'userid', но безрезультатно. В частности:

sqlldr userid='user/password@(description=(address=(host=localhost)(protocol=tcp)(port=1521))(connect_data=(sid=orcl)))' bad='bad.txt' control='control.ctl' data='data.txt' log='log.txt' direct='true'
LRM-00116: syntax error at 'password@(' following '='

SQL*Loader: Release 11.2.0.1.0 - Production on Tue Sep 13 15:44:17 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

SQL*Loader-100: Syntax error on command-line

Имеет смысл, что Oracle надеется принудить пользователя к локальному экземпляру, чтобы уменьшить количество операций ввода-вывода при отправке данных на удаленный хост. Но отклонение в поддерживаемом синтаксисе не так интуитивно понятно. Кто-нибудь еще испытывает подобные проблемы?

Ответы на вопрос(1)

Ваш ответ на вопрос