Oracle 10g系统备份恢复方案
一、 备份策略
为了保证系统在出现故障时快速恢复,我们的备份策略包括两个部分,逻辑备份,物理备份。
1 .1物理备份
数据库按归档方式运行
归档方式和非归档方式运行方式优点和缺点比较:
1. 归档方式:
● 优点
● 可以执行联机备份,保证数据库7*24不间断运行
● 宕机时,能够实现数据的完全恢复
● 缺点
● 在检查点发生之后,重做日志归档完成之前,重做日志不能重新使用
● 需足够的空间资源来保存归档重做日志文件
2. 非归档方式:
● 优点
● 重做日志文件可在检查点发生之后立即重新使用
● 简化管理,节省空间
● 缺点
● 无法执行联机备份
● 宕机时,会丢失上一次完全备份之后的所有数据
一般从系统考虑采用归档方式更为合适,可以在线备份,一旦系统出现问题时,可以恢复到故障以前的任何时间点。保证系统出现故障时能够回滚恢复。
1.1.1物理备份实现
归档方式的配置:
● 关闭数据库,对数据库进行备份。
● 修改初试化参数,使能自动存档
修改(添加)初始化文件init[SID].ora参数:
log_archive_start=true #启动自动归档
log_archive_format=ARC%T%S.arc #归档文件格式
log_archive_dest=/arch12/arch #归档路径
● 启动数据库到MOUNT状态下,使用如下语句
alter database archivelog; 然后打开数据库:alter database open;
RMAN备份脚本说明
run
{oracle数据库自动备份方法
allocate channel c1 type 'sbt_tape'
parms = 'SBT_LIBRARY=/ca/BABoraagt/libobk.so.2.64_5';
allocate channel c2 type 'sbt_tape'
parms = 'SBT_LIBRARY=/ca/BABoraagt/libobk.so.2.64_5';
sql 'alter system archive log current';
backup archivelog all format 'log_%s_%t_%p' delete input;
release channel c1;
release channel c2;
}
该脚本是数据库的归档日志备份脚本。
run {
allocate channel c1 type 'sbt_tape'
parms = 'SBT_LIBRARY=/ca/BABoraagt/libobk.so.2.64_5';
allocate channel c2 type 'sbt_tape'
parms = 'SBT_LIBRARY=/ca/BABoraagt/libobk.so.2.64_5';
sql 'alter system archive log current';
backup database filesperset 40 format 'full_%d_%T_%s_%p' tag='FullDB';
backup current controlfile tag='ControlFile' format 'Controlfile_%d_%T_%s_%p';
sql 'alter system archive log current';
release channel c1;
release channel c2;
}
该脚本是一个数据库全备份包括控制文件,日志文件
备份实施
利用操作系统自动运行脚本的机制,实现数据库的自动物理备份。设定在固定的时间(每周6凌晨2点)执行固定的全库备份脚本,备份过程记录在/oracle/backup/fullbk.log文件中。
● 根据下述脚本,执行定期工作调度
$crontab -e
00 2 * * 6 /oracle/d
● 如果要检查现有系统中的定期工作调度,执行下面的命令:
$crontab -l
● 如果要删除系统中的定期工作调度,执行下面的命令:
$crontab –r
对于归档日志的备份每一个小时,执行一次备份
$crontab -e
00 * * * * /oracle/d
1.2逻辑备份
采用ORACLE 提供的IMPORT和EXPORT工具进行数据的备份和恢复。
该备份我们也是采用3种方式进行备份:
全库备份
增量备份
一些重要数据库对象的备份。
逻辑备份的目的主要是为了防止人为的操作而导致系统故障,需要恢复对数据进行的备份。如果是部分对象需要恢复时,它能够快速完成,使系统恢复正常。
1.2.1逻辑备份实现
脚本说明:
● 管理员可以使用expfull.sh脚本备份数据库。如:$expfull.sh
● 脚本所在路径:/oracle/d
● backup.sh内容:
--全库备份
su - oracle <<EOF
NLS_LANG=AMERICAN_AMERICA.UTF8;export NLS_LANG
dd=`date +%Y%m%d`
exp system/manager file=/oracle/backup/full_$dd.dmp log= /oracle/backup/full_$dd.log full=y compress=n direct=y
该备份由于每次备份的时间比较长所以建议备份每个月做一次。
--增量备份
su - oracle <<EOF
NLS_LANG=AMERICAN_AMERICA.UTF8;export NLS_LANG
dd=`date +%Y%m%d`
exp system/manager inctype=incremental file= file=/oracle/backup/incr_$dd.dmp
每天做一次。
每天做一次。
-
-部分对象备份
该部分备份可以考虑一些系统中比较重要的对象,另外系统中改变速度比较快的表也可以考虑,进行备份。
su - oracle <<EOF
NLS_LANG=AMERICAN_AMERICA.UTF8;export NLS_LANG
dd=`date +%Y%m%d`
exp system/manager full=no tables=(需要备份的表) file=/oracle/backup/table_$dd.dmp
备份实现:
利用操作系统自动运行脚本的机制,实现数据库的自动逻辑备份。设定在固定的时间(每周1凌晨2点)执行固定的备份脚本,备份过程记录在/oracle/backup/full_$dd.log文件中。
● 根据下述脚本,执行定期工作调度
$crontab -e
00 2 * * 1 /oracle/d
● 如果要检查现有系统中的定期工作调度,执行下面的命令:
$crontab -l
● 如果要删除系统中的定期工作调度,执行下面的命令:
$crontab -r
二、恢复策略
恢复策略主要是在系统出现故障的时候,如何通过使用已有的备份进行快速的恢复。
2.1物理恢复
物理恢复多数由于系统异常导致的数据文件损坏,数据文件丢失等,这些必须通过物理恢复来保证系统正常运行。
全库恢复:
rman>
run {
allocate channel c1 type 'sbt_tape'
parms = 'SBT_LIBRARY=/ca/BABoraagt/libobk.so.2.64_5';
allocate channel c2 type 'sbt_tape'
parms = 'SBT_LIBRARY=/ca/BABoraagt/libobk.so.2.64_5';
restore database ;
recover database ;
release channel c1 ;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论