oracle监听

监听:客户端与数据库通信建立连接的时候,帮个小忙,在数据库和客户端之间建立起连接。

特点:独立性。监听是数据库独立的一个模块,它可以在数据库启动后再起监听,或者先起监听,再起数据库。监听与数据库没有太大关系。

1.先介绍两个文件

listener.ora:他是在数据库服务端建立的。他里面就是监听的ip地址和端口号。他和监听建立连接。

LISTENER =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.40.5)(PORT = 1521))

)

tnsname.ora:他是在客户端建立的服务命名。有了这个文件,当我们登录的时候输入的网络服务名才能够被解析。

HELLO =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.40.5)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = orcl)

)

)

HELLO:网络服务名。tnsping +网络服务名  就是这个。自己可以随便定义。

(HOST = 172.16.40.5)(PORT = 1521):监听服务的位置。ip+端口。其实我们所说的服务也就是ip+端口。

(SERVICE_NAME = orcl) :监听可以链接到具体的库。

2.工作过程:

当数据库已经启动,通过客户端(sqlplus,web页面)进行连接。如在sqlplus里面输入sqlplus hr/[email protected]网络服务名。 其中用户名密码是数据库的。当客户端发起连接的时候,客户端只会做一件事:

客户端会去tnsname.ora里面解析去解析这个字符串,解析我们连谁(ip),端口号,服务名(在这个端口上面的具体服务)。所以会先连接监听。监听和数据库互相知道彼此在哪,

监听转发用户请求,转发给实例,实例会专门为这个连接启动一个前台进程,server process.同时实例将process的地址告诉监听,监听又把这个地址转发给

客户端。然后客户端知道数据库在哪了,就会直接发起一个对数据库的请求。数据库验证用户名密码,正式建立连解。注意,此时没有监听什么事了。你也可以停止监听,即监听只是知道数据库在什

么地方,和数据库之间没有长连接

而且监听,数据库和客户端建立连接的时候,负责转发。唯一出问题的就是,短时间内有大量的连接请求。感觉就是用户连接数据库的时候很慢。一般情况没有负载。

3.监听就是一个端口。客户端就是连接1521端口。自己也可以定义。

4.注册。回想上面的连接过程,当我们在监听里边转发客户端请求的时候,我们怎么知道连接哪一个库,这就得在监听里面验证,验证service_name。数据库会把自己的service_name 注册到监听里面

,而客户端会发送自己想要连接的service_name。监听里面就有两个,监听进行验证,如果两个相同,才进行连接。注册分为以下两种:

一.动态注册。实例自动注册到监听里面默认情况下,oracle数据库会把自己的service_name注册到监听里边去。PMON进程会将service_name 注册到监听

手动强制注册

alter system register;

二.2.静态注册,是为了解决oracle动态注册不稳定的情况。他通过手动添加参数实现。

查看注册方式

[[email protected] admin]$ lsnrctl status

服务 "orcl" 包含 2 个实例。

实例"orcl", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

实例"orcl", 状态 READY, 包含此服务的 1 个处理程序...

这个命令就可以查看。数据库是否在里面注册。ready这个就是自动注册。动态注册,方便。unknown这个就是手动注册的。静态注册,快,稳定。

5.方法

(1)一个数据库会有很多网卡,可以用这个命令查看侦听在哪个网卡上面。

[email protected] admin]$ netstat -tunlp |grep 1521

(Not all processes could be identified,non-owned process info

willnot be shown, you would have to be root to see it all.)

tcp       0      0 172.16.40.5:1521            0.0.0.0:*                   LISTEN

(2)查看服务命名

SQL> show parameter service;

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

service_names                        string      orcl

(3)查看实例名

SQL> show parameter instance;

(4)查看各种名字。

SQL> show parameter name

NAME                                 TYPE        VALUE

----------------------------------------------- ------------------------------

db_file_name_convert                 string

db_name                              string      orcl

db_unique_name                       string      orcl

global_names                         boolean     FALSE

instance_name                        string      orcl

lock_name_space                      string

log_file_name_convert                string

6.连接方法

sqlplus scott/tiger      不走监听

sqlplus scott/[email protected]网络服务名,即sqlplusscott/[email protected]

sqlplusscott/[email protected]:1521/orcl             这相同,只是上面有网络服务名,监听不认识,就会解析。

sqlplus / as sysdab

时间: 2025-01-31 10:05:56

oracle监听的相关文章

oracle监听(lsnrctl)详解解读

(总结)Oracle监听服务lsnrctl参数及查询状态详解 lsnrctl命令常用参数详解: lsnrctlstart启动指定的监听器 stop关闭指定的监听器 status显示监听器的状态.status命令显示监听器是不是活动的,日志与跟踪文件的位置,监听器已经持续运行了多长时间,以及监听器所监听的任务.如下图所示: services列举监听器的服务信息,比如这些服务是否有任何专用的预生成服务器进程或与之相关的调度进程,以及每个服务已有多少连接被接受或拒绝.这种方法用来检查一个监听器是否在监

Linux下修改Oracle监听地址

如果你的服务器换了ip怎么办? 如果你的服务器换了名字怎么办? 以前的小伙伴怎么办? 以前的老客户怎么办? 没关系,简单教你修改监听地址,老朋友随便找! 想要修改监听地址首先要找到两个文件,确定两样东西! 第一 你的主机名字? 第二 你的IP地址? 第三 你的listener.ora在哪里? 第四 你的tnsnames.ora在哪里? 原来的文件监听的是localhost,这个名字在/etc/hosts中会被映射成Ip地址127.0.0.1 lisenter.ora 目录在 /opt/oracl

Windows平台下Oracle监听服务启动过程中日志输出

Windows平台下Oracle监听服务启动过程中日志输出记录. 日志目录:D:\app\Administrator\diag\tnslsnr\WIN-RU03CB21QGA\listener\trace\listener.log 日志输出内容: Sat Aug 06 20:38:44 2016 系统参数文件为D:\app\Administrator\product\11.2.0\dbhome_1\network\admin\listener.ora 写入d:\app\administrator

[转] oracle 监听

oracle 监听 启动监听:lsnrctl start 查看监听:lsnrctl status 停止监听:lsnrctl stop 1.oracle 数据服务器包括:实例进程和数据库: 实例进程包括:memory structure(sga)以及background process(pmon(进程监控).smon(系统监控system monitor,空间整理3秒).dbwr(脏数据处理).lgwr(将redo buffer文件写会log),ckpt(checkpoint,同步数据,先写日志.

LINUX启动ORACLE监听和服务

可通过secureCRT或者telnet直接连 启动监听命令:lsnrctl start 成功启动后:sqlplus /nolog 回车 conn / as sysdba 回车 startup 回车 select * from user_tables; 回车 有结果,ok 启动监听和服务成功 附由于无服务导致的错误: 关于ORA-01034和ORA-27101的一种解决方法 1 先看oracle的监听和oracle的服务是否都启动了.启动oracle监听:cmd的命令行窗口下,输入lsnrctl

windows 启动关闭Oracle监听和服务 (转载)

经常要用数据库,让他自己启动的话,开机太慢,所以用命令启动方便点.   1.开启:     在运行中输入cmd,进入控制台,lsnrctl start回车,提示启动监听成功后 net start OracleServiceORCL.2 关闭     在运行中输入cmd,进入控制台,lsnrctl stop回车,提示启动监听成功后 net stop OracleServiceORCL.这样还是不太方便.     在桌面右键,新建一个记事本,输入 lsnrctl start net start Or

【转】oracle 监听静态注册举例解析

网上有很多关于oracle 监听静态注册的文章,但大多都是简单说说,并没有详细的例子,这里,将结合linux as3 下的oracle 10gR2.0.1 举一个具体的例子 1.在 $ORACLE_HOME/network/admin/listener.ora 文件中加入一个静态注册的节点 [[email protected] oracle]$ cd $ORACLE_HOME/network/admin[[email protected] admin]$ vi listener.ora# lis

oracle监听,数据库,oracle服务器的启动和停用

一.oracle监听,数据库,oracle服务器的启动和停用 使用root用户登录:切换用户su – root/root操作系统,一般只有root用户才有权限去操作系统中安装的oracle数据库服务器,然后使用数据库管理员用户去启用和停用相关服务. 1.启动oracle监听:使用root用户登录后,使用命令:lsnrctl start   //启动监听 2.启动数据库:使用数据库管理员dba用户(sqlplus '/as sysdba')去启动和关闭数据库. 连接数据库:connect  /as

Oracle监听小问题

啥情况 宁波_弈风 15:17:40 宁波_弈风 15:17:49 默认配置路径 宁波_弈风 15:18:09 宁波_弈风 15:19:13 我原来一直都在SAMPLE文件里面配置和保存,因为ORACLE安装后的3个监听器的ora文件初始都是在sample文件里面 宁波_弈风 15:20:48 用Tnsping orcl 发现监听的指定查找目录指向ADMIN文件下,不是在子文件SAMPLE,然后把之前配置的tnsnames.ora文件移到ADMIN下就好了. Oracle监听小问题

服务器重启后Oracle监听服务没有自动启动的解决方案

最近一直在被这样一个问题烦恼,就是服务器断电重启后,Oracle监听服务没有正常自动启动(监听服务已经设置为自启动). 具体是这样的,监听服务设置为开机自启动,Oracle数据库服务设置为开机延时启动,按道理这个应该符合“先启动监听,后启动数据库服务”这个条件,但是每次断电重启后都是数据库服务正常启动了,监听服务没能启动. 查阅了一下,有这么两个说法,感觉还是挺有道理: 1.一般设置了开机自启动的服务要手动,基本是注册表不一致造成: 2.登录账号跟你安装Oracle的账号不一样,没权限启动. 针