您的位置:首页 > 数据库 > Oracle

Oracle数据库表空间文件被删除[ora-01033|ORA-01110]监听失败

2014-01-07 17:30 609 查看
今天用本地数据库做表空间测试,在扩展表空间时,因为输错了扩展文件名,就把该外部文件删了。结果,提示“监听失败”,sqlplus和pl/sql developer都不能登录。经搜索查找资料,终于恢复了登录。解决方法如下:(感谢张航的博客)

(当时把文件名输错了:ALTER TABLESPACE sp001 ADD DATAFILE 'd:\sp001.bf' SIZE 100m; 事后就把sp001.bf文件删了)

[sql] view
plaincopy

Microsoft Windows [版本 6.1.7601]  

版权所有 (c) 2009 Microsoft Corporation。保留所有权利。  

  

C:\Users\Administrator>set ORACLE_SID=orcl  

  

C:\Users\Administrator>sqlplus / as sysdba  

  

SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 23 16:09:58 2012  

  

Copyright (c) 1982, 2005, Oracle.  All rights reserved.  

  

  

连接到:  

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production  

With the Partitioning, OLAP and Data Mining options  

  

SQL> shutdown immediate  

ORA-01109: 数据库未打开  

  

  

已经卸载数据库。  

ORACLE 例程已经关闭。  

SQL> startup  

ORACLE 例程已经启动。  

  

Total System Global Area  293601280 bytes  

Fixed Size                  1248600 bytes  

Variable Size              88081064 bytes  

Database Buffers          197132288 bytes  

Redo Buffers                7139328 bytes  

数据库装载完毕。  

ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件  

ORA-01110: 数据文件 7: 'D:\TBS01.DBF'  

  

  

SQL> shutdown immediate  

ORA-01109: 数据库未打开  

  

  

已经卸载数据库。  

ORACLE 例程已经关闭。  

SQL> startup mount  

ORACLE 例程已经启动。  

  

Total System Global Area  293601280 bytes  

Fixed Size                  1248600 bytes  

Variable Size              88081064 bytes  

Database Buffers          197132288 bytes  

Redo Buffers                7139328 bytes  

数据库装载完毕。  

SQL> recover datafile 2  

ORA-00283: 恢复会话因错误而取消  

ORA-00264: 不要求恢复  

  

  

SQL> recover datafile 7  

ORA-00283: 恢复会话因错误而取消  

ORA-01110: 数据文件 7: 'D:\TBS01.DBF'  

ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件  

ORA-01110: 数据文件 7: 'D:\TBS01.DBF'  

  

  

SQL> startup  

ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它  

SQL> recover datafile 7  

ORA-00283: 恢复会话因错误而取消  

ORA-01110: 数据文件 7: 'D:\TBS01.DBF'  

ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件  

ORA-01110: 数据文件 7: 'D:\TBS01.DBF'  

  

  

SQL>  select flashback_on from vdatabase  

  2  ;  

 select flashback_on from vdatabase  

                          *  

第 1 行出现错误:  

ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询  

  

  

SQL> recover datafile 'd:/tbs01.dbf'  

ORA-00283: 恢复会话因错误而取消  

ORA-01110: 数据文件 7: 'D:\TBS01.DBF'  

ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件  

ORA-01110: 数据文件 7: 'D:\TBS01.DBF'  

  

  

SQL> select file_name,file_id,tablespace_name from dba_data_files;  

select file_name,file_id,tablespace_name from dba_data_files  

                                              *  

第 1 行出现错误:  

ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询  

  

  

SQL>  col file_name format a100;  

SQL> select file_name,file_id,tablespace_name from dba_data_files;  

select file_name,file_id,tablespace_name from dba_data_files  

                                              *  

第 1 行出现错误:  

ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询  

  

  

SQL>  startup mount;  

ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它  

SQL> alter session set nls_language=american;  

  

Session altered.  

  

SQL> alter database open;  

alter database open  

*  

ERROR at line 1:  

ORA-01157: cannot identify/lock data file 7 - see DBWR trace file  

ORA-01110: data file 7: 'D:\TBS01.DBF'  

  

  

SQL> startup nomount;  

ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它  

SQL> alter database mount;  

alter database mount  

*  

ERROR at line 1:  

ORA-01100: 数据库已装载  

  

  

SQL> alter session set nls_language=american;  

  

Session altered.  

  

SQL> alter database datafile 'd:\TBS01.dbf' offline drop;  

  

Database altered.  

  

SQL> alter database open;  

alter database open  

*  

ERROR at line 1:  

ORA-01157: cannot identify/lock data file 8 - see DBWR trace file  

ORA-01110: data file 8: 'D:\TBS02.DBF'  

  

  

SQL> alter database datafile 'd:\TBS02.dbf' offline drop;  

  

Database altered.  

  

SQL> alter database datafile 'd:\TBS03.dbf' offline drop;  

  

Database altered.  

  

SQL> alter database datafile 'd:\TBS04.dbf' offline drop;  

  

Database altered.  

  

SQL> alter database open;  

alter database open  

*  

ERROR at line 1:  

ORA-01157: cannot identify/lock data file 11 - see DBWR trace file  

ORA-01110: data file 11: 'D:\TBS05.DBF'  

  

  

SQL> alter database datafile 'd:\TBS05.dbf' offline drop;  

  

Database altered.  

  

SQL> alter database open;  

  

Database altered.  

  

SQL>  



至此,修复完成,可以正常登陆。

原理:数据库启动到nomount状态,找到初始化参数文件(inittestDB.ora),根据这个定位到控制文件。控制文件中记录着数据库的文件结构信息(当然不止文件结构信息),比如:有哪些数据文件,日志文件数据文件的状态(online offline),但数据库在open 的时候并不查看offline状态下的datafile,所以将datafile offline,数据库不检查这个数据文件里,就可以打开。注意这里的数据文件只是用户数据文件,若是系统数据文件,另要考虑了。数据库启动到mount状态了,这时实例和硬盘上的数据库要关联了。处于这个状态时,可执行些管理型的任务,比如恢复。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐