Oracle解决ORA-01034:?ORACLE?not?available问题的办法

 更新时间:2024年02月26日 10:17:45   作者:Kida?的技术小屋  
这篇文章主要给大家介绍了关于Oracle解决ORA-01034:?ORACLE?not?available问题的办法,今天连接oracle出现如下错误,在网查了相关资料说出现ora-01034错误的原因是因为数据库的控制文件没有加在startup mount后,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

这个…不知道是镜像问题还是配置上有问题,Docker版的Oracle 11g在上次部署完之后已经出现了多次无法访问的情况(就是 registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g这个镜像),最后一次修复已经将连接数从150(默认)提升到8000,这次无法访问肯定不是连接数已满的问题。

遇事不要慌,先通过docker exec进入容器内部连接一下oracle数据库,看到的是

ORA-01034: ORACLE not available

这…难道是之前为了修改连接数直接关机导致日志无法归档么?

上网查了些资料,最终通过如下步骤解决的:

  • 先用sqlplus使用sysdba权限访问连接数据库
[oracle@e156e1b777f5 -]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Sun Nov 14 13:36:28 2021
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
  • 查询v$log看看能否正常查询到日志信息
SQL> select * from v$log;
select × from v$log
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0
  • 在发现报ORA-01034: ORACLE not available错误后,我们再试试操作resetlogs
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: O
Session ID: 0 Serial number: 0

要注意,这里使用resetlogs方式打开数据库对oracle进行恢复是存在风险的,如果日志文件没有损坏的情况下可以直接恢复就可以了,这次的情况比较麻烦,所以才想用这种方式进行。

  • 既然所有操作都报错了,就先关闭实例
SQL> shutdown immediate;
ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist
Linux-x86 64 Error: 2: No such file or directory
  • 重新挂载启动
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1603411968 bytes
Fixed Size                  2213776 bytes
Variable Size            1342179440 bytes
Database Buffers          251658240 bytes
Redo Buffers                7360512 bytes
Database mounted.
  • 重启之后再尝试使用resetlogs打开数据库
SQL> alter database open resetlogs;
alter database open resetlogs
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery

这里又是一个ERROR,先不要管它继续下一步操作

  • 这时我们又再查一次v$log

如上图所示,通过v$log得知日志只记录到昨天(11月13日),还好不是生产环境的一天的时间还能够接受。

  • 通过recover database命令进行数据恢复
SQL> recover database until time '2021-11-13 00:00:00'
ORA-10879: error signaled in parallel recovery slave
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/home/oracle/app/oracle/oradata/helowin/systeml.dbf'

嗯…没有头绪还是先“重启”吧

SOL> shutdown;
ORA-01109: database not open

Database dismounted.
ORACLE instance shut down.
SOL> startup
ORACLE instance started.

Total System Global Area 1603411968 bytes
Fixed Size                  2213776 bytes
Variable Size            1342179440 bytes
Database Buffers          251658240 bytes
Redo Buffers                7360512 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

这次连启动也报错,真是“一波未平一波又起”。

  • sqlplus再查询一次l日志

既然这样就手动redo一次吧。

  • 执行recover database

执行完了之后再open resetlogs就可以了

SQL> alter database open resetlogs;

Database altered.

为了使操作完全生效决定重启了一下oracle

SQL> shutdown immedate;
SP2-0717: illegal SHUTDOWN option
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SOL> startup;
ORACLE instance started.

Total System Global Area 1603411968 bytes
Fixed Size                  2213776 bytes
Variable Size            1342179440 bytes
Database Buffers          251658240 bytes
Redo Buffers                7360512 bytes
Database mounted.
Database opened.

这样就搞定了。

总结

到此这篇关于Oracle解决ORA-01034: ORACLE not available问题的文章就介绍到这了,更多相关ORA-01034:ORACLE not available内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • Oracle基本查询过滤排序示例解析

    Oracle基本查询过滤排序示例解析

    以下是对Oracle中的基本查询过滤排序示例进行了详细的分析介绍,需要的朋友可以参考下
    2013-08-08
  • oracle RETURNING 子句使用方法

    oracle RETURNING 子句使用方法

    这篇文章主要介绍了oracle RETURNING 子句使用方法,需要的朋友可以参考下
    2016-02-02
  • Oracle分区表超详细讲解(Oracle?Partitioned?Tables)

    Oracle分区表超详细讲解(Oracle?Partitioned?Tables)

    这篇文章主要给大家介绍了挂不同意Oracle分区表超详细讲解(Oracle?Partitioned?Tables)的相关资料,ORACLE的分区是一种处理超大型表、索引等的技术,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • 深入sql oracle递归查询

    深入sql oracle递归查询

    本篇文章是对sql oracle 递归查询进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • Oracle的控制文件管理

    Oracle的控制文件管理

    Oracle 的控制文件记录了当前数据库的结构信息,包含数据文件及日志文件的信息以及相关的状态、归档信息等,本文主要介绍了Oracle的控制文件管理,感兴趣的可以了解一下
    2023-12-12
  • Oracle中查询表结构的6种方法总结

    Oracle中查询表结构的6种方法总结

    工作中查看oracle表结构经常会遇到,下面这篇文章主要给大家介绍了关于Oracle中查询表结构的6种方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • And,Where使用提示以及用+进行左关联的提示及注意事项

    And,Where使用提示以及用+进行左关联的提示及注意事项

    先左关联后在过滤假如关联的结果里面B.b3=null那么你在where后面在加B.b3=2那么结果中B.b3肯定是没有null的情况的,也就是说用+进行左关联没有用leftjoin灵活待后续看是否有什么好的解决方案
    2013-02-02
  • oracle表空单清理常用代码段整理

    oracle表空单清理常用代码段整理

    清理TEMP临时表空间、清理UNDO表空间、清理TEMPTABS表空间等等,有类似需求的朋友可以参考下哈
    2013-06-06
  • Oracle查询语句中rownum与rowid的不同之处分析

    Oracle查询语句中rownum与rowid的不同之处分析

    这篇文章主要介绍了Oracle查询语句中rownum与rowid的不同之处分析,需要的朋友可以参考下
    2014-07-07
  • Oracle实现主键字段自增的四种方式

    Oracle实现主键字段自增的四种方式

    众所周知MySQL数据库的主键自增设置非常简单,任何一个常用的可视化工具都支持,只要打一下勾就可以开启主键自增了,然而Oracle并没有那么简单,这篇文章主要给大家介绍了关于Oracle实现主键字段自增的四种方式,需要的朋友可以参考下
    2023-03-03

最新评论

?


http://www.vxiaotou.com