千家信息网

怎么进行linux下的oracle10g rman备份

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,怎么进行linux下的oracle10g rman备份,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。RMAN是Oracle提供的一个
千家信息网最后更新 2026年11月01日怎么进行linux下的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后面写你自己的路径就可以了。

关于怎么进行linux下的oracle10g rman备份问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

数据 模式 备份 数据库 文件 脚本 日志 语句 问题 运行 位置 内容 更多 路径 帮助 解答 易行 成功 以防不测 简单易行 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 广东万易互联网科技有限公司惠州分公司 科技互联网政务服务 互联网下的科技发展 互联网科技金融 互联网科技公司怎么样 菲比寻常互联网科技 互联网 科技馆 世界互联网科技公司市值排名 翼展科技 首家互联网医院 滨湖区互联网智能科技产品有哪些 互联网科技圈年度人物 黑科技 体验场景 互联网大会 广州富喜互联网络科技 云南省自由互联网科技有限公司 美国互联网科技公司 广东鹅鹅鹅互联网科技有限公司 福州德业互联网科技 西安左小互联网科技有限公司 互联网科技创新创业项目 互联网科技海报 互联网佳科技有限公司 沃里互联网科技 深圳卡尔迅互联网科技有限公司怎么样 北京三清互联网科技 荆州市昕露互联网络科技有限公司 千方科技属于互联网企业吗 互联网方面的科技前沿 长沙易易互联网科技有限公司 如何强化互联网金融科技
0