改问题是在搭建起一个很早之前的数据库的时候碰见的,虽然这个问题网上已经有很多相关的帖子,但因最近碰见多次这样的问题,特此简单记录:
1.最开始碰见的问题是:The listener supports no services
(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这样类似一个奇怪的东西),于是考虑改动如下:
[[email protected] 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