删除oracle表空间,导致oracle启动不了

来源:互联网 发布:广场舞短袖上衣淘宝网 编辑:程序博客网 时间:2024/05/02 02:38
[sql] view plain copy print?
  1. Microsoft Windows [版本 6.1.7601]  
  2. 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。  
  3.   
  4. C:\Users\Administrator>set ORACLE_SID=orcl  
  5.   
  6. C:\Users\Administrator>sqlplus / as sysdba  
  7.   
  8. SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 23 16:09:58 2012  
  9.   
  10. Copyright (c) 1982, 2005, Oracle.  All rights reserved.  
  11.   
  12.   
  13. 连接到:  
  14. Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production  
  15. With the Partitioning, OLAP and Data Mining options  
  16.   
  17. SQL> shutdown immediate  
  18. ORA-01109: 数据库未打开  
  19.   
  20.   
  21. 已经卸载数据库。  
  22. ORACLE 例程已经关闭。  
  23. SQL> startup  
  24. ORACLE 例程已经启动。  
  25.   
  26. Total System Global Area  293601280 bytes  
  27. Fixed Size                  1248600 bytes  
  28. Variable Size              88081064 bytes  
  29. Database Buffers          197132288 bytes  
  30. Redo Buffers                7139328 bytes  
  31. 数据库装载完毕。  
  32. ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件  
  33. ORA-01110: 数据文件 7: 'D:\TBS01.DBF'  
  34.   
  35.   
  36. SQL> shutdown immediate  
  37. ORA-01109: 数据库未打开  
  38.   
  39.   
  40. 已经卸载数据库。  
  41. ORACLE 例程已经关闭。  
  42. SQL> startup mount  
  43. ORACLE 例程已经启动。  
  44.   
  45. Total System Global Area  293601280 bytes  
  46. Fixed Size                  1248600 bytes  
  47. Variable Size              88081064 bytes  
  48. Database Buffers          197132288 bytes  
  49. Redo Buffers                7139328 bytes  
  50. 数据库装载完毕。  
  51. SQL> recover datafile 2  
  52. ORA-00283: 恢复会话因错误而取消  
  53. ORA-00264: 不要求恢复  
  54.   
  55.   
  56. SQL> recover datafile 7  
  57. ORA-00283: 恢复会话因错误而取消  
  58. ORA-01110: 数据文件 7: 'D:\TBS01.DBF'  
  59. ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件  
  60. ORA-01110: 数据文件 7: 'D:\TBS01.DBF'  
  61.   
  62.   
  63. SQL> startup  
  64. ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它  
  65. SQL> recover datafile 7  
  66. ORA-00283: 恢复会话因错误而取消  
  67. ORA-01110: 数据文件 7: 'D:\TBS01.DBF'  
  68. ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件  
  69. ORA-01110: 数据文件 7: 'D:\TBS01.DBF'  
  70.   
  71.   
  72. SQL>  select flashback_on from vdatabase  
  73.   2  ;  
  74.  select flashback_on from vdatabase  
  75.                           *  
  76. 第 1 行出现错误:  
  77. ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询  
  78.   
  79.   
  80. SQL> recover datafile 'd:/tbs01.dbf'  
  81. ORA-00283: 恢复会话因错误而取消  
  82. ORA-01110: 数据文件 7: 'D:\TBS01.DBF'  
  83. ORA-01157: 无法标识/锁定数据文件 7 - 请参阅 DBWR 跟踪文件  
  84. ORA-01110: 数据文件 7: 'D:\TBS01.DBF'  
  85.   
  86.   
  87. SQL> select file_name,file_id,tablespace_name from dba_data_files;  
  88. select file_name,file_id,tablespace_name from dba_data_files  
  89.                                               *  
  90. 第 1 行出现错误:  
  91. ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询  
  92.   
  93.   
  94. SQL>  col file_name format a100;  
  95. SQL> select file_name,file_id,tablespace_name from dba_data_files;  
  96. select file_name,file_id,tablespace_name from dba_data_files  
  97.                                               *  
  98. 第 1 行出现错误:  
  99. ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询  
  100.   
  101.   
  102. SQL>  startup mount;  
  103. ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它  
  104. SQL> alter session set nls_language=american;  
  105.   
  106. Session altered.  
  107.   
  108. SQL> alter database open;  
  109. alter database open  
  110. *  
  111. ERROR at line 1:  
  112. ORA-01157: cannot identify/lock data file 7 - see DBWR trace file  
  113. ORA-01110: data file 7: 'D:\TBS01.DBF'  
  114.   
  115.   
  116. SQL> startup nomount;  
  117. ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它  
  118. SQL> alter database mount;  
  119. alter database mount  
  120. *  
  121. ERROR at line 1:  
  122. ORA-01100: 数据库已装载  
  123.   
  124.   
  125. SQL> alter session set nls_language=american;  
  126.   
  127. Session altered.  
  128.   
  129. SQL> alter database datafile 'd:\TBS01.dbf' offline drop;  
  130.   
  131. Database altered.  
  132.   
  133. SQL> alter database open;  
  134. alter database open  
  135. *  
  136. ERROR at line 1:  
  137. ORA-01157: cannot identify/lock data file 8 - see DBWR trace file  
  138. ORA-01110: data file 8: 'D:\TBS02.DBF'  
  139.   
  140.   
  141. SQL> alter database datafile 'd:\TBS02.dbf' offline drop;  
  142.   
  143. Database altered.  
  144.   
  145. SQL> alter database datafile 'd:\TBS03.dbf' offline drop;  
  146.   
  147. Database altered.  
  148.   
  149. SQL> alter database datafile 'd:\TBS04.dbf' offline drop;  
  150.   
  151. Database altered.  
  152.   
  153. SQL> alter database open;  
  154. alter database open  
  155. *  
  156. ERROR at line 1:  
  157. ORA-01157: cannot identify/lock data file 11 - see DBWR trace file  
  158. ORA-01110: data file 11: 'D:\TBS05.DBF'  
  159.   
  160.   
  161. SQL> alter database datafile 'd:\TBS05.dbf' offline drop;  
  162.   
  163. Database altered.  
  164.   
  165. SQL> alter database open;  
  166.   
  167. Database altered.  
  168.   
  169. SQL>  

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

原理:数据库启动到nomount状态,找到初始化参数文件(inittestDB.ora),根据这个定位到控制文件。控制文件中记录着数据库的文件结构信息(当然不止文件结构信息),比如:有哪些数据文件,日志文件数据文件的状态(online offline),但数据库在open 的时候并不查看offline状态下的datafile,所以将datafile offline,数据库不检查这个数据文件里,就可以打开。注意这里的数据文件只是用户数据文件,若是系统数据文件,另要考虑了。数据库启动到mount状态了,这时实例和硬盘上的数据库要关联了。处于这个状态时,可执行些管理型的任务,比如恢复。



0 0
原创粉丝点击