今天IMP在导DMP数据的时候。。发现表空间太小,所以导了报错了所以直接退出ORACLE,把E:\ORACLEDB\insurcj.ORA数据文件删了,准备重建个大一点的空间。现在进MANAGER CONSOLE 报错ORA-01219:数据库未打开:仅允许在固定表/视图中.后来尝试了许多方法。。都不行。  记得网上有个方法说:   到最后一步  alter   database   open; 时就直接强制断开联接了。

解决方案 »

  1.   


    如是删掉了DBF文件出现“ORA-01219:数据库未打开:仅允许在固定表/视图中查询”,可用以下方法解决: 以sysdba登录: 
    C:\>sqlplus "/ as sysdba" 
    SQL> alter database datafile 'DBF文件所在的路径' offline drop; 
    数据库已更改。 
    SQL> alter database open; 
    数据库已更改。 
      

  2.   

    可是我现在 执行这个  alter database open;的时候报错了。
    报  ora-01092 ORACLE实例终止。强制断开链接。
      

  3.   


    -- 命令行下运行
    sqlplus / as sysdba
    -- 安装数据库
    > startup mount
    -- 将被删除的数据文件离线
    > alter database datafile 'E:\ORACLEDB\insurcj.ORA' offline for drop;
    -- 打开数据库
    > alter database open;
    -- 删除与数据文件相关的表空间
    > drop tablespace tablespace_name;
      

  4.   

    你是手动删除了你的数据文件啊,oracle数据字典中还有这个数据文件记录存在啊,如果要想正常启动数据库有两种方式,一种就是,用dba身份登陆将该数据文件置位下线状态,然后再删除掉,然后在根据你需要重新建立一个表空间或者在该表空间上加一个数据文件
    二种是。先在你删除数据文件那个目录建立一个跟你以前删除文件同名同格式的数据文件,然后启动数据库即可。
      

  5.   

    这两种方法我都试了
    第一种我用DBA那样做, 做到alter database open;时就强制断开了。
    第二种我也建立了同名数据文件。。也启动不了。
      

  6.   

        1. 以nomount方式启动实例      sqlplus/nolog;      connect system/admin@lgtest as sysdba;      shutdown normal;      startup nomount pfile=%racle_home%\database\init.ora;      2. 建立控制文件      create controlfile reuse database lgtest resetlogs      logfile
      
          group 1 ‘e:\oracle\oradata\lgtest\ redo01.log’ size 20m,
      
          group 2 ‘e:\oracle\oradata\lgtest\ redo02.log’ size 20m
      
          datafile
      
         ‘e:\oracle\oradata\lgtest\ system01.dbf’,
      
         ‘e:\oracle\oradata\lgtest\ undotbs01.dbf’
      
          character set zhs16gbk;
      
          3 . 打开数据库
      
          alter database open resetlogs;
      
          4. 增加临时文件      a lter tablespace temp add tempfile ‘e:\oracle\oradata\lgtest\temp01.dbf’ reuse;
      

  7.   

    已解决了是INITORCL.ORA文件里面那个默认表空间弄错了。。之前删了。这个字段没改。