oracle 19c 动态监听 The listener supports no services
时间: 2024-08-13 09:07:16 浏览: 183
Oracle 19c 中的动态监听(Dynamic TNS Listener)是一个关键组件,它负责管理数据库实例间的网络连接。如果遇到 "The listener supports no services" 这样的错误消息,通常意味着监听器未能识别或配置任何可用的服务(如数据库实例)。
1. **服务注册**:检查数据库是否已经正确注册,并且监听器配置文件 (listener.ora) 中是否包含了相应的TNS 名称 (service name) 和监听端口。如果没有,需要添加相应的服务描述。
2. **启动/重启服务**:确保相关的数据库服务(如 XDB, ORCL, 或其他服务名)已经启动,并且监听器知道如何连接到它们。可以尝试手动启动服务或重启监听器。
3. **检查配置文件**:确认监听器配置中没有语法错误,也没有因为更改数据库实例位置或网络设置而过时的配置。
4. **清理并重新创建静态或动态注册**:如果使用的是动态注册,尝试清空动态注册缓存 (`lsnrctl clear cache`),然后重新启动监听器。
5. **查看错误日志**:查阅 listener.log 文件中的详细错误信息,这可能包含关于问题的具体原因和解决步骤。
相关问题:
1. 如何检查 Oracle 19c 的监听器配置文件?
2. 在Oracle 19c中,如何手动启动数据库服务?
3. 如何通过命令行工具查看监听器的日志文件?
相关问题
oracle19c配置监听
可以通过以下步骤来配置Oracle 19c监听:
1. 打开监听程序配置文件listener.ora
在Oracle 19c中,listener.ora文件位于$ORACLE_HOME/network/admin目录下。可以用文本编辑器打开该文件,或者使用lsnrctl工具来修改监听器配置。
2. 配置监听器名称和协议
在listener.ora文件中,可以定义一个或多个监听器名称及其使用的协议。例如,可以定义一个TCP协议的监听器,监听端口为1521,监听器名称为LISTENER。
示例配置:
```
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521))
)
)
```
3. 启动监听器
在命令行中,使用lsnrctl start命令启动监听器。如果配置文件中只有一个监听器,可以省略监听器名称。
示例命令:
```
lsnrctl start
```
启动成功后,可以使用lsnrctl status命令来验证监听器是否处于运行状态。
4. 测试连接
使用sqlplus工具连接到Oracle数据库,输入以下命令:
```
sqlplus username/password@hostname:port/SID
```
其中,username是数据库用户名,password是密码,hostname是数据库服务器主机名(或IP地址),port是监听器监听的端口号,SID是Oracle数据库实例名。
如果连接成功,则表示Oracle 19c监听配置成功。
oracle19c 静态监听配置
1. 确认Oracle数据库版本:可以通过以下命令查看:
```
$ sqlplus / as sysdba
SQL> select banner from v$version where rownum=1;
```
2. 创建监听文件:在Oracle安装目录下的`NETWORK/ADMIN`目录中创建`listener.ora`文件,内容如下:
```
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 主机名或IP地址)(PORT = 监听端口号))
)
)
```
其中,主机名或IP地址为数据库服务器的主机名或IP地址,监听端口号一般为`1521`。
3. 修改`tnsnames.ora`文件:在同一目录下的`tnsnames.ora`文件中增加以下内容:
```
SERVICE_NAME =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 主机名或IP地址)(PORT = 监听端口号))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = 数据库实例名)
)
)
```
其中,主机名或IP地址和监听端口号与`listener.ora`中一致,数据库实例名为Oracle数据库实例的名称。
4. 启动监听:执行以下命令启动监听:
```
$ lsnrctl start
```
如果监听已经启动,可以使用以下命令重新加载监听配置文件:
```
$ lsnrctl reload
```
5. 验证监听是否正常工作:执行以下命令验证监听是否正常工作:
```
$ lsnrctl status
```
如果监听正常工作,将输出类似以下内容:
```
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 19-JUL-2021 10:56:11
Uptime 0 days 0 hr. 0 min. 1 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
Services Summary...
Service "ORCLCDB" has 1 instance(s).
Instance "ORCLCDB", status READY, has 1 handler(s) for this service...
Service "ORCLPDB1" has 1 instance(s).
Instance "ORCLCDB", status READY, has 1 handler(s) for this service...
The command completed successfully
```
其中,`Services Summary...`部分列出了Oracle数据库实例的服务名称,如果显示了正确的服务名称,则说明监听正常工作。
阅读全文
相关推荐















