Oracle數據庫定時異地備份

1)設置deferred_segment_creation參數

下面設置不管是不是空表都分配segment空間。

su - oracle
sqlplus / as sysdba
SQL>show parameter deferred_segment_creation

image.png

注意:該參數值默認是TRUE,當改爲FALSE時,無論是空表還是非空表,都分配segment

SQL>alter system set deferred_segment_creation=false;

image.png

注意:該值設置後對以前導入的空表不產生作用,仍不能導出,只能對後面新增的表產生作用。

 

重啓數據庫服務

 

 

2)配置ssh信任

配置ssh信任,備份腳本中的scp命令可以免密碼傳輸文件到從服務器(192.168.1.21)上

在主服務器上執行:

ssh-keygen -t rsa        //一直回車即可
cd /root/.ssh/
scp id_rsa.pub [email protected]:/root/.ssh/

在從服務器上執行:

cd /root/.ssh/
mv id_rsa.pub authorized_keys

這樣在主服務器上可以scp免密碼拷貝文件到從服務器上

 

3)自動備份腳本

先在從服務器上創建備份文件存儲目錄

mkdir -p /home/backup/oracledata/
chmod 777 /home/backup/oracledata/

在主服務器上編寫腳本

vim /home/backup/oracledata/oraclebk.sh

# /usr/bin
#路徑名,指定備份的路徑
FILEPATH=/home/backup/oracledata
 
#根據指定日期格式,定義備份數據庫文件名
FILENAME=`date +"%Y%m%d_%H%M"`
 
#切換至指定路徑,並創建文件夾
cd $FILEPATH
mkdir $FILENAME
chmod 775 $FILENAME
 
#oracle變量設置
export USER=oracle;
export ORACLE_SID=ecology;
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1;
export PATH=$ORACLE_HOME/bin:$PATH;
 
#導出數據庫
exp ecology/ecology file="$FILENAME/$FILENAME".dmp log="$FILENAME/$FILENAME".log owner=ecology
 
#打包
tar -zcvf $FILENAME.tar.gz $FILENAME
rm -rf $FILENAME
scp $FILENAME.tar.gz [email protected]:$FILEPATH/
find ./ -mtime +15 -name \*.gz |xargs rm -f
exit
EOF


4)添加計劃任務


crontab -e
00 03 * * * sh /home/backup/oracledata/oraclebk.sh


5)重啓crond服務

systemctl restart crond.service



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章