exp自動備份on linux and on windows
大概思路:
1,分不同的使用者進行exp,每個使用者一個exp執行檔案。
2,保留策略
3,用一個總檔案呼叫(1,2)二個檔案。
on linux
/u02/orabak:用於存放DMP檔案的目錄
/u02/scripts/autoexp:用於存放exp這些sh指令碼的目錄
記得對目錄,檔案賦於相應的WRX許可權。
1,分不同的使用者進行exp,每個使用者一個exp執行檔案。
2,保留策略
3,用一個總檔案呼叫(1,2)二個檔案。
on linux
/u02/orabak:用於存放DMP檔案的目錄
/u02/scripts/autoexp:用於存放exp這些sh指令碼的目錄
記得對目錄,檔案賦於相應的WRX許可權。
autoexp.sh:自動備份的總檔案,用crontab裡面的sh檔案。
exp_plms.sh:每個使用者一個sh檔案,分使用者備份
exp_weishi.sh:每個使用者一個sh檔案,分使用者備份
exp_weishi.sh:每個使用者一個sh檔案,分使用者備份
delete.sh:保留策略,可以保留30天,任意設定
autoexp.log:自動備份,每天按使用者寫一個日誌
autoexp.del.log:保留策略日誌,會把刪除的檔案日誌寫到這裡。
[oracle@SR0002SZ autoexp]$ cat exp_plms.sh
#!/bin/sh
#oracle environment
ORACLE_BASE=/ora01; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=dbstd; export ORACLE_SID
NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';export NLS_DATE_FORMAT
NLS_LANG=American_America.ZHS16GBK;export NLS_LANG
PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH; export PATH
#exp variable
userid=oracle
pwd=iamdba
oraclesid=dbstd
bakpath=/u02/orabak
vtoday=`date +%Y%m%d`
#run exp scripts log
logpath=/u02/scripts/autoexp
logfile=autoexp.log
#exp command belong to,this should be changed using oracle user
owner=plms
#exp combination
datatype=full
data_name=${oraclesid}_${owner}_${datatype}_${vtoday}.dmp
log_name=${oraclesid}_${owner}_${datatype}_${vtoday}.log
#exp log
echo -e "\n" >>${logpath}/${logfile}
echo "------start@${oraclesid}_${owner}---------" >>${logpath}/${logfile}
echo `date` start exp backup:$bakpath/$data_name >>${logpath}/${logfile}
#exp command
exp $userid/$pwd@$oraclesid file=$bakpath/$data_name wner=$owner direct=y compress=y rows=n consistent=y buffer=100000000 log=$bakpath/$log_name
#exp log
echo `date` end exp backup:$bakpath/$log_name >>${logpath}/${logfile}
echo "-------end@${oraclesid}_${owner}----------" >>${logpath}/${logfile}
[oracle@SR0002SZ autoexp]$ cat exp_weishi.sh
#!/bin/sh
#oracle environment
ORACLE_BASE=/ora01; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=dbstd; export ORACLE_SID
NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';export NLS_DATE_FORMAT
NLS_LANG=American_America.ZHS16GBK;export NLS_LANG
PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH; export PATH
#exp variable
userid=oracle
pwd=iamdba
oraclesid=dbstd
bakpath=/u02/orabak
vtoday=`date +%Y%m%d`
#run exp scripts log
logpath=/u02/scripts/autoexp
logfile=autoexp.log
#exp command belong to,this should be changed using oracle user
owner=weishi
#exp combination
datatype=full
data_name=${oraclesid}_${owner}_${datatype}_${vtoday}.dmp
log_name=${oraclesid}_${owner}_${datatype}_${vtoday}.log
#exp log
echo -e "\n" >>${logpath}/${logfile}
echo "------start@${oraclesid}_${owner}---------" >>${logpath}/${logfile}
echo `date` start exp backup:$bakpath/$data_name >>${logpath}/${logfile}
#exp command
exp $userid/$pwd@$oraclesid file=$bakpath/$data_name wner=$owner direct=y compress=y rows=n consistent=y buffer=100000000 log=$bakpath/$log_name
#exp log
echo `date` end exp backup:$bakpath/$log_name >>${logpath}/${logfile}
echo "-------end@${oraclesid}_${owner}----------" >>${logpath}/${logfile}
[oracle@SR0002SZ autoexp]$ cat delete.sh
#!/bin/sh
#set backup path
bakpath=/u02/orabak
#set delete files log path and file log
delpath=/u02/scripts/autoexp
dellog=autoexp.del.log
#run,keep 30 days
find ${bakpath} -mtime +30 -exec ls -la {} \; >>${delpath}/${dellog}
find ${bakpath} -mtime +30 -exec rm {} \; >>${delpath}/${dellog}
[oracle@SR0002SZ autoexp]$ cat autoexp.sh
#!/bin/sh
#set exp command path
scriptspath=/u02/scripts/autoexp
#oracle exp backup
sh ${scriptspath}/exp_weishi.sh
sh ${scriptspath}/exp_plms.sh
#backup retention policy
sh ${scriptspath}/delete.sh
最後,就是讓autoexp.sh每天執行一次。使用crontab。
基本格式 :
* * * * * user command
分 時 日 月 周 使用者 命令
su - root
vi /etc/crontab,新增
00 23 * * * oracle /u02/scripts/autoexp/autoexp.sh >/u02/scripts/autoexp/autoexp.cron.log 2>&1
每天晚上23:00執行。
on windows
思路一樣,只是windows的command命令有點不一樣。
1,exp_plms.bat
2,delete.bat
最後,就是讓autoexp.sh每天執行一次。使用crontab。
基本格式 :
* * * * * user command
分 時 日 月 周 使用者 命令
su - root
vi /etc/crontab,新增
00 23 * * * oracle /u02/scripts/autoexp/autoexp.sh >/u02/scripts/autoexp/autoexp.cron.log 2>&1
每天晚上23:00執行。
on windows
思路一樣,只是windows的command命令有點不一樣。
1,exp_plms.bat
::設定oracle環境變數
set userid=oracle
set pwd=iamdba
set raclesid=dbstd
set bakpath=D:\orabak
::設定匯出使用者
set wner=plms
:: 設定時間格式vtoday=YYYYMMDDhh24mi
set vtoday=%DATE:~0,4%%date:~5,2%%date:~8,2%
::%time:~0,2%%time:~3,2%
::
::
:: 匯出使用者所有資料
set datatype=full
exp %userid%/%pwd%@%oraclesid% file=%bakpath%\%oraclesid%_%owner%_%datatype%_%vtoday%.dmp wner=%owner% direct=y compress=y rows=y consistent=y buffer=100000000 log=%bakpath%\%oraclesid%_%owner%_%datatype%_%vtoday%.log
::
2,delete.bat
::刪除備份前N天的資料
forfiles /p "D:\orabak" /s /m *.* /d -7 /c "cmd /c del @path"
3.autoexp.bat
::執行exp備份
3.autoexp.bat
::執行exp備份
set scriptspath=D:\scripts\autoexp
call %scriptspath%\exp_plms.bat
call %scriptspath%\delete.bat
最後,新建windows下面的執行計劃,第天執行一次。
最後,新建windows下面的執行計劃,第天執行一次。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11990065/viewspace-709027/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- windows下自動備份指令碼(exp)Windows指令碼
- linux平臺下oracle自動備份(使用exp工具)LinuxOracle
- windows下oracle資料庫的exp自動備份指令碼WindowsOracle資料庫指令碼
- 設定自動匯出(exp)備份指令碼指令碼
- windows/linux自動備份mysql並刪除7天前的備份WindowsLinuxMySql
- Linux或UNIX系統下oracle資料庫exp自動備份LinuxOracle資料庫
- rman 自動備份指令碼-windows指令碼Windows
- Linux自動備份MySQLLinuxMySql
- windows下exp邏輯備份並且定期維護備份Windows
- windowns系統下oracle資料庫exp自動備份Oracle資料庫
- windows下rman自動備份指令碼Windows指令碼
- windows部分聯機自動備份指令碼!Windows指令碼
- Windows環境PgSql自動備份指令碼WindowsSQL指令碼
- windows建exp備份指令碼時的小插曲Windows指令碼
- Linux下Mysql定時自動備份LinuxMySql
- LINUX 自動備份程式日誌(shell)Linux
- Mysql--Linux Mysql定期自動備份MySqlLinux
- 自動expftp備份FTP
- exp備份和rman備份的區別
- linux下exp自動匯出Linux
- Oracle Windows平臺自動排程備份指令碼OracleWindows指令碼
- EXP的備份指令碼指令碼
- 用Linux完成Oracle自動物理備份(轉)LinuxOracle
- linux實現mysql資料庫每天自動備份定時備份LinuxMySql資料庫
- oracle資料庫備份之exp增量備份Oracle資料庫
- 揭祕ORACLE備份之--邏輯備份(EXP)Oracle
- 自動備份指令碼指令碼
- 自動備份任務
- ORACLE備份和恢復 - 邏輯備份 exp/impOracle
- 用Linux命令完成Oracle自動物理備份(轉)LinuxOracle
- 搭建Oracle的exp備份機Oracle
- 資料庫自動備份資料庫
- Ms-SqlServer自動備份SQLServer
- MySQL自動備份指令碼MySql指令碼
- SQL Server定期自動備份SQLServer
- Linux ftp 自動上傳備份檔案指令碼LinuxFTP指令碼
- 教你用Linux完成Oracle自動物理備份(轉)LinuxOracle
- GitLab的自動備份、清理備份與恢復Gitlab