Oracle 监听器(Listener)是 Oracle 数据库网络架构中的关键组件,负责接收客户端连接请求并将其转发到相应的数据库实例。以下是设置和管理 Oracle 监听器的详细步骤。
lsnrctl status
lsnrctl start
lsnrctl stop
监听器配置文件通常位于:
- $ORACLE_HOME/network/admin/listener.ora
- $ORACLE_HOME/network/admin/tnsnames.ora
基本监听器配置示例:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521))
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = your_db_name)
(ORACLE_HOME = /path/to/oracle/home)
(SID_NAME = your_sid)
)
)
客户端连接配置示例:
YOUR_DB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = your_service_name)
)
)
Oracle 实例可以自动向监听器注册,无需在 listener.ora 中静态配置:
-- 在数据库中执行
ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))' SCOPE=BOTH;
ALTER SYSTEM REGISTER;
LISTENER1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))
)
LISTENER2 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = host2)(PORT = 1522))
)
lsnrctl set current_listener LISTENER1
lsnrctl set log_directory /path/to/logs
lsnrctl set log_status on
lsnrctl set trace_level admin
设置监听器密码:
lsnrctl
set password
change_password
save_config
在 listener.ora 中禁用不必要的协议:
ADMIN_RESTRICTIONS_LISTENER=ON
以上是 Oracle 监听器设置的基本指南,具体配置应根据您的实际环境和需求进行调整。