Linux下oracle_rman备份配置参考文档

2024-06-13 23:38

本文主要是介绍Linux下oracle_rman备份配置参考文档,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天出一份linux下oracle数据库rman备份配置文档供参考,目前很多环境,我都用这份文档在做备份,如果有写的不对的地方还请铁友们指正,我好到生产环境改正。

1. 目录设置

1.1. Rman备份说明

 备份级别说明
1、Level 0级全备是各增量备份的基础;
2、增量备份分两种情况,incremental和cumulitive,前者备份跟自己同级或比自己级别低的,后者只备份比自己级别低的;
3、incremental备份说明:level1备份上一次level1或level0以来的变化,level2备份上一次level2或level1或level0以来的变化;
4、cumulitive备份说明:level1备份上一次level0以来的变化,level2备份上一次level1或level0以来的变化。
 相关注意说明
1、在数据量比较小、或者数据库服务器性能很强大的情况下,可以每天进行一次全备份;
2、如果备份后需要把备份文件存放到阿里云的OSS存储上,由于OSS存储有4GB大小限制,需要修改以下三个rman配置,限制RMAN备份片的大小

1、level0_backup.rman文件
allocate channel C2 type disk ;                        --修改前
allocate channel C2 type disk maxpiecesize = 3500M ;  --修改后
2、level1_backup.rman文件
allocate channel C3 type disk ;                        --修改前
allocate channel C3 type disk maxpiecesize = 3500M ;  --修改后
3、level2_backup.rman文件
allocate channel C4 type disk ;                        --修改前
allocate channel C4 type disk maxpiecesize = 3500M ;  --修改后

3、配置crontab定时任务,注意避开业务繁忙时段
4、使用oracle用户配置定时任务,如果需要使用root用户配置定时任务,计划任务脚本章节要注意修改环境变量,以及执行脚本注意oracle用户要对相关路径具备读写执行权限。

1.2. 目录说明

daemon库备份脚本路径:/backup/rman/scripts/
归档文件按日期备份: /backup/arch/date +%Y%m%d
控制文件备份: /backup/rman/controlfile
数据库文件按日期备份: /backup/rman/data/date +%Y%m%d
按日期生成备份日志: /backup/rman/logs/date +%Y%m%d
RMAN备份脚本: /backup/rman/scripts
以上所有目录请做好异地备份。

2. rman备份

2.1. 备份策略

 保留最后5次备份数据:
 每天凌晨04:45删除多余和无效的备份;
 每天12点与20点备份归档日志;
 每天03点20进行数据库的0级完全备份;

2.2. 备份计划

这里采用的每天全备,大家可根据实际需要,周一到周六增备,周日全备。
时间 周一至周日
12:00 日志备份
20:00 日志备份
03:20 完全备份
将脚本加入oracle用户的crontab里面,让其按策略自动运行,可根据实际需求调整计划任务。

$ crontab -e
20 03 * * * /backup/rman/scripts/level0_backup.sh
45 04 * * * /backup/rman/scripts/delobsolete.sh
00 12 * * * /backup/rman/scripts/arch.sh
00 20 * * * /backup/rman/scripts/arch.sh

2.3. 准备工作

将 oracle 数据库置于“安装模块”以启用日志归档模式,归档的日志存储在快速恢复区域中

# mkdir -p /backup/arch
mkdir -p /backup/rman/controlfile
mkdir /backup/rman/data
mkdir /backup/rman/logs
mkdir /backup/rman/scripts
chown -R oracle:oinstall /backup

以下数据库连接前设置连接SID

$ export ORACLE_SID=daemon
$ sqlplus / as sysdba
SQL> SELECT log_mode from v$database;

输出的结果为ARCHIVELOG表示已经开启归档
输出的结果为NOARCHIVELOG表示未开启归档

(1)操作开启归档日志

$ sqlplus / as sysdba
SQL> shutdown immediate;
startup mount;
alter database archivelog;
alter database open;

(2)启用更改跟踪功能记录自上次备份以来更改的数据块位置,以提升增量备份的性能。更改跟踪文件默认保存在快速恢复区域中(使用RMAN 增量备份时启动block change tracking以缩短RMAN 备份的时间)。

$ sqlplus / as sysdba
SQL> shutdown immediate;
startup mount
alter system set db_create_file_dest='/u01/oracle/fast_recovery_area';
alter database enable block change tracking;
alter database open;

(3)查看、修改闪回区大小(大小根据实际情况修改)

SQL> show parameter db_recovery_file_dest;
alter system set db_recovery_file_dest_size=40G scope=both;
shutdown immediate;
startup;

2.4. rman配置

$ rman target /
CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 5 DAYS;

上面两句只能使用一种条件,保存5个副本或者5天的恢复窗口(建议使用恢复窗口),请按需调整

CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/controlfile/%F';
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/backup/rman/controlfile/snapcf_daemon.f';

2.5. rman脚本

1) delobsolete.rman

cd /backup/rman/scripts
$ vi delobsolete.rman
run {crosscheck backup;delete noprompt obsolete;delete noprompt expired backup;
}
exit

2) arch.rman

$ vi arch.rman
sql 'alter system archive log current' ;
run {
allocate channel C1 type disk FORMAT '/backup/arch/' ;
backup 
skip inaccessible
tag arch_daemon
filesperset 10 format '/backup/arch/%T/arch_%T_%d_%t_%s_%p' archivelog all delete input;
release channel C1;
}
exit

3) level0_backup.rman

$ vi level0_backup.rman
sql 'PURGE DBA_RECYCLEBIN';
sql 'alter system archive log current' ;
run {
allocate channel C2 type disk ;
backup 
incremental level 0 
skip inaccessible 
tag full0_daemon
DATABASE 
filesperset 5 format '/backup/rman/data/%T/db_0_%T_%d_%t_%s_%p';
release channel C2;
}
exit

4) level1_backup.rman

$ vi level1_backup.rman
sql 'PURGE RECYCLEBIN';
sql 'alter system archive log current' ;
run {
allocate channel C3 type disk ;
backup 
incremental level 1
skip inaccessible 
tag level1_daemon
DATABASE 
filesperset 5 format '/backup/rman/data/%T/db_1_%T_%d_%t_%s_%p_inc' ;
release channel C3;
}
exit

5) level2_backup.rman

$ vi level2_backup.rman
sql 'PURGE RECYCLEBIN';
sql 'alter system archive log current' ;
run {
allocate channel C4 type disk ;
backup 
incremental level 2
skip inaccessible 
tag level2_daemon
DATABASE 
filesperset 5 format '/backup/rman/data/%T/db_2_%T_%d_%t_%s_%p_inc' ;
release channel C4;
}
exit

2.6. 计划任务脚本

1) delobsolete.sh

$ vi delobsolete.sh
#!/bin/sh
#export LANG=en_US
source /home/oracle/.bash_profile
export ORACLE_SID=daemon
mkdir /backup/rman/logs/`date +%Y%m%d`
rman target / cmdfile=/backup/rman/scripts/delobsolete.rman msglog=/backup/rman/logs/`date +%Y%m%d`/`date +%Y%m%d_%H%M_obsolete.log`
exit

2) arch.sh

$ vi arch.sh
#!/bin/sh
#export LANG=en_US
source /home/oracle/.bash_profile
export ORACLE_SID=daemon
mkdir /backup/arch/`date +%Y%m%d`
mkdir /backup/rman/logs/`date +%Y%m%d`
rman target / cmdfile=/backup/rman/scripts/arch.rman msglog=/backup/rman/logs/`date +%Y%m%d`/`date +%Y%m%d_%H%M_arch.log`
exit

3) level0_backup.sh

$ vi level0_backup.sh
#!/bin/sh
#export LANG=en_US
source /home/oracle/.bash_profile
export ORACLE_SID=daemon
mkdir /backup/rman/data/`date +%Y%m%d`
mkdir /backup/rman/logs/`date +%Y%m%d`
rman target / cmdfile=/backup/rman/scripts/level0_backup.rman msglog=/backup/rman/logs/`date +%Y%m%d`/`date +%Y%m%d_%H%M_0.log`
exit

4) level1_backup.sh

$ vi level1_backup.sh
#!/bin/sh
#export LANG=en_US
source /home/oracle/.bash_profile
export ORACLE_SID=daemon
mkdir /backup/rman/data/`date +%Y%m%d`
mkdir /backup/rman/logs/`date +%Y%m%d`
rman target / cmdfile=/backup/rman/scripts/level1_backup.rman msglog=/backup/rman/logs/`date +%Y%m%d`/`date +%Y%m%d_%H%M_1.log`
exit

5) level2_backup.sh

$ vi level2_backup.sh
#!/bin/sh
#export LANG=en_US
source /home/oracle/.bash_profile
export ORACLE_SID=daemon
mkdir /backup/rman/data/`date +%Y%m%d`
mkdir /backup/rman/logs/`date +%Y%m%d`
rman target / cmdfile=/backup/rman/scripts/level2_backup.rman msglog=/backup/rman/logs/`date +%Y%m%d`/`date +%Y%m%d_%H%M_2.log`
exit

3. 结束

这篇关于Linux下oracle_rman备份配置参考文档的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1058757

相关文章

linux服务之NIS账户管理服务方式

《linux服务之NIS账户管理服务方式》:本文主要介绍linux服务之NIS账户管理服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、所需要的软件二、服务器配置1、安装 NIS 服务2、设定 NIS 的域名 (NIS domain name)3、修改主

NGINX 配置内网访问的实现步骤

《NGINX配置内网访问的实现步骤》本文主要介绍了NGINX配置内网访问的实现步骤,Nginx的geo模块限制域名访问权限,仅允许内网/办公室IP访问,具有一定的参考价值,感兴趣的可以了解一下... 目录需求1. geo 模块配置2. 访问控制判断3. 错误页面配置4. 一个完整的配置参考文档需求我们有一

Linux实现简易版Shell的代码详解

《Linux实现简易版Shell的代码详解》本篇文章,我们将一起踏上一段有趣的旅程,仿照CentOS–Bash的工作流程,实现一个功能虽然简单,但足以让你深刻理解Shell工作原理的迷你Sh... 目录一、程序流程分析二、代码实现1. 打印命令行提示符2. 获取用户输入的命令行3. 命令行解析4. 执行命令

Vue 2 项目中配置 Tailwind CSS 和 Font Awesome 的最佳实践举例

《Vue2项目中配置TailwindCSS和FontAwesome的最佳实践举例》:本文主要介绍Vue2项目中配置TailwindCSS和FontAwesome的最... 目录vue 2 项目中配置 Tailwind css 和 Font Awesome 的最佳实践一、Tailwind CSS 配置1. 安

SpringBoot中HTTP连接池的配置与优化

《SpringBoot中HTTP连接池的配置与优化》这篇文章主要为大家详细介绍了SpringBoot中HTTP连接池的配置与优化的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、HTTP连接池的核心价值二、Spring Boot集成方案方案1:Apache HttpCl

Maven 插件配置分层架构深度解析

《Maven插件配置分层架构深度解析》:本文主要介绍Maven插件配置分层架构深度解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Maven 插件配置分层架构深度解析引言:当构建逻辑遇上复杂配置第一章 Maven插件配置的三重境界1.1 插件配置的拓扑

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

Oracle 通过 ROWID 批量更新表的方法

《Oracle通过ROWID批量更新表的方法》在Oracle数据库中,使用ROWID进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销,下面给大家介绍Orac... 目录oracle 通过 ROWID 批量更新表ROWID 基本概念性能优化建议性能UoTrFPH优化建议注

ubuntu16.04如何部署dify? 在Linux上安装部署Dify的技巧

《ubuntu16.04如何部署dify?在Linux上安装部署Dify的技巧》随着云计算和容器技术的快速发展,Docker已经成为现代软件开发和部署的重要工具之一,Dify作为一款优秀的云原生应用... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。它

PostgreSQL 序列(Sequence) 与 Oracle 序列对比差异分析

《PostgreSQL序列(Sequence)与Oracle序列对比差异分析》PostgreSQL和Oracle都提供了序列(Sequence)功能,但在实现细节和使用方式上存在一些重要差异,... 目录PostgreSQL 序列(Sequence) 与 oracle 序列对比一 基本语法对比1.1 创建序