ITPub博客

首页 > 数据库 > Oracle > Oracle数据库的备份(中)

Oracle数据库的备份(中)

原创 Oracle 作者:exitgogo 时间:2006-03-20 11:27:13 0 删除 编辑
Oracle数据库的备份(中)实现之热备份![@more@]

物理备份的实现之热备份:(条件-ArchiveLog)
热备份即数据库在开启(正常运行)的情况下并以Archive log方式运行时,进行的数据库备份。热备份可以给 Oracle用户提供一个不间断的运行环境。热备份又分在线备份和离线备份,在线和离线备份的惟一区别是数据库的tablespace是否在线,主要表现在Oracle用户可以对在线备份的tablespace进行数据操作,而离线备份的tablespace暂时不能接受用户的数据操作。我们可以根据系统的实际情况选择相应的热备份。
因为热备份通过操作系统命令备份物理文件将消耗大量系统资源,因此通常都是安排在用户访问频率较低的时候(如夜间)进行。
1. 查询动态性能示图v$database,并确定数据库是工作在Archive模式下的:
SQL> select log_mode from v$database;
LOG_MODE
------------
ARCHIVELOG
或者通过下述方法查看数据库的归档信息:
SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
. . . . . .
如果Database log mode显示为"Archive Mode",则数据库工作在归档模式下。否则,需要修改,如:
SQL>shutdown immediate
SQL>startup mount
SQL> alter database archivelog;
SQL> alter database open;
如果Automatic archival显示为"Enabled",则数据库归档方式为自动归档。否则需要手工归档,或者将归档方式修改为自动归档,如:正常shutdown数据库,在参数文件中init.ora中加入如下参数
SQL>shutdown immediate
修改init.ora:
LOG_ARCHIVE_START=TRUE
LOG_ARCHIVE_DEST1=ORACLE_HOME/admin/o816/arch
SQL>startup
然后,重新启动数据库,此时Oracle数据库将以自动归档的方式工作在Archive模式下。 其中参数LOG_ARCHIVE_DEST1是指定的归档日志文件的路径,建议与Oracle数据库文件存在不同的硬盘,一方面减少磁盘I/O竞争,另外一方面也可以避免数据库文件所在硬盘毁坏之后的文件丢失。归档路径也可以直接指定为磁带等其它物理存储设备,但可能要考虑读写速度、可写条件和性能等因素。
注意:当数据库处在ARCHIVE模式下时,一定要保证指定的归档路径可写,否则数据库就会挂起,直到能够归档所有归档信息后才可以使用。另外,为创建一个有效的备份,当数据库在创建时,必须履行一个全数据库的冷备份, 就是说数据库需要运行在归档方式, 然后正常关闭数据库,备份所有的数据库组成文件。这一备份是整个备份的基础, 因为该备份提供了一个所有数据库文件的拷贝。
2. 备份数据库
(1) 查询和确定要备份的表空间:
SQL> select tablespace_name,status from dba_tablespaces;
(2) 逐个备份所有tablespace:
* online备份表空间
A:SQL> alter tablespace begin backup; 设置表空间为备份状态
SQL> host
$...(在操作系统中,用操作系统的工具对tablespace所对应的所有数据文件进行备份,如'tar'命令等)
B:然后,拷贝表空间文件到安全区域 !CP tablespace_name D_PATH;
C:SQL> alter tablespace aa end backup; --恢复表空间为正常状态
* offline备份表空间
SQL> alter tablespace aa offline normal; --将表空间设置为脱机状态
SQL> host
$...(在操作系统中,用操作系统的工具对tablespace所对应的所有数据 文件进行备份,如'tar'命令等)
$ exit
SQL> alter tablespace aa online;--将表空间设置为联机状态
注意:
* 如果数据库没有键入begin backup; end backup或者tablespace online, tablespace offline, 而直接在操作系统进行数据库文件拷贝,Oracle称此行为为"Warm Backup" 此时拷贝出来的文件是无法使用的。
* system tablespace是不可以offline的,只能选择begin backup, end backup。
* 一个tablespace中所对应的所有数据文件必须全部备份, 不能只备份一个文件,否则整个tablespace是无效的。
(3) 备份归档日志文件:
停止归档进程-->备份归档日志文件-->启动归档进程
SQL> archive log stop--临时停止归档进程
SQL> exit
如果日志文档比较多,我们将它们写入一个文件成为一个恢复的参考:FILES ='ls <归档文件目录>/arch*.dbf';
export FILES,
如:
$FILES='ls /usr/oracle/app/oracle/product/8.1.6/admin/o816/arch/arch*.arc';
export FILES;
$ exit
SQL> archive log start;-重新启动archive进程
SQL> host
$...(在操作系统中,用操作系统的工具对FILES中所包括的所有归档文件进行备份,如'tar'命令等,并删除已备份的归档文件)
$ exit
SQL>
(4) 备份控制文件为二进制文件:
SQL> alter database backup controlfile to'controlfile_back_name (一般用2004-11-20的方式)'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(一般用2004-11-20的方式)' reuse;
!files `ls <归档文件路径>/arch*.dbf`;export files
热备份的恢复,对于归档方式数据库的恢复要求不但有有效的日志备份还要求有一个在归档方式下作的有效的全库备份。归档备份在理论上可以无数据丢失,但是对于硬件以及操作人员的要求都比较高。在我们使用归档方式备份的时候,全库物理备份也是非常重要的。归档方式下数据库的恢复要求从全备份到失败点所有的日志都要完好无缺。
恢复步骤:LOG_ARCHIVE_DEST_1
shutdown数据库。
将全备份的数据文件放到原来系统的目录中。
将全备份到失败点的所有归档日志放到参数LOG_ARCHIVE_DEST_1所指定的位置。
利用sqlplus登陆到空实例。(connect / as sysdba)
然后 startup mount
set autorecovery on
recover database;
alter database open;


(5) 备份控制文件TRACE文件:
SQL> alter database backup controlfile to trace;
SQL> host
$...(在操作系统中,该命令将在udump目录下产生创建控制文件的脚本。你可以备份该文件, 一旦所有备份的控制文件全部丢失,可以利用该备份来重新创建控制文件。)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/509190/viewspace-821476/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-14

  • 博文量
    81
  • 访问量
    411511