先创建表空间文件,再创建用户,接着删除用户,停止ORACEL服务器,手工删除创建的表空间文件.再重新启动ORACLE,连接时提示:ORACLE NOT AVAILABLE.有什么办法使ORACLE恢复?

解决方案 »

  1.   

    请输入用户名:  sys/sys@zhou as sysdba连接到:
    Oracle9i Enterprise Edition Release 9.0.1.1.1 - Production
    With the Partitioning option
    JServer Release 9.0.1.1.1 - ProductionSQL> create tablespace test datafile 'c:\test.dbf' size 1M;表空间已创建。SQL> shutdown immediate
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup
    ORACLE 例程已经启动。Total System Global Area  118255568 bytes
    Fixed Size                   282576 bytes
    Variable Size              83886080 bytes
    Database Buffers           33554432 bytes
    Redo Buffers                 532480 bytes
    数据库装载完毕。
    ORA-01157: 无法标识/锁定数据文件 9 - 请参阅 DBWR 跟踪文件
    ORA-01110: 数据文件 9: 'C:\TEST.DBF'
    SQL> shutdown immediate
    ORA-01109: 数据库未打开
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> startup mount
    ORACLE 例程已经启动。Total System Global Area  118255568 bytes
    Fixed Size                   282576 bytes
    Variable Size              83886080 bytes
    Database Buffers           33554432 bytes
    Redo Buffers                 532480 bytes
    数据库装载完毕。SQL> alter database datafile 'C:\TEST.DBF'  offline drop;数据库已更改。SQL> alter database open;数据库已更改。SQL>
      

  2.   

    以oracle身份登陆: 
    1. 
    $sqlplus /nolog 
    sql>connect internal 
    sql>startup 2. 
    $sqlplus internal 
    sql>startup 3. 
    $sqlplus /nolog 
    sql>connect /as sysdba 
    sql>startup 
      
    4. 
    $svrmgr 
    svrmgr>connect internal 
    svrmgr>startup 
      

  3.   

    手工删除创建的表空间文件,以后操作要在数据库里面做,
    因为你物理删除数据文件,并不是数据库的行为。
    因为你这个数据文件不需要,这种方法恢复简单。例如:
    上面的兄弟也提到了:
     用SVRMGRL
     SVRMGRL>CONNECT internal
     SVRMGRL>startup mount
     SVRMGRL> alter database datafile <删除的文件名,全路径> offline drop;
     SVRMGRL>alter database open;
      

  4.   

    不用恢复数据文件的话 上面的就可以解决1.查看归档情况 
    SQL> connect internal 
    已连接。 
    SQL> archive log list; 
    数据库日志模式 存档模式 
    自动存档 启用 
    存档终点 D:\oracle\oradata\ora8i\archive 
    最早的概要信息日志序列 501 
    下一个存档日志序列 503 
    当前日志序列 503 
    SQL> 2.创建测试的数据文件及表空间 
    SQL> show user 
    USER 为"SYSTEM" 
    SQL> select file_name, tablespace_name from dba_data_files; FILE_NAME TABLESPACE_NAM 
    -------------------------------------------------- -------------- 
    D:\ORACLE\ORADATA\ORA8I\SYSTEM01.DBF SYSTEM 
    D:\ORACLE\ORADATA\ORA8I\RBS01.DBF RBS 
    D:\ORACLE\ORADATA\ORA8I\USERS01.DBF USERS 
    D:\ORACLE\ORADATA\ORA8I\TEMP01.DBF TEMP 
    D:\ORACLE\ORADATA\ORA8I\TOOLS01.DBF TOOLS 
    D:\ORACLE\ORADATA\ORA8I\INDX01.DBF INDX 
    D:\ORACLE\ORADATA\ORA8I\OEM_REPOSITORY.ORA OEM_REPOSITORY 
    D:\ORACLE\ORADATA\ORA8I\TTS_EX1.DBF TTS_EX1 
    D:\ORACLE\ORADATA\ORA8I\TTS_EX2.DBF TTS_EX2 已选择9行。 SQL> create tablespace table_data 
    2 datafile 'd:\oracle\oradata\ora8i\table_data.dbf' size 2M; 表空间已创建。 3.创建测试的用户和表 
    SQL> create user aa identified by aa 
    2 default tablespace table_data 
    3 temporary tablespace temp; 用户已创建 SQL> grant connect, resource to aa; 授权成功。 
    SQL> grant alter system to aa; 授权成功。 
    SQL> conn aa/aa; 
    已连接。 
    SQL> create table test(a int); 表已创建。 4.创建测试的表数据 
    SQL> insert into test values(1); 已创建 1 行。 SQL> commit; 提交完成。 SQL> alter system switch logfile; 系统已更改。 
    SQL> insert into test values(2); 已创建 1 行。 SQL> commit; 提交完成。 SQL> alter system switch logfile; 系统已更改。 SQL> insert into test values(3); 已创建 1 行。 SQL> commit; 提交完成。 SQL> alter system switch logfile; 系统已更改。 SQL> insert into test values(4); 已创建 1 行。 SQL> commit; 提交完成。 SQL> select * from test; A 
    ---------- 



    4 因为都commit了,所以如果成功恢复的话,应该可以看到全部4条数据。 5.物理删除文件d:\oracle\oradata\ora8i\table_data.dbf 
    SVRMGR> connect internal 
    连接成功。 
    SVRMGR> shutdown immediate; 
    已关闭数据库。 
    已卸下数据库。 
    已关闭 ORACLE 实例。 D:\>del d:\oracle\oradata\ora8i\table_data.dbf 
    D:\oracle\oradata\ora8i>dir *.dbf/w 
    驱动器 D 中的卷没有标签。 
    卷的序列号是 C822-4715 D:\oracle\oradata\ora8i 的目录 INDX01.DBF RBS01.DBF SYSTEM01.DBF TEMP01.DBF TOOLS01.DBF 
    TTS_EX1.DBF TTS_EX2.DBF USERS01.DBF 
    8 个文件 736,165,888 字节 
    0 个目录 1,280,155,648 可用字节 6.启动数据库报错 
    SVRMGR> startup 
    ORACLE instance started. 
    Total System Global Area 54761500 bytes 
    Fixed Size 75804 bytes 
    Variable Size 19685376 bytes 
    Database Buffers 34922496 bytes 
    Redo Buffers 77824 bytes 
    Database mounted. 
    ORA-01157: cannot identify/lock data file 10 - see DBWR trace file 
    ORA-01110: data file 10: 'D:\ORACLE\ORADATA\ORA8I\TABLE_DATA.DBF' 7.开始进行恢复 
    SVRMGR> alter tablespace TABLE_DATA offline immediate; 
    alter tablespace TABLE_DATA offline immediate 

    ORA-01109: database not open 
    SVRMGR> select * from v$recover_file; 
    FILE# ONLINE ERROR CHANGE# TIME 
    ---------- ------- ------------------ ---------- --------- 
    10 ONLINE FILE NOT FOUND 0 
    1 row selected. SVRMGR> alter database datafile 10 offline; 
    Statement processed. SVRMGR> alter database open; Statement processed. SVRMGR> alter database create datafile 'D:\ORACLE\ORADATA\ORA8I\TABLE_DATA.DBF' 
    as 'D:\ORACLE\ORADATA\ORA8I\TABLE_DATA.DBF' size 2M; Statement processed. 
    SVRMGR> recover tablespace table_data; 
    ORA-00279: change 760836 generated at 08/25/2003 17:41:31 needed for thread 1 
    ORA-00289: suggestion : D:\ORACLE\ORADATA\ORA8I\ARCHIVE\ORA8IT001S00503.ARC 
    ORA-00280: change 760836 for thread 1 is in sequence #503 
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL} 
    auto 
    Log applied. 
    ORA-00279: change 760874 generated at 08/25/2003 17:47:07 needed for thread 1 
    ORA-00289: suggestion : D:\ORACLE\ORADATA\ORA8I\ARCHIVE\ORA8IT001S00504.ARC 
    ORA-00280: change 760874 for thread 1 is in sequence #504 
    ORA-00278: log file 'D:\ORACLE\ORADATA\ORA8I\ARCHIVE\ORA8IT001S00503.ARC' no lon 
    ger needed for this recovery 
    Log applied. 
    Media recovery complete. 
    SVRMGR> alter tablespace table_data online; 
    Statement processed. 8.测试是否恢复完整 
    SQL> conn aa/aa; 
    Connected. 
    SQL> select * from test; A 
    ---------- 



    4
      

  5.   

    感谢阿木和飘,我的数据库已恢复.
    使用leeshow的方法,数据库提示:ora-01034:oracle not availabled.