ORA-01157 错误解决,原因DBWR锁定产生

Posted 「已注销」

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORA-01157 错误解决,原因DBWR锁定产生相关的知识,希望对你有一定的参考价值。


[sql] 
  1. 1、故障现象  
  2. --查询视图dba_data_files时出现ORA-01157故障  
  3. SQL> select file_name,tablespace_name from dba_data_files where tablespace_name='SOE';  
  4. select file_name,tablespace_name from dba_data_files where tablespace_name='SOE'  
  5.                                       *  
  6. ERROR at line 1:  
  7. ORA-01157: cannot identify/lock data file 6 - see DBWR trace file  
  8. ORA-01110: data file 6: '/u01/oracle/db/dbs/soe.dbf'  
  9.   
  10. --尝试drop tablespace 收到同样的错误  
  11. SQL> drop tablespace soe including contents and datafiles;  
  12. drop tablespace soe including contents and datafiles  
  13. *  
  14. ERROR at line 1:  
  15. ORA-01157: cannot identify/lock data file 6 - see DBWR trace file  
  16. ORA-01110: data file 6: '/u01/oracle/db/dbs/soe.dbf'  
  17.   
  18. 2、分析  
  19. --从错误号后的文字可判断DBWR不能识别或锁定文件号6,后面的ORA-01110给出了具体的文件位置  
  20. --下面是错误号对应的具体描述  
  21. SQL> ho oerr ora 01157  
  22. 0115700000"cannot identify/lock data file %s - see DBWR trace file"  
  23. // *Cause:  The background process was either unable to find one of the data  
  24. //         files or failed to lock it because the file was already in use.  
  25. //         The database will prohibit access to this file but other files will  
  26. //         be unaffected. However the first instance to open the database will  
  27. //         need to access all online data files. Accompanying error from the  
  28. //         operating system describes why the file could not be identified.  
  29. // *Action: Have operating system make file available to databaseThen either  
  30. //         open the database or do ALTER SYSTEM CHECK DATAFILES.  
  31.   
  32. --上面的描述指出了后台进程不能寻找到数据文件或者是因为文件在被其他进程使用而DBWR无法对其锁定。  
  33. --对于象这类文件数据库将禁止对其进行访问,而其他数据文件则不受影响。  
  34. --给出的决办法是确认错误号后的数据文件是否存在或可用,以及在open状态下执行ALTER SYSTEM CHECK DATAFILES命令  
  35.   
  36. 3、解决  
  37. --尝试执行alter system check datafiles  
  38. SQL> alter system check datafiles;  
  39.   
  40. System altered.  
  41.   
  42. --执行后故障依旧如下  
  43. SQL> select file_name,tablespace_name from dba_data_files where tablespace_name='SOE';  
  44. select file_name,tablespace_name from dba_data_files where tablespace_name='SOE'  
  45.                                       *  
  46. ERROR at line 1:  
  47. ORA-01157: cannot identify/lock data file 6 - see DBWR trace file  
  48. ORA-01110: data file 6: '/u01/oracle/db/dbs/soe.dbf'  
  49.   
  50. --查看数据字典记录的信息表明当前的表空间为online状态  
  51. SQL> select tablespace_name,status,contents from dba_tablespaces where tablespace_name='SOE';  
  52.   
  53. TABLESPACE_NAME                STATUS    CONTENTS  
  54. ------------------------------ --------- ---------  
  55. SOE                            ONLINE    PERMANENT  
  56.   
  57. --查看alert日志文件,也给出了该错误提示,提示给出了tarce文件  
  58. oracle@v2048db01p:/u01/oracle/admin/SYISDB/bdump> tail -8 alert_SYISDB1.log  
  59. Additional information: 3  
  60. Tue Nov 13 09:43:17 2012  
  61. Errors in file /u01/oracle/admin/SYISDB/bdump/syisdb1_dbw0_5925.trc:  
  62. ORA-01186: file 6 failed verification tests  
  63. ORA-01157: cannot identify/lock data file 6 - see DBWR trace file  
  64. ORA-01110: data file 6: '/u01/oracle/db/dbs/soe.dbf'  
  65. Tue Nov 13 09:43:17 2012  
  66. File 6 not verified due to error ORA-01157  
  67.   
  68. --查看表空间soe对应的数据文件是否存在  
  69. oracle@v2048db01p:~> export ORACLE_SID=+ASM1  
  70. oracle@v2048db01p:~> asmcmd  
  71. ASMCMD> cd +DG2/SYISDB/DATAFILE  
  72. ASMCMD> ls  
  73. CCDATA.289.799174049  
  74. SYSAUX.260.796819341  
  75. SYSTEM.259.796819335  
  76. UNDOTBS1.261.796819339  
  77. UNDOTBS2.257.796819343  
  78. USERS.256.796819343  
  79. X.290.799234531  
  80. ccdata.dbf  
  81.   
  82. ASMCMD> ls *soe*   --#没有任何含soe的数据文件  
  83. asmcmd: entry '*soe*' does not exist in directory '+DG2/SYISDB/DATAFILE/'  
  84. ASMCMD> ls *SOE*   --#没有任何含soe的数据文件,由此可知表空间soe对应的数据文件已经丢失  
  85. asmcmd: entry '*SOE*' does not exist in directory '+DG2/SYISDB/DATAFILE/'  
  86.   
  87. --因此直接删除该表空间及数据文件,注,生产环境不建议此操作  
  88. SQL> alter database datafile 6 offline drop;  
  89.   
  90. Database altered.  
  91.   
  92. --再次查看数据字典信息,依然处于Online状态  
  93. --Author : Robinson  
  94. --Blog   : http://blog.csdn.net/robinson_0612  
  95. SQL> select tablespace_name,status,contents from dba_tablespaces where tablespace_name='SOE';  
  96.   
  97. TABLESPACE_NAME                STATUS    CONTENTS  
  98. ------------------------------ --------- ---------  
  99. SOE                            ONLINE    PERMANENT  
  100.   
  101. --下面的查询貌似也有问题,对应的数据文件在上一命令中已经清除了,而此时依旧显示AVAILABLE  
  102. SQL> col file_name format a55  
  103. SQL> set linesize 160  
  104. SQL> select记一次Oracle启动报错问题解决

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

    ORA-01157 错误解决方法

    关于手动删除Oracle数据数据,导致Oracle无法连接处理过程

    11g rac ORA-01157问题处理

    ORA-01033 ORA-01109 ORA-01034 ORA-12514 ORA-24324 ORA-01041 ORA-01157 ORA-01110