我们有一个使用 SQLPLUS 命令连接到 Oracle DB 的遗留代码:
sqlplus "$USERNAME/$PASSWORD@//$HOST:$PORT/$SERVICE_NAME"
变量 USERNAME、PASSWORD、HOST、PORT 和 SERVICE_NAME 的值是使用外部属性文件配置的。当我们拥有具有服务名称的数据库时,此代码有效。在我们的例子中,数据库有默认服务:
SYS_CONTEXT('USERENV','SERVICE_NAME')
-------------------------------------
SYS$USERS
DB 只有 SID:
SYS_CONTEXT('USERENV','SID')
----------------------------
521
有没有办法使用默认服务名称连接到 Oracle DB?例如
sqlplus "$USERNAME/$PASSWORD@//$HOST:$PORT/SYS$USERS"
它失败并出现错误:错误:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
我们还尝试将 SID 设置为:
sqlplus "$USERNAME/$PASSWORD@//$HOST:$PORT/521"
它失败并出现错误:
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
无法更改此旧应用程序的代码或更改数据库以添加服务名称。请让我知道是否有任何解决此问题的方法。