当前位置: 代码网 > it编程>数据库>Oracle > Oracle通过RMAN备份至MinIO且防止数据删除的详细步骤

Oracle通过RMAN备份至MinIO且防止数据删除的详细步骤

2026年03月09日 Oracle 我要评论
前言你想要实现的核心需求是:把oracle数据库通过rman备份到minio,并且要防止备份文件被误删除,你希望测试方案足够简单,小白也能上手,且重点在minio侧的配置(rman无需复杂配置)。下面

前言

你想要实现的核心需求是:把oracle数据库通过rman备份到minio,并且要防止备份文件被误删除,你希望测试方案足够简单,小白也能上手,且重点在minio侧的配置(rman无需复杂配置)。

下面我为你整理了一份零基础友好的测试方案,从环境准备到最终验证,每一步都有具体命令和操作说明,全程聚焦minio的防误删配置,rman仅做基础备份操作。

一、测试前提(小白友好版)

1. 基础环境(提前确认)

组件要求
oracle安装并启动,有测试库(如orcl),rman工具可用(默认安装oracle就有)
minio单节点/集群均可,已安装mc客户端(参考之前的mc安装步骤)
网络oracle服务器能访问minio的9000端口(telnet minio-ip 9000测试)
权限oracle服务器有执行rman、mc的权限;minio有创建桶、配置版本/锁定的权限

2. 核心思路

  • rman:将oracle备份集直接推送到minio(minio兼容s3协议,rman可直接对接);
  • minio:通过版本控制(防误删/覆盖)+ 对象锁定(防恶意删除)实现防误删;
  • 测试重点:验证备份成功、删除/覆盖备份文件后能恢复、锁定后无法删除。

二、详细测试步骤(小白可照做)

步骤1:minio侧配置(核心防误删)

1.1 配置minio别名(oracle服务器上操作)

# 替换为你的minio地址、accesskey、secretkey
mc alias set minio-test http://minio-ip:9000 minioadmin minioadmin

# 验证配置:列出minio已有桶(无输出也正常)
mc ls minio-test

1.2 创建备份桶并启用防误删配置

# 1. 创建专用备份桶(命名:oracle-backup)
mc mb minio-test/oracle-backup

# 2. 启用版本控制(核心:删除/覆盖后保留旧版本)
mc version enable minio-test/oracle-backup

# 3. 启用对象锁定(可选,强化防删:需桶创建时开启,若已创建需重建)
# 重新创建带锁定的桶(先删旧桶,测试环境可删)
mc rb minio-test/oracle-backup --force
mc mb --with-lock minio-test/oracle-backup

# 4. 启用版本控制(锁定桶必须配版本控制)
mc version enable minio-test/oracle-backup

# 5. 验证配置:查看桶的版本和锁定状态
echo "版本控制状态:"
mc version info minio-test/oracle-backup
echo "对象锁定状态:"
mc retention info minio-test/oracle-backup

说明--with-lock是对象锁定的前提,生产环境创建桶时直接加这个参数,测试环境可重建。

1.3 (可选)设置默认保留策略(防删更严格)

# 设置桶的默认保留策略:governance(管理级,10天内不可删/改)
mc retention set --default governance 10d minio-test/oracle-backup

# 验证保留策略
mc retention info minio-test/oracle-backup

步骤2:rman配置(极简,无需复杂配置)

2.1 编写rman备份脚本(oracle服务器上)

新建脚本文件rman_backup_minio.sh,内容如下(替换括号内内容):

#!/bin/bash
# oracle环境变量(小白必改:根据自己的oracle配置)
export oracle_sid=orcl          # 你的oracle实例名
export oracle_home=/u01/app/oracle/product/19c/dbhome_1  # 你的oracle安装目录
export path=$oracle_home/bin:$path

# rman备份命令(直接备份到minio)
rman target / << eof
run {
  # 备份数据库+归档日志,压缩
  backup as compressed backupset 
  database 
  plus archivelog 
  # 备份集推送到minio(格式:s3://桶名/路径)
  format 's3://oracle-backup/orcl/backup_%d_%t_%u.bkp'
  # minio的s3配置(替换为你的minio信息)
  configure channel device type disk parms 's3_access_key=minioadmin, s3_secret_key=minioadmin, s3_endpoint=http://minio-ip:9000, s3_region=us-east-1';
}
# 查看备份结果
list backup summary;
exit;
eof

2.2 执行备份脚本

# 赋予执行权限
chmod +x rman_backup_minio.sh

# 执行备份(小白注意:需用oracle用户执行)
su - oracle -c "./rman_backup_minio.sh"

小白提示

  • 若报错s3_access_key不存在:确认oracle版本≥12c(12c以上原生支持s3);
  • 若11g版本:需先安装oracle s3插件,或先备份到本地再用mc cp上传到minio(文末附替代方案)。

2.3 验证备份是否成功上传到minio

# 列出minio桶中的备份文件
mc ls minio-test/oracle-backup/orcl/

能看到类似backup_orcl_20260305_xxxx.bkp的文件,说明备份成功。

步骤3:测试防误删功能(核心验证)

场景1:手动删除备份文件,验证版本控制可恢复

# 1. 先记录备份文件名(比如:backup_orcl_20260305_123456.bkp)
backup_file=backup_orcl_20260305_123456.bkp

# 2. 模拟误删除:删除minio中的备份文件
mc rm minio-test/oracle-backup/orcl/$backup_file

# 3. 查看删除后的版本(仍能看到旧版本,标记为deleted)
mc ls --versions minio-test/oracle-backup/orcl/$backup_file

# 4. 恢复误删的文件(替换version_id为上一步查到的版本id)
mc cp minio-test/oracle-backup/orcl/$backup_file?versionid=version_id minio-test/oracle-backup/orcl/$backup_file

# 5. 验证恢复成功
mc ls minio-test/oracle-backup/orcl/$backup_file

场景2:启用对象锁定后,验证无法删除/修改

# 1. 给备份文件加法律保留(永久锁定,手动解除前不可删)
mc legalhold enable minio-test/oracle-backup/orcl/$backup_file

# 2. 尝试删除该文件(会报错,无法删除)
mc rm minio-test/oracle-backup/orcl/$backup_file

# 3. 解除锁定(如需删除,测试完成后执行)
mc legalhold disable minio-test/oracle-backup/orcl/$backup_file

场景3:模拟覆盖备份文件,验证版本保留

# 1. 再次执行rman备份(生成同名新文件)
su - oracle -c "./rman_backup_minio.sh"

# 2. 查看版本:能看到新旧两个版本
mc ls --versions minio-test/oracle-backup/orcl/$backup_file

# 3. 恢复旧版本(比如恢复到备份前的版本)
mc restore minio-test/oracle-backup/orcl/$backup_file --version-id=旧版本id

步骤4:测试恢复(可选,验证备份可用)

# 1. 将minio中的备份文件下载到本地
mc cp minio-test/oracle-backup/orcl/$backup_file /tmp/

# 2. 用rman验证备份文件有效性(oracle用户执行)
rman target / << eof
restore validate database from backupset '/tmp/$backup_file';
exit;
eof

输出validation succeeded说明备份文件有效。

三、小白避坑指南

  1. rman连接minio报错
    • 检查minio地址/端口是否通(ping minio-ip + telnet minio-ip 9000);
    • accesskey/secretkey是否写对(minio默认是minioadmin/minioadmin,生产需改);
    • oracle 11g不支持直接s3:替代方案是先备份到本地,再用mc cp上传:
# 1. rman备份到本地
rman target / << eof
backup as compressed backupset database plus archivelog format '/tmp/%d_%t_%u.bkp';
eof
# 2. mc上传到minio
mc cp /tmp/*.bkp minio-test/oracle-backup/orcl/
  1. minio对象锁定创建失败
    • 对象锁定必须在创建桶时启用(--with-lock),已创建的桶无法直接开启,需重建;
  2. 删除文件后看不到版本
    • 确认已执行mc version enable,未启用版本控制则删除后无法恢复。

总结

  1. minio侧核心配置:创建带--with-lock的桶 + 启用版本控制 + 可选保留策略,是防误删的关键;
  2. rman侧极简操作:无需复杂配置,仅需在备份命令中指定minio的s3参数(12c+),11g可先本地再上传;
  3. 核心验证点:误删后能通过版本恢复、锁定后无法删除、备份文件可验证有效性。

整个测试方案全程用复制粘贴的命令,小白只需替换minio地址、oracle实例名等少量参数,即可完成从备份到防误删的全流程验证。

以上就是oracle通过rman备份至minio且防止数据删除的详细步骤的详细内容,更多关于oracle rman备份至minio的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com