溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么進(jìn)行l(wèi)inux下的oracle10g rman備份

發(fā)布時(shí)間:2021-10-21 18:05:43 來源:億速云 閱讀:121 作者:柒染 欄目:云計(jì)算

怎么進(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í)。

向AI問一下細(xì)節(jié)

免責(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)容。

AI