linux下rman备份笔记

本文介绍Oracle数据库RMAN备份与恢复的详细步骤,包括全量备份、增量备份及基于SCN恢复等高级技巧。同时提供自动备份脚本与crontab定时任务设置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自动删除七天前的备份: 
crontab -e 
00 00 * * * find /home/oracle/mybackup -name '*' -mtime +7 | xargs rm 

即可! 



rman 

查找rman: 
find / -name rman 

su - oracle 

查看环境变量: 
echo $PATH 

编辑环境变量 
vi ./.bash_profile 

PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin 

exit (重启生效) 

su - oracle 

echo $PATH 

rman命令可以使用了 

sqlplus /nolog 

conn /as sysdba 

archive log list 

如果显示如下即可: 
Database log mode    Archive Mode 
Automatic archival   Enabled 

切换模式: 
shutdown immediate(先关闭) 

statrup mount 
alter database archivelog; 

quit 

Archive Mode下,rman命令可以使用了 

rman/rman nocatalog 

连接target database 
connect target / 

查看历史备份 
list backupset; 

开始全备份 
backup database;   


0级增量备份:backup incremental level=0 database 

1级增量备份:backup incremental level=1 database 

完成后查看 
list backupset; 

查看备份信息: 
cd /oracle/oradata/ermp 
strings control01.ctl 



-------非catalog备份------------ 
rman nocatalog 
连接目标数据库: 
connect target / 

如果数据库没有启动则: 
startup 

监听没启则: 
lsnrctl start 

service没注册: 
lsnrctl service 

连接目标数据库: 
connect target ermp/ermp 

备份数据文件,控制文件,归档日志文件: 
backup database plus archivelog delete input; 

查看备份: 
list backupset; 

命令查看: 
show all; 



---------备份表空间---------- 
查看表空间: 
report schema; 

备份表空间: 
backup tablespace ermp; 

查看备份: 
list backupset; 

---------备份控制文件------------ 
备份当前控制文件: 
backup current controlfile; 

查看备份: 
list backupset; 

---------镜像备份-------- 
report schema; 

记住file编号 

copy datafile 5 to '/orabackup/ermp01bak.dbf'; 

若报没有权限错误,则是当前指定路径没有写权限 

修改用户密码: 
passwd oracle 

查看: 
list copy; 

  

2009-11-05 

查看硬盘空间 
df -h 

------批命令----------- 
rman 
connect target / 

rman> run{ 
  allocate channel cha1 type disk;       ---通道的I/O类型为硬盘 
  backup 
  format '/home/oracle/mybackup/full_%t' 
  tag full_backup_bat 
  database; 
  release channel cha1; 


list backupset; 

quit 

ls /home/oracle/mybackup/ -lh 




--formate 参考: 
%c:备份片的拷贝数(从1开始编号) 
%d:数据库名称 
%D:位于该月中的天数(DD) 
%M:位于该年中的月份(MM) 
%F:一个基于DBID唯一的名称,这个格式的形式为c-xxx-YYYYMMDD-QQ, 
其中xxx为该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列 
%n:数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8 
%u:是一个由备份集编号和建立时间压缩后组成的8字符名称。可以生产唯一的名称。 
%p:表示备份集中备份片段的编号,从1开始编号 
%U:是%u_%p_%c的简写形式,生产唯一名称 
%s:备份集的号 
%t:备份集时间戳 
%T:年月日格式(YYYYMMDD) 

--Channel 通道: 
rman和目标数据库之间的连接,"allocate channel"命令在目标数据库启动 

一个服务器进程,同时必须定义执行备份或恢复操作使用的I/O类型。 

通道控制命令可以用来: 
控制rman使用的O/S资源 
影响并行度 
指定I/O带宽的限制值(设置limit read rate 参数) 
定义备份片大小的限制(设置limit kbytes) 
指定当前打开文件的限制值(设置limit maxopenfiles) 

自动备份:备份脚本 + crontab 
0级增量脚本 bakl0: 
cd /home/oracle 
mkdir scripts 
vi bakl0 

run{ 
  allocate channel c1 type disk; 
  backup 
  incremental level 0 
  format '/home/oracle/mybackup/inc0_%u_%T' 
  tag monday_inc0 
  database; 
  release channel c1; 


cp bakl0 bakl1 
cp bakl0 bakl2 

vi bakl1 

run{ 
  allocate channel c1 type disk; 
  backup 
  incremental level 1 
  format '/home/oracle/mybackup/inc1_%u_%T' 
  tag monday_inc1 
  database; 
  release channel c1; 

bakl2同上 

开始备份: 
0级备份: 
rman target / msglog=/home/oracle/mybackup/bakl0.log cmdfile= 
/home/oracle/scripts/bakl0 

1,2级同上 

查看备份: 
cd /home/oracle/mybackup 
ls -lh 

查看rman:which rman 
/oracle/app/product/9.2/bin/rman 

--自动任务计划备份 crontab -e -u oracle 
whoami 
root 
crontab -e -u oracle 

45 23 * * 0 rman target / msglog=bakl0.log cmdfile=bakl0 
45 23 * * 1 rman target / msglog=bakl2.log cmdfile=bakl2 
45 23 * * 2 rman target / msglog=bakl2.log cmdfile=bakl2 
45 23 * * 3 rman target / msglog=bakl1.log cmdfile=bakl1 
45 23 * * 4 rman target / msglog=bakl2.log cmdfile=bakl2 
45 23 * * 5 rman target / msglog=bakl2.log cmdfile=bakl2 
45 23 * * 6 rman target / msglog=bakl2.log cmdfile=bakl2 

重启crontab 
service crond restart 


----发现不会自动执行,估计是环境变量的问题 
修改如下: 
增加shell脚本文件backup.sh: 
export ORACLE_HOME=/oracle/app/product/9.2; 
export ORACLE_SID=ermp; 

PATH=$ORACLE_HOME/bin;$PATH; 

/oracle/app/product/9.2/bin/rman target / msglog=/home/oracle/mybackup/bakl0.log cmdfile= 
/home/oracle/scripts/bakl0 

(rman写绝对路径) 
crontab -e -u oracle 

45 23 * * * /home/oracle/scripts/backup.sh 

大功告成!! 

7天全量备份: 
自动删除7天前的备份日志文件: 
crontab -e 
00 00 * * * find /home/oracle/mybackup -name '*.log' -mtime +7 | xargs rm 

1.在目录 /home/oracle/scripts/ 建立文件bakl0,内容如下(清理归档日志): 

run{ 
  configure retention policy to recovery window of 7 days; 
  delete obsolete; 
  allocate channel c1 type disk; 
  backup 
  format '/home/oracle/mybackup/ermp_%u_%T' 
  database include current controlfile format '/home/oracle/mybackup/ctrfile_%u_%T' 
  plus archivelog delete all input; 
  release channel c1; 


2.在目录 /home/oracle/scripts/ 建立文件backup.sh,内容如下: 

rq=`date '+%y%m%d'`; 
export ORACLE_HOME=/oracle/app/product/9.2; 
export ORACLE_SID=ermp; 

PATH=$ORACLE_HOME/bin;$PATH; 

/oracle/app/product/9.2/bin/rman target / msglog=/home/oracle/mybackup/bakl$rq.log cmdfile= 
/home/oracle/scripts/bakl0 

(rman写绝对路径) 

3.编辑crontab: 
crontab -e -u oracle 

45 23 * * * /home/oracle/scripts/backup.sh 


恢复 

----------基于scn的恢复---------- 
shutdown immediate; 
startup mount; 
restore database UNTIL SCN 10000; 
recover database UNTIL SCN 10000; 
alter database open resetlogs; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值