网络结构
三个配置文件
listener.ora 、 sqlnet.ora 、 tnsnames.ora ,都是放在 $ORACLE_HOME\network\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
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
# 下面是这个 TNSNAME 对应的主机,端口,协议
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
# 使用专用服务器模式去连接需要跟服务器的模式匹配,如果没有就根据服务器的模式
# 自动调节
(SERVER = DEDICATED)
# 对应 service_name , SQLPLUS>show parameter service_name;
# 进行查看
(SERVICE_NAME = orcl)
)
)
# 下面这个类似
SALES =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.219)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = sales)
)
)
#----------------------
客户端完了我们来看服务器端
listener.ora------listener 监听器进程的配置文件
关于 listener 进程就不多说了,接受远程对数据库的接入申请并转交给 oracle 的服务器进程。所以如果不是使用的远程的连接, listener 进程就不是必需的,同样的如果关闭 listener 进程并不会影响已经存在的数据库连接。
Listener.ora 文件的例子
#listener.ora Network Configuration File: #E:\oracle\product\10.1.0\Db_2\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
# 下面定义 LISTENER 进程为哪个实例提供服务
# 这里是 ORCL ,并且它对应的 ORACLE_HOME 和 GLOBAL_DBNAME
# 其中 GLOBAL_DBNAME 不是必需的除非使用 HOSTNAME 做数据库连接
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = boway)
(ORACLE_HOME = E:\oracle\product\10.1.0\Db_2)
(SID_NAME = ORCL)
)
)
# 监听器的名字,一台数据库可以有不止一个监听器
# 再向下面是监听器监听的协议, ip ,端口等,这里使用的 tcp1521 端口,并且使 # 用的是主机名
LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521))
)
上面的例子是一个最简单的例子,但也是最普遍的。一个 listener 进程为一个 instance(SID) 提供服务。
监听器的操作命令
$ORACLE_HOME/bin/lsnrctl start, 其他诸如 stop,status 等。具体敲完一个 lsnrctl 后看帮助。
上面说到的三个文件都可以通过图形的配置工具来完成配置
$ORACLE_HOME/netca 向导形式的
$ORACLE_HOME/netmgr
本人比较习惯 netmgr,
profile 配置的是 sqlnet.ora 也就是名称解析的方式
service name 配置的是 tnsnames.ora 文件
listeners 配置的是 listener.ora 文件,即监听器进程
具体的配置可以尝试一下然后来看一下配置文件。
这样一来总体结构就有了,是当你输入 sqlplus sys/oracle@orcl 的时候
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞10
添加新评论0 条评论