ORA-01109 错误解决

本文介绍了解决Oracle数据库中丢失redo日志文件的方法。通过清除丢失的日志组并进行必要的数据库恢复步骤,最终成功解决了数据库启动失败的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oracle 数据库时出现了错误:SQL> connect / as sysdba;
  已连接。
  SQL> shutdown immediate;
  ORA-01109: 数据库未打开
  
  已经卸载数据库。
  ORACLE 例程已经关闭。
  SQL> startup;
  ORACLE 例程已经启动。
  Total System Global Area 135338868 bytes
  Fixed Size 453492 bytes
  Variable Size 109051904 bytes
  Database Buffers 25165824 bytes
  Redo Buffers 667648 bytes
  数据库装载完毕。
  ORA-00313: 无法打开日志组 1 (线程 1) 的成员
  ORA-00312: 联机日志 1 线程 1: 'C:\ORACLE\ORADATA\ORCL\REDO01.LOG'
  查看C:\ORACLE\ORADATA\myoracle\REDO01.LOG还在,但是REDO02.LOG,REDO03.LOG被误删了.
  赶紧换个例程OEMREP试试,结果还是一样的错误!
  蒙了,难道要重装数据库不成?有什么办法可以解决这个问题呢?
  
  解决办法:
  SQL> shutdown immediate;
  ORA-01109: 数据库未打开
  已经卸载数据库。
  SQL> startup mount;
  ORACLE 例程已经启动。
  SQL>select * from v$log;
  GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
  ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
   1 1 0 104857600 1 NO UNCURRENT 670680 07-12月-07
   2 1 15 104857600 1 NO unactive 696119 07-12月-07
   3 1 0 104857600 1 NO Unactive 650182 07-12月-07
  已选择3行。
  alter database clear unarchived logfile group 1;
  数据库已经更改.
  alter database clear unarchived logfile group 2;
  数据库已经更改.
  alter database clear unarchived logfile group 3;
  数据库已经更改.
  SQL>shutdown;
  已经卸载数据库。
  ORACLE 例程已经关闭。
  SQL>startup;
  ORACLE 例程已经启动。
  Total System Global Area 135338868 bytes
  Fixed Size 453492 bytes
  Variable Size 109051904 bytes
  Database Buffers 25165824 bytes
  Redo Buffers 667648 bytes
  数据库装载完毕。
  数据库已经打开。
  问题解决!
  但是,在对myoracle 例程进行同样的操作后,也不知道是哪里出了问题,
  SQL>startup;
  ORACLE 例程已经启动。
  Total System Global Area 135338868 bytes
  Fixed Size 453492 bytes
  Variable Size 109051904 bytes
  Database Buffers 25165824 bytes
  Redo Buffers 667648 bytes
  数据库装载完毕。
  ORA-03113: 通信通道的文件结束
  在网上查找资料,出现这样的问题原因很多,一般是网络不通,或者是init.ora、C:\oracle\ora92\network\admin\sqlnet.ora或tnsnames.ora有问题.显然这些不适合我.我的两个例程,一个可以正常使用,另外一个有问题的!
  在我关闭数据库后,重新打开,执行:
  SQL>connect "/as sysdba";
  SQL>select * from scott.emp;
  ORA-27101 shared memory realm does not exist -
  出现这个错误也有很多解释,一般要检查init.ora文件的内存配置是否有问题,但是在没有打开数据库的时候执行命令,也会出现这样的错误提示,我的属于后者,是由于没有挂载数据库造成的,这里提醒一下.
   后来又乱琢磨了一回,还出现了错误:
  ORA-24324: 未初始化服务句柄
  ORA-01041: 内部错误,hostdef 扩展名不存在
  这是越来越乱了,无奈之下,只好重头再来整理一遍,从重新配置日志文件开始,操作一样,但是奇迹出现了,错误消失了,也不提示通信通道文件结束了,数据库正常了,呵呵,但是很晕!
  
  解决问题知识整理:
  首先,执行下面的语句看看group1是不是current日志组
  select * from v$log;
  如果被删除的日志不是当前日志组的成员,比较简单
  alter database clear logfile group 1;
  如果你的库是非归档的,或许要用下面的语句
  alter database clear unarchived logfile group 1;
  如果是当前日志组损坏,但是数据库是正常关闭的,上面的办法也可以使用
  如果日志组中有活动的事务,那么可能需要利用备份来恢复了:过程如下:
  解决过程:Microsoft Windows XP [版本 5.1.2600](C) 版权所有 1985-2001 Microsoft Corp.
  C:\Documents and Settings\5201314>sqlplus /nolog
  SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 6月 20 11:19:52 2008Copyright (c) 1982, 2005, Oracle. All rights
  reserved.
  SQL> conn sys/dd as sysdba
  已连接。
  SQL> startup mount
  ORA-01081: 无法启动已在运行的 ORACLE - 请首先关闭它
  SQL> recover database until time '2008-06-19 13:45:02';
  
  完成介质恢复。
  SQL> alter database open resetlogs;
  数据库已更改。
  SQL> shutdown immediate;
  数据库已经关闭。
  已经卸载数据库。
  ORACLE 例程已经关闭。
  SQL> startup
  ORACLE 例程已经启动。
  Total System Global Area 205520896 bytes
  Fixed Size 1248092 bytes
  Variable Size 79692964 bytes
  Database Buffers 117440512 bytes
  Redo Buffers 7139328 bytes
  数据库装载完毕。
  数据库已经打开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值