ORA-01033: ORACLE initialization or shutdown in progress

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:
这阵子折腾ORACLE数据库,今天还真给我“折腾”出问题来了,清理磁盘里面文件时,把D:\KERRY.MDF这个数据库文件删除了(呵呵,事后才想 起来的,当时以为是SQL SERVER 05 数据库实验时创建的),结果今天启动ORACLE服务后,PL/SQL连接过去时报错:ORA-01033: ORACLE initialization or shutdown in progress。查看D:\oracle\product\10.2.0\admin\orcl\bdump下告警日志,发现了下面一些错误,仅仅贴出 部分日志信息(太多了,不好贴)
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
*** 2011-05-25 23:44:51.765
ORA-01157: cannot identify/lock data file 6 - see DBWR trace file
ORA-01110: data file 6: 'D:\KERRY.MDF'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
ORA-01110: data file 7: 'D:\KERRY1.DBF'
ORA-27041: unable to open file

百度了下,在这篇帖子里面http://hi.baidu.com/nknow/blog/item/c33db8002f5d178de950cdd8.html有提供解决方法,有兴趣的可以看看。

首先用SYSDBA账号登陆数据库,当然你可以用SQL*PLUS,也可以用PL/SQL工具,我首先在命令窗口尝试输入如下命令:

SQL> SHUTDOWN NORMAL;

SHUTDOWN NORMAL

ORA-00900: 无效 SQL 语句

SQL> STARTUP MOUNT;

STARTUP MOUNT

ORA-00900: 无效 SQL 语句

SQL> ALTER DATABASE OPEN;

ALTER DATABASE OPEN

ORA-01157: 无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 6: 'D:\KERRY.MDF'
到这里我才模糊的记得好像是清理磁盘时,删除了这个数据文件。接下来只能修改数据库,把它离线处理


SQL> ALTER DATABASE DATAFILE 6 OFFLINE DROP;

Database altered

关于OFFLINE 与 OFFLINE DROP的区别,我查了下资料,区别大体如下:

1、对一个datafile执行offline或offline drop本质上是一回事,但对一个datafile执行offline只能在归档模式下;而对一个datafile执行offline drop则既可以在归档模式也可以在非归档模式下;

 

2、对一个datafile无论是执行offline还是offline drop,都是只改写了control文件,不会更新file$和ts$,这就是为什么可以在mount状态下对某个datafile执行offline/offline drop的本质原因;

 

3、只有当对datafile所在的表空间执行offline normal的时候,才会既改写control文件,又更新ts$和seg$,oracle这里会把ts$的online$字段的值由1改为2,但依然不会去更新file$;

 

4、只有当对datafile所在的表空间执行drop操作的时候,oracle才会去更新ts$和file$,oracle这里会把ts$的online$字段的值由1改为3,会把file$的status$字段由2改为1;

注意,无论是file$file#还是ts$ts#,它们都是连续的!并且oracle会重用file$的file#,但是不会重用ts$里的ts#,这本质上是因为ts$里会记录tablespace的名字,而file$里并没有记录datafile的名字,所以file$里的记录可以重用而ts$则不能

 

5、只要你对一个datafile执行了offline或者offline drop操作,则oracle在open的时候就不会去存储上(无论是文件系统、裸设备还是ASM)校验这个文件了,所以即使这个文件已经在存储上被删掉了,此时库依然可以open。

 

6、无论你是在归档模式还是在非归档模式,且无论你对某 个datafile是执行了offline还是offline drop操作,只要归档日志还在(对应于归档模式)或者相关的online redo log没有被logfile switch覆盖(对应于非归档模式),则这个datafile始终是可以online的,里面的数据都还在。当然,即使归档日志不在了,online redo log被logfile switch覆盖了,这个datafile也是可以online的,只是里面的数据可能会不一致。

接下来打开数据库,结果还有一个数据文件被我干掉了(一点印象都没啊),依葫芦画瓢处理掉它,如下所示



SQL> ALTER DATABASE DATAFILE 7 OFFLINE DROP;

Database altered

SQL> ALTER DATABASE OPEN;

Database altered
OK,到此问题被解决了。 

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
Oracle 关系型数据库 数据库
ORA-01033:ORACLE initialization or shutdown in progress解决方法
ORA-01033:ORACLE initialization or shutdown in progress解决方法
|
Oracle 关系型数据库 数据库
DBA_Oracle Startup / Shutdown启动和关闭过程详解(概念)
2014-08-07 Created By BaoXinjian 一、摘要 Oracle数据库的完整启动过程是分步骤完成的,包含以下3个步骤: 启动实例-->加载数据库-->打开数据库 因为Oracle数据库启动过程中不同的阶段可以对数据库进行不同的维护操作,对应我们不同的需求,所以就需不同的模式启动数据库。
1034 0
|
1月前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
162 64
|
22天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
29 7
|
22天前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
25 6