您的位置:首页 > 数据库 > Oracle

lsnrctl status看不到监听注册的实例

2016-08-05 14:21 162 查看
作为一个初学者接触到ORACLE时,对监听的理解总是很模糊,经常遇到这样的问题:明明数据库已经起来了,监听也起来了,为啥lsnrctl status时,还是看不到监听注册的实例呢(如下图)?。现在学了有段时间了,对此也渐渐明朗了。下面是个人对这一问题的理解:

首先要清楚监听是用来干嘛的?

打开本地机器a上的数据库不需要监听,其它机器b,c,d...连入a机器上的数据库时就需要监听了。

监听注册到实例,外接机器才能连入数据库。

在这里本地机器a可以当做一个房子a,数据库可以当做房子里的一个个的柜子,而监听可以当做房子里管理柜子的管家,实例可以当做房间里柜子的钥匙(钥匙在房间a里可以随便拿)。

这时候你若是在房子a里(数据库所在的本机上),那就可以拿到房间a里的所有钥匙(实例),想开哪个柜子就开哪个柜子(数据库)。

若你在其他房子b,c,d.......里,想要开房间a的柜子时,就需要通过管家帮你拿钥匙开柜子了。这时候开柜子的过程又分两种了:

第一种:

管家先起来拿到钥匙再去开对应的柜子(监听先启动,再启动数据库),这时候管家很清楚的知道自己拿到了对应的钥匙(lsnrctl status时能看到监听注册的实例)。

第二种:

管家还在睡觉,钥匙在柜子上柜子已经开了(PS:别在意这种情况怎么出现的,它就是这样的)(数据库先启动,再启动监听),这时候管家没有拿到对应的钥匙(lsnrctl status时不能看到监听注册的实例),等管家睡醒了就会看到开了的柜子,进而拿到对应的钥匙(这时候再lsnrctl status时就会看到监听注册的实例)(PS:在单机环境里等“管家睡醒拿到钥匙”这段时间约在1分钟之内。)若想开柜子的人等不及了,就会打电话给管家把管家叫醒:“你丫的赶紧给我起来!”(在SQL下执行alter system register命令)这时候管家就被立马惊醒,拿到钥匙。(这时候再lsnrctl
status时就会看到监听注册的实例)。

所以当你在确定启动了数据库和监听而lsnrctl status却看不到监听注册的实例时,可以等上1分钟左右(等管家睡醒),再lsnrctl status就会看到监听注册的实例;

                                                                                                                                               也可以在SQL下执行alter system register命令(把管家叫醒),无需等待,再lsnrctl status就会看到监听注册的实例;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle 数据库