1

我想重新创建 Oracle 数据库的重做日志,但我似乎走到了死胡同。

当我打电话时

SELECT GROUP#, ARCHIVED, STATUS FROM V$LOG;

我得到以下

 GROUP# ARC STATUS
---------- --- ----------------
     1 NO  CURRENT
     4 YES UNUSED
     3 YES UNUSED
     2 YES UNUSED

问题是,我必须删除 1 号重做日志,但不能因为 #1 是当前重做日志。如何在日志之间切换?

我也试过ALTER SYSTEM SWITCH LOGFILE;了,但是我得到一个错误,说数据库没有打开。ORA-01109. 数据库只挂载(不是读写模式),由于重做日志损坏,我无法打开它。此外,甚至使用了从另一个数据库挂载数据库 redolog1。#2、#3 和 #4 已成功重新创建,因为它们不是最新的。

有人有什么主意吗?任何帮助深表感谢。

提前致谢!

4

1 回答 1

3

此错误 (ORA-01109) 表明您正在尝试对已关闭的数据库执行操作。因此,您的数据库实例可能已仅使用 option 启动mount,而使数据库处于关闭状态。您只需要打开数据库并重试alter system命令:

SQL> alter system switch logfile;
alter system switch logfile
*
ERROR at line 1:
ORA-01109: database not open 


SQL> alter database open;

Database altered.

SQL> alter system switch logfile;

System altered.

编辑

如果您收到此错误

SQL> 改变数据库打开;alter database open * 第 1 行出现错误:
ORA-00305:线程 1 的日志 1 不一致;属于另一个数据库
ORA-00312: online log 1 thread 1: '/oradata/DB/PRBT/redo1B.log'
ORA-00305: log 1 of thread 1 不一致;属于另一个数据库
ORA-00312: online log 1 thread 1: '/oradata/DB/PRBT/redo1A.log'

在尝试打开数据库时,日志文件中的数据库 ID 和控制文件中的数据库 ID 很可能不匹配。简而言之,来自不同数据库的日志文件。要使您的数据库生效,您可以尝试以下操作;

  1. 挂载你的数据库
  2. 恢复数据库直到取消
  3. 然后使用 resetlogs 选项打开数据库

例子:

SQL> startup mount;
ORACLE instance started.
Database mounted.

SQL> recover database until cancel;
Media recovery complete.

SQL> alter database open resetlogs;

Database altered.
于 2013-09-17T12:41:27.510 回答