这是我们的经典tnsnames.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)
)
)
我使用这个 SQLcl 命令:
sql -nohistory -noupdates -S $username/$password@$hostname:$port/$servicename @$filename
如何指定多个主机名?不止一个?它是某种主动被动集群 (Exadata)。
在第一个答案后编辑:
我在 shell 脚本中添加(在这个目录中tnsnames.ora
):
TNS_ADMIN=/example/example
我打电话$sqlcl -nohistory -noupdates -S $username/$password@"MY-DB" @$filename
回来错误:
./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 不是为那样的事情而设计的。
SQLcl 也可以使用
tnsnames.ora
。只需创建一个并使用它:或者你可以这样做,如果你真的想提供所有这些东西作为命令行参数:
使用 tnsnames.ora: