您好,登錄后才能下訂單哦!
怎么進(jìn)行l(wèi)inux下的oracle10g rman備份,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。
RMAN是Oracle提供的一個(gè)數(shù)據(jù)庫(kù)備份和恢復(fù)工具,利用rman可以比較方便的對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份。Oracle 數(shù)據(jù)庫(kù)可運(yùn)行在歸檔和非歸檔模式下,這兩者的區(qū)別就在于對(duì)redo log的處理。歸檔模式下,當(dāng)一個(gè)redo log 寫滿之后,就會(huì)把這個(gè)redo log里的內(nèi)容寫入歸檔文件,等寫完之后,這個(gè)redo log 就可以繼續(xù)使用,如果是非歸檔模式下,redo log 就被直接覆蓋了。 數(shù)據(jù)庫(kù)的恢復(fù)一般都需要?dú)w檔文件,這里面記錄了對(duì)數(shù)據(jù)庫(kù)的操作,所以生產(chǎn)數(shù)據(jù)庫(kù)一般都運(yùn)行在歸檔模式下,以防數(shù)據(jù)的丟失。
一、設(shè)置ORACLE的RMAN備份準(zhǔn)備工作:
1、查看數(shù)據(jù)庫(kù)現(xiàn)有運(yùn)行模式
sql>select name,log_mode from v$database;
NAME LOG_MODE
-------- ------------
BIGSUN NOARCHIVELOG #非歸檔模式
也可以通過下面的語句進(jìn)行查看
sql> archive log list ;(conn / as sysdba)
Database log mode No Archive Mode
Automatic archival Disabled #非歸檔模式
Archive destination /export/data/oracle/product/10.0.0.2/dbs/arch
Oldest online log sequence 28613
Current log sequence 28615
非歸檔模式的數(shù)據(jù)庫(kù)需要改為歸檔模式,才能進(jìn)行RMAN備份。步驟如下:
1. SQL> alter system set log_archive_dest_1='location=/oracle/oracle10g/log/archive_log';
該語句含義是確定歸檔日志的路徑,實(shí)際上Oracle 10g可以生成多份一樣的日志,保存多個(gè)位置,以防不測(cè)
例如再添加一個(gè)日志位置可使用以下語句
SQL>alter system set log_archive_dest_2='location=/oracle/oracle10g/log2/archive_log';
2.關(guān)閉數(shù)據(jù)庫(kù)
SQL> shutdown immediate
3.啟動(dòng)數(shù)據(jù)mount狀態(tài):
SQL> startup mount;
4、修改數(shù)據(jù)庫(kù)為歸檔模式:
SQL> alter database archivelog;
5、打開數(shù)據(jù)庫(kù),查詢:
SQL> alter database open;
修改日志文件命名格式:
SQL> alter system set log_archive_max_processes = 5;
SQL> alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile;
修改完成后可以查看日志模式是否修改成功!
sql>select name,log_mode from v$database;
NAME LOG_MODE
-------- ------------
BIGSUN ARCHIVELOG #歸檔模式
二、用腳本實(shí)現(xiàn)RMAN自動(dòng)備份。
注: level 0 全備份; level 1 差量備份; level 2 增量備份
首先在linux oracle服務(wù)器的/data/rmanbak/script/目錄下新建3個(gè)腳本文件,并賦予每個(gè)腳本執(zhí)行權(quán)限。
bakl0.sh 腳本
RUN_STR="
BAK_LEVEL=0
export BAK_LEVEL
ORACLE_HOME=/opt/app/oracle/10.2.0
export ORACLE_HOME
ORACLE_SID=orcl
export ORACLE_SID
RMAN_LOG_FILE=${0}.out
echo Script $0 >> $RMAN_LOG_FILE
echo ==== started on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE
$RMAN nocatalog target sys/admin msglog $RMAN_LOG_FILE append << EOF
run{
allocate channel c1 type disk;
backup incremental level 0 format "/data/rmanbak/inc0_%u_%T" tag monday_inc0 database;
release channel c1;
}
bakl1.sh 腳本
RUN_STR="
BAK_LEVEL=1
export BAK_LEVEL
ORACLE_HOME=/opt/app/oracle/10.2.0
export ORACLE_HOME
ORACLE_SID=orcl
export ORACLE_SID
RMAN_LOG_FILE=${0}.out
echo Script $0 >> $RMAN_LOG_FILE
echo ==== started on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE
$RMAN nocatalog target sys/admin msglog $RMAN_LOG_FILE append << EOF
run{
allocate channel c1 type disk;
backup incremental level 1 format "/data/rmanbak/inc1_%u_%T" tag monday_inc0 database;
release channel c1;
}
bakl2.sh 腳本
RUN_STR="
BAK_LEVEL=2
export BAK_LEVEL
ORACLE_HOME=/opt/app/oracle/10.2.0
export ORACLE_HOME
ORACLE_SID=orcl
export ORACLE_SID
RMAN_LOG_FILE=${0}.out
echo Script $0 >> $RMAN_LOG_FILE
echo ==== started on `date` ==== >> $RMAN_LOG_FILE
echo >> $RMAN_LOG_FILE
chmod 666 $RMAN_LOG_FILE
$RMAN nocatalog target sys/admin msglog $RMAN_LOG_FILE append << EOF
run{
allocate channel c1 type disk;
backup incremental level 2 format "/data/rmanbak/inc2_%u_%T" tag monday_inc0 database;
release channel c1;
}
其二、編輯oracle用戶的自動(dòng)執(zhí)行任務(wù)計(jì)劃
crontab -e -u oracle
30 23 * * 0 rman target / msglog=/data/rmanbak/rman_bk_'date '+%Y%m%d%H%M%S''.log
cmdfile=/data/rmanbak/script/bakl0.sh
30 23 * * 1 rman target / msglog=/data/rmanbak/bakl0.log cmdfile=/data/rmanbak/script/bakl2.sh
30 23 * * 2 rman target / msglog=/data/rmanbak/bakl0.log cmdfile=/data/rmanbak/script/bakl2.sh
30 23 * * 3 rman target / msglog=/data/rmanbak/bakl0.log cmdfile=/data/rmanbak/script/bakl1.sh
30 23 * * 4 rman target / msglog=/data/rmanbak/bakl0.log cmdfile=/data/rmanbak/script/bakl2.sh
30 23 * * 5 rman target / msglog=/data/rmanbak/bakl0.log cmdfile=/data/rmanbak/script/bakl2.sh
30 23 * * 6 rman target / msglog=/data/rmanbak/bakl0.log cmdfile=/data/rmanbak/script/bakl2.sh
最后重啟crontab 命令 : #service crond restart
三、定期刪除備份的歸檔文件
比如歸檔文件需要保存15天。我們可以寫一個(gè)shell 腳本(del_archive_backup.sh
)如下,然后添加到crontab 里定時(shí)執(zhí)行就可以刪除過期的歸檔文件了。
#!/bin/ksh
PATH=/usr/bin:/usr/ucb:/etc:.:/usr/X/bin:/bin
export PATH
find /data/arch/incremental_hotbackup -mtime +15 -name "arch_*"
-exec rm {} \;
注:find后面寫你自己的路徑就可以了。
關(guān)于怎么進(jìn)行l(wèi)inux下的oracle10g rman備份問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。