知识大全 Oracle数据库备份与恢复精华资料集锦

Posted 数据库

篇首语:带不走四季的风,就卷走一路的风景;遇不到心动的人,就孤身潇洒走四方。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle数据库备份与恢复精华资料集锦相关的知识,希望对你有一定的参考价值。

Oracle数据库备份与恢复精华资料集锦  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

主要介绍了Oracle数据库备份与恢复的具体方法及相关案例 详细内容请大家参考下文

  冷备份

   备份步骤

  冷备份具有很多优良特性 快速 方便 以及高效 一次完整的冷备份步骤是

  

   首先关闭数据库(shutdown normal)

  

   拷贝相关文件到安全区域(利用操作系统命令拷贝数据库的所有的数据文件 日志文件 控制文件 参数文件 口令文件等(包括路径))

  

   重新启动数据库(startup)

  

  以上的步骤可以用一个脚本来完成操作

  

  su oracle < sqlplus /nolog

  connect / as sysdba

  shutdown immediate;

  !cp 文件 备份位置(所有的日志 数据 控制及参数文件);

  startup;

  exit;

  

   恢复步骤

  恢复的时候 相对比较简单了 我停掉数据库 将文件拷贝回相应位置 重启数据库就可以了 当然也可以用脚本来完成

  

  热备份

   备份步骤

  当需要做一个精度比较高的备份 而且我们的数据库不可能停掉(少许访问量)时 这个情况下 我们就需要归档方式下的备份 就是下面讨论的热备份 热备份可以非常精确的备份表空间级和用户级的数据 由于它是根据归档日志的时间轴来备份恢复的 理论上可以恢复到前一个操作 甚至就是前一秒的操作 具体步骤如下

  

   通过视图v$database 查看数据库是否在Archive模式下:

  

  SQL> select log_mode from v$database;

  

  如果不是Archive模式

  

  则设定数据库运行于归档模式下 SQL>shutdown immediate

  

  SQL>startup mount

  SQL> alter database archivelog;

  SQL> alter database open;

  

  如果Automaticarchival显示为 Enabled 则数据库归档方式为自动归档 否则需要手工归档 或者将归档方式修改为自动归档 如

  正常shutdown数据库 在参数文件中init ora中加入如下参数

  

  SQL>shutdown immediate

  

  修改init ora

  

  LOG_ARCHIVE_START=TRUE

  LOG_ARCHIVE_DEST =ORACLE_HOME/admin/o /arch(归档日值存放位置可以自己定义)

  SQL>startup

  

  然后 重新启动数据库 此时Oracle数据库将以自动归档的方式工作在Archive模式下 其中参数LOG_ARCHIVE_DEST 是指定的归档日志文件的路径 建议与Oracle数据库文件存在不同的硬盘 一方面减少磁盘I/O竞争 另外一方面也可以避免数据库文件所在硬盘毁坏之后的文件丢失 归档路径也可以直接指定为磁带等其它物理存储设备 但可能要考虑读写速度 可写条件和性能等因素

  

  注意 当数据库处在ARCHIVE模式下时 一定要保证指定的归档路径可写 否则数据库就会挂起 直到能够归档所有归档信息后才可以使用 另外 为创建一个有效的备份 当数据库在创建时 必须履行一个全数据库的冷备份 就是说数据库需要运行在归档方式 然后正常关闭数据库 备份所有的数据库组成文件 这一备份是整个备份的基础 因为该备份提供了一个所有数据库文件的拷贝 (体现了冷备份与热备份的合作关系 以及强大的能力)

  

  

  

   备份表空间文件

  

  a 首先 修改表空间文件为备份模式 ALTER TABLESPACE tablespace_name BEGIN BACKUP;

  

  b 然后 拷贝表空间文件到安全区域 !CP tablespace_name D_PATH;

  

  c 最后 将表空间的备份模式关闭 ALTER TABLESPACE tablespace_name END BACKUP;

  

   对归档日志文件的备份

  

  停止归档进程-->备份归档日志文件-->启动归档进程

  

  如果日志文档比较多 我们将它们写入一个文件成为一个恢复的参考 $ files `ls <归档文件路径>/arch* dbf`;export files

  

   备份控制文件:

  

  SQL> alter database backup controlfile to controlfile_back_name(一般用 的方式) reuse;

  

  当然 我们也可以将上面的东东写为一个脚本 在需要的时候执行就可以了:

  

  脚本范例

  

  su oracle < sqlplus /nolog

  connect / as sysdba

  ALTER TABLESPACE tablespace_name BEGIN BACKUP

  

  !CP tablespace_name D_PATH

  

  ALTER TABLESPACE tablespace_name END BACKUP

  

  alter database backup controlfile to controlfile_back_name(一般用 的方式) reuse;

  

  !files `ls <归档文件路径>/arch* dbf`;export files 恢复步骤

  热备份的恢复 对于归档方式数据库的恢复要求不但有有效的日志备份还要求有一个在归档方式下作的有效的全库备份 归档备份在理论上可以无数据丢失 但是对于硬件以及操作人员的要求都比较高 在我们使用归档方式备份的时候 全库物理备份也是非常重要的 归档方式下数据库的恢复要求从全备份到失败点所有的日志都要完好无缺

  

  恢复步骤 LOG_ARCHIVE_DEST_

  shutdown数据库

  将全备份的数据文件放到原来系统的目录中

  将全备份到失败点的所有归档日志放到参数LOG_ARCHIVE_DEST_ 所指定的位置

  利用sqlplus登陆到空实例 (connect / as sysdba)

  然后 startup mount

  set autorecovery on

  recover database;

  alter database open;

  

  这样 热恢复就算完工

  

  Windows平台的oracle备份(Veritas BE)

  通过Backup Exec实施Oracle灾难恢复很简单

  

   需要的数据

   FULL CLOSED备份

  

  shutdown数据库(不要用shutdown abort强行关闭) 实施一个文件级备份 备份全部的Oracle相关文件 包括Windows系统文件 系统状态和Oracle程序文件和数据文件等内容

  

  这个冷备份对于快速恢复Oracle数据库系统非常关键 如果没有它 系统被破坏后只能重新安装再恢复 这要比直接恢复冷备份慢得多 也更复杂

  

  每当数据库或表单的物理结构或逻辑结构有变化时都应该重新创建这个冷备份

  

   FULL ONLINE备份

  

  这个备份要通过Backup Exec Agent for Oracle Server来完成 要备份全部表空间 归档日志和控制文件 通过这种方式备份 Oracle会将所有缓存内容写入文件 将online redo log做归档 所以数据库备份中包含的是备份时数据库的即时点信息 完整而且有效 以后做恢复时 可以恢复到最后一次FULL ONLINE备份的状态

  

   恢复过程

   重新安装Windows系统和Remote Agent for Windows Server 为恢复Oracle服务器准备环境

  

   恢复最后一次FULL CLOSED备份 重新启动计算机

  

  此时Windows系统 Oracle数据库系统都是完整的 只是Oracle数据库中可能不是最新的数据 Backup Exec Agent for Oracle Server也不用重新安装了

  

   用SQLPlus用SYS以sysdba身份连接到数据库系统 关闭数据库

  

  shutdown immediate + < enter >

  

   通过介质服务器恢复最新的FULL ONLINE备份 恢复作业属性的高级选项中 确保选中了 Restore over Existing files(覆蓋现存文件) 选项

  

  要想成功的恢复数据库 在最后一次FULL CLOSED备份之后的所有redo log必须都已经成功归档并备份 少了哪一个 数据库就无法恢复到最后的FULL ONLI NE备份时的状态

  

  通过Oracle的alert log可以看到数据库的恢复需要哪些归档日志 以及你应该把它们恢复到什么位置

  

   恢复完成后 用SYS用户以sysdba身份连接到数据库 将数据库加载到mount阶段

  

  startup mount + < enter >

  

   数据库mount完成后 执行recover过程

  

  recover database using backup controlfile + < enter >

  

  数据库会提示你需要哪些日志

  

  ORA : Change generated at needed for thread

  

  ORA : Suggestion : \\Oracle_Home\\Oradata\\\\%SID%T ARC

  

  ORA : =Suggested | filename | AUTO | FROM logsource | CANCEL

  最简单的方法是选自动恢复

  auto + < enter >

  系统会在init ora文件中定义的位置上查找所有必需的日志并依次应用它们 最后一个要应用的日志是online redo log 实际上它并不包括任何的transaction 只有一个SCN 可以略过 但是自动恢复过程会因为找不到相应的文件而报错

  ORA cannot open archived log

  E \\ORACLE\\ORADATA\\KIMSTAD\\ARCHIVE\\KIMSTADT ARC

  ORA unable to open file

  OSD unable to open file

  O/S Error (OS ) The system cannot find the file specified

  为此输入以下命令(until cancel参数使我们可以在需要的时候中止恢复过程)

  recover database until cancel using backup controlfile +

  这样在数据库恢复的最后阶段再次提示前面的错误时 我们就可以中止恢复过程

  cancel + < enter >

  这时除了最后一个online redo log以外 所有的mit transaction都已经提交到数据库之中了 完成后会显示

  Media recovery canceled

  实际上恢复过程已经正常完成了

  最后是打开数据库并同步日志序列号

  alter database open resetlogs + < enter >

  至此 Oracle数据库被成功恢复到最后一次Full Online备份

  说明 Oracle i可以用internal账号完成DBA操作 i取消了internal账号 SYS账号代替它了 为了以DBA身份登录 启动SQL Plus时应该加nolog参数 进入之后再登录 connect username/password as sysdba

  具体示例

   用Oracle数据库的热备份来重建数据库

  为了检验我为公司开发的Oracle数据库在线自动备份系统 我根据 Oracle数据库在线自动备份系统 产生的备份文件来重建和恢复Oracle数据库 为了让大家共享其方法和步骤(也适合于用其它方式对Oracle做的热备份进行重建数据库)现整理如下

  一 系统环境

  本次测试所使用的系统环境如下

   硬件环境

  服务器 Dell PowerEdge (CPU PⅢ MHz 内存 MB 硬盘 GB)

   软件环境

  操作系统 UnixWare

  数据库  Oracle for Unix 企业版 SID ora

  Oracle安装路径 /home/oracle

  备份文件 所有数据库文件 控制文件 初始化文件 数据库备份以来的所有归档日志文件

  二 恢复步骤

  下面根据从用户处带回来的备份数据 在一台新的服务器重建Oracle数据库 其详细步骤如下

   创建数据库恢复使用的环境

  在新的Dell服务器上 安装与原来的数据库服务器相同的操作系统UnixWare 然后安装与原数据库相同版本的Oracle for Unix 企业版

   删除新服务器上的Oracle实例

  启动新数据库服务器上的Oracle 在sqlplus中 查找到数据库文件的路径 并保存在当前路径下的文件file_name txt中

  $ sqlplus system/manager

  SQL> spool file_name txt

  SQL> select file_name from sys dba_data_files

  SQL> spool end

  SQL>exit

  关闭新服务器的Oracle 然后根据文件file_name txt中的路径 删除新装的Oracle实例的所有数据库文件

  注 从本步开始所有操作都是用Oracle用户登录操作系统(Unix)后进行 文中所有的黑色粗体 号字符(标题除外)的语句可以直接执行 黑色倾斜粗体 号字符的语句需要修改后执行

   恢复数据库文件

  把备份的所有数据库文件用Ftp上传新的数据库服务器中的相同路径下 如果原来的路径已不存在 可以拷贝到其他路径下 恢复时详细处理方法见步骤 中< >

   恢复初始化参数文件

  把备份的initSID ora文件用Ftp上传到新数据库服务器中Oracle实例的initSID ora文件位置 覆蓋之 其位置一般在$ORACLE_HOME/dbs目录下

   恢复控制文件

  把备份的ControlFile bak文件用Ftp上传到新数据库服务器中Oracle实例的各个镜像路径下 并按初始化参数文件initSID ora中的该项的位置和名称命名

  control_files = ( /home/oracle/app/oracle/oradata/ora /control ctl /home/oracle/app/oracle/oradata/ora /control ctl /home/oracle/app/oracle/oradata/ora /control ctl )

  其路径如有变动 在初始化参数文件initSID ora中修改如上内容的路径和名称 使其实际路径与该参数的路径一致

   恢复归档日志文件

  把数据库备份后的归档日志用Ftp上传到新数据库服务器的相同路径下 路径如有变动可以根据初始化参数文件initSID ora中如下位置进行修改 使其实际路径与该参数的路径一致

  log_archive_dest_ = location=/home/oracle/app/oracle/admin/ora /arch

   恢复数据库

  经过以上 个步骤 把所有的备份文件已经上传到了新数据库服务器中 下面开始根据这些文件恢复并启动数据库 先在操作系统的提示符下做如下操作

  $svrmgrl

  SVRMGR>connect internal

  SVRMGR>startup mount

  < > 创建口令文件

  如果原来的数据库配置了口令文件 并且在mount数据库时报如下错误

  ORA error opening password file /home/oracle/app/oracle/product/ /dbs/orapw

  可以到/home/oracle/app/oracle/product/ /dbs/路径下 用以下命令创建口令文件

  orapwd

  其用法如下

  Usage orapwd file= password= entries=

  where

  file name of password file (mand) (口令文件的命名方式为 orapwSID)

  password password for SYS and INTERNAL (mand)

  entries maximum number of distinct DBA and OPERs (opt)

  There are no spaces around the equal to (=) character

  例如 orapwd file=orapwora password=manager

  

  

  

  然后重新执行如下语句mount数据库

  

  SVRMGR>startup mount

  

  < > 修改数据库文件的路径

  

  如果在上述的步骤 中修改了恢复的数据库文件的路径 可以用如下语句对数据库文件重新命名

  

  alter database rename file old_file to new_file ;

  

  如把原来路径/home/oracle/app/oracle/oradata/ora 下的文件system dbf改到了/u /oracle/app/oracle/oradata/ora 下

  

  SVRMGR>alter database rename file

  

   /home/oracle/app/oracle/oradata/ora /system dbf

  

  to /u /oracle/app/oracle/oradata/ora /system dbf ;

  

  按照上面的方法把所有修改路径的数据库文件重新命名

  

  < > 根据控制文件和归档日志文件恢复数据库

  

  下面开始用控制文件和归档日志文件恢复数据库

  

  SVRMGR>recover database using backup controlfile until cancel;

  

  出现如下提示

  

  ORA : change generated at / / : : needed for thread

  

  ORA : suggestion: /home/oracle/app/oracle/admin/ora /arch/arch_ _ arc

  

  ORA : change for thread is in sequence #

  

  Specify log: =suggested | filename | AUTO | CANCEL输入

  

  auto

  

  如果有如下提示 则表示成功

  

  ORA : change generated at / / : : needed for thread

  

  ORA : suggestion: /home/oracle/app/oracle/admin/ora /arch/arch_ _ arc

  

  ORA : change for thread is in sequence #

  

  ORA : log file /home/oracle/app/oracle/admin/ora /arch/arch_ _ arc noy

  

  Log applied

  

  意外处理 如果其它提示可能是需要的日志文件不存在 检查ORA 中该文件是否存在

  

  直到出现如下提示

  

  ORA : change generated at / / : : needed for thread

  

  ORA : suggestion: /home/oracle/app/oracle/admin/ora /arch/arch_ _ arc

  

  ORA : change for thread is in sequence #

  

  ORA : log file /home/oracle/app/oracle/admin/ora /arch/arch_ _ arc noy

  

  ORA : cannot open archived log /home/oracle/app/oracle/admin/ora /arch

  

  /arch_ _ arc

  

  ORA : unable to obtain file status

  

  Intel SVR UNIX Error: : No such file or directory

  

  Additional information:

  

  < > 重置日志

  

  SVRMGR>alter database open resetlogs;

  

  意外处理 如果提示创建日志的路径不存在 按提示路径创建目录 然后再重置日志

  

  < > 重启数据库 完成恢复

  

  SVRMGR>shutdown immediate

  

  SVRMGR>startup

  

  ORACLE instance started

  

  Total System Global Area bytes

  

  Fixed Size bytes

  

  Variable Size bytes

  

  Database Buffers bytes

  

  Redo Buffers bytes

  

  Database mounted

  

  Database opened

  

  数据库正常打开 数据库重建恢复成功

  

  

  

   Oracle i RMAN 备份及恢复步骤

  

  

  在这里没有讨论多么深入的RMAN技术 也没有告诉大家这样去编写备份脚本 这并不是我的初衷 我只想把我会的写出来 和大家一起学习 一起进步 谢谢

  

   切换服务器归档模式 如果已经是归档模式可跳过此步

  %sqlplus /nolog (启动sqlplus)

  SQL> conn / as sysdba (以DBA身份连接数据库)

  SQL> shutdown immediate; (立即关闭数据库)

  SQL> startup mount (启动实例并加载数据库 但不打开)

  SQL> alter database archivelog; (更改数据库为归档模式)

  SQL> alter database open; (打开数据库)

  SQL> alter system archive log start; (启用自动归档)

  SQL> exit (退出)

  

   连接

  %rman target=rman/rman@mydb (启动恢复管理器)

  

   基本设置

  RMAN> configure default device type to disk; (设置默认的备份设备为磁盘)

  RMAN> configure device type disk parallelism ; (设置备份的并行级别 通道数)

  RMAN> configure channel device type disk fromat /backup /backup_%U ; (设置备份的文件格式 只适用于磁盘设备)

  RMAN> configure channel device type disk fromat /backup /backup_%U ; (设置备份的文件格式 只适用于磁盘设备)

  RMAN> configure controlfile autobackup on; (打开控制文件与服务器参数文件的自动备份)

  RMAN> configure controlfile autobackup format for device type disk to /backup /ctl_%F ; (设置控制文件与服务器参数文件自动备份的文件格式)

  

   查看所有设置

  RMAN> show all

  

   查看数据库方案报表

  RMAN> report schema;

  

   备份全库

  RMAN> backup database plus archivelog delete input; (备份全库及控制文件 服务器参数文件与所有归档的重做日志 并删除旧的归档日志)

  

  

   备份表空间

  RMAN> backup tablespace system plus archivelog delete input; (备份指定表空间及归档的重做日志 并删除旧的归档日志)

  

   备份归档日志

  RMAN> backup archivelog all delete input;

  

   复制数据文件

  RMAN> copy datafile to /oracle/dbs/py ;

  

   查看备份和文件复本

  RMAN> list backup;

  

   验证备份

  RMAN> validate backupset ;

  

   从自动备份中恢复服务器参数文件

  RMAN> shutdown immediate; (立即关闭数据库)

  RMAN> startup nomount; (启动实例)

  RMAN> restore spfile to pfile /backup /mydb ora from autobackup; (从自动备份中恢复服务器参数文件)

  

   从自动备份中恢复控制文件

  RMAN> shutdown immediate; (立即关闭数据库)

  RMAN> startup nomount; (启动实例)

  RMAN> restore controlfile to /backup from autobackup; (从自动备份中恢复控制文件)

  

   恢复和复原全数据库

  RMAN> shutdown immediate; (立即关闭数据库)

  RMAN> exit (退出)

  %mv /oracle/dbs/tbs_ f /oracle/dbs/tbs_ bak (将数据文件重命名)

  %mv /oracle/dbs/tbs_ f /oracle/dbs/tbs_ bak (将数据文件重命名)

  %mv /oracle/dbs/tbs_ f /oracle/dbs/tbs_ bak (将数据文件重命名)

  %mv /oracle/dbs/tbs_ f /oracle/dbs/tbs_ bak (将数据文件重命名)

  %rman target=rman/rman@mydb (启动恢复管理器)

  RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb ora (指定初始化参数文件启动数据库)

  RMAN> restore database; (还原数据库)

  RMAN> recover database; (恢复数据库)

  RMAN> alter database open; (打开数据库)

  

   恢复和复原表空间

  RMAN> sql alter tablespace users offline immediate ; (将表空间脱机)

  RMAN> exit (退出恢复管理器)

  %mv /oracle/dbs/users dbf /oracle/dbs/users bak (将表空间重命名)

  %rman target=rman/rman@mydb (启动恢复管理器)

  RMAN> restore tablespace users; (还原表空间)

  RMAN> recover tablespace users; (恢复表空间)

  RMAN> sql alter tablespace users online ; (将表空间联机)

  

   增量备份与恢复

  第一天的增量基本备份

  RMAN> backup incremental level= database plus archivelog delete input;

  第二天的增量差异备份

  RMAN> backup incremental level= database plus archivelog delete input;

  第三天的增量差异备份

  RMAN> backup incremental level= database plus archivelog delete input;

  第四天的增量差异备份

  RMAN> backup incremental level= database plus archivelog delete input;

  第五天的增量差异备份

  RMAN> backup incremental level= database plus archivelog delete input;

  第六天的增量差异备份

  RMAN> backup incremental level= database plus archivelog delete input;

  第七天的增量差异备份

  RMAN> backup incremental level= database plus archivelog delete input;

  

  增量恢复

  RMAN> shutdown immediate;

  RMAN> exit

  %mv /oracle/dbs/tbs_ f /oracle/dbs/tbs_ bak

  %mv /oracle/dbs/tbs_ f /oracle/dbs/tbs_ bak

  %mv /oracle/dbs/tbs_ f /oracle/dbs/tbs_ bak

  %mv /oracle/dbs/tbs_ f /oracle/dbs/tbs_ bak

  %rman target=rman/rman@mydb

  RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb ora

  RMAN> restore database;

  RMAN> recover database;

cha138/Article/program/Oracle/201311/18584

相关参考

知识大全 实战Oracle数据库备份与恢复

实战Oracle数据库备份与恢复  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  用户可以留意一下

知识大全 Oracle数据库的备份与恢复

Oracle数据库的备份与恢复  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  河南省新乡市电信局

知识大全 Oracle备份与恢复案例二

Oracle备份与恢复案例二  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  检查数据库的数据(完

知识大全 Oracle数据库的备份与恢复的三种方法

Oracle数据库的备份与恢复的三种方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Orac

知识大全 Oracle备份与恢复案例一

Oracle备份与恢复案例一  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一理解什么是数据库恢

知识大全 oracle数据库备份与恢复apieceofcake(4)

  oracle数据库日志备份(windows平台)  本片是接上次的数据库在线备份进行数据库全备份后需要备份归档的日志文件  建立数据库备份的脚本  在上面建立的目录下建立如下的两个脚本  建立执行

知识大全 Oracle数据库的备份及恢复策略研究

Oracle数据库的备份及恢复策略研究  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  多工联机重

知识大全 RMAN(备份与恢复管理器)

Oracle数据库备份与恢复之四:RMAN(备份与恢复管理器)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 对Oracle10g ASM生产数据库备份和恢复

对Oracle10gASM生产数据库备份和恢复  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  新

知识大全 Oracle FAQ 之备份与恢复篇

OracleFAQ之备份与恢复篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  [Q]如何开启/