Oracle数据库采用的客户端-服务器的Client-Server的架构。Oracle的客户端需要通过使用Oracle数据库提供的网络环境来建立与服务器端通信,从而实现正常的数据库访问。Oracle的网络环境如下图所示。
监听程序在Oracle网络服务的作用是非常重要的。监听程序会负责为客户端建立与数据库服务器之间的连接。Oracle提供了命令lsnrctl用于启动和停止监听程序。下图展示了Oracle客户端是如何通过监听器程序与数据库服务器端建立连接的。
从图中可以看出,当客户端与数据库服务器端建立连接后,客户端执行的所有SQL语句将直接由Oracle数据库的服务器进程执行。因此,Oracle的监听器只在建立连接时会用到。视频讲解如下:
对于数据库管理员DBA来说,启动和关闭Oracle监听器是很基础的任务。但是对于Linux系统管理员或者程序员有时也需要在开发数据库中做一些基本的数据库管理操作,因此了解一些基本的管理操作对他们来说很重要。Oracle数据库提供了命令lsnrctl来管理监听器。该命令可以检查监听器的状态、启动监听器和停止监听器。这里通过具体的步骤来演示如何使用命令lsnrctl。
(1)查看命令lsnrctl的帮助信息。
lsnrctl help # 输出的信息如下: LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 20-MAR-2022 16:29:12 Copyright (c) 1991, 2021, Oracle. All rights reserved. The following operations are available An asterisk (*) denotes a modifier or extended command: start stop status services servacls version reload save_config trace spawn quit exit set* show*
(2)查看监听的状态。
lsnrctl status # 输出的信息如下: LSNRCTL for Linux: Version 21.0.0.0.0 - Production on 20-MAR-2022 16:30:29 Copyright (c) 1991, 2021, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oraclevm)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 21.0.0.0.0 - Production Start Date 06-DEC-2021 10:19:41 Uptime 104 days 6 hr. 10 min. 48 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/homes/OraDB21Home1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/oraclevm/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oraclevm)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=oraclevm)(PORT=5500)) (Security=(my_wallet_directory=/u01/app/oracle/admin/orcl/xdb_wallet)) (Presentation=HTTP)(Session=RAW)) Services Summary... Service "Oracle8" has 1 instance(s). Instance "ORCL", status UNKNOWN, has 1 handler(s) for this service... Service "c8209f27c6b16005e053362ee80ae60e" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... Service "orcl" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... Service "orclXDB" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... The command completed successfully # 在输出的监听状态信息中,包含了以下的内容: # (*)监听器的启动时间 # (*)监听器的运行时间 # (*)监听器参数文件listener.ora的位置 # (*)监听器日志文件的位置