Oracle 归档日志远程拷贝的几种实用方法17认证网

正规官方授权
更专业・更权威

Oracle 归档日志远程拷贝的几种实用方法

前言

在进行 Oracle 数据库备份恢复、迁移或搭建 DataGuard 等运维操作时,经常需要传输归档日志以确保数据一致性。然而,归档目录通常包含大量文件,而我们往往只需
要传输其中的一部分,如何高效地批量传输指定的归档文件,是每个 DBA 都会遇到的实际问题。

以本文的实际场景为例,归档目录下共有 1082 个文件,但只需要传输其中的 136 个:

[oracle@lucifer:/oradata/archivelog]$ ll | wc -l
1082
[oracle@lucifer:/oradata/archivelog]$ find . -name "1_42291[7-9]_943615335.dbf" -o -name "1_4229[2-9]*_943615335.dbf" -o -name "1_42[3-9]*_943615335.dbf" | wc -l
136

本文总结了几种快速、高效的归档日志传输方法,帮助 DBA 在实际工作中选择最适合的方案。

场景 推荐方案 理由
生产环境迁移 RMAN backup archivelog 专业、稳定、支持压缩
一次性大批量传输 tar 打包 简单快捷,压缩效果好
频繁的增量传输 rsync 支持增量传输和断点续传
复杂文件名匹配 SSH免密 + find 灵活的正则表达式支持

RMAN 备份归档

对于 Oracle 归档文件,最专业的方式是使用 RMAN 的 backup archivelog 命令:

RMAN> backup archivelog from sequence 422917 until sequence 423053 thread 1 format '/backup/arch_%d_%T_%t_%s_%p';

然后使用 scp 传输备份文件:

scp /backup/arch_* 192.168.31.166:/backup

tar 打包传输

使用 tar 命令将指定的归档文件打包后传输:

[oracle@lucifer:/oradata/archivelog]$ tar czf archivelog.tar.gz 1_42291[7-9]_943615335.dbf 1_4229[2-9]*_943615335.dbf 1_42[3-9]*_943615335.dbf
[oracle@lucifer:/oradata/archivelog]$ du -sh archivelog.tar.gz
2.6G archivelog.tar.gz

传输打包文件:

scp /backup/archivelog.tar.gz 192.168.31.166:/backup

目标端解压:

cd /backup
tar -xf archivelog.tar.gz

SSH 免密 + find 批量传输

配置 SSH 免密登录

首先配置 SSH 密钥认证,避免每个文件都要输入密码:

# 传输公钥文件
scp -P 11122 ~/.ssh/id_rsa.pub oracle@192.168.31.166:~/
# 在目标服务器上执行
mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
rm ~/id_rsa.pub

find 传输

使用 find 批量传输:

[oracle@lucifer:/oradata/archivelog]$ find . -name "1_42291[7-9]_943615335.dbf" -o -name "1_4229[2-9]*_943615335.dbf" -o -name "1_42[3-9]*_943615335.dbf" | xargs -I {} scp -P 11122 {} 192.168.31.166:/backup

传输完成后,记得取消 SSH 免密互信。

rsync 同步传输

确保源端和目标端都安装了 rsync,否则会报错:

bash: rsync: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(600) [sender=3.0.6]

使用 rsync 进行高效的文件同步传输:

[oracle@lucifer:/oradata/archivelog]$ rsync -avz -e "ssh -p 11122" 1_42291[7-9]_943615335.dbf 1_4229[2-9]*_943615335.dbf 1_42[3-9]*_943615335.dbf oracle@10.182.32.83:/oradata/archivelog/

增量方式,目标端已存在的归档直接跳过,所以可以重复执行。

写在最后

通过合理选择传输方案,可以显著提升 Oracle 数据库运维工作的效率,减少人工操作失误的风险。

想了解更多干货,可通过下方扫码关注

可扫码添加上智启元官方客服微信👇

未经允许不得转载:17认证网 » Oracle 归档日志远程拷贝的几种实用方法
分享到:0

评论已关闭。

400-663-6632
咨询老师
咨询老师
咨询老师