【问题标题】:Connect to two DB using Oracle wallet without TNS_ADMIN path change使用 Oracle 钱包连接到两个数据库,无需更改 TNS_ADMIN 路径
【发布时间】:2015-08-30 23:29:10
【问题描述】:
-bash-4.1$ export TNS_ADMIN="/tmp/PKI/DB_A"
-bash-4.1$ sqlplus /@DB_A

连接良好

-bash-4.1$ export TNS_ADMIN="/tmp/PKI/DB_B"
-bash-4.1$ sqlplus /@DB_B

连接良好

-bash-4.1$ sqlplus /@DB_A

错误登录被拒绝(因为最后一个 TNS_ADMIN 路径指向 DB_A)

有一个使用 JDBC 的 TNS 名称的选项,即将 oracle.net.TNS_ADMIN 属性设置为包含 tnsnames.ora 文件的目录 (java -Doracle.net.tns_admin=$ORACLE_HOME/network/admin) .

情况是,我将无法更改 TNS_ADMIN 路径。 Oracle sqlplus NOT 中是否有任何选项可以指定 TNS_ADMIN 路径但无缝连接到 DB_A 和 DB_B ?

【问题讨论】:

  • 为什么不能更改 TNS_ADMIN?您对 sqlplus 或 JDBC 有疑问吗?在 Unix 上还有用户本地文件~/.tnsnames.ora。因此,您可以将其设为符号链接,并且可以使用ln -sf 更改其目标。 PS:AFAIK Oracle 钱包实现了与 Java keytool 相同的接口。因此,您可以将其用作 Java 密钥库。 sqlplus 登录只是其中一种用法。
  • 嗨 ibre,情况是,我将无法更改 TNS_ADMIN 路径。 Oracle sqlplus 中是否有任何选项不指定 TNS_ADMIN 路径但无缝连接到 DB_A 和 DB_B ?
  • 我不这么认为。也许您可以创建一个从 DB_A 到 DB_B 的 dblink - 但这确实不是一个解决方案。要么你也有 shell 访问权限,然后你可以更改 env。变量,或者它在你和系统管理员之间。如果他们做出这样的限制,那么他们应该找到解决方案。

标签: java oracle sqlplus


【解决方案1】:

您可以像这样直接连接到数据库:

sqlplus /@"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.10.10)(PORT=1521))(CONNECT_DATA=(SERVER= DEDICATED)(SERVICE_NAME=DB_A)))"

即从您喜欢使用的tnsnames.ora 文件中复制全文。删除所有换行符以在命令行上使用。

【讨论】:

    猜你喜欢
    • 2019-04-21
    • 2020-09-15
    • 2021-10-31
    • 1970-01-01
    • 2021-11-06
    • 2022-07-06
    • 2014-08-17
    • 1970-01-01
    • 2019-10-18
    相关资源
    最近更新 更多