windows服务未启动导致 ORA-12560和RMAN-00554错误
今天,有人在群里问RMAN-00554、RMAN-04005、ORA-12560错误,如下:
C:Usersstream>rman target / 恢复管理器: Release 11.2.0.1.0 - Production on 星期二 3月 19 16:03:14 2013 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-00554: 内部恢复管理器程序包初始化失败 RMAN-04005: 目标数据库中存在错误: ORA-12560: TNS: 协议适配器错误
这个问题通常是由于windows系统ORACLE服务没有启动导致的,windows系统数据库与服务绑定,只有服务启动后,才可以对数据库做操作,比如,windows系统数据库服务没有启动,sqlplus连接本地数据库就会报错。
C:Usersstream>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期二 3月 19 15:59:53 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. ERROR: ORA-12560: TNS: 协议适配器错误 请输入用户名:
由于linux没有服务这一说,所以linux在数据库没有启动的情况下,sqlplus和rman都可以直接连接数据库,如果数据库没有打开,sqlplus会提示连接到空闲实例,rman会提示数据库未启动。
[oracle@secdb2 ~]$ ps -ef | grep smon oracle 7061 1 0 05:45 ? 00:00:00 asm_smon_+ASM oracle 15483 8553 0 16:37 pts/1 00:00:00 grep smon
从上面可以看到,数据库没有启动。
[oracle@secdb2 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Tue Mar 19 16:38:17 2013 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to an idle instance.
sqlplus提示连接到空闲实例。
[oracle@secdb2 ~]$ rman target / Recovery Manager: Release 11.2.0.3.0 - Production on Tue Mar 19 16:38:37 2013 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database (not started)
rman则提示数据库未启动。
windows启动服务很简单,只需要右键计算机或我的电脑->管理->服务和应用程序->服务,然后找到要启动的服务,点击启动就可以了。但是如果不想每次开机都启动数据库的话,那么每次想用数据库时都需要走一遍这个流程,很麻烦,下面介绍下用命令行启动数据库服务,比如我的数据库服务名是OracleServiceDBDREAM,可以用下面的命令在命令行启动这个数据库服务。
C:Windowssystem32>net start OracleServiceDBDREAM OracleServiceDBDREAM 服务正在启动 ............ OracleServiceDBDREAM 服务已经启动成功。
默认ORACLE数据库在windows系统上的服务名是OracleService+数据库的实例名,上面是用Administrator用户登录的情况下,这个命令可以直接运行,如果使用非Administrator的其他管理员用户登录系统的话,运行上面的命令,可能遇到下面的错误。
C:Usersstream>net start OracleServiceDBDREAM 发生系统错误 5。 拒绝访问。
这样只需要邮件命令提示符,选择以管理员身份运行即可,如下图所示:
但是每次都这样操作还是很麻烦,邮件命令提示符,点击属性->快捷方式->高级,如下图:
点击高级按钮后,会弹出以下界面。
勾选用管理员身份运行,确定,这样以后再使用命令行的时候,就一直是管理员身份了。
当windows的数据库服务启动后(默认数据库也直接启动了),就可以使用sqlplus和rman了,如下所示:
C:Windowssystem32>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期二 3月 19 17:59:00 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. 连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production With the Partitioning option SQL>
只要windows的数据库服务启动,哪怕是数据库没有起来,sqlplus也可以连接数据库,rman同样也可以。
C:Windowssystem32>rman target / 恢复管理器: Release 11.2.0.1.0 - Production on 星期二 3月 19 18:00:03 2013 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 连接到目标数据库: DBDREAM (DBID=2326242578) RMAN>
windows的服务启后,剩下操作的基本就可linux一样了,可以通过sqlplus关闭和启动数据库。监听也一样,也需要先启动相关的服务。