rman備份與腳本
1. 建立rman表空間
SQL> create tablespace rman logging datafile '/u01/app/oracle/oradata/TBDB/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.建立catalog數據庫及注冊數據庫
rman catalog rman/rman RMAN> create catalog tablespace "RMAN"; RMAN> exit |
注: 需啟動連接器,node222 為客戶端連接服務器的標識符
rman target sys/oracle@node222 catalog rman/rman@node222 connected to target database: NODE222 (DBID=3694045568) RMAN> register database; database registered in recovery catalog |
4.rman環境設置
1) 設置保留30天的備份信息
2)啟用控製文件自動備份及備份存放位置配置
RMAN> configure retention policy to recovery window of 30 days; RMAN> configure controlfile autobackup on; |
5.查看配置信息
RMAN>show all; |
6.備份策略
每日00:00進行一次全庫備份 係統自動清除30天以前的備份信息
7. 創建備份必要目錄(以oracle身份創建)
mkdir /u01/app/oracle/backup cd /u01/app/oracle/backup mkdir controlfileback 存放備份的控製文件 mkdir dbback 存放備份的數據文件 mkdir log 存放備份生成的日誌,堅持該日誌查看備份是否成功 mkdir logback 存放歸檔日誌文件 |
8. 備份腳本 cat /u01/app/oracle/backup/script/dbback.sh
#!/bin/bash #this is rman auto full backup script # Copyright by terrytsang
ORACLE_HOME=/u01/app/oracle/product/11.2.0/db1 NLS_LANG=AMERICAN_AMERICA.AL32UTF8 LD_LIBRARY_PATH=$ORACLE_HOME/lib ORACLE_BASE=/u01/app/oracle ORACLE_SID=TBDB export ORACLE_HOME LD_LIBRARY_PATH NLS_LANG ORACLE_BASE ORACLE_SID
backtime=`date +"20%y%m%d%H%M%S"` cd $ORACLE_HOME/bin rman target / catalog rman/rman log=/u01/app/oracle/backup/log/backupall_$backtime.log <<EOF 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 '/u01/app/oracle/backup/dbback/db_%d_%T_%U'; sql 'alter system archive log current'; backup archivelog all format '/u01/app/oracle/backup/logback/arc_%t_%s' delete all input; backup current controlfile format '/u01/app/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 echo "backup complete!" |
9. 定義備份時間間隔
crontab 0 0 * * * /u01/app/oracle/backup/script/dbback.sh 2>&1 >/dev/null |
最後更新:2017-04-03 16:59:48