linux下rman备份笔记

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

即可!


linux下rman备份笔记_第1张图片
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;



你可能感兴趣的:(oracle,c,linux,qq,脚本)