【问题标题】:SQL*Plus syntax doesn't connect via LDAP within SQL DeveloperSQL*Plus 语法不通过 SQL Developer 中的 LDAP 连接
【发布时间】:2020-06-19 08:00:37
【问题描述】:

我有一个棘手的问题,我还没有找到解决方法。我在数百个数据库上使用 LDAP 进行 ORACLE DB 连接,并且在 SQL Developer 中手动创建连接时没有错误。

但是,如果我在 SQL Developer 中使用 SQL*Plus 语法在不同的连接之间切换:CONNECT 用户名/密码@connect_identifier,我会收到“连接失败消息” . 原因是它不再遵守 sqlnet.ora 中定义的顺序(LDAP、tnsnames、ezconnect),而是直接转到 tnsnames.ora 文件。 如果我在tnsnames.ora中定义connect_identifier,它连接成功,但我想使用LDAP,因为它总是由DBA直接维护。 TNS_ADMIN 定义正确且工作正常。

另外,如果我打开一个 cmd 屏幕并使用 sqlplus 用户名/密码@connect_identifier,它可以通过 LDAP 工作。 所以只有 SQL Developer 不想通过 CONNECT 语法使用 LDAP。

我尝试在不同的机器上使用不同的 SQL Developer 版本,具体取决于机器上安装的内容,从 3.0.0.4 到 17.3.2,但我遇到了相同的行为。

在 17.3.2 上,还有 JDBC THIN 连接选项,我看到它会自动尝试转换为 jdbc 瘦连接字符串,当然,它失败了: USER = user URL = jdbc:oracle:thin:@connect_identifier.world:1521/connect_identifier.world Error Message = IO Error: Unknown host specified

为什么在 SQL Developer 中出现这种行为,有没有办法强制 CONNECT 语法使用 LDAP 而不是 tnsnames.ora

谢谢。

【问题讨论】:

    标签: oracle ldap oracle-sqldeveloper sqlplus tnsnames


    【解决方案1】:

    使用这样的网址:

    jdbc:oracle:thin:@ldap://ldap_server.your.domain.com:389/cn=OracleContext,dc=your,dc=domain,dc=com/SID
    

    ldap_server.your.domain.com 替换为您的LDAP 服务器地址,将SID 替换为数据库别名。

    在 SQL Developer 中,您应该能够选择 LDAP 基本别名解析:

    【讨论】:

    • 谢谢,但是我手动创建新连接没有问题,我可以同时使用 LDAP 和 TNS 连接类型,它们都可以正确解析 LDAP,我真正想要的是使用一个脚本在 100 个不同的实例上进行相同的选择,例如:CONNECT user/pass@conn_1; ALTER SESSION SET nls_date_format = 'dd.mm.yyyy hh24:mi:ss'; select * from table ; CONNECT user/pass@conn_2; ALTER SESSION SET nls_date_format = 'dd.mm.yyyy hh24:mi:ss'; select * from table ; 等等...
    猜你喜欢
    • 2016-04-05
    • 2015-11-26
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多