當前位置:首頁 » 編程軟體 » linuxrman備份腳本

linuxrman備份腳本

發布時間: 2022-04-24 14:35:00

『壹』 求oracle 8i RMAN全備份步驟、腳本

RMAN的 0 級備份是:

backup incremental level 0 tag 'dbf00'
format '/home/oracle/backup/dbf00_%T_%u_%p.bak'
database filesperset 16 skip readonly ;

sql 'alter system archive log current'; -- 歸檔一個後再備份
backup archivelog from time 'sysdate-1'
format '/home/oracle/backup/log00_%T_%u_%p.bak';

channel 不要開4個,開2個就足夠了

『貳』 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的執行日誌記錄。

『叄』 請教linux定時執行資料庫備份腳本的問題

Oracle自動備份資料庫不外乎以下三種方式WINDOWS下的任務計劃(At命令)
UNIX下的Crontab
第三方工具如Viritas
在以上三種方式中Viritas屬於第三方工具,很多人可能都沒有接觸,主要說一下windows的任務計劃與unix的cron
1、生成腳本文件,如backup.rcv 假定文件內容如下:
$>cat backup.rcv connect target sys/password rcvcat rman/rman@localname; run{ allocate channel c1 type disk; allocate channel c2 type disk; allocate channel c3 type disk; backup fileaperset 3 format 『/u01/oradata/backup/arch%u_%s_%p』 archivelog all delete input; release channel c1; release channel c2; release channel c3; }

2、生成執行文件在windows上生成backup_archive.bat,內容包括rman cmdfile = backup.rcv 在unix下生成 backup_archive.sh,內容包括oracle/ramn/rman cmdfile = backup.rcv
3、加入調度在windows中用任務計劃向導即可,或使用at命令。在unix中,在目標機器上編寫一個文件,用以啟動Oracle自動備份進程。假定文件名為ORACLE,文件將放在/var/spool/cron/crontabs目錄下
$>cat oracle
0 23 * * 0 backup_archive.sh
#表示星期天23點對資料庫備份
0 12,18 * * * backup_archive.sh
#表示每天12點,18點備份
Crontab文件的每一行由六個域(minutes,hours,day of month,month,day of week,command)組成,域之間用空格或Tab分隔開來

『肆』 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是累計增量備份 --和比他小得級別相比(即全備份),改變的數據備份

然後根據實際情況還要將備份的策略往腳本添加

『伍』 linux 下 oracle 10g 使用rman 每周執行一次 自動備份腳本如何編寫 希望能有解釋。

crontab -e
0 0 0 0 0 /script_path/your_backup_script.sh

每周日零時自動執行

『陸』 高分求助!誰給我解釋下這段linux中oracle備份腳本的意思,越詳細越好,謝謝了!!

您好,我剛接觸LINUX還沒有接觸到ORACLE去,我純粹說一下這個腳本,半斤八兩的嘎嘎。
ORACLE_HOME=/u/proct/oracle816; export ORACLE_HOME
LD_LIBRARY_PATH=/u/proct/oracle816/lib; export LD_LIBRARY_PATH
ORACLE_BASE=/u/proct; export ORACLE_BASE
ORACLE_SID=man; export ORACLE_SID
ORA_NLS33=/u/proct/oracle816/ocommon/nls/admin/data; export ORA_NLS33
PATH=$PATH:/u/proct/oracle816/bin; export PATH
CDPATH=$PATH:$ORACLE_HOME:/u; export CDPATH
NLS_LANG='traditional chinese_taiwan'.ZHT16BIG5; export NLS_LANG
#NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1;export NLS_LANG
NLS_DATE_FORMAT='DD-MM-YYYY HH24:MI:SS';export NLS_DATE_FORMAT
LD_ASSUME_KERNEL=2.4.0; export LD_ASSUME_KERNEL
這一段都是「;」前面聲明變數,「;」後輸出變數,輸出的目的是可以傳遞給下一級的腳本(子進程)。
alias rman='/u/proct/oracle816/bin/rman'
這個就是給/u/proct/oracle816/bin/rman取一個別名rman,其好處再簡單不過,名字太長當然希望用較短的代替很長的輸入了。
extfile=`date '+%w_%p_%H_%M'`
這也是聲明變數extfile,等號右邊是一個命令替換,比如現在是2007年4月29日星期天,15:55那麼這個extfile應該是0_PM_3_55 具體你看下date的MAN文檔就是了。
%w是參數week,它是用0-6來表示星期日-星期六
%p 它是指用12小時制來表示一天的時間的時候上午或者下午AM or PM
%H 小時
%M 分鍾

#rm -rf /www/exp/data/b735data*.*
這個是強制的刪除/www/exp/data/下的以b735data開頭並帶有任意後綴的文件。但是被#號注釋掉了,腳本里以#開頭的都是注釋。
exp foxmold/foxmold file=/www/exp/script/b735data.$extfile compress=y full=y log=n
這些是資料庫里的東西了我不懂你去搜下exp命令的用法吧。
mv /www/exp/script/b735data.$extfile /www/exp/data/.
Mv 移動文件的命令。
#rcp /exp/data/data.$extfile 10.160.6.42:/backup/apple_backup
同樣被注釋掉了,rcp是遠程復制命令。
sh DATAexport
執行腳本

重申因為我不懂oracle所以只純粹說這個腳本哦 呵呵。

『柒』 linux用戶amandabackup有用嗎

在Oracle資料庫中,有時會發現備份腳本可以在命令行可以執行,但在crontab不能執行。 如何確定在Linux的oracle用戶下crontab是否有效。 可以寫一個最簡單的腳本,腳本中只有date命令,把腳本輸入到一個日誌文件中。如: 30 23 * * 0-6 /u01/app/rmanBackup/date.sql >>/u01/app/rmanBackup/date.log Date.sql需要有足夠的執行許可權。 如果可以定時執行date命令,表示在oracle下可以使用crontab命令 Oracle的腳本不能執行,是因為在crontab中找不到oracle下的相關命令,所以需要加上export設置環境變數。沒有設置export不能執行。 如:全備: [@linuxidc rmanBackup]$ vi backupFull.sql 內容: # script.:bakupFull.sql # creater:mengzhaoliang # date:2010/12/28 # desc:backup full database datafile in archive with rman # connect database export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=/u01/app/oracle/proct/11.2.0/dbhome_1 export ORACLE_SID=hyoms export PATH=$ORACLE_HOME/bin:$PATH rman target/ << EOF_RMAN run{ allocate channel c1 type disk; backup tag 'full' format '/u01/app/rmanBackup/db0_%d_%T_%s' database include current controlfile; delete noprompt obsolete; release channel c1; } # end 如:crontab [oracle@ ~]$ crontab -e 30 23 * * 0-6 /u01/app/rmanBackup/backupFull.sql >>/u01/app/rmanBackup/backupFull.log

『捌』 如何中途停止RMAN備份任務

(1)查看RMAN分配的各個通道的進程號
SQL>
SELECT sid, spid, client_info
FROM v$process p, v$session s
WHERE p.addr = s.paddr

AND client_info LIKE '%rman%';
SID SPID
CLIENT_INFO
113 15898
rman channel=ORA_DISK_1
119 15899
rman channel=ORA_DISK_2
120 15900
rman channel=ORA_DISK_3
117 15901
rman channel=ORA_DISK_4
(2)根據第(1)中得到的進程號,終止RMAN備份
註:這里既要kill 掉RMAN備份腳本的PID,www.linuxidc.com?也要kill 掉RMAN中分配的各個通道的PID
[root@asmdb ~]# ps -ef | grep beq
oracle 1918 1 0 Jul10 ? 00:00:09 oracle+ASM
(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 15790 1 0 08:53 ? 00:00:00 oracle+ASM
(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 15892 15885 1 08:57 ? 00:00:00 oracleasmdb
(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 15897 15885 1 08:57 ? 00:00:00 oracleasmdb
(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle 15898 15885 1 08:57 ? 00:00:00 oracleasmdb
(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 15899 15885 2 08:57 ? 00:00:00 oracleasmdb
(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 15900 15885 2 08:57 ? 00:00:00 oracleasmdb
(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
oracle 15901 15885 5 08:57 ? 00:00:00 oracleasmdb
(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
root 15903 15823 0 08:57 pts/3 00:00:00 grep beq
[root@asmdb ~]# kill -9 15898
[root@asmdb ~]# kill -9 15899
[root@asmdb ~]# kill -9 15900
[root@asmdb ~]# kill -9 15901
[root@asmdb ~]# ps -ef | grep rman
oracle 15885 15740 1 08:57 pts/2 00:00:02 rman target /
root 15926 15823 0 09:01 pts/3 00:00:00 grep rman
[root@asmdb ~]# kill -9 15885
rman備份的命令行終端的顯示輸出:
[oracle@asmdb ~]$ rman target /
Recovery Manager: Release 10.2.0.5.0 - Proction on Mon Jul 29 08:57:22
2013
Copyright (c) 1982, 2007, Oracle. All rights reserved.
connected to target database: ASMDB (DBID=557978363)
RMAN> backup database;
Starting backup at 29-JUL-13
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=113 devtype=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: sid=119 devtype=DISK
allocated channel: ORA_DISK_3

channel ORA_DISK_3: sid=120 devtype=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: sid=117 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00002
name=+ASMDG01/asmdb/datafile/undotbs1.261.813779611
input datafile fno=00007
name=+ASMDG01/asmdb/datafile/spottbs.268.821100481
channel ORA_DISK_1: starting piece 1 at 29-JUL-13
channel ORA_DISK_2: starting full datafile backupset
channel ORA_DISK_2: specifying datafile(s) in backupset
input datafile fno=00001
name=+ASMDG01/asmdb/datafile/system.260.813779595
channel ORA_DISK_2: starting piece 1 at 29-JUL-13
channel ORA_DISK_3: starting full datafile backupset
channel ORA_DISK_3: specifying datafile(s) in backupset
input datafile fno=00003
name=+ASMDG01/asmdb/datafile/sysaux.262.813779621
input datafile fno=00004
name=+ASMDG01/asmdb/datafile/users.264.813779629
channel ORA_DISK_3: starting piece 1 at 29-JUL-13
channel ORA_DISK_4: starting full datafile backupset
channel ORA_DISK_4: specifying datafile(s) in backupset
input datafile fno=00005 name=+ASMDG01/asmdb/datafile/luroutest01.dbf
input datafile fno=00006 name=+ASMDG01/asmdb/datafile/spot01.dbf
channel ORA_DISK_4: starting piece 1 at 29-JUL-13
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 07/29/2013
08:58:20
RMAN-10038: database session for channel ORA_DISK_1 terminated
unexpectedly
channel ORA_DISK_1 disabled, job failed on it will be run on another
channel
RMAN-03009: failure of backup command on ORA_DISK_2 channel at 07/29/2013
08:58:20
RMAN-10038: database session for channel ORA_DISK_2 terminated
unexpectedly
channel ORA_DISK_2 disabled, job failed on it will be run on another
channel
RMAN-03009: failure of backup command on ORA_DISK_3 channel at 07/29/2013
08:58:20
RMAN-10038: database session for channel ORA_DISK_3 terminated
unexpectedly
channel ORA_DISK_3 disabled, job failed on it will be run on another
channel
Killed
[oracle@asmdb ~]$
[oracle@asmdb ~]$
(3)核實進程是否還存在
此時RMAN備份操作已經被終止。查看(1)中的SQL語句時,結果為空。
注意事項
如果單單kill掉RMAN的進程號,那麼RMAN備份並沒有停止,必須要連channel進程也一起掉才可以!

熱點內容
隨機啟動腳本 發布:2025-07-05 16:10:30 瀏覽:528
微博資料庫設計 發布:2025-07-05 15:30:55 瀏覽:25
linux485 發布:2025-07-05 14:38:28 瀏覽:305
php用的軟體 發布:2025-07-05 14:06:22 瀏覽:756
沒有許可權訪問計算機 發布:2025-07-05 13:29:11 瀏覽:433
javaweb開發教程視頻教程 發布:2025-07-05 13:24:41 瀏覽:707
康師傅控流腳本破解 發布:2025-07-05 13:17:27 瀏覽:243
java的開發流程 發布:2025-07-05 12:45:11 瀏覽:688
怎麼看內存卡配置 發布:2025-07-05 12:29:19 瀏覽:285
訪問學者英文個人簡歷 發布:2025-07-05 12:29:17 瀏覽:835