一句话总结:
先把 NFS 这条"备份通道"从网络、端口、挂载一路打通,再让 RMAN 把备份流量全部导到这条通道上,最后用 cron 把这件事每天自动干。
1 规划环境和目录
-
确定 NFS 备份服务器、各 Oracle ODA 的 IP 和角色。
-
设计好 NFS 端目录结构(按主机/IP 分目录)和本地挂载点路径。
2 准备软件环境
-
在 NFS 服务器上配置内网 YUM 源。
-
安装
nfs-utils、rpcbind等 NFS 相关组件。 -
在各 Oracle 服务器上安装 NFS 客户端工具。
3 配置 NFS 服务端
-
在 NFS 服务器上创建备份目录(按每台 DB 主机独立目录)。
-
在
/etc/exports中导出这些目录,限制只允许对应主机访问。 -
配置
/etc/sysconfig/nfs固定 NFS 相关端口,方便网络侧精确放行。 -
重启 NFS 服务并用
exportfs/rpcinfo检查。
4 网络与防火墙开通
-
在 NFS 服务器本机
firewalld上放行 NFS 相关服务/端口。 -
向网络工程师提交端口开通需求:源为各 ODA,目的为 NFS 服务器,协议 TCP/UDP,端口 111/2049/20048/20050。
5 配置 Oracle 端 NFS 挂载
-
在每台 ODA 上创建本地挂载点目录。
-
通过
mount -t nfs挂载 NFS 备份目录到本地路径。 -
验证挂载是否成功(
mount、df -h)。 -
写入
/etc/fstab,确保重启后自动挂载。
6 链路验证(写入测试)
-
用
oracle用户在挂载目录里创建测试文件。 -
回到 NFS 服务器上查看相应目录,确认文件确实写到远端磁盘。
7 编写 RMAN 备份脚本
-
在 Oracle 服务器上编写
rman.sh,配置ORACLE_SID、日志目录。 -
backup database和backup archivelog的FORMAT路径指向 NFS 挂载目录。 -
手工执行一次脚本,确认备份能正常跑、文件落到 NFS 服务器。
8 配置定时任务(自动化备份)
-
使用
oracle用户配置crontab,定时调用rman.sh。 -
保留日志输出,便于日后排查(如写到
rman.cron.log)。
9 详细参考步骤如下
1、配置yum源
2、部署nfs服务端
3、固定端口
4、部署nfs客户端
5、开放端口
6、挂载
7、编写rman脚本
8、设置定时执行任务
# Oracle 异地备份(NFS 方式)完整实现笔记(192.168.100.10 ←→ 192.168.10.11 / 192.168.20.11)
#
# 注意:
# 1)这是【步骤笔记】,请按步骤、按块执行,不要整段当脚本一次性跑。
# 2)所有操作只在文件系统 / 网络层面,不会重启或修改 Oracle 实例本身。
# 0. 环境说明(先搞清楚谁是谁)
# NFS 备份服务器(服务端):
# - IP:192.168.100.10
# - OS:CentOS Linux release 7.8.2003 (Core)
# - 大容量磁盘挂载在 /home(约 8TB,用于集中存放所有库的备份)
# Oracle 数据库服务器(NFS 客户端,当前两台,后续可扩展):
# - ODA1:192.168.10.11 (erpcdb1 等 CDB/PDB,主库)
# - ODA2:192.168.20.11 (另一台 ODA,类似用法)
# 目标:
# - 在 192.168.100.10 上为每台 DB 服务器准备一个专属备份目录:
# /home/ODACDBbackup/192.168.10.11_CDB
# /home/ODACDBbackup/192.168.20.11_CDB
# - 每台 DB 服务器本地挂载成:
# /ODACDBbackup_nfs/192.168.10.11_CDB
# /ODACDBbackup_nfs/192.168.20.11_CDB
# - RMAN 备份写入这些挂载目录,实现异地备份。
# 1. 在 192.168.100.10 上配置内网 YUM 源(只做一次)
# 目的:使用公司内网 YUM 源(192.168.200.10)安装/更新 rpm 包。
# 只在 192.168.100.10 上执行一次,其他机器如果已有 yum 源可跳过。
ssh root@192.168.100.10
# 1.1 下载并查看内网 YUM 源配置脚本
cd /root
curl -o setup-client.sh http://192.168.200.10/setup-client.sh
# (可选)看一下脚本前几行,确认逻辑(备份旧 repo,写新 repo)
head -40 setup-client.sh
# 1.2 执行脚本,切换到内网 YUM 源
chmod +x setup-client.sh
./setup-client.sh
# 1.3 验证 YUM 源是否正常
yum repolist
yum list nfs-utils # 确认能查询到 nfs-utils 包
# 2. 在 192.168.100.10 部署 NFS 服务端
# 目的:在备份服务器上提供用于 RMAN 备份的共享目录。
ssh root@192.168.100.10
# 2.1 安装 NFS 相关软件(如果已安装会提示已是最新版本)
yum install -y nfs-utils rpcbind
# 2.2 创建用于存放各 DB 服务器备份的目录(按 IP 分)
mkdir -p /home/ODACDBbackup/192.168.10.11_CDB
mkdir -p /home/ODACDBbackup/192.168.20.11_CDB
# 2.3 初始权限(为避免权限问题,先宽松;之后可再收紧)
chmod -R 777 /home/ODACDBbackup
# 检查目录
ls -ld /home/ODACDBbackup
ls -ld /home/ODACDBbackup/*
# 2.4 配置导出规则:限制仅对应 IP 访问
vi /etc/exports
# 文件中增加如下两行(注意用 Tab 或空格分隔):
/home/ODACDBbackup/192.168.10.11_CDB 192.168.10.11/32(rw,sync,no_root_squash,no_subtree_check)
/home/ODACDBbackup/192.168.20.11_CDB 192.168.20.11/32(rw,sync,no_root_squash,no_subtree_check)
# 参数说明(记一遍):
# rw 读写
# sync 同步写盘,安全性更好
# no_root_squash 客户端 root 在服务端仍然是 root(便于备份脚本与测试)
# no_subtree_check 简化子目录检查,常用配置
# 2.5 让 exports 配置生效,并检查
exportfs -rav # 重新导出
exportfs -v # 查看当前导出列表,确认两条记录存在
# 3. 在 192.168.100.10 固定 NFS 相关端口(便于防火墙精确放行)
# 目的:避免 mountd / lockd 使用随机高端口,统一使用可预期的端口号。
ssh root@192.168.100.10
# 3.1 编辑 /etc/sysconfig/nfs
vi /etc/sysconfig/nfs
# 在文件末尾追加如下配置(若已有类似配置则修改为这些端口):
# 固定 NFSv3 / 锁相关端口,便于防火墙精确放通
MOUNTD_PORT=20048
LOCKD_TCPPORT=20050
LOCKD_UDPPORT=20050
# 如后续启用 statd,可再按需配置 STATD_PORT=20049 等
# 3.2 重启相关服务,使端口配置生效
systemctl restart nfs-config
# rpc-statd 如报错,可暂时忽略(当前场景不强依赖)
systemctl restart nfs-server
# 3.3 确认端口绑定情况
rpcinfo -p localhost | egrep 'nfs|mountd|nlockmgr'
# 期望看到(端口号与服务对应):
# mountd → 20048/tcp、20048/udp
# nfs → 2049/tcp、2049/udp
# nlockmgr → 20050/tcp、20050/udp
# 4. 在各 Oracle 服务器上部署 NFS 客户端(192.168.10.11 / 192.168.20.11)
# 目的:让每台 Oracle 服务器可以挂载 NFS 共享目录。
# 注意:以下在每一台 DB 服务器上都要做一次(IP 替换为本机)。
# 4.1 ODA1(192.168.10.11)
ssh root@192.168.10.11
# 4.1.1 确认已安装 nfs-utils(若不存在再 yum 安装)
rpm -qa | grep nfs-utils
# 如无输出可执行:
# yum install -y nfs-utils
# 4.1.2 创建本地挂载点目录(空目录即可)
mkdir -p /ODACDBbackup_nfs/192.168.10.11_CDB
ls -ld /ODACDBbackup_nfs/192.168.10.11_CDB
# 4.2 ODA2(192.168.20.11)
ssh root@192.168.20.11
# 同样确认 nfs-utils
rpm -qa | grep nfs-utils
# 如无则安装:
# yum install -y nfs-utils
# 创建本地挂载点
mkdir -p /ODACDBbackup_nfs/192.168.20.11_CDB
ls -ld /ODACDBbackup_nfs/192.168.20.11_CDB
# 5. 开放端口(Linux 防火墙 + 网络防火墙)
# 分两块:
# A. NFS 服务器本机 firewalld(192.168.100.10)
# B. 核心网络防火墙 / 安全设备(由网络工程师按你提供的表单配置)
# 5.A 在 192.168.100.10 上放通 firewalld 服务
ssh root@192.168.100.10
# 查看 firewalld 状态
firewall-cmd --state
# running 表示开启中
# 放行 nfs / mountd / rpc-bind 服务(包含 TCP/UDP 各自端口)
firewall-cmd --permanent --add-service=nfs
firewall-cmd --permanent --add-service=mountd
firewall-cmd --permanent --add-service=rpc-bind
# 重载配置
firewall-cmd --reload
# 验证已放行的服务
firewall-cmd --list-services
# 期望包含:dhcpv6-client mountd nfs rpc-bind ssh
# 5.B 提供给网络工程师的开孔信息(写在表格/邮件里)
# 源地址(ODA 服务器):
# 192.168.10.11
# 192.168.20.11
#
# 目的地址(NFS 备份服务器):
# 192.168.100.10
#
# 协议:
# TCP、UDP
#
# 放通端口:
# 111, 2049, 20048, 20050
#
# 作用说明(开通原因):
# NFSv3/NFSv4 备份目录挂载(Oracle RMAN 异地备份使用)。
# 以上端口已在 NFS 服务器 /etc/sysconfig/nfs 中固定,仅用于 ODA 数据库异地备份访问。
# 6. 在各 Oracle 服务器上挂载 NFS 备份目录
# 目的:将 192.168.100.10 上的备份目录挂载为本地路径,为 RMAN 提供目标路径。
# 注意:挂载操作只影响文件系统挂载,不会影响 Oracle 实例本身。
# 6.1 ODA1(192.168.10.11)挂载
ssh root@192.168.10.11
# 6.1.1 验证到 NFS 服务器的 RPC/NFS 是否可达
rpcinfo -t 192.168.100.10 nfs # 期望输出 "ready and waiting"
rpcinfo -p 192.168.100.10 # 能看到 portmapper/mountd/nfs/nlockmgr 等
# 6.1.2 执行挂载(使用默认 NFS v4,也可强制 vers=3)
mount -t nfs 192.168.100.10:/home/ODACDBbackup/192.168.10.11_CDB /ODACDBbackup_nfs/192.168.10.11_CDB
# 如果想强制 NFSv3,可用下面这一种(根据实际情况二选一):
# mount -t nfs -o vers=3,tcp 192.168.100.10:/home/ODACDBbackup/192.168.10.11_CDB # /ODACDBbackup_nfs/192.168.10.11_CDB
# 6.1.3 检查挂载结果(只读操作)
mount | grep ODACDBbackup_nfs
df -h /ODACDBbackup_nfs/192.168.10.11_CDB
# 6.2 ODA2(192.168.20.11)挂载
ssh root@192.168.20.11
# 同样验证 RPC/NFS 是否可达
rpcinfo -t 192.168.100.10 nfs
rpcinfo -p 192.168.100.10
# 挂载
mount -t nfs 192.168.100.10:/home/ODACDBbackup/192.168.20.11_CDB /ODACDBbackup_nfs/192.168.20.11_CDB
# 检查挂载状态
mount | grep ODACDBbackup_nfs
df -h /ODACDBbackup_nfs/192.168.20.11_CDB
# 7. 挂载验证:用 oracle 用户实际写入测试 + 在 192.168.100.10 上确认
# 目的:确保 oracle 用户可以写入,并且数据确实落在 192.168.100.10 的磁盘上。
# 这一步只创建普通测试文件,不会对数据库造成任何影响。
# 7.1 在 ODA1(192.168.10.11)上用 oracle 用户写入测试文件
ssh root@192.168.10.11
su - oracle
cd /ODACDBbackup_nfs/192.168.10.11_CDB
pwd # 确认当前目录是挂载目录
# 创建测试文件(普通文本)
touch test_from_192.168.10.11.txt
echo "test from 192.168.10.11 at $(date)" > test_from_192.168.10.11.txt
# 查看文件
ls -l
# 7.2 在 ODA2(192.168.20.11)上用 oracle 用户写入测试文件
ssh root@192.168.20.11
su - oracle
cd /ODACDBbackup_nfs/192.168.20.11_CDB
pwd # 确认路径正确
touch test_from_192.168.20.11.txt
echo "test from 192.168.20.11 at $(date)" > test_from_192.168.20.11.txt
ls -l
# 7.3 在 NFS 服务器(192.168.100.10)上确认测试文件已经落盘
ssh root@192.168.100.10
# 查看两个目录下内容
ls -l /home/ODACDBbackup/192.168.10.11_CDB
ls -l /home/ODACDBbackup/192.168.20.11_CDB
# 期望能看到:
# test_from_192.168.10.11.txt
# test_from_192.168.20.11.txt
# 至此,可以确认:
# - NFS 服务端配置 OK
# - 端口已放通,客户端可访问
# - 两台 ODA 已成功挂载异地备份目录
# - oracle 用户可以写入,数据真实落在 192.168.100.10 的磁盘上
#
# 后续只需要在 RMAN 脚本中,将备份 FORMAT 路径指向:
# - /ODACDBbackup_nfs/192.168.10.11_CDB
# - /ODACDBbackup_nfs/192.168.20.11_CDB
# 即可实现 Oracle RMAN 异地备份。
