设为首页 收藏本站
查看: 1568|回复: 0

[经验分享] 第一篇博文---OCM考试经验---监听

[复制链接]

尚未签到

发表于 2015-11-9 13:15:11 | 显示全部楼层 |阅读模式
2014年只剩下一两天了,2015年是一个新的开始,而且注定会是不安分的一年,各种技能的提升为了未来更好地生活,本想在2015年的第一天完成首篇博文,因为考(fan)试(lan),一拖再拖拖到今天;)也许物质方面需要靠机会的把握,但个人的升华则是为了积攒抓住机会的资本,作为从小就喜欢电脑的人,开技术博客的时间确实是太晚了,但晚来总比不来强。之前已经考完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                 TNSLSNRfor Linux: Version 8.1.7.4.0 - Production
     Start Date               17-JAN-200419:00:08
     Uptime                  31days 15 hr. 27 min. 59 sec



         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-137069-1-1.html 上篇帖子: 监听中sqlnet.ora的作用 下篇帖子: OCM_Session7_12_安装listener监听
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表