静动态侦听及报错

 

今天在玩测试环境的时候,有好几个侦听端口,我就嫌麻烦,他多余的删除了。只留下一个默认的LISTENER,结果发生了错误。

无法连接,我的服务器ip为:192.168.1.2

wKiom1VA6RqgcLlcAAASsP_cl18008.gif

报错:目标主机不可达,

意思很明显,就是ip问题。我查看了一下本地ip和两个配置侦听的参数,发现ip都没有问题:

我就去用grid用户登录打开侦听配置界面在netmgr里面把listener的实例名改为固定ip地址

然后发现有出现新的错误:

wKioL1VA6u6RYEDyAAAWZRl-TgA672.gif

发现目标地址正在使用????我想,那不是废话吗,我服务器ip就是当前配置的ip地址呀。

然后去diag下面查看日志。看到原因了。Hos_addr目标ip与自己本机的ip不一致,突然想到还有hosts文件里面没有修改对应关系,前段时间改了ip地址,忘记更改hosts里面的关系了。

wKiom1VA6e2ghS5iAAF0ELpvopI059.jpg

然后去在/etc/hosts文件里面ip对应关系修改一下。把ip改成服务器当前地址。

1.目标连接不可达。。ip问题

2.地址正在使用。          当前系统ip正确。。查看是否修改过ip地址。查看与之相关联的配置ip是否全部更改如hosts文件、DNS

 

修改完之后我就发现

wKioL1VA68fxq0xBAAAeLLhf8Uo156.gif

是静态注册的,这时候我又想把它改为动态的了。

然后输入了一条命令:

动态注册:

alter system setlocal_listener=’(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.11.2)(PORT=1111)))’scope=both;

再来看监听状态。

wKioL1VA7mug6dU7AAAKQfcCNLY771.gif

突然发现,我的orcl实例怎么开启了两个侦听,一个动态一个静态呢??

什么问题???心里又不爽了。决定要干掉一个,因为这肯定是不正常的,为了确保服务正常,我们要求静态取消掉。

首先我们来看一下配置文件

wKiom1VA7UKh0g6-AAAadH2xPq0716.gif


哦~~~~发现问题了:静态注册的代码还在配置文件里面呢。有了这句话他就是静态注册的侦听了:


把它注释掉(注释,就是在他前面 加上#号)。然后再来查看一下

wKiom1VA7ZiR69rdAAAjhWVaKv8398.gif

此刻我们发现我的orcl实例已经是动态注册了。而且只有一个了。

现在恢复正常了。

 

为了避免以后再犯这种错误呢,

做了一下总结:

如果你想要静态注册呢

(图形化操作很简单,这里我就不说了,只说一下配置文件的注册)

1.

使用grid用户进入到配置目录下,cd /u01/app/grid/product/11.2.0/grid/network/admin/

Vim listener.ora                       --修改这个文件,加入以下语句

SID_LIST_LNS1 =                --LNS1为你想要成为静态注册的侦听服务名

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME =orcl.example.com)          --参照自己的服务名

      (ORACLE_HOME =/u01/app/oracle/product/11.1.0/dbhome_1)         --参照自己的路径

      (SID_NAME = orcl)

    )

  )

LNS1 =                    --侦听名字

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))--host服务器ip地址及端口号

  )

2.

然后进入到oracle用户下去注册侦听服务

同样oracle修改相应的配置文件:/u01/app/oracle/product/11.1.0/dbhome_1/network/admin

vim  tnsnames.ora

ORCL =            实例名,改为自己数据库的实例名字,

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))    --服务器ip和段括号

    )

    (CONNECT_DATA =

        (SERVER = DEDICATED)

      (SERVICE_NAME = orcl.example.com)

    )

  )


你检查服务网路配置是否问题?

检查侦听启动没有

你的数据服务名注册没有

lsnrct status  侦听名字

lsnrctl start  LNS1    启动这个侦听。

ok了


如果想要动态注册呢?

第一:关掉静态注册,如上配置,把上面的语句注释掉,前面加#号就可以了

如下:

#  (SID_LIST =

#    (SID_DESC = 

#      (GLOBAL_DBNAME = orcl.example.com)

#      (ORACLE_HOME = /u01/app/oracle/product/11.1.0/dbhome_1)

#      (SID_NAME = orcl) 

#    )

#  )


然后使用命令:

alter system set local_listener=’ (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.2)(PORT=1111)))’scope=both;

scope =both 说明是立即生效

这怎么好用呢?记住前面的 alter system set local_listener=’’ 就可以了

单引号里面的路径怎么来的呢??

查看你的侦听当前状态

Lsnrctl status

wKioL1VA-EKzrFvtAAAjxAgsPoU073.gif

就是这一句。把它copy上去就可以了。

这样动态侦听就生成了。

 

侦听相关的命令:

Lsnrctl status

Lsnrctl stop

Lsnrctl start

SQL>show parameter local  可以看到侦听是动态还是静态

 

Grid用户:

Vim /u01/app/grid/product/11.2.0/grid/network/admin/listener.ora

这里是配置侦听信息的文件,想要增删侦听这里来配置

Oracle用户改:

/u01/app/oracle/product/11.1.0/dbhome_1/network/admin/tnsnames.ora

这里是开启关闭侦听的。比如,我把端口号换一下,那么侦听就失效了。。

我做了一个比喻:gridlistener.ora就是服务商有没有给你装摄像头

                                     Oracletnsname.ora就是我要不要开启这个摄像头。

这就是一些简单的侦听配置文件


 

此文章还有不足之处,还请各位多多赐教

你可能感兴趣的:(listener,服务器,静态侦听,动态侦听)