Oracle SQLDeveloper命令行(SQLcl)v19 run Script with Connection Timeout

z9smfwbn  于 2023-06-29  发布在  Oracle
关注(0)|答案(1)|浏览(119)

我正在运行SQLcl版本

SQL> version
Oracle SQLDeveloper Command-Line (SQLcl) version: 19.1.0.0

下面的脚本可以工作

echo @test/oracle_sql_cl/read_schema.sql | sql -S ${USER}/${PASSWORD}@${TNS_NAME}

需要一个超时参数。
这里有一些例子累了,但没有成功

echo @test/oracle_sql_cl/read_schema.sql | sql -S -t 5 ${USER}/${PASSWORD}@${TNS_NAME}

上述命令失败。
还更新了TNS_NAME变量,如下所示

export TNS_NAME="(DESCRIPTION=(TRANSPORT_CONNECT_TIMEOUT=5)(CONNECT_TIMEOUT=5)(RETRY_COUNT=1)(RETRY_DELAY=1)(ADDRESS_LIST=(ADDRESS=...

但连接仍然连接连接。
任何想法都会非常感激:~)

解决方案

更新连接字符串以包括

export TNS_NAME="(DESCRIPTION=(TRANSPORT_CONNECT_TIMEOUT=2)...

并将调用修改为

echo @test/oracle_sql_cl/read_schema.sql | sql -S ${USER}/${PASSWORD}@${TNS_NAME}
b91juud3

b91juud31#

在连接字符串中使用JDBC URL。
当超时设置为10毫秒时,它会失败。
当超时设置为1000毫秒时,它可以正常工作。

SQL> connect system/oracle@jdbc:oracle:thin:@(DESCRIPTION=(TRANSPORT_CONNECT_TIMEOUT=10ms)(ADDRESS_LIST=(ADDRESS=(HOST=server.com)(PORT=2213)(PROTOCOL=tcp)))(CONNECT_DATA=(S
ERVICE_NAME=DB213P)))
  USER          = system
  URL           = jdbc:oracle:thin:@(DESCRIPTION=(TRANSPORT_CONNECT_TIMEOUT=10ms)(ADDRESS_LIST=(ADDRESS=(HOST=server.com)(PORT=2213)(PROTOCOL=tcp)))(CONNECT_DATA=(SERVICE_NAME=DB213P)))
  Error Message = IO Error: The Network Adapter could not establish the connection (CONNECTION_ID=MES6gto9SkeXW93/WnHZ6A==)

SQL> connect system/oracle@jdbc:oracle:thin:@(DESCRIPTION=(TRANSPORT_CONNECT_TIMEOUT=1000ms)(ADDRESS_LIST=(ADDRESS=(HOST=server.com)(PORT=2213)(PROTOCOL=tcp)))(CONNECT_DATA=
(SERVICE_NAME=DB213P)))
Connected.
SQL>

此JDBC属性CONNECTION_PROPERTY_THIN_NET_CONNECT_TIMEOUT是定义/记录的here

相关问题