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 <<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 '/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 <<EOF
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 /