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

posted @ 2023-07-10 10:36  adam199  阅读(341)  评论(0编辑  收藏  举报