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

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

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

說(shuō)明

腳本共分兩部分,一是主機(jī)腳本,二是備機(jī)腳本。主機(jī)上做備份,傳到備機(jī)上,備份文件做壓縮,備機(jī)上解壓縮備份文件并自動(dòng)導(dǎo)庫(kù)。

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

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

Linux下直接執(zhí)行導(dǎo)庫(kù)命令即可,Windows下要進(jìn)入DOS窗口(cmd)中執(zhí)行命令

主機(jī)腳本

#這里采用 數(shù)據(jù)庫(kù)名稱_bak.sh 來(lái)命名,為了區(qū)分備份的具體數(shù)據(jù)庫(kù)
if [ -f ~/.bash_profile ];
then
  . ~/.bash_profile
fi
echo "begin export boss dmp file..."
#設(shè)置環(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)  #當(dāng)前時(shí)間
days=10  #設(shè)置刪除10天前的數(shù)據(jù)
orsid='7.0.8.148:1521/FSDB' #要備份的Oracle數(shù)據(jù)庫(kù)IP、端口、SID
orowner=boss  #要備份的數(shù)據(jù)庫(kù)的用戶名
bakuser=boss  #使用此用戶來(lái)導(dǎo)出dmp
bakpass=bs    #用戶密碼
bakdir=/home/oraclebak #備份文件路徑
bakdata=$orowner"_"$date.dmp  #備份的dmp名稱
baklog=$orowner"_"$date.log   #備份時(shí)產(chǎn)生的log名稱
ordatabak=$orowner"_"$date.tar.gz #將備份的dmp和log壓縮后的文件名稱
cd $bakdir
mkdir -p $orowner
cd $orowner
#導(dǎo)出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 #將備份文件傳到備份服務(wù)器上
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路徑
#這個(gè)目前存在問(wèn)題,如果如以上刪除一天前的備份文件,實(shí)際上會(huì)保留兩天的備份文件,而有時(shí)候數(shù)據(jù)庫(kù)服務(wù)器#空間有限,所以要添加一個(gè)定時(shí)刪除備份文件的腳本,才能做到只保留一個(gè)備份文件。

備機(jī)上自動(dòng)導(dǎo)庫(kù)腳本

#這里采用 數(shù)據(jù)庫(kù)名稱_bak.sh 來(lái)命名,為了區(qū)分備份的具體數(shù)據(jù)庫(kù)
if [ -f ~/.bash_profile ];
then
  . ~/.bash_profile
fi
echo "begin import boss dmp file..."
#設(shè)置環(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)  #當(dāng)前時(shí)間
bakdir=/home/oraclebak #備份文件路徑
days=10  #設(shè)置刪除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天前備份文件

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

整個(gè)自動(dòng)備份oracle數(shù)據(jù)庫(kù)的過(guò)程(建議全程用root用戶)

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

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

3、添加定時(shí)任務(wù)

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

[root@localhost ~]# crontab -l

4、配置主備機(jī)之間的無(wú)密傳輸

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

[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  #備份出一份來(lái)使用

(2)在遠(yuǎn)程服務(wù)器(備機(jī))上執(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ù)庫(kù)服務(wù)器(主機(jī))上執(zhí)行命令

[root@localhost .ssh]# scp ./id_rsa.pub.dbbak 服務(wù)器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)在遠(yuǎn)程服務(wù)器(備機(jī))上執(zhí)行命令

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

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

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

謹(jǐn)慎起見,最好仔細(xì)測(cè)試腳本是否每天自動(dòng)跑并且有效(觀察2-3天)。

總結(jié)

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

相關(guān)文章

最新評(píng)論

满洲里市| 曲阜市| 玉林市| 明水县| 太白县| 正定县| 子洲县| 东阿县| 肇庆市| 达日县| 醴陵市| 正宁县| 甘泉县| 鸡东县| 巢湖市| 四川省| 天柱县| 保山市| 荣昌县| 安平县| 宁波市| 抚远县| 陈巴尔虎旗| 鄂伦春自治旗| 汉源县| 元阳县| 甘肃省| 台中市| 日土县| 绿春县| 德清县| 景宁| 靖州| 长泰县| 敦化市| 洪洞县| 吴堡县| 嵊州市| 东源县| 黔南| 天台县|