rman其實就是乙個工具,通過這乙個工具,協調上面的幾大部件。
rman可以通過生產的資料庫備份自己的硬碟上面,磁帶上面,備份的資訊會放到控制檔案裡面或者資料庫裡面。
要實現上面的典型的增量備份方案
可以做成執行計畫
因為只有0,1,2三種級別備份所以只需要三個指令碼。
[oracle@oracle11g script]$ pwd
/rmanbackup/script
在該目錄下面建立三個檔案,即備份的指令碼,分別為0,1,2級的指令碼。
[oracle@oracle11g script]$ vi bakl0
[oracle@oracle11g script]$ vi bakl1
[oracle@oracle11g script]$ vi bakl2
裡面寫上
run
裡面通過修改數字來表示增量為多少的備份。
rman target / msglog=/rmanbackup/ramlog/bakl0.log cmdfile=/rmanbackup/script/bakl0
[oracle@oracle11g script]$ rman target / msglog=/rmanbackup/ramlog/bakl0.log cmdfile=/rmanbackup/script/bakl0
rman> 2> 3> 4> 5> 6> 7> 8> 9> 10> [oracle@oracle11g script]$
看到可以使用rman指令碼進行備份。
備份產生的檔案可以看到已經產生了
[oracle@oracle11g beifeng]$ pwd
/rmanbackup/beifeng
[oracle@oracle11g beifeng]$ ls
inc0_03sln8as_20171209 inc0_04sln8eh_
20171209
再去看看日誌檔案裡面內容
[oracle@oracle11g ramlog]$ vi bakl0.log
recovery manager: release 11.2.0.4.0 - production on sat dec 9 19:19:55 2017
connected to target database: oradb (dbid=2714287021)
rman> run
10>
using target database control file instead of recovery catalog
allocated channel: c1
channel c1: sid=35 device type=disk
starting backup at 09-dec-17
channel c1: starting incremental level 0 datafile backup set
channel c1: specifying datafile(s) in backup set
channel c1: starting piece 1 at 09-dec-17
channel c1: finished piece 1 at 09-dec-17
piece handle=/rmanbackup/beifeng/inc0_03sln8as_20171209 tag=monday_inc0 comment=none
channel c1: backup set complete, elapsed time: 00:01:56
channel c1: starting incremental level 0 datafile backup set
channel c1: specifying datafile(s) in backup set
including current control file in backup set
including current spfile in backup set
channel c1: starting piece 1 at 09-dec-17
channel c1: finished piece 1 at 09-dec-17
piece handle=/rmanbackup/beifeng/inc0_04sln8eh_20171209 tag=monday_inc0 comment=none
channel c1: backup set complete, elapsed time: 00:00:03
"bakl0.log" 44l, 1628c
在使用上面方式備份的時候最好使用全路徑,不要使用相對路徑。rman也最好使用全路徑。
[oracle@oracle11g ramlog]$ which rman
這樣寫最好
上面都是手動備份,如果要自動實現備份就要使用crontab了。
每天晚上23:45分執行指令碼。
/etc/crontab中加入下面的兩句,第一句就是注釋了。以
#號開始,後面寫乙個自己能知道這是什麼任務的備註;
# reboot os
30 8 * * * root /sbin/reboot
第一段應該定義的是:分鐘,表示每個小時的第幾分鐘來執行。範圍是從0-59
第二段應該定義的是:小時,表示從第幾個小時來執行,範圍是從0-23
第三段應該定義的是:日期,表示從每個月的第幾天執行,範圍從1-31
第四段應該定義的是:月,表示每年的第幾個月來執行,範圍從1-12
第五段應該定義的是:周,表示每週的第幾天執行,範圍從0-6,其中
0表示星期日。
每六段應該定義的是:使用者名稱,也就是執行程式要通過哪個使用者來執行,這個一般可以省略;
第七段應該定義的是:執行的命令和引數
# for details see man 4 crontabs
# example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) or jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (sunday=0 or 7) or sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
[root@oracle11g ramlog]# crontab -e -u oracle
在裡面加上上面那些語句,代表會以oracle使用者執行
rman target /..............................
。注意修改完使用者的執行計畫之後使用下面語句重啟一下服務。
[root@oracle11g ramlog]# service crond restart
stopping crond: [ ok ]
starting crond:
Oracle Rman 備份指令碼
oracle dbservera crontab l 0 0 u01 rmanbak rmanbak.sh u01 rmanbak rmanbak.log 2 1 oracle dbservera cat u01 rmanbak rmanbak.sh bin bash bash profile ec...
Oracle RMAN簡單備份
oracle資料庫rman備份 準備工作 查詢資料庫是否為歸檔模式 sql select name,log mode from v database 1.sql alter system set log archive dest 1 location oracle oracle10g log arc...
oracle rman自動備份指令碼
bin sh opt oracle bash profile pwd sys bak dir opt oracle backup oatest begin seq sqlplus s as sysdba crosscheck backupset crosscheck archivelog all d...