在服务器上执行sqlplus "/ as sysdba",看看是连接到数据库?

解决方案 »

  1.   

    执行 alter database open 看有什么错误
      

  2.   

    如果是Windows系统的话,先在服务里把OracleXXXX服务重启一下,然后在Sqlplus里用internal用户登录,(如果不能登录,重做密码文件)shutdown immediate 后start mount,再打开数据库,看有什么提示...
      

  3.   

    我也遇到了,alter database open 之后遇到这样得问题
    SQL> alter database open;
    alter database open
    *
    第一行出现错误:
    ORA-16038: 日志 1 序列号 65 无法归档:
    ORA-19809: 超出恢复日期得限制:
    ORA-00312: 联机日志 1 线程 1 :
    'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL10G\REDO01.LOG'怎么解决啊
      

  4.   

    我现在把数据库改为noarchivelog模式了,现在就可以启动数据库了,开始无法连接数据库,这是什么原因引起得啦,哪位知道原理啊。谢谢告知
      

  5.   

    >...现在就可以启动数据库了,开始无法连接数据库,...你说的启动,是指Open吗?是以什么用户身份internal?无法连接是以普通用户无法登陆?还是客户端无法连接?有什么出错提示?
      

  6.   

    这样的问题就是数据库崩溃啦。
    有类似的问题可以找我啦,经常给人恢复数据库的。
    我的MSN:[email protected]
      

  7.   

    可是sqlplus用system无法登陆啊!!!
    我试试用internal登陆看看! 谢谢了
    如果不能登陆,在哪里重做密码文件?
    在哪里执行shutdown immediate和start mount呢?是不是在dos命令提示符底下?
    在dos底下执行connect /as sysdba可以连接到数据库,提示“已连接”
      

  8.   

    在sqlplus里如何用internal登陆,密码是什么?在哪里可以找到???
    谢谢!!!
      

  9.   

    在sqlplus里:
    conn internal/oracle
      

  10.   

    出现以下报错提示:ORA-01219:数据库未打开:仅允许在固定表/视图中查询
    ------------------------------
    你处在mount状态ORA-01033:ORACLE initialization or shutdown in progress.
    -------------------------------------------------------
    startup force
      

  11.   

    这个问题,首先你要确定你是何种操作系统
    何种版本的oracle
    最好手工启动数据库
    看看到底报什么错误
      

  12.   

    在运行里执行:conn internal/oracle as sysdba进行SQL模式
    sql>shutdown immediate
    sql>startup mount
    sql>alter database open;把以上这些步骤执行一下,看在哪里报错了,这就是手工启动数据库。
    至于创建密码文件:在DOS下
    orapwd file=d:\oracle\database\PWDoracle9.ora password=oracle
    其中PWDoracle9.ora中的oracle9为你数据库的实例名并且要注意大小写
    password=oracle中的oracle为internal的密码
      

  13.   

    你试试,在操作系统下,停止Oracle服务,再启动Oracle服务
      

  14.   

    shutdown abort
    再startup或startup force
      

  15.   

    sql>shutdown immediate
    sql>startup mount
    sql>alter database open;alter database open
    执行上述步骤后,报如下错误:
    *
    ERROR 位于第 1 行:
    ORA-00368: 重做日志块中的校验和错误
    ORA-00353: 日志损坏接近块 192763 更改 1237346 时间 03/03/2006 17:26:10
    ORA-00312: 联机日志 1 线程 1: 'C:\ORACLE\ORADATA\ZDH\REDO01.LOG'接下来该怎么解决啊?
      

  16.   

    仅供参考!!!
    损坏非当前联机日志:
    1、启动数据库,遇到ORA-00312 or ORA-00313错误,如:
    ORA-00313: open failed for members of log group 4 of thread 1
    ORA-00312: online log 3 thread 1: '/opt/oracle/db04/oradata/ORCL/redo03.log'
    从这里我们知道日志组1的数据文件损坏或丢失了
    从报警文件可以看到更详细的信息
    2、查看V$log视图:
    SQL> select group#,sequence#,archived,status from v$log;GROUP# SEQUENCE# ARC STATUS---------- ---------- --- ----------------1 54 YES INACTIVE2 55 NO CURRENT3 53 YES INACTIVE
    可以知道,该组是非当前状态,而且已经归档。
    3、用CLEAR命令重建该日志文件
    SQL>alter database clear logfile group 3;
    如果是该日志组还没有归档,则需要用
    SQL>alter database clear unarchived logfile group 3;
    4、打开数据库,重新备份数据库
    SQL>alter database open;
    说明:
    1)、如果损坏的是非当前的联机日志文件,一般只需要clear就可以重建该日志文件,但是如果该数据库处于归档状态但该日志还没有归档,就需要强行clear。
    2)、建议clear,特别是强行clear后作一次数据库的全备份。
    3)、此方法适用于归档与非归档数据库。损坏当前联机日志:归档模式下当前日志的损坏有两种情况,
    一、是数据库是正常关闭,日志文件中没有未决的事务需要实例恢复,当前日志组的损坏就可以直接用alter database clear unarchived logfile group n来重建。
    二、是日志组中有活动的事务,数据库需要媒体恢复,日志组需要用来同步,有两种补救办法
    A. 最好的办法就是通过不完全恢复,可以保证数据库的一致性,但是这种办法要求在归档方式下,并且有可用的备份
    B. 通过强制性恢复,但是可能导致数据库不一致。
    下面分别用来说明这两种恢复方法
    5.1.2.1 通过备份来恢复
    1、打开数据库,会遇到一个类似的错误
    ORA-00313: open failed for members of log group 1 of thread 1
    ORA-00312: online log 1 thread 1: 'D:\ORACLE\ORADATA\TEST\REDO01.LOG'
    ORA-27041: unable to open file
    OSD-04002: unable to open file
    O/S-Error: (OS 2) 系统找不到指定的文件2、查看V$log,发现是当前日志
    SQL> select group#,sequence#,archived,status from v$log;GROUP# SEQUENCE# ARCHIVED STATUS
    ---------- ---------- -------- ----------------
    1 1 NO CURRENT
    2 2 YES INACTIVE
    3 3 YES INACTIVE3、发现clear不成功
    SQL> alter database clear unarchived logfile group 1;
    alter database clear unarchived logfile group 1
    *
    ERROR at line 1:
    ORA-01624: log 1 needed for crash recovery of thread 1
    ORA-00312: online log 1 thread 1: 'D:\ORACLE\ORADATA\TEST\REDO01.LOG'4、拷贝有效的数据库的全备份,并不完全恢复数据库
    可以采用获取最近的SCN的办法用until scn恢复或用until cnacel恢复
    recover database until cancel
    先选择auto,尽量恢复可以利用的归档日志,然后重新
    recover database until cancel
    这次输入cancel,完成不完全恢复,也就是说恢复两次。
    如:
    SQL> recover database until cancel;
    Auto
    ……
    SQL> recover database until cancel;
    Cancel;
    5、利用alter database open resetlogs打开数据库
    说明:
    1、这种办法恢复的数据库是一致的不完全恢复,会丢失当前联机日志中的事务数据
    2、这种方法适合于归档数据库并且有可用的数据库全备份。
    3、恢复成功之后,记得再做一次数据库的全备份。
    4、建议联机日志文件一定要实现镜相在不同的磁盘上,避免这种情况的发生,因为任何数据的丢失对于生产来说都是不容许的。如果没有备份,进行强制性恢复
    1、打开数据库,会遇到一个类似的错误
    ORA-00313: open failed for members of log group 1 of thread 1
    ORA-00312: online log 1 thread 1: 'D:\ORACLE\ORADATA\TEST\REDO01.LOG'
    ORA-27041: unable to open file
    OSD-04002: unable to open file
    O/S-Error: (OS 2) 系统找不到指定的文件2、查看V$log,发现是当前日志
    SQL> select group#,sequence#,archived,status from v$log;GROUP# SEQUENCE# ARCHIVED STATUS
    ---------- ---------- -------- ----------------
    1 1 NO CURRENT
    2 2 YES INACTIVE
    3 3 YES INACTIVE3、发现clear不成功
    SQL> alter database clear unarchived logfile group 1;
    alter database clear unarchived logfile group 1
    *
    ERROR at line 1:
    ORA-01624: log 1 needed for crash recovery of thread 1
    ORA-00312: online log 1 thread 1: 'D:\ORACLE\ORADATA\TEST\REDO01.LOG'4、把数据库down掉
    SQL>shutdown immediate5、在init<sid>.ora中加入如下参数
    _allow_resetlogs_corruption=TRUE6、重新启动数据库,利用until cancel恢复
    SQL>recover database until cancel; 
    Cancel
    如果出错,不再理会,发出 
    SQL>alter database open resetlogs;7、数据库被打开后,马上执行一个full export8、shutdown数据库,去掉_all_resetlogs_corrupt参数 9、重建库10、import并完成恢复11、建议执行一下ANALYZE TABLE ...VALIDATE STRUCTURE CASCADE;
    说明:
    1、该恢复方法是没有办法之后的恢复方法,一般情况下建议不要采用,因为该方法可能导致数据库的不一致
    2、该方法也丢失数据,但是丢失的数据没有上一种方法的数据多,主要是未写入数据文件的已提交或未提交数据。
    3、建议成功后严格执行以上的7到11步,完成数据库的检查与分析
    4、全部完成后做一次数据库的全备份
    5、建议联机日志文件一定要实现镜相在不同的磁盘上,避免这种情况的发生,因为任何数据的丢失对于生产来说都是不容许的。