oracle服务起不来以及无法监听问题解决

时间:2021-09-01 17:09:04

  改问题是在搭建起一个很早之前的数据库的时候碰见的,虽然这个问题网上已经有很多相关的帖子,但因最近碰见多次这样的问题,特此简单记录:

1.最开始碰见的问题是:The listener supports no services

之前的记录没有存,借用其他贴相似错误:

oracle服务起不来以及无法监听问题解决
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracke11g)(PORT=1521)))  --这里标红的是借用帖子的Host,实际是从本地解析出来的,最后错误也是从这里定位的
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

错误提示显示可能是数据库实例没有注册上去,故可以手动注册下:

登录数据库:
$sqlplus / as sysdba

显示服务名:
SQL>show parameter service_names

强制注册服务:
SQL>alter system register;

查看监听状态:
$lsnrctl status

显示依然是没有成功,重启数据库以及监听,还是不成功,然后查看数据库的监听文件(路径可以通过上面的监听状态看到)

在监听文件Listener.ora文件添加了静态实名注册;

SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=orcl)(SID_NAME=orcl)(ORACLE_HOME=/opt/app/oracle/product/11.2.0/orcl)))

重启以后服务启动,但是报新的错误:

Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...

然后根据该博文 进行排查,先手工注册实例,,发现没有成功,然后根据其排查思路看到查看/etc/hosts文件,同时看到在启动监听的时候发现没有正确的解析出host(该部分无法还原,正常情况应该是host=具体实例名,后来发现问题是host=..a这样类似一个奇怪的东西),于是考虑改动如下:

[root@DBORACLE etc]# less hosts
127.0.0.1   DBORACLE localhost.localdomain localhost4 localhost4.localdomain4

同时修改tns与listener.ora文件对应实例名:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = DBORACLE)(PORT = 1521))
    )
  )

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DBORACLE)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

然后重启数据库与监听,问题解决。

ref:

1).http://gaoshan.blog.51cto.com/742525/477281

2).http://www.aichengxu.com/view/43907

3).http://blog.itpub.net/29674916/viewspace-1763144/

数据库表空间坏块,导致登入数据库时候显示不能读取数据,删除数据库时候碰到问题解决如下:

http://blog.csdn.net/comchq/article/details/8654611

http://www.cnblogs.com/kerrycode/p/4615875.html