Oracle系列问题解决

来源:互联网 发布:阿里云 服务器 使用 编辑:程序博客网 时间:2024/06/11 09:13

        前几天学习DRP时敲完代码要运行,突然报了数据库的错误,原先也有过是因为Oracle数据的服务没起,这次看来一下相关的服务都是起着的,所以就用PL/SQL连接一下,结果报出个这样的错误“ORA-01033: ORACLE initialization or shutdown in progress Process ID:0 Session ID:0 Serialnumber:0”。

       当然出现这种错误先查一下原因是什么,网上说的原因比较多结合自己的情况最可能的是两种:1、断电,就是Oracle运行过程中没有关闭Oracle就电脑前关闭了。2、Oracle启动需要装载一些配置信息相关的文件可能出错了。这个问题的解决办法网上的相关文章很多看了几篇下来大概都是一样的流程,主要就是恢复一下出错的文件。于是就开始在自己的本上操作了,所有的都是在dos窗口下进行的,在之前几次问题的锻炼下已经不惧怕这个黑窗口了。

        首先是以超级管理员的身份连接到数据,然后开始如下的操作:

<span style="font-size:24px;">   //首先停止数据库的服务SQL>shutdown immediate      //上个命令执行完毕后,重写启动,等待结果主要是看过程中那个文件会报错SQL>startup</span>

按照正常的流程这个命令执行完毕后会有一行如下的提示:“ORA-01157: 无法标识/锁定数据文件 N –请参与DBWR跟踪文件”,这里的N就是出问题的文件标识,如果有如上的提醒继续执行如下的命令

<span style="font-size:24px;">   //首先再次停止服务SQL> shutdown immediate   //恢复上面提示的出错文件SQL>startup mount</span>
<pre name="code" class="plain"><span style="font-size: 24px;">  </span><span style="font-size:24px;">//这里的N就是上面提示的标识</span>
SQL>recover datafile N


        再次停止,然后重启,不出现ORA-01157的错误提示就是没有问题了。如果问题就这样解决了很简单,但是自己的没有出现ORA-01157的错误提示,所有没有办法找到有错误的文件进行恢复,自己的出现了如下的错误提示“ORA-600 kcratr_nab_less_than_odr”,只能先解决这个问题才能继续,于是开始踏上了解决ORA-600的征程。

        首先了解一下这是个什么错误,网上说这个错误不是自己oracle的问题,而是oracle软件本身的一个bug,因为使用的版本不稳定,呵呵稳定的我也用不起啊。自己查到的解决办法是重新建立控制文件,过程如下:

<span style="font-size:24px;">   //这个命令执行完后会在相应的D盘下生成1.txt文件,SQL> ALTERDATABASE BACKUP CONTROLFILE TO TRACE AS 'D:/1.TXT';   //关闭数据库SQL> SHUTDOWNIMMEDIATE;   //重新启动SQL> STARTUPNOMOUNT;   //开始重新建立,SQL> CREATE CONTROLFILE REUSE DATABASE"ORCL" NORESETLOGS NOARCHIVELOG 2      MAXLOGFILES 16 3      MAXLOGMEMBERS 3 4      MAXDATAFILES 100 5      MAXINSTANCES 8 6      MAXLOGHISTORY 18688 7  LOGFILE 8    GROUP 1 'D:\ ORCL\LOG\REDO01.LOG'  SIZE 50M BLOCKSIZE 512, 9    GROUP 2 'D:\ ORCL\LOG\REDO02.LOG'  SIZE 50M BLOCKSIZE 512, 10   GROUP 3 'D:\ ORCL \LOG\REDO03.LOG' SIZE 50M BLOCKSIZE 512 11 DATAFILE 12   'D:\ ORCL \DATA\SYSTEM01.DBF', 13   'D:\ ORCL \DATA\SYSAUX01.DBF', 14   'D:\DBDMS\DATA\SYSTEM02.DBF' 15 CHARACTER SET ZHS16GBK 16  ; SQL> RECOVER DATABASE ;SQL> ALTER DATABASE OPEN;</span>

        以上命令执行时注意两点:1、CREATECONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  NOARCHIVELOG,命令中引号内为自己在安装oracle时的名字,可通过查看服务确定。2、7行到15行之间的内容应该和在D盘生产1.txt文件对应部分相同。


        完毕后使用PL/SQL登录连接,呵呵又出现了新的问题“ORA-01589: 要打开数据库则必须使用 RESETLOGS 或NORESETLOGS”,这个问题相对容易解决,过程如下:

<span style="font-size:24px;">SQL> alter database open resetlogs;SQL> recover database using backupcontrolfile;   //提示完成介质恢复。SQL> alter database open resetlogs;   //提示数据库已更改。</span>

         再次使用PL/SQL连接,终于OK了!

小结

         这次出现的问题最终是没有确定下来原因,不过对oracle的一些命令和一些原理有了进一步的了解,以后再遇到问题应该能够淡定的对待!

2 0