登录SQLplus时报了一个异常:
ORA-01033: ORACLE正在初始化或关闭
环境是Windows7操作系统,Oracle 12c。我的解决方法是这样的:
0x01
打开命令行界面,输入sqlplus system/sys as sysdba
以管理员方式登录
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\Berlin>sqlplus system/sys as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on 星期五 6月 15 17:15:28 2018
Copyright (c) 1982, 2016, Oracle. All rights reserved.
连接到:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
0x02
输入命令startup mount
载入数据库,然而报出“ORA-01081: 无法启动已在运行的 ORACLE - 请先将其关闭”提示语句。所以使用命令shutdown immediate
卸载数据库,然后在装载。这个过程需要耗费一点时间,耐心等待。
SQL> startup mount
ORA-01081: 无法启动已在运行的 ORACLE - 请先将其关闭
SQL> shutdown immediate
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 3841982464 bytes
Fixed Size 8753768 bytes
Variable Size 889195928 bytes
Database Buffers 2936012800 bytes
Redo Buffers 8019968 bytes
数据库装载完毕。
0x03
输入alter database open;
命令。如果出现错误提书“ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项”,那么使用命令alter database open resetlogs;
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01245: RESETLOGS 完成时脱机文件 1 将丢失
ORA-01110: 数据文件 1: 'C:\APP\BERLIN\ORACLEDB\ORADATA\ORCL\SYSTEM01.DBF'
错误提示“ORA-01245: RESETLOGS 完成时脱机文件 1 将丢失”,是我之前错误的把datafile 1
给offline
了((:зゝ∠))。所以先要把它给online
一下,然后再输入alter database open resetlogs;
:
SQL> alter database datafile 1 online;
数据库已更改。
SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01113: 文件 1 需要介质恢复
ORA-01110: 数据文件 1: 'C:\APP\BERLIN\ORACLEDB\ORADATA\ORCL\SYSTEM01.DBF'
参考:system01.dbf文件被offline,导致数据库报ORA-01245 ORA-01110故障
0x04
现在,它提示“ORA-01113: 文件 1 需要介质恢复”。输入命令recover database using backup controlfile;
SQL> recover database using backup controlfile;
ORA-00279: 更改 18478439 (在 05/29/2018 23:44:10 生成) 对于线程 1 是必需的
ORA-00289: 建议:
C:\APP\BERLIN\ORACLEDB\RECOVERY_AREA\ORCL\ARCHIVELOG\2018_06_15\O1_MF_1_412_%U_.
ARC
ORA-00280: 更改 18478439 (用于线程 1) 在序列 #412 中
指定日志: {=suggested | filename | AUTO | CANCEL}
命令行现在等待你输入日志文件。我参考的是这个办法: ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项。办法是打开日志所在的文件夹,然后依次匹配。
在我的电脑上,这个文件夹路径是C:\app\Berlin\oracleDB\oradata\orcl
从REDO01.LOG
到REDO03.LOG
依次尝试,我运气好,REDO01.LOG
就是我要找的文件:
指定日志: {=suggested | filename | AUTO | CANCEL}
C:\app\Berlin\oracleDB\oradata\orcl\REDO01.LOG
已应用的日志。
完成介质恢复。
0x05
现在,再次键入命令alter database open resetlogs;
,这样我的就OK了:
SQL> ALTER DATABASE OPEN RESETLOGS;
数据库已更改。
现在,打开SQLplus,就可以登录啦 :-):
请输入用户名: SCOTT
输入口令:
上次成功登录时间: 星期六 5月 26 2018 13:32:11 +08:00
连接到:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL>