自动删除七天前的备份:
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;