oracle10g rman备份有效性,linux下的oracle10g rman备份

RMAN是Oracle提供的一个数据库备份和恢复工具,利用rman可以比较方便的对数据库进行备份。Oracle 数据库可运行在归档和非归档模式下,这两者的区别就在于对redo log的处理。归档模式下,当一个redo log  写满之后,就会把这个redo log里的内容写入归档文件,等写完之后,这个redo log  就可以继续使用,如果是非归档模式下,redo log 就被直接覆盖了。 数据库的恢复一般都需要归档文件,这里面记录了对数据库的操作,所以生产数据库一般都运行在归档模式下,以防数据的丢失。

一、设置ORACLE的RMAN备份准备工作:

1、查看数据库现有运行模式

sql>select name,log_mode from v$database;

NAME    LOG_MODE

--------  ------------

BIGSUN   NOARCHIVELOG   #非归档模式

也可以通过下面的语句进行查看

sql> archive log list ;(conn / as sysdba)

Database log mode       No Archive Mode

Automatic archival      Disabled    #非归档模式

Archive destination      /export/data/oracle/product/10.0.0.2/dbs/arch

Oldest online log sequence         28613

Current log sequence     28615

非归档模式的数据库需要改为归档模式,才能进行RMAN备份。步骤如下:

1. SQL> alter system set log_archive_dest_1='location=/oracle/oracle10g/log/archive_log';

该语句含义是确定归档日志的路径,实际上Oracle 10g可以生成多份一样的日志,保存多个位置,以防不测

例如再添加一个日志位置可使用以下语句

SQL>alter system set log_archive_dest_2='location=/oracle/oracle10g/log2/archive_log';

2.关闭数据库

SQL> shutdown immediate

3.启动数据mount状态:

SQL> startup mount;

4、修改数据库为归档模式:

SQL> alter database archivelog;

5、打开数据库,查询:

SQL> alter database open;

修改日志文件命名格式:

SQL> alter system set log_archive_max_processes = 5;

SQL> alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;

修改完成后可以查看日志模式是否修改成功!

sql>select name,log_mode from v$database;

NAME    LOG_MODE

--------  ------------

BIGSUN   ARCHIVELOG   #归档模式

二、用脚本实现RMAN自动备份。

注: level 0 全备份; level 1  差量备份; level 2 增量备份

首先在linux oracle服务器的/data/rmanbak/script/目录下新建3个脚本文件,并赋予每个脚本执行权限。

bakl0.sh 脚本

RUN_STR="

BAK_LEVEL=0

export BAK_LEVEL

ORACLE_HOME=/opt/app/oracle/10.2.0

export ORACLE_HOME

ORACLE_SID=orcl

export ORACLE_SID

RMAN_LOG_FILE=${0}.out

echo Script $0 >> $RMAN_LOG_FILE

echo ==== started on `date` ==== >> $RMAN_LOG_FILE

echo >> $RMAN_LOG_FILE

chmod 666 $RMAN_LOG_FILE

$RMAN nocatalog target sys/admin  msglog $RMAN_LOG_FILE append << EOF

run{

allocate channel c1 type disk;

backup incremental level 0 format "/data/rmanbak/inc0_%u_%T" tag monday_inc0 database;

release channel c1;

}

bakl1.sh 脚本

RUN_STR="

BAK_LEVEL=1

export BAK_LEVEL

ORACLE_HOME=/opt/app/oracle/10.2.0

export ORACLE_HOME

ORACLE_SID=orcl

export ORACLE_SID

RMAN_LOG_FILE=${0}.out

echo Script $0 >> $RMAN_LOG_FILE

echo ==== started on `date` ==== >> $RMAN_LOG_FILE

echo >> $RMAN_LOG_FILE

chmod 666 $RMAN_LOG_FILE

$RMAN nocatalog target sys/admin  msglog $RMAN_LOG_FILE append << EOF

run{

allocate channel c1 type disk;

backup incremental level 1 format "/data/rmanbak/inc1_%u_%T" tag monday_inc0 database;

release channel c1;

}

bakl2.sh 脚本

RUN_STR="

BAK_LEVEL=2

export BAK_LEVEL

ORACLE_HOME=/opt/app/oracle/10.2.0

export ORACLE_HOME

ORACLE_SID=orcl

export ORACLE_SID

RMAN_LOG_FILE=${0}.out

echo Script $0 >> $RMAN_LOG_FILE

echo ==== started on `date` ==== >> $RMAN_LOG_FILE

echo >> $RMAN_LOG_FILE

chmod 666 $RMAN_LOG_FILE

$RMAN nocatalog target sys/admin  msglog $RMAN_LOG_FILE append << EOF

run{

allocate channel c1 type disk;

backup incremental level 2 format "/data/rmanbak/inc2_%u_%T" tag monday_inc0 database;

release channel c1;

}

其二、编辑oracle用户的自动执行任务计划

crontab -e -u oracle

30 23 * * 0 rman target / msglog=/data/rmanbak/rman_bk_'date '+%Y%m%d%H%M%S''.log

cmdfile=/data/rmanbak/script/bakl0.sh

30 23 * * 1 rman target / msglog=/data/rmanbak/bakl0.log cmdfile=/data/rmanbak/script/bakl2.sh

30 23 * * 2 rman target / msglog=/data/rmanbak/bakl0.log cmdfile=/data/rmanbak/script/bakl2.sh

30 23 * * 3 rman target / msglog=/data/rmanbak/bakl0.log cmdfile=/data/rmanbak/script/bakl1.sh

30 23 * * 4 rman target / msglog=/data/rmanbak/bakl0.log cmdfile=/data/rmanbak/script/bakl2.sh

30 23 * * 5 rman target / msglog=/data/rmanbak/bakl0.log cmdfile=/data/rmanbak/script/bakl2.sh

30 23 * * 6 rman target / msglog=/data/rmanbak/bakl0.log cmdfile=/data/rmanbak/script/bakl2.sh

最后重启crontab  命令 : #service crond restart

三、定期删除备份的归档文件

比如归档文件需要保存15天。我们可以写一个shell 脚本(del_archive_backup.sh

)如下,然后添加到crontab 里定时执行就可以删除过期的归档文件了。

#!/bin/ksh

PATH=/usr/bin:/usr/ucb:/etc:.:/usr/X/bin:/bin

export PATH

find /data/arch/incremental_hotbackup -mtime +15 -name "arch_*"

-exec rm {} \;

注:find后面写你自己的路径就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值