1、建立rman表空间
create tablespace rman logging datafile '/opt/oracle/backup/rman/riademo/rman.dbf' size 1024M extent management local segment space management auto;
2、建立rman用户
create user rman identified by rman default tablespace rman;
grant connect,resource to rman;
grant RECOVERY_CATALOG_OWNER to rman;
grant unlimited tablespace to rman;
grant sysdba to rman;
3、查看是否归档模式(若不是打开归档模式)
sql> archive log list;
4、建立catalog数据库及注册表
cd $ORACLE_HOME/bin
./rman catalog rman/rman
RMAN>create catalog tablespace "RMAN";
recovery catalog created
RMAN>exit
./rman target sys/passwd@oracle_sid catalog rman/rman@oracle_sid
(若有错误查看第5点,无则调过第5点)
RMAN>register database;
5、检查$ORACLE_HOME/network/admin/tnsnames.ora 加入
ORACLE_SID=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = name.site)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = oracle_sid)
)
)
6、rman环境设置
备份策略:
每周日进行一次全库备份;
每天每8小时进行一次归档日志备份;
为了使备份保留更长时间,设置保留30天的备份信息:
RMAN> configure retention policy to recovery window of 30 days;
启用控制文件自动备份及备份存放位置配置:
RMAN> configure controlfile autobackup on;
RMAN> show all;
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 30 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/opt/oracle/product/10.2/db_1/dbs/snapcf_rxxxx.f'; # default
7、备份实施
7.1、备份策略:
每周日进行一次全库备份;
每天每8小时进行一次归档日志备份;
系统自动清除30天前的备份信息,即保留一个月数据备份;
手动删除归档日志备份,预计保留一年归档日志,以备将来数据库的完整恢复;
7.2、创建备份必要目录
cd /opt/oracle/backup
mkdir script #存放脚本
mkdir log #存放备份生成日志,检查该日志即可查看备份是否成功
mkdir dbback #存放备份数据文件
mkdir logback #存放归档日志备份
7.3备份脚本
在/opt/oracle/backup/script目录下编辑全库备份脚本dbback.sh,内容如下:
#!/bin/bash
export ORACLE_SID=oracle_sid
export ORACLE_HOME=/opt/oracle/product/10.2/db_1
export ORACLE_BASE=/opt/oracle
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
backtime=`date +"20%y%m%d%H%M%S"`
cd $ORACLE_HOME/bin
./rman target / catalog rman/rman log=/opt/oracle/backup/log/backupall_$backtime.log <
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
allocate channel c4 device type disk;
allocate channel c5 device type disk;
crosscheck backup;
sql 'alter system archive log current';
backup database format '/opt/oracle/backup/dbback/db_%d_%T_%U';
sql 'alter system archive log current';
backup archivelog all format '/opt/oracle/backup/logback/arc_%t_%s' delete all input;
backup current controlfile format '/opt/oracle/backup/controlfileback/cntrl_%s_%p_%s';
crosscheck archivelog all;
delete noprompt expired backup;
delete noprompt obsolete;
delete noprompt backup of database completed before 'sysdate - 30';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
}
EOF
在/opt/oracle/backup/script目录下编辑归档日志备份脚本backuparchive.sh,内容如下:
#!/bin/bash
export ORACLE_SID=oracle_sid
export ORACLE_HOME=/opt/oracle/product/10.2/db_1
export ORACLE_BASE=/opt/oracle
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
backtime=`date +"20%y%m%d%H%M%S" `
/opt/oracle/product/10.2/db_1/bin/rman target / catalog rman/rman log=/opt/oracle/backup/log/arcbackup_$backtime.log <
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
sql 'alter system archive log current';
backup archivelog all format '/opt/oracle/backup/logback/arc_%t_%s' delete all input;
crosscheck archivelog all;
delete archivelog all;
release channel c1;
release channel c2;
release channel c3;
}
EOF
8、crontab 自动执行脚本
为了使系统定期执行备份操作,在crontab中添加如下内容:
每周日00:00进行一次全库备份操作;每天八个小时进行一次归档日志备份操作;
0 0 * * 0 sh /opt/oracle/backup/script/dbback.sh 2>&1
0 0,8,16 * * * sh /opt/oracle/backup/script/archivelogback.sh 2>&1
service cron restart
9、测试
全库备份测试成功;
归档日志备份测试成功;
具体测试日志见附录部分。
观察是否有新的备份生成,且查看/backup/目录下
cd / backup/dbback
ls -lrt
cd /backup/logback/
ls -lrt
cd /backup/log /