(完整)Listener.ora、sqlnet.ora、tnsnames.ora三个配置文件区别
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Listener。ora、sqlnet。ora、tnsnames.ora三个配置文件区别
分类:Oracle
2014-10—30 10:57:36
Listener.ora、sqlnet.ora、tnsnames。ora三个配置文件区别
listener。ora、sqlnet.ora、tnsnames。ora ,都是放在$ORACLE_HOME\network\admin目录
[oracle@testdb1 ~]$ cd /app/oracle/ora11g/network/admin
[oracle@testdb1 admin]$ ll
total 16
—rw-r—-r-—。 1 oracle oinstall 162 Oct 22 14:35 listener。ora
drwxr—xr—x. 2 oracle oinstall 4096 Jul 10 07:10 samples
—rw—r-—r--。 1 oracle oinstall 381 Dec 17 2012 shrept.lst
-rw-r——r—-。 1 oracle oinstall 367 Oct 22 14:33 tnsnames.ora
[oracle@testdb1 admin]$
三个文件的作用和使用
##########################################
sqlnet.ora--——-作用类似于linux或者其他unix的nsswitch。conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串,
例如我们客户端输入
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等并不常用.
#########################################
Tnsnames.ora—-——--这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应,只有当sqlnet。ora 中类似
NAMES。DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。
例子中有两个,ORCL 对应的本机,SALES对应的另外一个IP地址,里边还定义了使用主用服务器还是共享服务器模式进行连接,
一句一句说
#你所要连接的时候输入得TNSNAME
[oracle@testdb1 admin]$ cat tnsnames。ora
testdb1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.9.235)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testdb1) #show parameter service_name;
)
)
testdb2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192。168。9。236)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testdb2) #show parameter service_name;
)
)
客户端完了我们来看服务器端
listener。ora—-———-listener监听器进程的配置文件
关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的
连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。Listener。ora文件的例子
[oracle@testdb1 admin]$ cat listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192。168。9。235)(PORT = 1521)) )
)
)
#监听器的名字,一台数据库可以有不止一个监听器
上面的例子是一个最简单的例子,但也是最普遍的。一个listener进程为一个instance(SID)提供服务。
多实例监听:
[oracle@testdb3 admin]:testdb1> cat listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192。168.9.235)(PORT = 1521)) )
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = testdb1)
(ORACLE_HOME = /app/oracle/ora11g)
(SID_NAME = testdb1)
)
(SID_DESC =
(GLOBAL_DBNAME = testdb3)
(ORACLE_HOME = /app/oracle/ora11g)
(SID_NAME = testdb3)
)
)