Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication SQL开发人员操作系统身份验证_Authentication_Oracle Sqldeveloper - Fatal编程技术网

Authentication SQL开发人员操作系统身份验证

Authentication SQL开发人员操作系统身份验证,authentication,oracle-sqldeveloper,Authentication,Oracle Sqldeveloper,我有包含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基本即时客户端。这似乎配置得很好,如果我选中帮助->关于属性,那么sqlde

我有包含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基本即时客户端。这似乎配置得很好,如果我选中帮助->关于属性,那么sqldeveloper.oci.available的值为“true”

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

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

我显然选中了选项“OS身份验证”:

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


提前感谢。

您的Sqlnet.ora和tnsNames.ora文件在哪里

我必须创建一个带有自定义位置的环境变量TNS_ADMIN,该位置包含我的
sqlnet.ora
tnsnames.ora
文件

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

SQLNET.AUTHENTICATION_SERVICES = (NTS)
您还需要确保即时客户端位置(例如c:/instantclient12)是PATH变量中的第一个条目


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

Oracle Sql developer和sqlplus以完全不同的方式使用操作系统身份验证。 Sql developer总是尝试通过替换用户名“\”来进行授权。 SLQPLUS仅替换用户名。将域添加到用户名时。
OSAUTH\u PREFIX\u DOMAIN=TRUE
(windows注册表)。Sqlplus将域名附加到名称后面。 Sql developer总是试图通过替换为不带域名的用户名
“\”
来进行授权

示例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时,OS身份验证工作

Select user from dual;

USER
___________________
OPS$\ORACLE.ADMIN

有同样的问题。原因是SQL Developer的轻量级JDBC不支持扩展身份验证。相反,SQL*Plus是针对本机驱动程序编译的,这就是它没有问题的原因

解决方案:在SQL Developer中,转到

Tools -> Preferences -> Database -> Advanced Parameters
如果您已经选中了
使用Oracle客户端
,只需选中
使用OCI/厚驱动程序
。这就是全部。如果没有,请先选中
使用Oracle客户端
,并指定驱动程序路径。这个想法来源于


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

不幸的是,添加环境变量对我不起作用。是的,我已经设置了SQLNET.AUTHENTICATION\u SERVICES=(NTS)我已经编辑了我的原始答案,其中包含了一些关于路径变量的信息。这一个对我来说很有用。谢谢必须打开这两个设置,然后重新启动SQL Developer,才能使其生效。必须告诉它我即时客户端的文件夹和我的tsnames.ora文件。