李家宏|博客

连接失败: ORA-01033: ORACLE 正在初始化或关闭

发布时间:3年前热度: 1021 ℃评论数:

序言

大早晨的就出现了这个问题……emmm 
一觉醒来,发现应用和数据库服务器都重启了,应用连接数据库提示 
image_1cmrdfcqa1m3011q61hg91col1ps0m.png-2kB 
连接失败: ORA-01033: ORACLE 正在初始化或关闭 
哇 我的两个月的成果不会就这么没了吧?各种百度谷歌,终于找到了解决方法。按耐着激动的心情讲述一下过程,毕竟剧情跌宕起伏啊!

解决方法

过程一(卸载重载数据库)

教程来源 
1. 打开sqlplus(废话)

sqlplus /nolog

conn / as sysdba;

  1. 卸载数据
shutdown normal;

image_1cmrdn1hoets7oilha1k85132713.png-3.7kB 
3. 装载数据

startup mount;

image_1cmrduhn51rnbivqgp716d8jom2a.png-7kB 
5. 然后开启数据库……emmmmm,然后……就没有然后了 这个跟网上的教程不一样啊!!!!!!!!

alter database open;

这是我的 
image_1cmrdo76gfr81l2e1pb21n7hmom1g.png-13.7kB 
这是教程的 
image_1cmrdse0c18g2d801skhdag2os1t.png-4.8kB 
这还怎么玩……于是乎,我又寻找关于内部错误代码,参数[kcratr_nab_less_than_odr]的错误。

要不说周六加班的孩子有虫吃呢,还是被我找到了。

过程二(重建控制文件)

教程来源

  1. --尝试直接recover database  
  2. SQL> RECOVER DATABASE ;
  3. 完成介质恢复。
  4. SQL> alter database open;
  5. alter database open
  6. *
  7. 1 行出现错误:
  8. ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [2266],
  9. [13784], [13810], [], [], [], [], [], [], []
  10. --再打开数据库,还是kcratr_nab_less_than_odr错误警告
  11. --尝试不完全恢复  
  12. SQL> RECOVER DATABASE UNTIL CANCEL;
  13. ORA-10879: error signaled in parallel recovery slave
  14. ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
  15. ORA-01152: 文件 1 没有从过旧的备份中还原
  16. ORA-01110: 数据文件 1: 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF'
  17. --重建控制文件  
  18. SQL>  ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS 'D:/1.TXT';
  19. 数据库已更改。
  20. SQL> SHUTDOWN IMMEDIATE;
  21. ORA-01109: 数据库未打开
  22. 已经卸载数据库。
  23. ORACLE 例程已经关闭。
  24. SQL>  STARTUP NOMOUNT;
  25. ORACLE 例程已经启动。
  26. Total System Global Area 1.3696E+10 bytes
  27. Fixed Size                  2188768 bytes
  28. Variable Size            9764342304 bytes
  29. Database Buffers         3892314112 bytes
  30. Redo Buffers               37044224 bytes
  31. --这一段是从D:/1.txt直接复制过来的
  32. SQL> CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  NOARCHIVELOG
  33.  MAXLOGFILES 16
  34.   MAXLOGMEMBERS 3
  35.      MAXDATAFILES 100
  36.      MAXINSTANCES 8
  37.      MAXLOGHISTORY 292
  38.  LOGFILE
  39.    GROUP 1 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG'  SIZE 50M BLOCKSIZE 512,
  40.    GROUP 2 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG'  SIZE 50M BLOCKSIZE 512,
  41.    GROUP 3 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG'  SIZE 50M BLOCKSIZE 512
  42.  DATAFILE
  43.    'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF',
  44.    'D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF',
  45.    'D:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF',
  46.    'D:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF'
  47.  CHARACTER SET AL32UTF8
  48.  ;
  49. 控制文件已创建。
  50. SQL> ALTER DATABASE OPEN;
  51. 数据库已更改。
  52. --开启成功!!完结,撒花~

看到提示成功了,数据库用连接工具也连接上了,美滋滋的打开应用……

image_1cmrddjae12fqaup16d1mtb15hb9.png-2.2kB

我$^&@^#&^$^$%^&@^#(@^&$*^@*&$^@(^$&@*^&@*%@*%*@!!!!

搞什么嘛。。。

于是乎,连接数据库

过程三(临时表空间创建)

教程来源 
1. 先查询表空间情况:

select * from dba_tablespaces where contents='TEMPORARY';

查询返回一条记录,说明存在一个临时表空间,如下: 
image_1cmrenvcf1fq01tns10qjost1nsm2n.png-18.6kB
2. 再查看视图dba_temp_filesv$tempfile

select * from dba_temp_files;select * from v$tempfile;

查询并没有返回记录; 
3. 查看服务器上oracle数据目录,发现存在临时表空间对应的数据文件: 
TEMP01.dbf一个数据文件; 
image_1cmreqvhn1lvio0pn17n9h1k6m34.png-1.6kB 
4. 向临时数据表空间添加数据文件

  1. alter tablespace TEMP add tempfile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP02.DBF' size 200m autoextend on;
  2. --返回执行成功
  3. [2018-09-08 09:39:11.778][data][550085][ORA]
  4. alter tablespace TEMP add tempfile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\TEMP02.DBF' size 200m autoextend on
  5. Time: 0.382s

  6. 验证添加成功:
  7. select * from dba_temp_files;

  1. image_1cmrf0uqc1h6o8stscu3tg1v713h.png-10.8kB
    至此,应用终于欢快的启动了!! 
    image_1cmrf302k1m8eptu2e9hn8c6f4e.png-9.2kB

  2. 总结(作死行为)

    如果你的数据库没有自动备份,建议时刻准备跑路!!!


ORA-01033,ORACLE

手机扫码访问