最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle數(shù)據(jù)庫定時備份腳本方式(Linux)

 更新時間:2025年07月31日 14:10:51   作者:嗯真的是豬  
文章介紹Oracle數(shù)據(jù)庫自動備份方案,包含主機備份傳輸與備機解壓導入流程,強調(diào)需提前全量刪除原庫數(shù)據(jù)避免報錯,并需配置無密傳輸、定時任務及驗證腳本有效性

說明

腳本共分兩部分,一是主機腳本,二是備機腳本。主機上做備份,傳到備機上,備份文件做壓縮,備機上解壓縮備份文件并自動導庫。

如果有導庫需求,導庫時由于原庫中前一天導入的數(shù)據(jù)存在,如果不全量刪除就進行全量導入此時會有報錯所以建議備機腳本中導庫前先全量刪除一次(會有不同情況,要參考實際情況來操作)。如果沒有導庫需求則可以忽略,將腳本中導庫部分刪除或注釋掉都可以。

Oracle數(shù)據(jù)庫導入dmp文件時,要注意先在備庫中創(chuàng)建原庫相同的用戶(權(quán)限相同、名字相同)、表空間

Linux下直接執(zhí)行導庫命令即可,Windows下要進入DOS窗口(cmd)中執(zhí)行命令

主機腳本

#這里采用 數(shù)據(jù)庫名稱_bak.sh 來命名,為了區(qū)分備份的具體數(shù)據(jù)庫
if [ -f ~/.bash_profile ];
then
  . ~/.bash_profile
fi
echo "begin export boss dmp file..."
#設置環(huán)境變量
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=FSDB #SID
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
date=$(date +%Y%m%d)  #當前時間
days=10  #設置刪除10天前的數(shù)據(jù)
orsid='7.0.8.148:1521/FSDB' #要備份的Oracle數(shù)據(jù)庫IP、端口、SID
orowner=boss  #要備份的數(shù)據(jù)庫的用戶名
bakuser=boss  #使用此用戶來導出dmp
bakpass=bs    #用戶密碼
bakdir=/home/oraclebak #備份文件路徑
bakdata=$orowner"_"$date.dmp  #備份的dmp名稱
baklog=$orowner"_"$date.log   #備份時產(chǎn)生的log名稱
ordatabak=$orowner"_"$date.tar.gz #將備份的dmp和log壓縮后的文件名稱
cd $bakdir
mkdir -p $orowner
cd $orowner
#導出dmp和log文件
exp $bakuser/$bakpass@$orsid grants=y owner=$orowner file=$bakdir/$orowner/$bakdata log=$bakdir/$orowner/$baklog  
tar -zcvf $ordatabak $bakdata $baklog  #壓縮dmp和log文件
scp /home/oraclebak/boss/$orowner"_"$date.tar.gz 7.0.8.149:/home/oraclebak #將備份文件傳到備份服務器上
find $bakdir/$orowner -type f -name "*.log" -exec rm {} \;  #刪除log文件
find $bakdir/$orowner -type f -name "*.dmp" -exec rm {} \;  #刪除dmp文件
find $bakdir/$orowner -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \; #刪除10天前備份文件

注意:

#在操作系統(tǒng)中執(zhí)行 echo $ORACLE_HOME,即可查看ORACLE_HOME路徑
#在操作系統(tǒng)中執(zhí)行 echo $ORACLE_BASE,即可查看ORACLE_BASE路徑
#這個目前存在問題,如果如以上刪除一天前的備份文件,實際上會保留兩天的備份文件,而有時候數(shù)據(jù)庫服務器#空間有限,所以要添加一個定時刪除備份文件的腳本,才能做到只保留一個備份文件。

備機上自動導庫腳本

#這里采用 數(shù)據(jù)庫名稱_bak.sh 來命名,為了區(qū)分備份的具體數(shù)據(jù)庫
if [ -f ~/.bash_profile ];
then
  . ~/.bash_profile
fi
echo "begin import boss dmp file..."
#設置環(huán)境變量
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=FSDB #SID
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
date=$(date +%Y%m%d)  #當前時間
bakdir=/home/oraclebak #備份文件路徑
days=10  #設置刪除10天前的數(shù)據(jù)
cd $bakdir
tar -zxvf boss"_"$date.tar.gz  
imp boss/bs file=$bakdir/boss_$date.dmp log=$bakdir/bossimp_$date.log grants=no ignore=y full=y
echo "imp success!"
find $bakdir -type f -name "*.log" -mtime +$days -exec rm {} \;  #刪除10天前l(fā)og文件
find $bakdir -type f -name "*.dmp" -mtime +$days -exec rm {} \;  #刪除10天前dmp文件
find $bakdir -type f -name "*.tar.gz" -mtime +$days -exec rm -rf {} \; #刪除10天前備份文件

注:主機和備機最好配置無密傳輸,腳本寫好后加入定時任務。最好驗證一下兩臺機器之間傳輸是否正常。腳本內(nèi)容按照實際情況做修改。

整個自動備份oracle數(shù)據(jù)庫的過程(建議全程用root用戶)

1、創(chuàng)建一個目錄用于存放腳本。

2、給腳本授權(quán),至少要有執(zhí)行權(quán)限。

3、添加定時任務

[root@localhost /]# crontab -e
#插入下面語句(每天凌晨一點備份一次)
00 1 * * * /腳本絕對路徑/腳本名稱

[root@localhost ~]# crontab -l

4、配置主備機之間的無密傳輸

(1)使用Xsell以root用戶連接連接數(shù)據(jù)庫服務器(主機)執(zhí)行命令: ssh-keygen -t rsa,一路回車,進入 /root/.ssh ,可以看到 id_rsa 和 id_rsa_pub 兩個文件,做如下操作:

[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #一直回車
[root@localhost .ssh]# cd /root/.ssh
[root@localhost .ssh]# ll
total 8
-rw------- 1 root root 1675 May 21 11:31 id_rsa
-rw-r--r-- 1 root root  408 May 21 11:31 id_rsa.pub
[root@localhost .ssh]# cp id_rsa.pub id_rsa.pub.dbbak  #備份出一份來使用

(2)在遠程服務器(備機)上執(zhí)行命令

[root@localhost ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #一直回車

(3)在數(shù)據(jù)庫服務器(主機)上執(zhí)行命令

[root@localhost .ssh]# scp ./id_rsa.pub.dbbak 服務器B_IP:/root/.ssh
The authenticity of host '16.22.33.158(16.22.33.158)' can't be established.
RSA key fingerprint is 62:a9:ar:77:04:b5:42:qd:13:6d:a8:44:b5:8b:23:5a.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '16.22.33.158' (RSA) to the list of known hosts.
root@16.22.33.158's password: 
id_rsa.pub.dbbak                              100%  408     0.4KB/s   00:00 

(4)在遠程服務器(備機)上執(zhí)行命令

[root@localhost ~]# cd /root/.ssh/
[root@localhost .ssh]# cat id_rsa.pub.dbbak    >>  authorized_keys

(5)在數(shù)據(jù)庫服務器(主機)上執(zhí)行id_rsa.pub.dbbak腳本,測試無密傳輸是否成功

[root@localhost .ssh]# scp ./id_rsa.pub.dbbak 服務器B_IP:/root/.ssh
id_rsa.pub.dbbak                              100%  408     0.4KB/s   00:00 

謹慎起見,最好仔細測試腳本是否每天自動跑并且有效(觀察2-3天)。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論

汉沽区| 夏津县| 明星| 辽中县| 濉溪县| 沂源县| 婺源县| 江源县| 陵水| 丹阳市| 和平区| 仁布县| 潜山县| 云林县| 兴宁市| 监利县| 垫江县| 克什克腾旗| 阳江市| 昌图县| 城步| 永宁县| 子长县| 易门县| 茂名市| 朝阳市| 桂平市| 彩票| 平和县| 普安县| 和顺县| 新蔡县| 瑞丽市| 育儿| 新建县| 清镇市| 太湖县| 新宁县| 井陉县| 磐石市| 宁津县|