数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

理解oracle的“lsnrctlstatus”


发布日期:2023年05月05日
 
理解oracle的“lsnrctlstatus”

先看看 lsnrctl status 的输出信息

Services Summary

Service PLSExtProc has instance(s)

Instance PLSExtProc status UNKNOWN has handler(s) for this

service

Service catadb has instance(s)

Instance catadb status UNKNOWN has handler(s) for this

service

Instance catadb status READY has handler(s) for this service

Service catadbXDB has instance(s)

Instance catadb status READY has handler(s) for this service

The command completed successfully

这里提出两个问题

输出中显示的这些 service 是在哪里定义的?

为什么一个 service 会有两个 instance?

先来看第二个问题从oracle 版本后在listenerora文件中没有为数据库预先定义条目的时候instance 和 listener 可以自动的互相发现但是习惯上在listenerora文件中为每个数据库定义一个SID_DESC条目以便在需要的时候使用这就使服务catadb有两个实例:

一个状态是 UNKNOWN 的实例 是在 listenerora 文件中静态定义另一个状态是 READY 的实例是当数据库启动时 PMON进程自动把数据库注册到监听器在数据库启动后每一分钟注册一次在使用OEM等工具时需要有监听的静态定义

再来看看这些服务是怎么定义的oracle有三种监听方式

Database

提供对数据库实例的网络访问

PLSExtProc

PL/SQL 包访问操作系统可执行程序的方法

Executable

提供对操作系统可执行程序的网络访问

Service PLSExtProc 是在 listenerora 文件中为数据库实例缺省配置的允许PL/SQL包访问外部程序

Service catadb 也是在 listenerora 文件中配置是每个数据库连接使用的标准模式

Service catadbXDB 是Oracle i以后版本创建数据库时默认包含的XML DB特性提供httpftp等服务在初始化文spfile(或pfile)中定义

上一篇:常用数据库JDBC连接写法大全

下一篇:Oracle10g之ORA-32004问题