第一篇博文---OCM考试经验---监听
2015-03-09 16:19
239 查看
2014年只剩下一两天了,2015年是一个新的开始,而且注定会是不安分的一年,各种技能的提升为了未来更好地生活,本想在2015年的第一天完成首篇博文,因为考(fan)试(lan),一拖再拖拖到今天;)
也许物质方面需要靠机会的把握,但个人的升华则是为了积攒抓住机会的资本,作为从小就喜欢电脑的人,开技术博客的时间确实是太晚了,但晚来总比不来强。之前已经考完OCM考试,并顺利通过,期间总结了很多数据库知识,监听作为外界与数据库联系的第一道关卡,所以以它作为博客的第一篇文章。
*********************c*****u*****t*****************************
都是放在$ORACLE_HOME\network\admin目录下
重点:三个文件的作用和使用
1、 sqlnet.ora-----作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定以什么方式查找一个连接中出现的连接字符串:
例如我们客户端输入 sys/oracle@orcl
1、假如我的sqlnet.ora是下面这个样子:
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)
那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名
2、如果我是这个样子:
NAMES.DIRECTORY_PATH= (TNSNAMES)
那么客户端就只会从tnsnames.ora查找orcl的记录
#------------------------
2、 Tnsnames.ora------用于提供@后的连接字符串(@prod) 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) 该名称如果对应静态监听需要,需要与sid_list中global_dbname相同,
如果是动态监听则需与数据库service_names相同
)
)
#----------------------
客户端完了我们来看服务器端
listener.ora------listener监听器进程的配置文件10g需要注意格式问题,11g无此问题
listener.ora 指定监听程序(进程)在哪台主机和哪个端口监听所需远程连接数据库,如果为动态监听,则监听所有向该端口申请链接该主机上一个数据库的请求,如果为静态监听,则配置sid_list相应globa_ dbname(对外服务名,可任意)和需监听数据库的对应的sid_name(实例名)
关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。
Listener.ora文件的例子
#下面定义LISTENER进程为哪个实例提供服务
#这里是ORCL,并且它对应的ORACLE_HOME和GLOBAL_DBNAME
#其中GLOBAL_DBNAME不是必需的除非使用HOSTNAME做数据库连接
SID_LIST_LISTENER = 如配置sid_list_XXXX则该监听为静态监听
(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通过PMON进程根据参数instance_name和service_names中的内容,把oracle数据库的信息注册到默认的1521端口的监听器上。不管服务器端有几个监听程序,oracle默认都是注册到1521端口的监听器,也就是说,对于其他端口的监听器来说,如果想要正常的识别远程客户端提供的信息,需要做出配置,也就是静态注册。在lsnrctl命令下,通过services命令可以观察到是静态注册还是动态注册。如果是静态注册的话,oracle显示的服务的状态是unknown,如果是动态注册的话,服务的状态显示是ready。不过,如果用户想要修改动态注册的端口,这也是可以实现的,可以通过设置数据库的local_listener参数来实现。
当监听为动态监听时,须在服务器端配置相应tnsname.ora文件, 应为PMON需要靠本机tnsnames.ora配置来解析动态注册与动态监听ADDRESS相同的NET_SERVICE_NAME(监听名),如果更改需重新指定
另,动态监听需要制定数据库参数local_listerner,设置为服务器端的tnsnames的动态监听的连接字符串,并在设置后手动注册 alter system register
系统推荐使用静态监听,动态监听时将数据库作为程序注册到监听,自动将实例名instance_name与serv_name注册到listener中,
没有serv_name将db_name与db_domain拼接,serv_name可以有多个,默认注册到1521监听中。
监听常用命令
启动监听
$ lsnrctl start
停止监听器的命令为
$ lsnrctl stop
监测监听器当前状态的命令为
$ lsnrctl status 静态监听状态永远为unknown, 动态监听状态在动态注册后为READY
当 lsnrctl status 命令有如下输出结果
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR
for Linux: Version 8.1.7.4.0 - Production
Start Date 17-JAN-2004
19:00:08
Uptime 31
days 15 hr. 27 min. 59 sec
-转载补充
listener启动时候根据listener.ora配置的信息静态注册可用的服务,同时数据库实例启动以后(PMON)会把
service_names,db_name的值动态的注册到Listener。
例如,如果service_names的值为orcla,orclb,db_name的值为orcl,在listener.ora里有如下配置:
(SID_DESC =
(GLOBAL_DBNAME = orclst)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = orcl)
)
则在Tnsname.ora中可以作为SERVICE_NAME的值为orcla,orclb,orcl,orclst
通过lsnrct status 可以看到这些服务的信息: status READY的为动态注册的(因为是在实例启动之后才注册到listener的,所以状态为ready),status UNKNOWN的为静态注册的(因为是listener启动的时候根据配置启动的,这是实例是否启动是不知道的,所以为unknown)
也许物质方面需要靠机会的把握,但个人的升华则是为了积攒抓住机会的资本,作为从小就喜欢电脑的人,开技术博客的时间确实是太晚了,但晚来总比不来强。之前已经考完OCM考试,并顺利通过,期间总结了很多数据库知识,监听作为外界与数据库联系的第一道关卡,所以以它作为博客的第一篇文章。
*********************c*****u*****t*****************************
OCM考试经验---数据库监听
首先是三个重要的配置文件listener.ora(服务器端)、sqlnet.ora(客户端)、tnsnames.ora(客户端)都是放在$ORACLE_HOME\network\admin目录下
重点:三个文件的作用和使用
1、 sqlnet.ora-----作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定以什么方式查找一个连接中出现的连接字符串:
例如我们客户端输入 sys/oracle@orcl
1、假如我的sqlnet.ora是下面这个样子:
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)
那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名
2、如果我是这个样子:
NAMES.DIRECTORY_PATH= (TNSNAMES)
那么客户端就只会从tnsnames.ora查找orcl的记录
#------------------------
2、 Tnsnames.ora------用于提供@后的连接字符串(@prod) 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) 该名称如果对应静态监听需要,需要与sid_list中global_dbname相同,
如果是动态监听则需与数据库service_names相同
)
)
#----------------------
客户端完了我们来看服务器端
listener.ora------listener监听器进程的配置文件10g需要注意格式问题,11g无此问题
listener.ora 指定监听程序(进程)在哪台主机和哪个端口监听所需远程连接数据库,如果为动态监听,则监听所有向该端口申请链接该主机上一个数据库的请求,如果为静态监听,则配置sid_list相应globa_ dbname(对外服务名,可任意)和需监听数据库的对应的sid_name(实例名)
关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。
Listener.ora文件的例子
#下面定义LISTENER进程为哪个实例提供服务
#这里是ORCL,并且它对应的ORACLE_HOME和GLOBAL_DBNAME
#其中GLOBAL_DBNAME不是必需的除非使用HOSTNAME做数据库连接
SID_LIST_LISTENER = 如配置sid_list_XXXX则该监听为静态监听
(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通过PMON进程根据参数instance_name和service_names中的内容,把oracle数据库的信息注册到默认的1521端口的监听器上。不管服务器端有几个监听程序,oracle默认都是注册到1521端口的监听器,也就是说,对于其他端口的监听器来说,如果想要正常的识别远程客户端提供的信息,需要做出配置,也就是静态注册。在lsnrctl命令下,通过services命令可以观察到是静态注册还是动态注册。如果是静态注册的话,oracle显示的服务的状态是unknown,如果是动态注册的话,服务的状态显示是ready。不过,如果用户想要修改动态注册的端口,这也是可以实现的,可以通过设置数据库的local_listener参数来实现。
当监听为动态监听时,须在服务器端配置相应tnsname.ora文件, 应为PMON需要靠本机tnsnames.ora配置来解析动态注册与动态监听ADDRESS相同的NET_SERVICE_NAME(监听名),如果更改需重新指定
另,动态监听需要制定数据库参数local_listerner,设置为服务器端的tnsnames的动态监听的连接字符串,并在设置后手动注册 alter system register
系统推荐使用静态监听,动态监听时将数据库作为程序注册到监听,自动将实例名instance_name与serv_name注册到listener中,
没有serv_name将db_name与db_domain拼接,serv_name可以有多个,默认注册到1521监听中。
监听常用命令
启动监听
$ lsnrctl start
停止监听器的命令为
$ lsnrctl stop
监测监听器当前状态的命令为
$ lsnrctl status 静态监听状态永远为unknown, 动态监听状态在动态注册后为READY
当 lsnrctl status 命令有如下输出结果
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR
for Linux: Version 8.1.7.4.0 - Production
Start Date 17-JAN-2004
19:00:08
Uptime 31
days 15 hr. 27 min. 59 sec
-转载补充
listener启动时候根据listener.ora配置的信息静态注册可用的服务,同时数据库实例启动以后(PMON)会把
service_names,db_name的值动态的注册到Listener。
例如,如果service_names的值为orcla,orclb,db_name的值为orcl,在listener.ora里有如下配置:
(SID_DESC =
(GLOBAL_DBNAME = orclst)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = orcl)
)
则在Tnsname.ora中可以作为SERVICE_NAME的值为orcla,orclb,orcl,orclst
通过lsnrct status 可以看到这些服务的信息: status READY的为动态注册的(因为是在实例启动之后才注册到listener的,所以状态为ready),status UNKNOWN的为静态注册的(因为是listener启动的时候根据配置启动的,这是实例是否启动是不知道的,所以为unknown)
相关文章推荐
- OCM考试经验--RMAN基础详解(三)--备份详解
- OCM考试经验--物化视图日志详解
- OCM考试经验---各种names、name参数
- OCM考试经验--物化视图详解及用
- CSDN第一篇博文——iOS上架经验分享
- 第一篇博文——吐槽CSDN开通博客三天内不准发博文
- 10g OCM考试大纲 (中文版)
- 第一篇博文
- 写给自己的第一篇博文
- 终于把第一篇博文发出去了,还是新版UC浏览器给力
- OCM考试经历:Section 0:创建数据库
- BEC考试经验谈
- 第一篇博文
- 密码登录框--第一篇正式博文
- 致我的第一篇博文
- 第十周博文作业-小学生考试系统(1)
- 通过SCMAD认证考试的经验
- 我的第一篇IT博文:关于查找“吸血鬼数字”算法的讨论
- 我的第一篇博文
- 第一篇博文