Oracle数据库重做日志切换

时间:2013-09-17 12:34:13

标签: oracle logging

我想重新创建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数据库仅挂载(不处于读写模式),而我无法打开,因为重做日志已损坏。此外,甚至使用从另一个DB安装数据库redolog1。 #2,#3和#4成功重建,因为它们不是最新的。

有没有人有任何想法? 非常感谢任何帮助。

提前致谢!

1 个答案:

答案 0 :(得分:3)

此错误(ORA-01109)表示您正在尝试对已关闭的数据库执行操作。因此,您的数据库实例可能只使用选项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; alter database open * ERROR at line 1:
  ORA-00305:线程1的日志1不一致;属于另一个数据库
  ORA-00312:在线日志1主题1:'/ ordata / DB / PRBT / redo1B.log'
  ORA-00305:线程1的日志1不一致;属于另一个数据库
  ORA-00312:在线日志1主题1:'/ odata / DB / PRBT / redo1A.log'

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

  1. 装入数据库
  2. 恢复数据库直到取消
  3. 然后使用resetlogs选项打开数据库
  4. 示例:

    SQL> startup mount;
    ORACLE instance started.
    Database mounted.
    
    SQL> recover database until cancel;
    Media recovery complete.
    
    SQL> alter database open resetlogs;
    
    Database altered.