以前对oracle的配置从来没有关注过,近期有个项目需要用到,之前一直是在本地oracleclient中的tnsnames里设置好连接然后直接使用plsql去连接远程的DB。但现在我发现,即使我把本地所有的tnsnames文件都删除了,11.1.0\client_1\Network\Admin只保留ldap.ora及sqlnet.ora,plsql仍然可以连接到以前连接的远程DB,请问这是什么原因呢? 如果本地根本就没有tnsnames文件,在连接远程DB的过程中还有什么地方会影响这种情况呢?麻烦有熟悉oracle的朋友帮忙解答下,多谢多谢~~
肯定是没删对位置,如果不通过tnsnames.ora 你只能通过:
sqlplus soctt/[email protected]:1521/orcl 了(TCP/IP)
中的除了tnsnames其他都删掉, 就登陆不上了 .登陆的时候有多种验证方式 如果选择只用TNSNAMES,而你的tns文件正好为空,就肯定登陆不上去了, 另外还可能涉及到数据库的认证方式,包括域认证等等
例如我们客户端输入
sqlplus sys/oracle@orcl
假如我的sqlnet.ora是下面这个样子
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)
那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的 ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名
如果我是这个样子
NAMES.DIRECTORY_PATH= (TNSNAMES)
那么客户端就只会从tnsnames.ora查找orcl的记录,括号中还有其他选项,如LDAP等并不常用