欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

說明

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

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

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

Linux下直接執(zhí)行導(dǎo)庫命令即可,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..."
#設(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)  #當前時間
days=10  #設(shè)置刪除10天前的數(shù)據(jù)
orsid='7.0.8.148:1521/FSDB' #要備份的Oracle數(shù)據(jù)庫IP、端口、SID
orowner=boss  #要備份的數(shù)據(jù)庫的用戶名
bakuser=boss  #使用此用戶來導(dǎo)出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
#導(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路徑
#這個目前存在問題,如果如以上刪除一天前的備份文件,實際上會保留兩天的備份文件,而有時候數(shù)據(jù)庫服務(wù)器#空間有限,所以要添加一個定時刪除備份文件的腳本,才能做到只保留一個備份文件。

備機上自動導(dǎo)庫腳本

#這里采用 數(shù)據(jù)庫名稱_bak.sh 來命名,為了區(qū)分備份的具體數(shù)據(jù)庫
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)  #當前時間
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天前備份文件

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

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

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

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

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

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

[root@localhost ~]# crontab -l

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

(1)使用Xsell以root用戶連接連接數(shù)據(jù)庫服務(wù)器(主機)執(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)在遠程服務(wù)器(備機)上執(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ù)庫服務(wù)器(主機)上執(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)在遠程服務(wù)器(備機)上執(zhí)行命令

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

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

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

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

總結(jié)

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

相關(guān)文章

最新評論