当oracle数据库的一个实例找不到表空间而不能正常启动的时候,该如何启动数据库?修复的SQL语句如何写?

解决方案 »

  1.   

    svrmgrl
    startup nomount
    然后将相应表空间想办法DROP掉,或改为OFFLINE也行
      

  2.   

    环境win2000 server oracle8.1.7
    ////////////////////////////////////////
    // 创建环境,创建表空间以及数据文件
    ////////////////////////////////////////
    SQL> create tablespace price datafile 'price.ora' size 10M;表空间已创建。已用时间:  00: 00: 02.73
    SQL> drop tablespace price;表空间已丢弃。已用时间:  00: 00: 01.42
    SQL> create tablespace plate datafile 'plate.ora' size 10M;表空间已创建。已用时间:  00: 00: 02.12
    SQL> create user plate identified by plate default tablespace plate;用户已创建已用时间:  00: 00: 00.70
    SQL> grant connect,resource to plate;授权成功。已用时间:  00: 00: 00.10
    SQL> connect plate/plate
    已连接。
    SQL> ////////////////////////////////////////
    //  关闭数据库
    ////////////////////////////////////////
    Microsoft Windows 2000 [Version 5.00.2195]
    (C) 版权所有 1985-2000 Microsoft Corp.C:\Documents and Settings\Administrator>svrmgrlOracle Server Manager Release 3.1.7.0.0 - ProductionCopyright (c) 2000, Oracle Corporation.  All Rights Reserved.Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
    With the Partitioning option
    JServer Release 8.1.7.0.0 - ProductionSVRMGR> connect internal/oracle
    连接成功。
    SVRMGR> shutdown immediate
    已关闭数据库。
    已卸下数据库。
    已关闭 ORACLE 实例。
    //////////////////////////////////////////////
    //  将数据文件plate.ora删除,模拟数据文件丢失
    //////////////////////////////////////////////
    SVRMGR> startup
    已启动 ORACLE 实例。
    系统全局区域合计有                         29431836个字节
    Fixed Size                                          75804个字节
    Variable Size                                    28459008个字节
    Database Buffers                                   819200个字节
    Redo Buffers                                        77824个字节
    已装入数据库。
    ORA-01157: ????/?????? 8 - ??? DBWR ????
    ORA-01110: ???? 8: 'D:\ORACLE\ORA81\DATABASE\PLATE.ORA'
    //////////////////////////////////////////////
    //  数据库打开失败,将错误的数据文件offline drop
    //////////////////////////////////////////////
    SVRMGR> alter database datafile 'd:\oracle\ora81\database\plate.ora' offline dro
    p;
    语句已处理。
    //////////////////////////////////////////////
    //  数据库打开成功
    //////////////////////////////////////////////
    SVRMGR> alter database open;
    语句已处理。
    SVRMGR>
    //////////////////////////////////////////////
    //  sql*plus中,处理善后工作,删除相关联的表空间
    //////////////////////////////////////////////
    SQL> connect internal/oracle
    已连接。
    SQL> col name format a50
    SQL> select name,status from v_$datafile;NAME                               STATUS
    ------------------------------     -------
    D:\ORACLE\ORADATA\ORAL\SYSTEM01.DBF SYSTEM
    D:\ORACLE\ORADATA\ORAL\RBS01.DBF    ONLINE
    D:\ORACLE\ORADATA\ORAL\USERS01.DBF  ONLINE
    D:\ORACLE\ORADATA\ORAL\TEMP01.DBF   ONLINE
    D:\ORACLE\ORADATA\ORAL\TOOLS01.DBF  ONLINE
    D:\ORACLE\ORADATA\ORAL\INDX01.DBF   ONLINE
    D:\ORACLE\ORADATA\ORAL\DR01.DBF     ONLINE
    D:\ORACLE\ORA81\DATABASE\PLATE.ORA  OFFLINE已选择8行。已用时间:  00: 00: 00.10
    SQL> drop tablespace plate;表空间已丢弃。已用时间:  00: 00: 01.82
    SQL> col name format a33
    SQL> col name format a35
    SQL> col name format a50
    SQL> select name,status from v_$datafile;NAME                                               STATUS
    -------------------------------------------------- -------
    D:\ORACLE\ORADATA\ORAL\SYSTEM01.DBF                SYSTEM
    D:\ORACLE\ORADATA\ORAL\RBS01.DBF                   ONLINE
    D:\ORACLE\ORADATA\ORAL\USERS01.DBF                 ONLINE
    D:\ORACLE\ORADATA\ORAL\TEMP01.DBF                  ONLINE
    D:\ORACLE\ORADATA\ORAL\TOOLS01.DBF                 ONLINE
    D:\ORACLE\ORADATA\ORAL\INDX01.DBF                  ONLINE
    D:\ORACLE\ORADATA\ORAL\DR01.DBF                    ONLINE已选择7行。已用时间:  00: 00: 00.50
    SQL> 
    //////////////////////////////////////////////
    //  处理结束。OK!
    ////////////////////////////////////