数据库启动常见问题

 

常见的数据库不能启动的原因:

   (蓝色字体为sqlplus界面操作,红色为注释)

一、日志文件丢失或损坏

    日志文件的恢复:

    1、非归档模式

       SQL>startup mount;

       SQL>select * from v$logfile;

如果日志文件丢失了,手工建上相应的日志文件放在原处

(新建一个文本文件,改为相应的日志名就可以了)

      

       SQL>Select * from v$log;

              查看日志文件当前状态

SQL>alter database clear logfile group N; 

(N为非当前状态组号,把所有非当前状态的日志进行恢复)

(语句的作用是把该日志文件,清空为标准空日志文件)

       SQL>recover database until cancel;

           (恢复当前日志)

       SQL>alter database open resetlogs;

 

       如果是单个日志文件损坏

       SQL>startup mount;

       SQL>alter database clear logfile group N;

       SQL>alter database open;

 

    2、归档模式

       与上面操作大致一样如果

如果alter database clear logfile group N 执行不成功

就改为:alter database clear unarchived logfile group N

 

特别要注意的:alter database open resetlogs;

Resetlogs:

   表示一个数据库逻辑生存期结束和一个数据库逻辑生存期的开始.

  每次使用resetlogs,SCN计数器不会被重置,oracle会重置其它计数器(如日志序列号),同时还会重置重做日志的内容.

 

   如果当前日志文件损坏无法通过recover database until cancel恢复就用第三种方式处理。

 

3、当前日志文件损坏的处理办法:

SQL>startup mount;

SQL>create pfile=’d:\orace_test\pfile.txt’  from spfile; 

(8i及以前版本直接找到参数文件复制一份就可以了)

SQL>shutdown immediate;

编辑生成的pfile,加入_allow_resetlogs_corruption=TRUE

SQL>startup mount pfile=’d:\oracle_test\pfile.txt’;

SQL>alter database open resetlogs;

 

数据库被打开后,马上执行一个full export

shutdown数据库

重建库

import并完成恢复

建议执行一下ANALYZE TABLE ...VALIDATE STRUCTURE CASCADE;
说明:
1
、该恢复方法是没有办法之后的恢复方法,一般情况下建议不要采用,因为该方法
可能导致数据库的不一致
2
、该方法也丢失数据,未写入数据文件的已提交或未提交数据。
3
、建议联机日志文件一定要实现镜相在不同的磁盘上,避免这种情况的发生,因为
任何数据的丢失对于生产来说都是不容许的

 

 

二、密码文件的丢失与损坏

       在一些特殊情况下会改变密码文件如:重建控制文件或密码文件被修改。

       c:>orapwd  file=’home\database\PWDSID’ password=123

 

三、控制文件丢失或损坏

    如果控制文件只丢失或损坏一个,可以复制一个替换损坏或丢失控制文件.

    如果所有控制文件损坏了就进行下面的操作。

    1、非归档模式

       1.有控制文件备份的情况下

           复制备份的控制文件,替换丢失的数据文件(用控制文件名命名)

SQL>startup;

SQL>recover database using backup controlfile;

看到这个提示时输入相应的日志文件路径如:

    'D:\ORACLE\ORADATA\TEST9\REDO01.LOG'

如果输入的文件有误会出现下面图片

如果出现上面错误就再重复一次

SQL> recover database using backup controlfile until cancel;

输入正确的日志后会出现

 

SQL>alter database open resetlogs;

 

       2.没有控制文件备份的情况下

方法1

    原来控制文件处不能有相应的控制文件

Sql> startup nomount;

Sql>

CREATE CONTROLFILE REUSE DATABASE test9 NORESETLOGS NOARCHIVELOG

           MAXLOGFILES 64

           MAXLOGMEMBERS 2

MAXDATAFILES 254

MAXINSTANCES 32

           MAXLOGHISTORY 113

           LOGFILE

              (根据自己日志文件进行设置,把所有的日志文件添加进去)

                  注意日志文件size与日志一致

           GROUP 1 'D:\ORACLE\ORADATA\TEST9\REDO01.LOG' SIZE 1048576 ,

           GROUP 2 'D:\ORACLE\ORADATA\TEST9\REDO02.LOG' SIZE 1048576 ,

           GROUP 3 'D:\ORACLE\ORADATA\TEST9\REDO03.LOG' SIZE 1048576

           DATAFILE

              (根据自己数据库数据文件进行设置,把所有的数据文件名添加进去)

'D:\ORACLE\ORADATA\TEST9\SYSTEM01.DBF',

'D:\ORACLE\ORADATA\TEST9\UNDOTBS01.DBF',

'D:\ORACLE\ORADATA\TEST9\CWMLITE01.DBF',

'D:\ORACLE\ORADATA\TEST9\DRSYS01.DBF',

'D:\ORACLE\ORADATA\TEST9\EXAMPLE01.DBF',

'D:\ORACLE\ORADATA\TEST9\INDX01.DBF',

'D:\ORACLE\ORADATA\TEST9\ODM01.DBF',

'D:\ORACLE\ORADATA\TEST9\TOOLS01.DBF',

'D:\ORACLE\ORADATA\TEST9\USERS01.DBF',

'D:\ORACLE\ORADATA\TEST9\XDB01.DBF'

CHARACTER SET ZHS16GBK  ;

 

按回车后,如果出现‘控制文件已创建’的提示时就表示创建成功

如果没有成功,

(根据自己数据库的字符集进行设置)

SQL> shutdown immediate;

SQL>startup mount;

SQL>recover database using backup controlfile until cancel;

看到这个提示时输入相应的日志文件路径如:

    'D:\ORACLE\ORADATA\TEST9\REDO01.LOG'

如果输入的文件有误会出现下面图片

如果出现上面错误就再重复一次

SQL> recover database using backup controlfile until cancel;

输入正确的日志后会出现

SQL>alter database open resetlogs;

 

如果这种办法无法新建控制文件,可能用下面一种方法创建控制文件

          

           方法2:

           SQL>startup nomount;

Sql>

CREATE CONTROLFILE SET DATABASE test9 NORESETLOGS NOARCHIVELOG

           MAXLOGFILES 64

           MAXLOGMEMBERS 2

MAXDATAFILES 254

MAXINSTANCES 32

           MAXLOGHISTORY 113

           LOGFILE

           GROUP 1 'D:\ORACLE\ORADATA\TEST9\REDO01.LOG' SIZE 1048576 ,

           GROUP 2 'D:\ORACLE\ORADATA\TEST9\REDO02.LOG' SIZE 1048576 ,

           GROUP 3 'D:\ORACLE\ORADATA\TEST9\REDO03.LOG' SIZE 1048576

           DATAFILE

'D:\ORACLE\ORADATA\TEST9\SYSTEM01.DBF',

'D:\ORACLE\ORADATA\TEST9\UNDOTBS01.DBF',

'D:\ORACLE\ORADATA\TEST9\CWMLITE01.DBF',

'D:\ORACLE\ORADATA\TEST9\DRSYS01.DBF',

'D:\ORACLE\ORADATA\TEST9\EXAMPLE01.DBF',

'D:\ORACLE\ORADATA\TEST9\INDX01.DBF',

'D:\ORACLE\ORADATA\TEST9\ODM01.DBF',

'D:\ORACLE\ORADATA\TEST9\TOOLS01.DBF',

'D:\ORACLE\ORADATA\TEST9\USERS01.DBF',

'D:\ORACLE\ORADATA\TEST9\XDB01.DBF'

CHARACTER SET ZHS16GBK  ;

Sql>

CREATE CONTROLFILE SET DATABASE test9 RESETLOGS NOARCHIVELOG

           MAXLOGFILES 64

           MAXLOGMEMBERS 2

MAXDATAFILES 254

MAXINSTANCES 32

           MAXLOGHISTORY 113

           LOGFILE

              (根据自己日志文件进行设置,把所有的日志文件添加进去)

                  注意日志文件size与日志一致

           GROUP 1 'D:\ORACLE\ORADATA\TEST9\REDO01.LOG' SIZE 1048576 ,

           GROUP 2 'D:\ORACLE\ORADATA\TEST9\REDO02.LOG' SIZE 1048576 ,

           GROUP 3 'D:\ORACLE\ORADATA\TEST9\REDO03.LOG' SIZE 1048576

           DATAFILE

              (根据自己数据库数据文件进行设置,把所有的数据文件名添加进去)

'D:\ORACLE\ORADATA\TEST9\SYSTEM01.DBF',

'D:\ORACLE\ORADATA\TEST9\UNDOTBS01.DBF',

'D:\ORACLE\ORADATA\TEST9\CWMLITE01.DBF',

'D:\ORACLE\ORADATA\TEST9\DRSYS01.DBF',

'D:\ORACLE\ORADATA\TEST9\EXAMPLE01.DBF',

'D:\ORACLE\ORADATA\TEST9\INDX01.DBF',

'D:\ORACLE\ORADATA\TEST9\ODM01.DBF',

'D:\ORACLE\ORADATA\TEST9\TOOLS01.DBF',

'D:\ORACLE\ORADATA\TEST9\USERS01.DBF',

'D:\ORACLE\ORADATA\TEST9\XDB01.DBF'

CHARACTER SET ZHS16GBK  ;

SQL> startup mount

SQL> recover database using backup controlfile until cancel;

SQL> alter database open resetlogs;

    2、归档模式 (操作与非归档一致)

      

 

四、数据文件的丢失或损坏

    1、非归档模式

       1、非系统表空间数据文件损坏

           表空间唯一数据文件损坏

              SQL>startup mount;

              SQL>alter database drop tablesapce space_name

           表空间一个数据文件损坏

              SQL>startup mount;

              SQL>alter database datafile ‘filepath’ offline drop ;

              SQL>alter database open;

       2、系统表空间数据文件损坏

           临时表空间丢失或损坏

              删除损坏数据文件,再为表空间添加一个数据文件。

           回滚表空间丢失或损坏

             

   

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14864453/viewspace-417464/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/14864453/viewspace-417464/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值