备份Oracle 10g时出现问题

备份Oracle 10g时出现问题,oracle,database-backups,Oracle,Database Backups,我刚刚开始一项工作,发现了一个问题,可以说,数据库当前没有正确备份。我们正在使用Oracle本机备份实用程序每6小时进行一次备份,但我们也被一家公司出售了一个过程,他们在该过程中表示,他们实际上可以执行“热备份”通过简单地获取数据库文件的文件系统副本来备份我们的数据库,当我们需要恢复时,我们只需关闭Oracle,然后复制已复制的文件,重新启动Oracle,世界将再次完整。我们面临的挑战是,我们还没有让这项工作发挥作用。我需要花更多的时间来回顾Oracle发出的信息,但我的主要问题是,“是否有可能

我刚刚开始一项工作,发现了一个问题,可以说,数据库当前没有正确备份。我们正在使用Oracle本机备份实用程序每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'

是的,这是可能的,但您必须先将所有表空间置于备份模式,然后再将它们取出(例如,
ALTER TABLESPACE x BEGIN backup
ALTER TABLESPACE x END backup
;您需要检查语法并确保它适合您的情况!)。过分简化了,这告诉Oracle不要写入任何数据文件,所以它们都保持在一致状态

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

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


我已经有一段时间没有参与从热备份进行恢复了,因此其他人需要提供实际错误的详细信息。我的理解是,您尝试使用恢复的数据文件打开,但后来使用的是实时重做日志。在恢复时,我认为您要么必须
使用备份后生成的重做日志恢复
数据库;或者,如果您试图恢复到该时间点,则可以使用
RESETLOGS
指令打开数据,并丢失所有后续重做日志中的所有更改。但实际上,我们需要更多的建议…

据我所知,有两种方法可以从运行中的Oracle实例“复制”数据文件

  • 数据文件将被复制以用于 表空间位于中时的表空间 “开始备份”模式
  • 您使用的是高端日志记录 像Veritas这样的文件系统可以 快照和跟踪块 文件系统上的更改,而 复制正在进行

    • 这是可能的。您必须处于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;
      
      但是,我建议只使用RMAN。RMAN非常健壮,免费提供,可以进行热备份和冷备份。它将克隆到另一个实例、克隆为时间点、恢复到某个时间点等。任何手动备份过程都应迁移到使用RMAN

      如果您希望在整个数据库打开时备份它(我更喜欢使用Oracle with DBA,这样您就可以避免在脚本中使用密码,而不是使用ymmv):


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


      当然,这会丢失快照拍摄时正在进行的所有事务。

      +1,我很有信心这是您的问题-您需要运行恢复数据库,直到。。。命令,数据库已装入但未打开。
      $ 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.