大家好,我之前做了下试验,在USES表空间(数据文件:D:\PRACTICE\PRACTICE\USERS01.DBF)建了一个表test_3,然后每添加一条语句,提交,然后用alter system switch logfile;切换一次日志,加了6条数据,然后我关闭数据库,删除了D:\PRACTICE\PRACTICE\USERS01.DBF文件,在打开数据库的情况下 recover datafile 4;恢复了数据文件。但是我重新启动后查看那个表test_3,却提示找不到数据文件,过了两天,我现在打开有这些提示,请大家看后帮帮忙解决下:
SQL> startup
ORACLE 例程已经启动。Total System Global Area  167772160 bytes                                       
Fixed Size                  1247876 bytes                                       
Variable Size              92276092 bytes                                       
Database Buffers           67108864 bytes                                       
Redo Buffers                7139328 bytes                                       
数据库装载完毕。
数据库已经打开。
SQL> select * from test_3;
select * from test_3
              *
第 1 行出现错误: 
ORA-00376: 此时无法读取文件 4
ORA-01110: 数据文件 4: 'D:\PRACTICE\PRACTICE\USERS01.DBF' 
SQL> alter database datafile 4 offline;数据库已更改。SQL> recover datafile 4;
ORA-00283: 恢复会话因错误而取消
ORA-01110: 数据文件 4: 'D:\PRACTICE\PRACTICE\USERS01.DBF'
ORA-01157: 无法标识/锁定数据文件 4 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 4: 'D:\PRACTICE\PRACTICE\USERS01.DBF' 
SQL> alter database datafile 4 online;
alter database datafile 4 online
*
第 1 行出现错误: 
ORA-01157: 无法标识/锁定数据文件 4 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 4: 'D:\PRACTICE\PRACTICE\USERS01.DBF' 还有几个日志文件我也贴上去:
Dump file d:\oracle\product\10.2.0\admin\practice\bdump\practice_dbw0_1200.trc
Tue Oct 21 16:12:47 2008
ORACLE V10.2.0.1.0 - Production vsnsta=0
vsnsql=14 vsnxtr=3
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
Windows XP Version V5.1 Service Pack 2
CPU                 : 2 - type 586
Process Affinity    : 0x00000000
Memory (Avail/Total): Ph:24M/494M, Ph+PgF:693M/1158M, VA:1693M/2047M
Instance name: practiceRedo thread mounted by this instance: 1Oracle process number: 5Windows thread id: 1200, image: ORACLE.EXE (DBW0)
*** 2008-10-21 16:12:47.328
*** SERVICE NAME:(SYS$BACKGROUND) 2008-10-21 16:12:47.328
*** SESSION ID:(167.1) 2008-10-21 16:12:47.328
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: 'D:\PRACTICE\PRACTICE\USERS01.DBF'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
*** 2008-10-21 16:13:43.484
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: 'D:\PRACTICE\PRACTICE\USERS01.DBF'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。
*** 2008-10-21 16:16:46.906
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: 'D:\PRACTICE\PRACTICE\USERS01.DBF'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。

解决方案 »

  1.   

    Dump file d:\oracle\product\10.2.0\admin\practice\bdump\practice_lgwr_3152.trc
    Tue Oct 21 16:09:27 2008
    ORACLE V10.2.0.1.0 - Production vsnsta=0
    vsnsql=14 vsnxtr=3
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options
    Windows XP Version V5.1 Service Pack 2
    CPU                 : 2 - type 586
    Process Affinity    : 0x00000000
    Memory (Avail/Total): Ph:77M/494M, Ph+PgF:682M/1158M, VA:1700M/2047M
    Instance name: practiceRedo thread mounted by this instance: 1Oracle process number: 6Windows thread id: 3152, image: ORACLE.EXE (LGWR)
    *** 2008-10-21 16:09:27.015
    *** SERVICE NAME:() 2008-10-21 16:09:26.968
    *** SESSION ID:(166.1) 2008-10-21 16:09:26.968
    LGWR: Archivelog for thread 1 sequence 23 will NOT be compressed
    tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x1)
    tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x1)
    Maximum redo generation record size = 156160 bytes
    Maximum redo generation change vector size = 150672 bytes
    tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x10)
    tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x10)
    *** 2008-10-21 16:10:11.281
    tkcrrxmp: Stopping ARC2 to reduce ARCH processes from 3 to 0
    tkcrrxmp: Stopping ARC1 to reduce ARCH processes from 2 to 0
    *** 2008-10-21 16:10:21.359
    tkcrrxmp: Stopping ARC0 to reduce ARCH processes from 1 to 0
      

  2.   

    Dump file d:\oracle\product\10.2.0\admin\practice\bdump\practice_lgwr_3440.trc
    Tue Oct 21 16:11:00 2008
    ORACLE V10.2.0.1.0 - Production vsnsta=0
    vsnsql=14 vsnxtr=3
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options
    Windows XP Version V5.1 Service Pack 2
    CPU                 : 2 - type 586
    Process Affinity    : 0x00000000
    Memory (Avail/Total): Ph:83M/494M, Ph+PgF:714M/1158M, VA:1723M/2047M
    Instance name: practiceRedo thread mounted by this instance: 1Oracle process number: 6Windows thread id: 3440, image: ORACLE.EXE (LGWR)
    *** SERVICE NAME:() 2008-10-21 16:11:00.765
    *** SESSION ID:(166.1) 2008-10-21 16:11:00.765
    Maximum redo generation record size = 156160 bytes
    Maximum redo generation change vector size = 150672 bytes
    tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x10)
    tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x10)
      

  3.   

    Dump file d:\oracle\product\10.2.0\admin\practice\udump\practice_ora_3120.trc
    Tue Oct 21 16:09:21 2008
    ORACLE V10.2.0.1.0 - Production vsnsta=0
    vsnsql=14 vsnxtr=3
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options
    Windows XP Version V5.1 Service Pack 2
    CPU                 : 2 - type 586
    Process Affinity    : 0x00000000
    Memory (Avail/Total): Ph:91M/494M, Ph+PgF:717M/1158M, VA:1736M/2047M
    Instance name: practiceRedo thread mounted by this instance: 1Oracle process number: 16Windows thread id: 3120, image: ORACLE.EXE (SHAD)
    *** SERVICE NAME:() 2008-10-21 16:09:21.828
    *** SESSION ID:(159.3) 2008-10-21 16:09:21.828
    Successfully allocated 2 recovery slaves
    Using 545 overflow buffers per recovery slave
    Thread 1 checkpoint: logseq 22, block 3793, scn 742597
      cache-low rba: logseq 22, block 13523
        on-disk rba: logseq 22, block 14801, scn 749222
      start recovery at logseq 22, block 13523, scn 0
    ----- Redo read statistics for thread 1 -----
    Read rate (ASYNC): 639Kb in 0.95s => 0.66 Mb/sec
    Total physical reads: 4096Kb
    Longest record: 12Kb, moves: 0/822 (0%)
    Change moves: 0/10 (0%), moved: 0Mb
    Longest LWN: 234Kb, moves: 0/61 (0%), moved: 0Mb
    Last redo scn: 0x0000.000b6ea5 (749221)
    ----------------------------------------------
    ----- Recovery Hash Table Statistics ---------
    Hash table buckets = 32768
    Longest hash chain = 1
    Average hash chain = 260/260 = 1.0
    Max compares per lookup = 1
    Avg compares per lookup = 1491/1766 = 0.8
    ----------------------------------------------
    *** 2008-10-21 16:09:23.500
    KCRA: start recovery claims for 260 data blocks
    *** 2008-10-21 16:09:24.046
    KCRA: blocks processed = 260/260, claimed = 260, eliminated = 0
    *** 2008-10-21 16:09:24.406
    Recovery of Online Redo Log: Thread 1 Group 3 Seq 22 Reading mem 0
    ----- Recovery Hash Table Statistics ---------
    Hash table buckets = 32768
    Longest hash chain = 1
    Average hash chain = 260/260 = 1.0
    Max compares per lookup = 1
    Avg compares per lookup = 1694/1751 = 1.0
    ----------------------------------------------
    tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x1)
    tkcrrpa: (WARN) Failed initial attempt to send ARCH message (message:0x1)
    *** 2008-10-21 16:10:27.937
    *** 2008-10-21 16:10:27.937 60680 kcrr.c
    ARCH: Archival disabled due to shutdown: 1089
    *** 2008-10-21 16:10:28.953 60680 kcrr.c
    ARCH: Archival disabled due to shutdown: 1089