當前位置:首頁 » 網頁前端 » rman異機備份恢復腳本
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

rman異機備份恢復腳本

發布時間: 2022-07-23 19:58:13

⑴ rman備份腳本和rman增量備份腳本分享

一、單獨備份
1、經典整庫備份:backup
as
compressed
backupset
database
include
current
controlfile
plus
archivelog
delete
all
input;
2、tablespace:backup
tablespace
名字;
3、數據文件:backup
datafile
n;
(n:具體的數據文件編號select
file_name,file_id,tablespace_name
from
dba_data_files;)
4、控制文件:backup
current
controlfile;或者backup
database
include
current
controlfile;
5、日誌文件:backup
archivelog
all;或者
database
plus
archivelog;
6、參數文件:backup
spfile;
7、全庫備份腳本:
復制代碼
代碼如下:
run{
allocate
channel
c1
type
disk;
backup
full
tag
『dbfull'
format
『/backup/full%u_%s_%p'
database
include
current
controlfile;
sql
『alter
system
archive
log
current';
#在資料庫進行全備份完成之後,需要執行該條命令將當前日誌歸檔,備份歸檔日誌時應該包括最後生成的歸檔
backup
filesperset
3
format
『/backup/arch%u_%s_%p'#filesperset
3設定每個備份集里文件不超過3個
archivelog
all
delete
input;
#備份歸檔可選,可以單獨定期備份
release
channel
c1;
}
二、增量備份
1、0級增量備份
復制代碼
代碼如下:
run{
allocate
channel
c1
type
disk;
backup
incremental
level
0
tag
『db0'
format
『/backup/db0%u_%s_%p'database
include
current
controlfile;
;
sql
'alter
system
archive
log
current';#在資料庫進行全備份完成之後,需要執行該條命令將當前日誌歸檔,備份歸檔日誌時應該包括最後生成的歸檔
backup
filesperset
3
format
『/backup/arch%u_%s_%p'#filesperset
3設定每個備份集里文件不超過3個
archivelog
all
delete
input;
#備份歸檔可選,可以單獨定期備份
release
channel
c1;
}
2、1級備份腳本
復制代碼
代碼如下:
run{
allocate
channel
c1
type
disk;
backup
incremental
level
1
tag
『db1'
format
『/backup/db1%u_%s_%p'
database
skip
readonly
include
current
controlfile;
backup
filesperset
3
format
『/backup/arch%u_%s_%p'#filesperset設定每個備份集里文件不超過3個
archivelog
all
delete
input;
#備份歸檔可選,可以單獨定期備份
release
channel
c1;
}

⑵ RMAN表空間恢復成功,但是數據並未恢復

如果你的表被手動刪除過,你都已經recover了,當然找不到了。
這種情況可以使用
TSPITR(TableSpace Point-In-Time Recovery)

⑶ 如何使用 RMAN 增量備份恢復 data guard log gap

1、RMAN 異機恢復的時候,db_name必須相同。 如果說要想改成其他的實例名,可以在恢復成功後,用nid 命令修改。 實例名的信息會記錄到控制文件里,所以如果在恢復的時候,如果實例名不一致,恢復的時候會報錯。
2、如果恢復的路徑和源庫不一致,就需要在restore時用set 命令指定新位置。 並且使用switch datafile all將信息更新的到控制文件。
在做plicate的時候,RMAN 會自動根據pfile中的log_file_name_convert和db_file_name_convert來進行set 的轉換。 手工restore時,只能只只能使用set 命令。
3、異機恢復對相同目錄和不同目錄都做了說明。

⑷ RMAN備份異機還原,備份之後的歸檔日誌在RMAN中怎麼處理

rman備份是一種物理的備份,它直接去讀取數據塊,因此rman是塊級別的備份。從備份的那個時間點開始rman將鎖定此刻的數據文件信息,也就是說只是備份數據文件到此刻的信息為之。
但是rman並不鎖定數據文件的使用,也就是說rman的備份,不是資料庫一致性狀態的備份,由於rman備份是塊級別的,它只備份控制文件中已經存在的數據塊,同時資料庫還在運行之中,那麼就有可能會出現某些已經提交的操作,但是dbwn還沒有寫入數據文件,或者已經被rman備份過的數據塊,又重新被修改,等等,
這些信息rman備份都不會記錄,也是rman無法記錄的。但是記錄這些信息的是redo file,所以在rman完畢建議馬上執行日誌切換,然後備份歸檔日誌,因為在rman恢復過程中,rman本身備份的數據是不一直的,要靠這些已經歸檔的redo file信息恢復和保持資料庫的一直狀態。
當然備份的歸檔日誌中,可能包含有rman開始之前的歸檔,這些是沒用的,
其實這些歸檔文件中真正有用的是從rman備份開始到rman備份結束時刻系統產生的歸檔日誌。
同時rman在恢復的時候,restore database完畢後,會依次利用歸檔日誌和聯機日誌進行完全恢復
。此時利用的這些歸檔就是從rman備份開始到rman備份結束產生的歸檔日誌。
因此備份歸檔日誌是很必要的,當然聯機日誌也是必須的,這些日誌保證了rman能夠完全的恢復資料庫。

⑸ oracle資料庫這樣的(照片所示)rman備份腳本怎麼寫

只考慮備份,不考慮其他情況下:
root下的3個rman備份級別的腳本:
#cat
rman_0.sql
backup
incremental
level
0
database;
#cat
rman_1.sql
backup
incremental
level
1
database;
#cat
rman_1c.sql
backup
incremental
level
1
cumulative
database;
root下的調用rman腳本
#cat
rman_0.sh
#!/bin/bash
su
-
oracle
-c
"rman
target
sys/SHUIMITAO@rabbit
@/root/rman_0.sql"
#cat
rman_1.sh
#!/bin/bash
su
-
oracle
-c
"rman
target
sys/SHUIMITAO@rabbit
@/root/rman_1.sql"
#cat
rman_1c.sh
#!/bin/bash
su
-
oracle
-c
"rman
target
sys/SHUIMITAO@rabbit
@/root/rman_1c.sql"
root的計劃任務:
#crontab
-e
0
1
*
*
0
/root/rman_0.sh
0
2
*
*
1
/root/rman_1.sh
0
2
*
*
2
/root/rman_1.sh
0
3
*
*
3
/root/rman_1c.sh
0
2
*
*
4
/root/rman_1.sh
0
3
*
*
5
/root/rman_1c.sh
0
2
*
*
6
/root/rman_1.sh
11g里只有0和1兩個備份級別,請自行對應oracle低版本
level
0是full
level
1是差異增量備份
--和前一次備份比較,將這個期間改變的數據備份下來
level
1c是累計增量備份
--和比他小得級別相比(即全備份),改變的數據備份
然後根據實際情況還要將備份的策略往腳本添加

⑹ 使用RMAN可以異機恢復資料庫嗎

啟動資料庫到nomount

設置DBID,從原庫中查詢DBID的值
RMAN> set dbid=1374484832

狀態恢復spfile
RMAN>restore spfile from '/u01/app/rman_backup/controlfileback/cntrl_%s_%p_%s';

恢復controlfile,
RMAN>restore controlfile from '/u01/app/rman_backup/controlfileback/cntrl_%s_%p_%s';

啟動資料庫到mount狀態,然後建立controfile中對應的數據文件,聯機日誌文件所對應的目錄。向controlfile中注冊rman信息。
RMAN>catalog start with '/u01/app/';

mkdir /u01/app/oracle/oradata/rman/取回備份數據。
開始恢復數據
RMAN>restore database;

開始恢復
RMAN>recover database;

啟動資料庫
RMAN>alter database open;
如果是不完全恢復,則需要使用resetlogs模式打開資料庫,
RMAN>alter database open resetlogs;

⑺ oracle rman備份腳本怎麼寫

在ORACLE資料庫中,RMAN備份的腳本非常多,下面介紹一例shell腳本如何通過RMAN備份,以及FTP上傳RMAN備份文件以及歸檔日誌文件的腳本。
fullback.sh 裡面調用RMAN命令做資料庫備份,它使用的cmdfile為/home/oracle/backup/bin/fullback.rcv,同時在/home/oracle/backup/logs目錄下生成日誌文件。
1: [oracle@DB-Server bin]$ more fullback.sh
2:
3: #!/bin/bash
4:
5: export ORACLE_BASE=/u01/app/oracle
6:
7: export ORACLE_SID=gps
8:
9: ORACLE_HOME=$ORACLE_BASE/proct/10.2.0/db_1; export ORACLE_HOME
10:
11: TMP=/tmp; export TMP
12:
13: TMPDIR=$TMP; export TMPDIR
14:
15: PATH=/usr/sbin:$PATH; export PATH
16:
17: PATH=$ORACLE_HOME/bin:$PATH; export PATH
18:
19: LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
20:
21: CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;
22:
23: export CLASSPATH
24:
25: TODAY=`date +%Y_%m_%d`
26:
27: rman nocatalog target / cmdfile /home/oracle/backup/bin/fullback.rcv log /home/oracle/backup/logs/fullbackup_$TODAY.log
28:
29: /home/oracle/backup/bin/ftpbackup.sh
30:
fullback.rcv文件非常簡單, 如下所示:
1: [oracle@DB-Server bin]$ more /home/oracle/backup/bin/fullback.rcv
2:
3: run{
4:
5: allocate channel c4 type disk;
6:
7: backup as compressed backupset
8:
9: skip inaccessible
10:
11: tag fullbackupwitharchivelog
12:
13: (database);
14:
15: backup current controlfile;
16:
17: backup spfile;
18:
19: sql "alter system archive log current";
20:
21: delete noprompt obsolete;
22:
23: release channel c4;
24:
25: }
26:
RMAN生成的備份文件,需要通過FTP上傳到FTP伺服器,一則資料庫伺服器沒有這么多空間存儲多天的備份,二則是出於容災、數據安全需要。
下面腳本中FTP伺服器,用戶名密碼均使用xxx替代,在實際環境中,使用具體的信息替代即可。
1: [oracle@DB-Server bin]$ more ftpbackup.sh
2:
3: #!/bin/sh、
4:
5: rm -f /home/oracle/.netrc
6:
7: date_yesterday=`date -d'yesterday' +%Y_%m_%d`
8:
9: date_today=`date +%Y_%m_%d`
10:
11: echo "default login xxxx password xxxxxx" >> /home/oracle/.netrc
12:
13: echo "macdef init" >> /home/oracle/.netrc
14:
15: echo "binary" >> /home/oracle/.netrc
16:
17: echo "cd archivelog" >> /home/oracle/.netrc
18:
19: echo "mkdir $date_yesterday" >> /home/oracle/.netrc
20:
21: echo "cd $date_yesterday" >> /home/oracle/.netrc
22:
23: echo "lcd /u04/flash_recovery_area/gps/archivelog/$date_yesterday" >> /home/oracle/.netrc
24:
25: echo "mput *" >> /home/oracle/.netrc
26:
27: echo "cd .." >> /home/oracle/.netrc
28:
29: echo "mkdir $date_today" >>/home/oracle/.netrc
30:
31: echo "cd $date_today" >>/home/oracle/.netrc
32:
33: echo "lcd /u04/flash_recovery_area/gps/archivelog/$date_today" >>/home/oracle/.netrc
34:
35: echo "mput * ">>/home/oracle/.netrc
36:
37: echo "cd .." >>/home/oracle/.netrc
38:
39: echo "cd ../backupset" >> /home/oracle/.netrc
40:
41: echo "mkdir $date_today" >> /home/oracle/.netrc
42:
43: echo "cd $date_today" >> /home/oracle/.netrc
44:
45: echo "lcd /u04/flash_recovery_area/gps/backupset/$date_today" >> /home/oracle/.netrc
46:
47: echo "mput *" >> /home/oracle/.netrc
48:
49: echo "cd .." >> /home/oracle/.netrc
50:
51: echo "cd ../autobackup" >> /home/oracle/.netrc
52:
53: echo "mkdir $date_today" >> /home/oracle/.netrc
54:
55: echo "cd $date_today" >> /home/oracle/.netrc
56:
57: echo "lcd /u04/flash_recovery_area/gps/autobackup/$date_today" >> /home/oracle/.netrc
58:
59: echo "mput *" >> /home/oracle/.netrc
60:
61: echo "quit" >> /home/oracle/.netrc
62:
63: echo "" >> /home/oracle/.netrc
64:
65: chmod 600 /home/oracle/.netrc
66:
67: ftp -i -v xxx.xxx.xxx.xxx 8021 >>/home/oracle/backup/logs/ftp$date_today.log 2>&1
68:
另外,關於歸檔日誌也需要每隔2小時上傳一次到FTP伺服器,2小時上傳一次歸檔日誌的shell腳本如下所示:
1: [oracle@DB-Server bin]$ more ftp2hours.sh
2:
3: #!/bin/sh
4:
5: rm -f /home/oracle/.netrc
6:
7: date_yesterday=`date -d'yesterday' +%Y_%m_%d`
8:
9: date_today=`date +%Y_%m_%d`
10:
11: echo "default login xxxx password xxxx" >> /home/oracle/.netrc
12:
13: echo "macdef init" >> /home/oracle/.netrc
14:
15: echo "binary" >> /home/oracle/.netrc
16:
17: echo "cd archivelog" >> /home/oracle/.netrc
18:
19: echo "mkdir $date_today" >>/home/oracle/.netrc
20:
21: echo "cd $date_today" >>/home/oracle/.netrc
22:
23: echo "lcd /u04/flash_recovery_area/gps/archivelog/$date_today" >>/home/oracle/.netrc
24:
25: echo "mput * ">>/home/oracle/.netrc
26:
27: echo "quit" >> /home/oracle/.netrc
28:
29: echo "" >> /home/oracle/.netrc
30:
31: chmod 600 /home/oracle/.netrc
32:
33: ftp -i -v xxx.xxx.xxx.xxx 8021 >>/home/oracle/backup/logs/ftp2hours.$date_today.log 2>&1
34:
最後需要將RMAN備份生成的日誌文件,以及FTP上傳備份文件以及歸檔日誌的記錄通過郵件形式發送給DBA或系統管理員,
1: [oracle@DB-Server bin]$ more chkbackandmail.sh
2: #!/bin/bash
3: rm -f /home/oracle/backup/bin/sendmail.pl
4: date_today=`date +%Y_%m_%d`
5: subject="Oracle Backup Alert Service on $date_today"
6: content="Dear colleagues,
7:
8: Attached please find the logs of xxx(xxx.xxx.xxx.xxx) oracle database backup and transfer to FTP Server(xxx.xxx.xxx.xxx), please
9: review the file and check whether the backup succeeded or not,and double check all backups have been mped to tape, many tha
10: nks
11:
12:
13:
14:
15: Best regards
16: Oracle Alert Services
17:
18: "
19: file="/home/oracle/backup/logs/fullbackup_$date_today.log,/home/oracle/backup/logs/ftp$date_today.log"
20: echo "#!/usr/bin/perl" >> /home/oracle/backup/bin/sendmail.pl
21: echo "use Mail::Sender;" >> /home/oracle/backup/bin/sendmail.pl
22: echo "\$sender = new Mail::Sender {smtp => 'xxx.xxx.xxx.xxx', from => '[email protected]'}; ">> /home/oracle/backup/bin/sendmai
23: l.pl
24: echo "\$sender->MailFile({to => '[email protected]',">> /home/oracle/backup/bin/sendmail.pl
25: echo "cc=>'[email protected],[email protected],[email protected]'," >> /home/oracle/backup/b
26: in/sendmail.pl
27: echo "subject => '$subject',">> /home/oracle/backup/bin/sendmail.pl
28: echo "msg => '$content',">> /home/oracle/backup/bin/sendmail.pl
29: echo "file => '$file'});">> /home/oracle/backup/bin/sendmail.pl
30: perl /home/oracle/backup/bin/sendmail.pl
最後在Crontab 作業裡面配置調用這些shell腳本。例如如下所示,在1:01分執行fullback.sh ,每隔兩個小時(例如0:50、2:50...)執行一次ftp2hours.sh, 在每天早上8:40執行chkbackandmail.sh 發送fullback.sh 以及ftp2hour.sh的執行日誌記錄。

⑻ rman備份shell腳本相關問題

你確定這個'date +%m%d%y' 用的是數字鍵左邊的反引號``,而不是單引號''么?
你要用反引號``,才能正確的以日期形式顯示。

⑼ oracle有rman備份文件,怎麼異機還原

大體步驟: 1.恢復控制文件。 2.恢復 full backup 3.恢復 1 級備份,(好像這堆文件中沒有) 3.恢復 archivelog 。

⑽ rman自定義備份腳本生成的bak文件怎麼恢復

先定義好備份的過期策略,然後有兩種方法。 1、可以使用Schele backup。 2、自己寫腳本,並且使用操作系統上的定時任務,定期執行刪除腳本。