您的位置:首页 > 博客中心 > 数据库 >

Oracle 11g R2网络侦听器实验

时间:2022-03-16 11:27

单实例环境(不是RAC),侦听器和实例必须要在同一台机器上。两台机器通信必须使用一个网络协议才能进行通信,假如浏览网页需要使用http协议,远程连接需要使用RDP/ssh/telnet等等。

有一台oracle服务器,有个客户端要连接到oracle服务器上,两台机器通信就要使用oracleNET协议,和以上的协议是一样的。有协议就要有相应的端口,所以oracleNET有个默认的侦听端口1521.

其实配置oracle网络就是配置oracle侦听器,侦听器很重要,如果没有配置侦听器,客户端是无法连接到oracle服务器上面的。其实即使是在本地连接oracle服务器,侦听器也是必须要运行的。客户端远程连接到oracle服务器时使用oracleNet协议,是被封装到了tcp/ip协议中。如果是直接在本地连接数据库用的是IPC。IPC是指<进程间的通信>。

侦听器是用来接收外面的请求,在将外面的请求通过服务器进程交给实例,所以实例必须要向侦听器注册。如果监听器不知道有相应的实例肯定是不行的--即让侦听器知道有实例可以连接。oracle默认侦听器的端口是1521。

侦听器的配置文件存放在:$ORACLE_HOME/network/admin/中的instener.ora是侦听器的配置文件
技术分享图片
如果listerner的端口使用默认的1521的话,可以没有listener.ora,但是建议最好不要删除这个文件。

创建侦听器

可以通过修改listener.ora来配置侦听器以外,还可以使用其他工具来配置侦听器

netca

netmgr

使用netca添加侦听器的方法
技术分享图片
技术分享图片
技术分享图片
技术分享图片
技术分享图片
技术分享图片
技术分享图片
技术分享图片
技术分享图片技术分享图片技术分享图片
查看默认侦听器的状态
技术分享图片
查看LISTENER1的状态
技术分享图片
技术分享图片
远程客户端连接方式

远程客户端连接oracle服务器可以使用以下两个方式:

1.easy connect: conn user/password@ip:port/orcl as sysdba

2.tnsnames: conn user/password@XX

使用easy connect方式远程连接oracle服务器

客户端是win7系统,需要安装oracle客户端程序
技术分享图片技术分享图片
删除listener.ora文件中的标识的行
技术分享图片
停止侦听器服务

[oracle@orclsrv admin]$ lsnrctlstop

启动侦听器服务

[oracle@orclsrv admin]$ lsnrctl start

再去连接实例时,就无法连接,提示没有listener.
技术分享图片
将侦听器还原到没有删除之前的状态,然后重启服务lsnrctl stop/start

使用netmgr工具

删除listener1侦听器,单击左侧“X”按钮
技术分享图片技术分享图片

可以使用easy connect和tnsnames的方式连接
技术分享图片
Tnsnames连接方法:<推荐的客户端连接方式> conn user/password@XX

Tnsnames涉及到一个文件:tnsnames.ora是一个客户端的工具,将tnsnames.ora拷贝到oracle客户端安装目录中。
技术分享图片
技术分享图片
使用记事本打开tnsnames.ora文件,原始内容如下
技术分享图片
对原始内容中如图所示部分复制并粘贴到tnsnames.ora中的空白位置,进行修改
技术分享图片
修改为
技术分享图片
然后保存退出。

连接实例
技术分享图片
使用netmgr添加监听器
技术分享图片
技术分享图片
技术分享图片
技术分享图片
技术分享图片
技术分享图片
使用listener1侦听器连接实例,结果是无法连接到实例,因为实例orcl并没有在listener1侦听器上注册。默认情况下orcl实例注册到了默认的侦听器1521上面,所以目前只能使用1521来连接。
技术分享图片
实例注册到侦听器的方法有:

静态注册:在listener.ora文件中手工指定

动态注册:pmon进程每隔一分钟将服务名和实例名注册到侦听器上面

将实例注册到侦听器的方法技术分享图片
使用alter system register可以将实例注册到侦听器上。这个命令将实例注册到哪个侦听器上了呢?这条命令将实例注册到了默认的侦听器上面了。
技术分享图片
技术分享图片
ORCL是tnsnames中的解析名:即使用ORCL就能够解析出(ADDRESS = (PROTOCOL = TCP)(HOST =orclsrv)(PORT = 1521))这个地址。

SQL>alter system set local_listener="(ADDRESS = (PROTOCOL = TCP)(HOST= orclsrv)(PORT = 1521))";与alter system set local_listener=ORCL是等价的。

将实例注册到listener1上面

SQL>alter system set local_listener="(ADDRESS = (PROTOCOL = TCP)(HOST= orclsrv)(PORT = 1522))";
技术分享图片
此时使用默认的侦听器就无法连接到实例了。
技术分享图片
修改tnsnames.ora中的文件
技术分享图片
SQL>alter system setlocal_listener=LISTENER2;

系统已更改。

查看实例注册到了哪个侦听器上面:show parameter local;

如果对此文有什么问题的话,请加下面微信一起探讨
技术分享图片

本类排行

今日推荐

热门手游