RMAN实施
建立恢复目录服务器
由于从库负担较小,直接在从库上建立RMAN恢复目录数据库,备份主库
创建恢复目录数据库
关闭数据库
主库 shutdown
从库 alter database recover managed standby database cancel;
shutdown;
修改生产库创建脚本,数据库名为SYRMAN,创建数据库
注意:sh文件把CP listener.ora tnsnames.ora的命令注释掉
修改 listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.123.7)(PORT = 1688))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.123.7)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = SYTSP.PKIBM.COM)
(ORACLE_HOME = /oraapp/oracle/92)
(SID_NAME = SYTSP)
)
(SID_DESC =
(GLOBAL_DBNAME = SYRMAN.PKIBM.COM)
(ORACLE_HOME = /oraapp/oracle/92)
(SID_NAME = SYRMAN)
) |
修改tnsnames.ora 添加
RMAN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.123.7)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = SYRMAN)
)
) |
创建RMAN用户在目录数据库上
在目录数据库中创建恢复目录所需的表空间
CREATE TABLESPACE rman_ts DATAFILE '/oradata/SYRMAN/data/SYRMAN_rman' SIZE 200m;
在目录数据库中创建RMAN用户
CREATE USER rman IDENTIFIED BY rman
DEFAULT TABLESPACE rman_ts
TEMPORARY TABLESPACE TEMPTBS
QUOTA UNLIMITED ON rman_ts;
给rman用户授权
GRANT recovery_catalog_owner,connect,resource TO rman;
建立恢复目录
-$ /oraapp/oracle/92/bin/rman
-RMAN>connect catalog ;
-RMAN>create catalog tablespace rman_ts; //创建catalog于rman_ts表空间
登陆上生产数据库上创建备份用户
-SQL>STARTUP
-SQL>CREATE USER rman IDENTIFIED BY rman
-SQL>GRANT sysdba TO rman;
连接上生产数据库注册
-RMAN>CONNECT TARGET
-RMAN>REGISTER DATABASE;
创建RMAN脚本
在主库上创建备份暂存目录
[oracle@PKIBM6 dba]$ cd /oradata/
[oracle@PKIBM6 oradata]$ mkdir orabk
在目录库上创建脚本目录
[oracle@PKIBM7 admin]$ cd /oraapp/oracle/
[oracle@PKIBM7 oracle]$ mkdir dba
[oracle@PKIBM7 oracle]$ cd dba/
[oracle@PKIBM7 dba]$ mkdir log
在目录库上创建备份保存目录
[root@PKIBM7 ~]# mkdir /hotbkup
[root@PKIBM7 ~]# mkdir /offbkup
[root@PKIBM7 /]# chown oracle:dba /hotbkup/
[root@PKIBM7 /]# chown oracle:dba /offbkup
[root@PKIBM7 /]# su - oracle
[oracle@PKIBM7 ~]$ mkdir -p /hotbkup/data/orabk
[oracle@PKIBM7 ~]$ mkdir -p /hotbkup/data/day/
[oracle@PKIBM7 ~]$ mkdir -p /offbkup/data/cweek/
[oracle@PKIBM7 ~]$ mkdir -p /offbkup/data/pweek/
把主机备份目录挂载到备份存储机器上
[root@PKIBM6 oradata]# vi /etc/exports
/oradata/SYTSP/data/ 192.168.123.7(rw)
/oradata/orabk/ 192.168.123.7(rw)
[root@PKIBM6 oradata]# service portmap restart
[root@PKIBM6 oradata]# service nfs restart
[root@PKIBM7 /]# service portmap restart
[root@PKIBM7 /]# mount -t nfs 192.168.123.6:/oradata/orabk/ /hotbkup/data/orabk/
脚本
日志文件改名
/oraapp/oracle/dba/DBA_rename.sql |
connect RMAN/RMAN@RMAN;
set echo off
set feedback off
set linesize 1000
set pagesize 0
set verify off
spool /oraapp/oracle/dba/log/rename.txt
select 'dd bs=1024 if=&1 of=/oraapp/oracle/dba/log/RLog_'||to_char(sysdate,'d')||'.txt' from dual;
spool off
host chmod 755 /oraapp/oracle/dba/log/rename.txt
host /oraapp/oracle/dba/log/rename.txt
host rm -rf /oraapp/oracle/dba/log/rename.txt
exit; |
拷贝备份到备份设备
/oraapp/oracle/dba/ora_os.sh |
#!/bin/sh
#
# copy all backup files from the db server72
#
cp /hotbkup/data/orabk/* /hotbkup/data/tmp/ >>/oraapp/oracle/dba/log/bkup.log
#
# move the daily backup to current week directory
#
cp /hotbkup/data/tmp/* /offbkup/data/cweek/ >>/oraapp/oracle/dba/log/bkup.log
#
# remove the yestoday's backup files
#
rm -rf /hotbkup/data/day/* >>/oraapp/oracle/dba/log/bkup.log
#
# copy all the backup file to day directory
#
mv /hotbkup/data/tmp/* /hotbkup/data/day/ >>/oraapp/oracle/dba/log/bkup.log
#
# delete all the db server72's backup files to free diskspace
# must delete at last for security
#
rm -rf /hotbkup/data/orabk/* >>/oraapp/oracle/dba/log/bkup.log
#
# list all the backup file
#
ls -l /hotbkup/data/orabk/ >>/oraapp/oracle/dba/log/bkup.log
ls -l /hotbkup/data/tmp/ >>/oraapp/oracle/dba/log/bkup.log
ls -l /hotbkup/data/day/ >>/oraapp/oracle/dba/log/bkup.log
ls -l /offbkup/data/cweek/ >>/oraapp/oracle/dba/log/bkup.log
#
# send email to dba
#
mail -s "BK_`date "+%Y-%m-%d"`_log" westzq@hotmail.com |
全备份
/oraapp/oracle/dba/full_bkup.sh |
#!/bin/sh
export ORACLE_HOME=/oraapp/oracle/92
export DBA_HOME=/oraapp/oracle/dba
export ORACLE_SID=RMAN
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_DATE_FORMAT='YYYY-MM-DD_HH24:MI:SS'
$ORACLE_HOME/bin/rman cmdfile $DBA_HOME/full_bkup.rcv msglog $DBA_HOME/log/bkup.log
$ORACLE_HOME/bin/sqlplus /nolog @$DBA_HOME/DBA_rename.sql $DBA_HOME/log/bkup.log
/oraapp/oracle/dba/ora_os.sh & |
/oraapp/oracle/dba/full_bkup.rcv |
connect catalog RMAN/RMAN@RMAN;
connect target RMAN/RMAN@primary;
run {
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
backup spfile format='/oradata/orabk/%T_spfile_%d_%s_%p';
backup full filesperset=2 tag='Full_%d' format='/oradata/orabk/%T_full_%d_%s_%p'
database include current controlfile;
sql 'alter system archive log current';
backup filesperset=4 format='/oradata/orabk/%T_arch_%d_%s_%p' archivelog all delete input;
release channel ch1;
release channel ch2;
}
quit; |
0级备份
/oraapp/oracle/dba/lev0_bkup.sh |
#!/bin/sh
export ORACLE_HOME=/oraapp/oracle/92
export DBA_HOME=/oraapp/oracle/dba
export ORACLE_SID=RMAN
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_DATE_FORMAT='YYYY-MM-DD_HH24:MI:SS'
$ORACLE_HOME/bin/rman cmdfile $DBA_HOME/lev0_bkup.rcv log $DBA_HOME/log/bkup.log
$ORACLE_HOME/bin/sqlplus /nolog @$DBA_HOME/DBA_rename.sql $DBA_HOME/log/bkup.log
/oraapp/oracle/dba/ora_os.sh & |
/oraapp/oracle/dba/lev0_bkup.rcv |
connect catalog RMAN/RMAN@RMAN;
connect target RMAN/RMAN@primary;
run {
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
backup spfile format='/oradata/orabk/%T_spfile_%d_%s_%p';
backup incremental level=0
filesperset=2 tag='Lev0_%d'
format='/oradata/orabk/%T_lev0_%d_%s_%p'
database include current controlfile;
sql 'alter system archive log current';
backup filesperset=4 format='/oradata/orabk/arch_%T_%d_%s_%p'
archivelog all delete input;
release channel ch1;
release channel ch2;
}
quit; |
1级备份
/oraapp/oracle/dba/lev1_bkup.sh |
#!/bin/sh
export ORACLE_HOME=/oraapp/oracle/92
export DBA_HOME=/oraapp/oracle/dba
export ORACLE_SID=RMAN
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_DATE_FORMAT='YYYY-MM-DD_HH24:MI:SS'
$ORACLE_HOME/bin/rman cmdfile $DBA_HOME/lev1_bkup.rcv log $DBA_HOME/log/bkup.log
$ORACLE_HOME/bin/sqlplus /nolog @$DBA_HOME/DBA_rename.sql $DBA_HOME/log/bkup.log
/oraapp/oracle/dba/ora_os.sh & |
/oraapp/oracle/dba/lev1_bkup.rcv |
connect catalog RMAN/RMAN@RMAN;
connect target RMAN/RMAN@primary;
run {
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
backup spfile format='/oradata/orabk/%T_spfile_%d_%s_%p';
backup incremental
level=1
filesperset=2
tag='Lev1_%d'
format='/oradata/orabk/%T_lev1_%d_%s_%p'
database include current controlfile;
sql 'alter system archive log current';
backup filesperset=4
format='/oradata/orabk/arch_%T_%d_%s_%p'
archivelog all delete input;
release channel ch1;
release channel ch2;
}
quit; |
2级备份
/oraapp/oracle/dba/lev2_bkup.sh |
#!/bin/sh
export ORACLE_HOME=/oraapp/oracle/92
export DBA_HOME=/oraapp/oracle/dba
export ORACLE_SID=RMAN
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_DATE_FORMAT='YYYY-MM-DD_HH24:MI:SS'
$ORACLE_HOME/bin/rman cmdfile $DBA_HOME/lev2_bkup.rcv log $DBA_HOME/log/bkup.log
$ORACLE_HOME/bin/sqlplus /nolog @$DBA_HOME/DBA_rename.sql $DBA_HOME/log/bkup.log
/oraapp/oracle/dba/ora_os.sh & |
/oraapp/oracle/dba/lev2_bkup.rcv |
connect catalog RMAN/RMAN@RMAN;
connect target RMAN/RMAN@primary;
run {
allocate channel ch1 device type disk;
allocate channel ch2 device type disk;
backup spfile format='/oradata/orabk/%T_spfile_%d_%s_%p';
backup incremental
level=2
filesperset=2
tag='Lev2_%d'
format='/oradata/orabk/%T_lev2_%d_%s_%p'
database include current controlfile;
sql 'alter system archive log current';
backup filesperset=4
format='/oradata/orabk/arch_%T_%d_%s_%p'
archivelog all delete input;
release channel ch1;
release channel ch2;
}
quit; |
/oraapp/oracle/dba/ora_wk.sh |
#!/bin/sh
#
# remove all the last week backup files
#
rm -rf /offbkup/data/pweek/*
#
# move current week backup file to preview week folder
#
mv /offbkup/data/cweek/* /offbkup/data/pweek/ |
日志调度
crontab -e |
0 2 28 1 * /oraapp/oracle/dba/full_bkup.sh
10 0 * * 0 /oraapp/oracle/dba/lev0_bkup.sh
10 0 * * 1-2 /oraapp/oracle/dba/lev2_bkup.sh
10 0 * * 3 /oraapp/oracle/dba/lev1_bkup.sh
10 0 * * 4-6 /oraapp/oracle/dba/lev2_bkup.sh
10 3 * * 0 /oraapp/oracle/dba/ora_wk.sh |
阅读(836) | 评论(0) | 转发(0) |