oracle自動備份腳本


#!/bin/bash


#獲取當前日期
date_now=$(date +%Y%m%d);
#數據庫用戶
db_user="aaaaa";
#數據庫密碼
db_password="aaaaaaa";
#ip地址
ip="10.10.10.10"
#oracle虛擬目錄名
oracle_directory="DATA_PUMP_DIR";
#數據庫服務器,需要在本地客戶端tnsnames中定義好
db_server="orcl";
#文件名
file_name="Aj"
#本地客戶端執行程序目錄
oracle_bin_dir="/home/oracle/xx/bin";
#本地備份目錄,存放dump文件與臨時壓縮文件
local_backup_dir="/opt/oracle/app/admin/orcl/dpdump";
#遠程備份目錄,對應備份服務器存放位置,需要提前掛載
remote_backup_dir="/xx/xx/oracle_backup";


#備份當天的數據庫
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 自動備份數據庫並壓縮開始----------------------------------------------";
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 數據庫備份開始--------------------------------------------------------";
echo "su oracle -lc \"${oracle_bin_dir}/expdp ${db_user}/${db_password}@${db_server} directory=${oracle_directory} full=y dumpfile=${db_server}_${date_now}.dmp logfile=${db_server}_${date_now}.log\"";
su - oracle -lc "${oracle_bin_dir}/expdp ${db_user}/${db_password}@${ip}/${db_server} directory=${oracle_directory} full=y dumpfile=${file_name}_${db_server}_${date_now}.dmp logfile=${file_name}_${db_server}_${date_now}.log compression=all";
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 數據庫壓縮開始--------------------------------------------------------";
echo "cd ${local_backup_dir} && tar -zcf ${db_server}_${date_now}.tar.gz ${db_server}_${date_now}.dmp ${db_server}_${date_now}.log";
cd ${local_backup_dir} && tar -zcf ${file_name}_${db_server}_${date_now}.tar.gz ${file_name}_${db_server}_${date_now}.dmp ${file_name}_${db_server}_${date_now}.log;
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 數據庫壓縮結束--------------------------------------------------------";
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 傳輸備份文件開始--------------------------------------------------------";
# echo "scp ${local_backup_dir}/${db_server}_${date_now}.tar.gz ${backup_user}@${backup_server}:/${remote_backup_dir}";
# scp ${local_backup_dir}/${file_name}_${db_server}_${date_now}.tar.gz ${backup_user}@${backup_server}:/${remote_backup_dir};
/home/oracle/auto_scp.sh >> /home/oracle/auto_scp.log
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 傳輸備份文件結束--------------------------------------------------------";
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 刪除當前備份原始文件開始----------------------------------------------";
echo "rm -rf ${local_backup_dir}/${db_server}_${date_now}.dmp ${local_backup_dir}/${db_server}_${date_now}.log"
rm -rf ${local_backup_dir}/${file_name}_${db_server}_${date_now}.dmp ${local_backup_dir}/${file_name}_${db_server}_${date_now}.log;
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 刪除當前備份原始文件結束 ----------------------------------------------";
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 刪除一個月前備份壓縮文件開始----------------------------------------------";
# echo "rm -rf ${local_backup_dir}/${db_server}_${date_now}.tar.gz"
# rm -rf ${local_backup_dir}/${db_server}_${date_now}.tar.gz;
find ${local_backup_dir} -mtime +30 -type f -name "*.*" -exec rm -rvf {} \;
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 刪除一個月前備份壓縮文件結束----------------------------------------------";
echo "-- $(date +'%Y-%m-%d %H:%M:%S') 自動備份數據庫並壓縮結束----------------------------------------------";

 

 

chmod +x /shell/backup_oracle.sh
crontab -e
0 1 * * * nohup /usr/bin/sh /shell/backup_oracle.sh >> /shell/backup_oracle.log &

 

 

vim auto_scp.sh

#! /usr/bin/expect
set timeout 5
set date_now $(date +%Y%m%d);
# set ip 10.180.39.8[lindex $argv 0]
set password "app@2022"
spawn scp /opt/oracle/app/admin/orcl/dpdump/Aj_orcl_$date_now.tar.gz app@10.180.39.85:/sdb5/dmpbackup83/
#expect "yes/no"
#send "yes\n"
expect "password:"
send "$password\n"
interact


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM