【问题标题】:SQL Developer OS authenticationSQL Developer 操作系统身份验证
【发布时间】:2018-11-10 12:28:37
【问题描述】:

我有包含 JDK8 的 Oracle SQL Developer 版本 4.1.19(64 位)。

这适用于需要 {username, password} 组合的 Oracle 连接 - 没问题。

我的问题是我无法连接操作系统身份验证配置。

请注意,我可以使用 sqlplus /@MY_TNS_NAME 从命令行通过操作系统身份验证进行连接,这工作正常。

我已将 SQL Developer 应用程序配置为使用 OCI/Thick 驱动程序并使用 x64 12.1.0.2.0 基本即时客户端。这似乎配置好,如果我检查Help->About-Properties,那么sqldeveloper.oci.available的值为“true”。

但是,每次我测试连接时都会收到失败消息 "ORA-01017: 无效的用户名/密码;登录被拒绝"

我的操作系统是 Windows 7 Enterprise x64 SP1

我显然已经检查了“操作系统身份验证”选项 :)。

为了让 SQL Developer 允许我通过 OS 身份验证进行连接,我是否需要更改/检查任何其他配置? (更改身份验证类型不是我的选择)。

提前致谢。

【问题讨论】:

    标签: authentication oracle-sqldeveloper


    【解决方案1】:

    有同样的问题。原因是 SQL Developer 的轻量级 JDBC 不支持扩展认证。 SQL*Plus 恰恰相反,是针对原生驱动编译的,所以没有问题。

    解决方案:在SQL Developer中,去

    Tools -> Preferences -> Database -> Advanced Parameters
    

    如果您已经检查了Use Oracle Client,只需检查Use OCI/Thick driver。就这样。如果不是,请先检查Use Oracle Client,并指定驱动程序路径。想法取自here

    谈到客户端,Oracle 允许拥有一个版本动物园。如果您在选择工作客户端时遇到问题,最简洁的选择是使用 SQL*Plus 所在的路径。只需从其末尾剥离\bin,并确保其 CPU 架构与 SQL Developer 匹配。

    【讨论】:

    • 这个对我有用。谢谢!!必须打开这两个设置,然后重新启动 SQL Developer 才能生效。必须告诉它我的 Instant Client 和 tsnames.ora 文件的文件夹。
    【解决方案2】:

    Oracle Sql developer 和 sqlplus 以完全不同的方式使用操作系统身份验证。 Sql developer总是尝试通过替换用户名"\"来进行授权。 SLQPLUS 仅替换用户名。将域添加到用户名时。 OSAUTH_PREFIX_DOMAIN = TRUE(Windows 注册表)。 Sqlplus 将域名附加到名称中。 sql开发者总是尝试用不带域名的用户名"\"进行授权。

    示例 1.

    CREATE USER "OPS$ORACLE.ADMIN" IDENTIFIED EXTERNALLY 
    PROFILE DEFAULT 
    DEFAULT TABLESPACE tablespace_oracle_admin 
    TEMPORARY TABLESPACE TEMP 
    QUOTA UNLIMITED ON tablespace_oracle_admin 
    ACCOUNT UNLOCK ;
    
    C:\ORA\DB\product\11.2.0\dbhome_1\bin\sqlplus / 
    SQL> Select user from dual;
    
    USER
    ___________________
    OPS$ORACLE.ADMIN
    

    要从 sql developer 连接数据库,需要用“/”符号代替 没有指定密码的用户名。

    Select user from dual;
    
    USER
    ___________________
    OPS$ORACLE.ADMIN
    

    示例 2。

    CREATE USER "OPS$\ORACLE.ADMIN" IDENTIFIED EXTERNALLY 
    PROFILE DEFAULT 
    DEFAULT TABLESPACE tablespace_oracle_admin 
    TEMPORARY TABLESPACE TEMP 
    QUOTA UNLIMITED ON tablespace_oracle_admin 
    ACCOUNT UNLOCK ;
    

    使用 Sql developer 连接时,操作系统验证工作!!!

    Select user from dual;
    
    USER
    ___________________
    OPS$\ORACLE.ADMIN
    

    【讨论】:

      【解决方案3】:

      您的 Sqlnet.ora 和 tnsNames.ora 文件位于何处?

      我必须创建一个具有自定义位置的环境变量 TNS_ADMIN,其中包含我的 sqlnet.oratnsnames.ora 文件。

      确保您的 sqlnet.ora 文件包含以下行:

      SQLNET.AUTHENTICATION_SERVICES = (NTS)
      

      您还需要确保即时客户端位置,例如c:/instantclient12 是 PATH 变量中的第一个条目。

      在sql developer中设置Oracle客户端位置时按下测试按钮会发生什么?

      【讨论】:

      • 不幸的是,添加环境变量对我不起作用。是的,我已经设置了 SQLNET.AUTHENTICATION_SERVICES = (NTS)
      • 我已经编辑了我的原始答案以包含一些关于 PATH 变量的信息
      猜你喜欢
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      • 2011-03-01
      • 1970-01-01
      • 2018-05-23
      • 2012-04-23
      相关资源
      最近更新 更多