代码之家  ›  专栏  ›  技术社区  ›  jle

备份Oracle 10g时出现问题

  •  3
  • jle  · 技术社区  · 14 年前

    我刚开始一项工作,发现了一个问题,可以说,数据库当前没有得到正确备份。我们每6小时备份一次,使用Oracle本机备份实用程序,但我们也被一家公司卖给了一个程序,他们说他们实际上可以通过简单地获取数据库文件的文件系统副本来执行数据库的“热”备份,当我们需要恢复时,我们只需关闭Oracle,然后复制已复制的文件,重启甲骨文,世界将再次完整。现在的挑战是我们还没有让它发挥作用。我需要花更多的时间来回顾Oracle发出的消息,但我的主要问题是,“是否有可能”在Oracle仍在运行时复制Oracle文件,并在以后使用这些文件还原数据库?我知道,如果关闭数据库,然后再创建副本,它就会工作,但这是我第一次听说在数据库运行时可以创建副本(文件系统)。任何指导都将不胜感激。这是我们得到的错误。

    ORA-00314: log 3 of thread 1, expected sequence# 1939 doesn't match 1944
    ORA-00312: online log 3 thread 1: 'E:\ORACLE\ORADATA\ITMS\REDO03.LOG'
    
    4 回复  |  直到 14 年前
        1
  •  3
  •   Alex Poole    14 年前

    是的,这是可能的,但是您必须先将所有表空间置于备份模式,然后再将它们取出(例如。 ALTER TABLESPACE x BEGIN BACKUP ALTER TABLESPACE x END BACKUP

    否则,您会遇到的两个主要问题是,在复制单个文件时会更新它们,这样单个文件可能会损坏;更明显的是,不同的文件具有不同的内部时间戳和序列,因此Oracle不允许使用它们。

    如果你使用的是你已经购买的流程,那么它应该已经处理好所有这些了。听起来备份没问题,但恢复还没开始。

    RECOVER 使用备份后生成的重做日志的数据库;或者如果您试图还原到该时间点,则可以使用 RESETLOGS 指示并丢失所有稍后重做日志中的所有更改。但真的要接受比这更明智的建议。。。

        2
  •  3
  •   dpbradley    14 年前

    • 数据文件是为 当表空间在 “开始备份”模式。
    • 文件系统,如Veritas,可以 快照和跟踪块 正在复制。
        3
  •  1
  •   REW    14 年前

    这是可能的。您必须处于ARCHIVELOG模式。

    一个示例脚本将用于手动:

    Alter tablespace USERS begin backup;
    host cp -p /u02/oradata/PROD/users01.dbf /u03/backup/PROD/
    host cp -p /u02/oradata/PROD/users02.dbf /u03/backup/PROD/
    Alter tablespace USERS end backup;
    

    如果您想在数据库打开时备份整个数据库(我更喜欢使用带有DBA的Oracle,这样您就可以避免使用脚本中的密码,但是使用ymmv):

    $ ORAENV_ASK=NO
    $ ORACLE_SID=PROD
    $ . oraenv
    $ rman target=/
    
    Recovery Manager: Release 10.2.0.4.0 - Production on Thu Oct 28 14:23:29 2010
    
    Copyright (c) 1982, 2007, Oracle.  All rights reserved.
    
    connected to target database: PROD (DBID=x)
    
    RMAN> backup as compressed backupset database plus archivelog;
    
    ...
    
    Backup Complete.
    
        4
  •  1
  •   Jeffrey Kemp    14 年前

    我已经用运行在Amazon EC2上的非关键任务数据库有效地做到了这一点。我的备份策略是定期拍摄EBS卷的快照。要恢复备份,我从快照创建一个新的EBS卷,使用它启动实例,然后运行 RECOVER DATABASE .