当我设置TNS_ADMIN参数

时间:2016-12-22 15:07:23

标签: oracle single-sign-on sqlplus tns

我在oracle数据库D1和其他具有密码登录方法的oracle数据库D2上激活了我的单点登录。我不想使用oracle home Tnsnames.ora文件。我创建了自己的tnsnames.ora并添加了两个数据库。

我将TNS_ADMIN设置为路径,在该路径下,我提供了保存tnsnames文件的位置路径。

我尝试在命令提示符下执行sqlplus /@db1然后它会抛出错误,说"用户名/密码无效" 但是当我在设置TNS_ADMIN参数之前使用sqlplus /@db1时,它会获取我的本地tns文件(我猜)并正确登录。

现在设置TNS_ADMIN之后,如果我尝试sqlplus user/pass@DB2,这可以正常工作,因为使用密码访问DB2并且在此服务器上未激活SSO。

问题是SQLplus中的SSO登录在设置我的TNS_ADMIN参数时没有用,tns条目是正确的,因为我使用的是激活SSO之前的相同db1。

我是否需要在我的tnsnsames文件的sqlnet.ora中添加一些参数来激活我的SSO或任何特殊设置DBA来激活用户和tns上的SSO以便我也可以使用我的tnsnames.ora文件。

方案

cmd > sqlplus /@db1 --Logs successfully

cmd> set TNS_ADMIN=path/tns (my tnsnames.ora file location)

cmd > sqlplus /@db1 --Logs successfully --Fails to login

cmd > sqlplus user/pass@DB2 --Logs successfully

请注意,我的tnsnames.ora没有更改,并且在密码登录时与db1的连接使用保持原始状态。

我们在oracle主路径中使用Kerberos进行oracle sqlnet文件的SSO登录,我们设置了一些与Kerberos相关的参数,如Kerberos_CC_NAME,Kerberos_CONF,Kerberos_CONF_MIT参数。我在我的sqlnet文件中使用了相同的但它没有用。

1 个答案:

答案 0 :(得分:0)

您必须在sqlnet.ora文件中指定钱包的位置,请参阅Profile Parameters (sqlnet.ora)

如果出现问题,请修改sqlnet.ora文件并添加以下行

TNSPING.TRACE_DIRECTORY = path (location where you like to get trace file)
TNSPING.TRACE_LEVEL = user

跟踪文件应该提供更多信息。