oracle 数据库备份shell脚本
#!/bin/bash
# 设置 Oracle 环境变量
export ORACLE_HOME=/path/to/oracle/home
export ORACLE_SID=your_oracle_sid
export PATH=$ORACLE_HOME/bin:$PATH
# 定义备份目录
backup_dir="/path/to/backup/directory"
# 定义日志文件路径
log_file="/path/to/log/file.log"
# 定义远程服务器信息
remote_server="user@remote_server"
remote_dir="/path/to/remote/directory"
# 定义 RMAN 备份脚本
rman_script="
run {
allocate channel ch1 device type disk;
backup database plus archivelog;
release channel ch1;
}
"
# 函数用于输出日志到文件和标准输出
log() {
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
local message="$1"
echo "[$timestamp] $message"
echo "[$timestamp] $message" >> "$log_file"
}
# 执行 RMAN 备份并记录日志
log "开始执行 RMAN 备份..."
rman target / nocatalog cmdfile=<(echo "$rman_script") >> "$log_file" 2>&1
# 检查备份是否成功
if [ $? -eq 0 ]; then
log "RMAN 备份已成功完成!"
# 移动备份文件到指定目录并记录日志
log "移动备份文件到目录:$backup_dir"
mv $ORACLE_HOME/dbs/*.bkp $backup_dir >> "$log_file" 2>&1
# 复制备份文件到远程服务器并记录日志
log "复制备份文件到远程服务器:$remote_server"
scp $backup_dir/*.bkp $remote_server:$remote_dir >> "$log_file" 2>&1
if [ $? -eq 0 ]; then
log "备份文件已成功复制到远程服务器!"
else
log "复制备份文件到远程服务器时发生错误!"
fi
else
log "RMAN 备份过程中发生错误!"
fi