我在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文件中使用了相同的但它没有用。
答案 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
跟踪文件应该提供更多信息。