[关闭]
@lijiahong 2018-09-08T02:29:51.000000Z 字数 2546 阅读 639

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

oracle ORA-01033


序言

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

解决方法

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

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

  1. sqlplus /nolog
  2. conn / as sysdba;
  1. 卸载数据
  1. shutdown normal;

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

  1. startup mount;

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

  1. 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. 先查询表空间情况:

  1. select * from dba_tablespaces where contents='TEMPORARY';

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

  1. select * from dba_temp_files;
  2. 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
  1. 验证添加成功:
  1. select * from dba_temp_files;

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

总结(作死行为)

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

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注