2. 备份数据库
(1) 查询和确定要备份的表空间:
SQL> select tablespace_name,status from dba_tablespaces;
(2) 逐个备份所有tablespace:
* online备份表空间
A:SQL> alter tablespace <tablespace_name> 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)
然后
(5) 备份控制文件TRACE文件:startup mount
set autorecovery on
recover database;
alter database open;
SQL> alter database backup controlfile to trace;
SQL> host
$...(在操作系统中,该命令将在udump目录下产生创建控制文件的脚本。你可以备份该文件, 一旦所有备份的控制文件全部丢失,可以利用该备份来重新创建控制文件。)
