中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么進行linux下的oracle10g rman備份

發布時間:2021-10-21 18:05:43 來源:億速云 閱讀:122 作者:柒染 欄目:云計算

怎么進行linux下的oracle10g rman備份,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

RMAN是Oracle提供的一個數據庫備份和恢復工具,利用rman可以比較方便的對數據庫進行備份。Oracle 數據庫可運行在歸檔和非歸檔模式下,這兩者的區別就在于對redo log的處理。歸檔模式下,當一個redo log  寫滿之后,就會把這個redo log里的內容寫入歸檔文件,等寫完之后,這個redo log  就可以繼續使用,如果是非歸檔模式下,redo log 就被直接覆蓋了。 數據庫的恢復一般都需要歸檔文件,這里面記錄了對數據庫的操作,所以生產數據庫一般都運行在歸檔模式下,以防數據的丟失。

一、設置ORACLE的RMAN備份準備工作:
1、查看數據庫現有運行模式
sql>select name,log_mode from v$database;
NAME    LOG_MODE
--------  ------------
BIGSUN   NOARCHIVELOG   #非歸檔模式
也可以通過下面的語句進行查看
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
非歸檔模式的數據庫需要改為歸檔模式,才能進行RMAN備份。步驟如下:
1. SQL> alter system set log_archive_dest_1='location=/oracle/oracle10g/log/archive_log';
該語句含義是確定歸檔日志的路徑,實際上Oracle 10g可以生成多份一樣的日志,保存多個位置,以防不測

例如再添加一個日志位置可使用以下語句
SQL>alter system set log_archive_dest_2='location=/oracle/oracle10g/log2/archive_log';

2.關閉數據庫
SQL> shutdown immediate

3.啟動數據mount狀態:
SQL> startup mount;

4、修改數據庫為歸檔模式:
SQL> alter database archivelog;

5、打開數據庫,查詢:
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   #歸檔模式

二、用腳本實現RMAN自動備份。

注: level 0 全備份; level 1  差量備份; level 2 增量備份

首先在linux oracle服務器的/data/rmanbak/script/目錄下新建3個腳本文件,并賦予每個腳本執行權限。

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用戶的自動執行任務計劃

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天。我們可以寫一個shell 腳本(del_archive_backup.sh
)如下,然后添加到crontab 里定時執行就可以刪除過期的歸檔文件了。
                                     
 #!/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后面寫你自己的路徑就可以了。

關于怎么進行linux下的oracle10g rman備份問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

霞浦县| 庆元县| 汪清县| 天峻县| 大港区| 体育| 盐亭县| 噶尔县| 兴文县| 通州市| 延边| 盐城市| 龙陵县| 凤城市| 江永县| 济宁市| 滨海县| 宁强县| 石楼县| 西安市| 扎鲁特旗| 东海县| 安义县| 蒙自县| 双峰县| 胶州市| 德清县| 石景山区| 子洲县| 龙川县| 鄂托克前旗| 英超| 离岛区| 芦溪县| 墨竹工卡县| 台山市| 盐山县| 桂东县| 旬阳县| 达拉特旗| 济阳县|