oracle 12C环境下,数据库启动得了,但是监听启动不了
一般情况下,看三个方面
- /etc/hosts下面的主机名配置问题,是否配置正确
- 看listener的配置,看listener下面的lintener.ora文件是否正确
- tnsname下有一个原始linstener配置,查看是否配置一致
找问题所在流程: - 找到listener的参数文件
[oracle@sjzk30 admin]$ lsnrctl status
LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 13-APR-2020 11:18:26
Copyright © 1991, 2014, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sjzk30)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date 13-APR-2020 11:17:57
Uptime 0 days 0 hr. 0 min. 29 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /home/storage/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /home/storage/app/oracle/diag/tnslsnr/sjzk30/listener/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sjzk30)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully - 查看ip(据实施描述,该数据库是因为改了IP之后,数据库就启动不了,所以先看一下ip)
[root@sjzk30 admin]# ifconfig
eno16780032: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.10.10.60 netmask 255.255.255.0 broadcast 10.10.10.255
inet6 fe80::250:56ff:fe8e:79c prefixlen 64 scopeid 0x20
ether 00:50:56:8e:07:9c txqueuelen 1000 (Ethernet)
RX packets 4360064 bytes 387234377 (369.2 MiB)
RX errors 0 dropped 10 overruns 0 frame 0
TX packets 54332 bytes 24366243 (23.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno33559296: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.10.3.30 netmask 255.255.255.0 broadcast 10.10.3.255
inet6 fe80::250:56ff:fe8e:6a8f prefixlen 64 scopeid 0x20
ether 00:50:56:8e:6a:8f txqueuelen 1000 (Ethernet)
RX packets 1089593 bytes 69417752 (66.2 MiB)
RX errors 0 dropped 10 overruns 0 frame 0
TX packets 52175 bytes 22258291 (21.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
RX packets 174236 bytes 10755503 (10.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 174236 bytes 10755503 (10.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 - 查看hosts名字(前面说过,监听出问题,一般情况下要看hosts的文件配置是否出错)
[root@sjzk30 admin]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.10.10.60 sjzk30
之前看到该文件下的ip还是10.10.3.30,并不是更改之后的10.10.10.60,所以首先更改他的hosts里面的内容,把Ip改为他之后更改的Ip
[root@sjzk30 admin]#hostnamectl set-hostname hadoop1 sjzk30 - 然后我们再去到监听目录下面去查看tnsname.ora文件
[root@sjzk30 admin]# cd /home/storage/app/oracle/product/11.2.0/db_1/network/admin
更改此处的HOST地址,改为更改之后的IP地址为‘10.10.10.60’
更改之后为:
5.此时尝试启动监听,发现监听还是启动不了,则尝试重建监听
[oracle@sjzk30 admin]$ export DISPLAY=10.10.10.51:0.0
[oracle@sjzk30 admin]$ export LANG=en_US
[oracle@sjzk30 admin]$ netca
6.重建监听还是不行,找到实例名,在数据库中将监听配置对应正确
[oracle@sjzk30 admin]$ sqlplus / as sysdba
sql>ALTER SYSTEM SET LOCAL_LISTENER =’(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.229)(PORT = 1521))’ SID = ‘sjzk03’;
7. 然后再启动数据库监听,就启动起来了**