lsnrctl 是 Oracle 数据库监听器的命令行工具,用于管理和监控 Oracle 数据库监听器。在 Debian 系统上,lsnrctl 的配置文件通常位于 $ORACLE_HOME/network/admin 目录下,主要的配置文件是 listener.ora 和 tnsnames.ora。
listener.ora 文件包含了监听器的配置信息,例如监听器名称、监听地址、监听端口、服务名等。以下是一个典型的 listener.ora 文件示例:
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = ORCL)
      (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)
    )
  )
ADDITIONAL_LISTENER_PARAMS =
  (SECURITY_LISTENER = (SSL_VERSION = 1.2))
LISTENER: 定义监听器的名称和描述。
DESCRIPTION_LIST: 包含一个或多个 DESCRIPTION 块,每个块定义了一个监听地址。
ADDRESS: 定义监听器的协议、主机名和端口号。SID_LIST_LISTENER: 定义监听器支持的服务名和对应的 Oracle Home 路径。
SID_LIST: 包含一个或多个 SID_DESC 块,每个块定义了一个服务名和对应的 Oracle Home 路径。
SID_NAME: 服务名。ORACLE_HOME: Oracle Home 路径。ADDITIONAL_LISTENER_PARAMS: 定义额外的监听器参数。
SECURITY_LISTENER: 定义监听器的安全参数,例如 SSL 版本。tnsnames.ora 文件包含了数据库服务名的别名和连接信息,用于客户端连接到数据库。以下是一个典型的 tnsnames.ora 文件示例:
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.example.com)
    )
  )
ORCL_XDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.example.com)
    )
    (SID_DESC =
      (SID_NAME = XDB)
      (ORACLE_HOME = /opt/oracle/product/19c/dbhome_1)
    )
  )
ORCL: 定义了一个服务名的别名和连接信息。
DESCRIPTION: 包含连接信息的描述。
ADDRESS: 定义连接的协议、主机名和端口号。CONNECT_DATA: 包含连接数据。
SERVER: 连接类型,例如 DEDICATED 或 SHARED。SERVICE_NAME: 服务名。ORCL_XDB: 定义了另一个服务名的别名和连接信息,并额外指定了 SID。
SID_DESC: 定义了 SID 信息。
SID_NAME: SID 名称。ORACLE_HOME: Oracle Home 路径。listener.ora 文件用于配置监听器,包括监听地址、端口和服务名等信息。tnsnames.ora 文件用于配置数据库服务名的别名和连接信息,方便客户端连接。通过正确配置这两个文件,可以确保 Oracle 数据库监听器和客户端能够正常通信。