È possibile utilizzare una voce TNS pienamente qualificata utilizzando sqlldr in bundle con Oracle 10/11?È possibile che Oracle sqlldr accetti una voce TNS come qualificatore di istanza in Oracle 10 e 11?
Per esempio, in SQLPlus:
sqlplus user/[email protected](description=(address=(host=localhost)(protocol=tcp)(port=1521))(connect_data=(sid=orcl))) @script.sql
Ma usando sqlldr (SQL Loader) non sembrano essere problemi con l'utilizzo direttamente la voce di TNS. In particolare:
sqlldr user/[email protected](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'
Ecco il messaggio di errore prodotto:
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
Il tentativo di incapsulare la voce TNS tra virgolette produce lo stesso errore.
Ha dato un'occhiata alla documentazione di sqlldr e ha tentato di utilizzare l'argomento della riga di comando 'userid' inutilmente. In particolare:
sqlldr userid='user/[email protected](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 '[email protected](' 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
Ha senso che Oracle spera di costringere l'utente a un'istanza locale per mitigare I/O nello spingere i dati a un host remoto. Ma la deviazione nella sintassi supportata non è così intuitiva. Qualcun altro ha problemi simili?
ottengo lo stesso errore, senza il "TNS : " – leo