este é o nosso clássicotnsnames.ora
test1=
(DESCRIPTION=
(CONNECT_TIMEOUT=4)
(TRANSPORT_CONNECT_TIMEOUT=3)
(ENABLE=BROKEN)
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=example1.example.com)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=example2.example.com)(PORT=1521))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=EXAMPLE.EXAMPLE.DBS)
)
)
Eu uso este comando SQLcl:
sql -nohistory -noupdates -S $username/$password@$hostname:$port/$servicename @$filename
Como especificar vários nomes de host? Não apenas um? É algum tipo de cluster passivo ativo (Exadata).
Edite após a primeira resposta:
Eu adicionei no script de shell (neste diretório tnsnames.ora
):
TNS_ADMIN=/example/example
Eu ligo $sqlcl -nohistory -noupdates -S $username/$password@"MY-DB" @$filename
e recebo o erro:
./script.sh
USER = MY_USER
URL = jdbc:oracle:thin:@MY-DB
Error Message = IO Error: Unknown host specified
USER = MY_USER
URL = jdbc:oracle:thin:@MY-DB:1521/MY-DB
Error Message = IO Error: Invalid connection string format, a valid format is: "host:port:sid"
EZconnect não foi feito para coisas assim.
SQLcl pode usar
tnsnames.ora
também. Basta criar um e usá-lo:Ou você pode fazer isso, se realmente quiser fornecer todas essas coisas como um argumento de linha de comando:
Usando tnsnames.ora: