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状态了,这时实例和硬盘上的数据库要关联了。处于这个状态时,可执行些管理型的任务,比如恢复。
(当时把文件名输错了: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状态了,这时实例和硬盘上的数据库要关联了。处于这个状态时,可执行些管理型的任务,比如恢复。
相关文章推荐
- Oracle数据库表空间文件被删除[ora-01033|ORA-01110]
- ORA-15041: diskgroup "DATAVG" space exhausted ASM空间假装耗尽不足,resize数据文件和增加数据文件失败
- ORA-01033: ORACLE initialization or shutdown in progress 因误删表空间文件导致的解决方案
- ORA-01033问题解决【表空间文件误操作删除】
- Oracle数据库案例整理-启动Oracle数据库失败-Oracle表空间文件被删除
- 之前创建了一个表空间,然后今天不小心把表空间文件给删除了。然后用pl/sql连接数据库的时候,报ORA-01033错误。ora-01033:oracle initializationg or shut
- 提示ORA-03113:通信通道的文件结尾解决导致ORA-01033: ORACLE 正在初始化或关闭(flash_recovery_area空间压力)
- Oracle数据库案例整理-Oracle系统运行时故障-tnsnames.ora文件配置错误导致数据库TNSping失败
- ORA-01157:无法标识/锁定数据文件,ORA-01110:表空间丢失错误
- ORA-15041: diskgroup "DATAVG" space exhausted ASM空间假装耗尽不足,resize数据文件和增加数据文件失败
- Oracle数据库案例整理-启动Oracle数据库失败-undo表空间文件损坏
- oracle数据库表空间文件收缩实例
- 如何查看Oracle数据库表空间大小(空闲、已使用),是否要增加表空间的数据文件
- ORACLE数据库表空间迁移--关于数据文件
- Oracle数据库的表空间及数据库文件的迁移方法
- tnsnames.ora 监听配置文件详解
- Oracle数据库案例整理-Oracle系统执行失败-sql_trace至TRUE导致Oracle在根文件夹中缺乏可用空间
- ORA-01653:表空间扩展失败的问题
- 查看Oracle数据库表空间大小(空闲、已使用),是否要增加表空间的数据文件
- 安装oralce 11g后创建监听失败,缺失监听配置文件,也无法生成,提示TNS-04415