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

oracle備份腳本

發布時間: 2022-01-21 21:16:59

❶ 如何編寫一個windows下的oracle自動備份腳本

@echo off
echo ================================================
echo Windows環境下Oracle資料庫的自動備份腳本
echo 1. 使用當前日期命名備份文件。
echo 2. 自動刪除7天前的備份。
echo ================================================
::以「YYYYMMDD」格式取出當前時間。
set BACKUPDATE=%date:~0,4%%date:~5,2%%date:~8,2%
::設置用戶名、密碼和要備份的資料庫。
set USER=xxx
set PASSWORD=123456
set DATABASE=dbtest
::創建備份目錄。
if not exist "D:\backup\data" mkdir D:\backup\data
if not exist "D:\backup\log" mkdir D:\backup\log
set DATADIR=D:\backup\data
set LOGDIR=D:\backup\log
exp %USER%/%PASSWORD%@%DATABASE% file=%DATADIR%\data_%BACKUPDATE%.dmp log=%LOGDIR%\log_%BACKUPDATE%.log
::刪除7天前的備份。
forfiles /p "%DATADIR%" /s /m *.* /d -7 /c "cmd /c del @path"
forfiles /p "%LOGDIR%" /s /m *.* /d -7 /c "cmd /c del @path"
exit

❷ 求一個oracle 11g自動備份腳本,每行腳本需要有注釋。例如:資料庫名LC0001,密碼123456,SID為ORCL,

要求自動的話,自己在windows下設置定時任務,這個就不說了,網上教程很多。

另外,這個東西跟資料庫名沒什麼關系,跟本地實例,還有用戶名有關

寫個腳本:

@echooff
echo刪除30天前的備分文件和日誌
forfiles/pC:data_bak/m*.dmp/d-30/c"cmd/cdel@path"
forfiles/pC:data_bak/m*.log/d-30/c"cmd/cdel@path"
echo正在備份Oracle資料庫,請稍等……
expscott/tiger@sytvfile=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.dmplog=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.logowner=scottbuffer=65535
cdC:ProgramFilesWinRAR
rara-drC:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.dmp.rarC:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.dmp
echo任務完成!
echo.&pause請按任意鍵結束!

也沒什麼可解釋的了。

exp scott/tiger@sytv file=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.dmp log=c:/data_bak/orcl_data_bak_%date:~0,4%%date:~5,2%%date:~8,2%.log owner=scott buffer=65535

也就這部分,scott是用戶名,tiger是密碼,sytv是本地實例名,然後file是備份文件名,log是日誌文件名,owner=scott是導出scott下的所有對象,這個可根據自己情況修改。


執行後,文件是這樣的:

❸ oracle 自動備份的腳本 望高手給解釋

很好理解的,一句一句來:
exp CJHDJ/CJHDJ file=E:\QIAOs環境備份\資料庫每日備份\oa\gzql_oa_%date:~0,10%.dmp:

導出 CJHDJ用戶數據, 導出文件路徑為 E:\QIAOs環境備份\資料庫每日備份\oa\ ,導出文件名為gzql_oa_%date:~0,10%.dmp ,其中%date:~0,10%是取系統時間精確到日,

dir *.dmp /O:-D >dir.txt :
列出所有後綴為.dmp文件的信息記錄到dir.txt 文件中,/O:-D 是dir命令的參數,排序和顯示目錄名和文件名的順序,按日期和時間,最晚的優先。

for /F "skip=20 tokens=4" %%a in (dir.txt) do @if exist %%a del %%a:
讀取dir.txt文件中的第4列的文件名(.dmp文件)並進行刪除文件操作

在說一下為什麼要"skip=20 tokens=4" 讀取dir.txt文件中從首行開始跳過20行 ,dir.txt的第4列

因為dir.txt中前5行是驅動器,目錄等信息,所以需要跳過。而前3列為日期,時間等信息,第4列為文件名,所以取第4列

你可以試一下,執行 dir * /O:-D >d:\dir.txt
d:\dir.txt 文件內容如下:

驅動器 C 中的卷是 OS
卷的序列號是 541D-F538

C:\ 的目錄

2011-02-18 08:14 <DIR> WINDOWS
2011-02-12 18:41 <DIR> TEMP
2011-02-03 15:24 <DIR> Program Files
2011-01-18 10:16 <DIR> UXLOG

❹ oracle資料庫如何導出整個資料庫腳本,用於備份資料庫

首先按full方式做exp導出(為了加快速度可以設置rows=no),然後做imp導入這里注意設置個indexfile=xxx.txt 參數這樣就能將你創建所有對象的腳本輸出到xxx.txt文件里了。當然了你可以使用工具如:toad,會有導出script的選項更方便點。

❺ windows環境下oracle資料庫的自動備份腳本怎麼用

需要寫個bat腳本,然後在windows計劃任務里調用此腳本可實現每天自動備份。工具:Oracle10g步驟:1、在某個盤符某個路徑(以C盤data目錄為例),創建oraclebackup.txt文件,內容如下:@echooffecho刪除10天前的備分文件和日誌forfiles/p"c:/data/"/m*.dmp/d-10/c"cmd/cdel@path"forfiles/p"c:/data/"/m*.log/d-10/c"cmd/cdel@path"echo正在備份Oracle資料庫,請稍等……exp用戶名/密碼@實例名file=c:/data/mdb%date:~0,4%%date:~5,2%%date:~8,2%.dmplog=c:/data//mdb%date:~0,4%%date:~5,2%%date:~8,2%.logfull=ybuffer=65535echo任務完成!2、保存上述文件後,將文件名的後綴改成.bat3、進入windows的控制面板,打開計劃與任務,新建任務,點擊瀏覽,選擇剛才新建的c盤data目錄下的oraclebackup.bat文件。接著選擇每天晚上22:00點執行,再輸入本機的administrator密碼即可。注意事項:exp語句中的用戶名密碼等內容,需要根據實際需要來填寫。

❻ 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的腳本怎麼寫

把下面的代碼保存為伺服器端的腳本,執行即可。PS:需要自己替換一下雙引號中的內容
#!/bin/sh
. $HOME/.bash_profile
export ORACLE_SID="你的資料庫的SID"
CutDATE=`date '+%Y-%m%d-%H%M'`
DATE=`date -d '-2 day' '+%Y-%m%d'`
export NLS_LANG="你的字元集設定"
exp "具有許可權的賬號"/"密碼" file=/home/oracle/2014/"你的資料庫的SID"_$CutDATE.dmp log=/home/oracle/2014/"你的資料庫的SID"_$CutDATE.log owner=user1,user2

❽ oracle資料庫如何每天自動執行腳本完成正式資料庫到備份資料庫的備份

寫個腳本完成正式資料庫到備份資料庫的備份
再設定Task Schele 每天某個時間自動執行這個腳本

❾ Oracle資料庫備份腳本怎麼寫

沒必要用root許可權執行,oracle用戶同樣可以執行crontab計劃任務
1、su - oracle
crontab -e
0 4 * * 0 /home/oracle/exp.sh 2>&1 >>/home/oracle/script_exp.log;
0~59 表示分
0~23 表示小時
1~31 表示日
1~12 表示月份
0~6 表示星期(其中0表示星期日)
2、cat /home/oracle/exp.sh
. ~/.bash_profile
bakdir=/opt/dbbak
logdir=/home/oracle/dbbak
rq=$(date +%Y%m%d)
exp system/***** owner=jysh file=${bakdir}/jysh_${rq}.dmp log=${logdir}/jysh_${rq}.log;
find ${bakdir} -type f -mtime +30 -exec rm -rf {} \;

❿ Oracle使用expdp方式導出 如何編寫一個BAT的腳本,使資料庫的備份文件可以根據日期備份

樓主:供參考
利用任務計劃、批處理文件和oracle的exp導出功能,可以根據日期自動生成oracle備份文件,大大方便了oracle數據備份。
建議一(做周備份並壓縮為rar)以下為oracle 自動備份批處理文件內容,請配合任務計劃實現 :
例:
@ECHO off
SET backPATH=d:\
ECHO 准備備份資料庫
REM 7天一個循環
IF EXIST %backPATH%\one goto one
IF EXIST %backPATH%\TWO goto TWO
IF EXIST %backPATH%\THREE goto THREE
IF EXIST %backPATH%\four goto four
IF EXIST %backPATH%\FIVE goto FIVE
IF EXIST %backPATH%\SIX goto SIX
IF EXIST %backPATH%\SEVEN goto SEVEN
ECHO E > %backPATH%\one

熱點內容
循跡小車演算法 發布:2024-12-22 22:28:41 瀏覽:80
scss一次編譯一直生成隨機數 發布:2024-12-22 22:04:24 瀏覽:954
嫁接睫毛加密 發布:2024-12-22 21:50:12 瀏覽:973
linuxbin文件的安裝 發布:2024-12-22 21:46:07 瀏覽:796
vlcforandroid下載 發布:2024-12-22 21:45:26 瀏覽:662
電腦做網關把數據發送至伺服器 發布:2024-12-22 21:44:50 瀏覽:429
新華三代理什麼牌子的伺服器 發布:2024-12-22 21:33:21 瀏覽:340
歡太會員密碼是什麼 發布:2024-12-22 20:57:28 瀏覽:74
sqllocaldb 發布:2024-12-22 20:07:08 瀏覽:126
如何找到我的伺服器 發布:2024-12-22 19:52:14 瀏覽:301