Oracle Data Guard备库清理归档脚本

news2024/9/29 8:11:24

1 说明

我们知道在Oracle Data Guard架构中归档模式是必须打开的,主库将日志传输到备库,最终存放到备库的归档日志文件中。随着系统的运行,归档日志文件会不断累积,如果不及时清理,则会造成归档空间被写满,影响系统运行。

ADG环境一般都说主库用于写操作,备库用来做查询操作(11g及以后)。但实际上,由于各种原因,备库一般很少提供给业务系统查询使用,备份也不在上面做(不一定对,不过至少在我参加工作两年来,换了两份工作里是这样的)。

所以,备库由于存在感很低,容易发生归档空间爆满的现象,备库就无法接收主库的归档。如果发现时已经过去了很久,并且主库的归档已经删除,出现GAP,这时候备库就要做恢复了。

因此,我们在搭建好环境后,非常有必要加强对备库的监管,并且配置一个定期清理归档日志的定时任务,就可以避免上述情况发生。

2 准备工作

准备工作主要是检查DG同步情况和创建脚本目录。

2.1 DG同步情况检查

一、检查数据库角色

确认主备库分别是哪个。

select db_unique_name,open_mode,switchover_status,database_role from v$database;

二、检查归档应用情况

在主备库都执行语句来查看归档日志是否一致。

set lines 200;
col name for a70
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
select *
  from (select recid,name,thread#,sequence#,resetlogs_time,first_time,applied,status
		  from v$archived_log
		 order by sequence# desc)
  where rownum <= 20;

三、查看是否有 GAP

在主库上查询是否有GAP,为空则是没有。

select thread#, low_sequence#, high_sequence# from v$archive_gap;

四、查看是否有传输错误

主库查看归档传输是否有报错。

select dest_name, status, type, error from v$archive_dest_status where dest_name in('LOG_ARCHIVE_DEST_1','LOG_ARCHIVE_DEST_2'); 

五、查看进程

主库主要看 LNS 进程,此进程负责将主数据库的重做日志条目传输到备用数据库。备库主要看 MRP0 进程,此进程负责将接收到的归档日志应用到备用数据库上,以维持与主数据库的同步。MRP进程是ADG中的关键组件,它确保备用数据库的数据与主数据库保持一致。

select process ,status , sequence# from v$managed_standby;

六、检查备库lag

set lines 200
col name for a30
col value for a30
select * from v$dataguard_stats;

2.2 创建脚本目录

根据自己的习惯,选择一个路径创建脚本目录,oracle用户操作:

# su - oracle
$ cd /home/oracle
$ mkdir -p scripts/deleted_dgarch/src
$ mkdir -p scripts/deleted_dgarch/log
$ mkdir -p scripts/deleted_dgarch/sql

3 脚本

3.1 脚本说明

一、脚本实现的功能是

  • 清理一周前备库已经应用了的归档日志文件。

二、脚本实现逻辑是

  1. 获取最近应用的归档日志时间;
  2. RMAN基于这个时间删除一周前的归档日志文件。

3.2 部署脚本

一、deleted_dgarch.sql

此sql脚本文件的作用是获取最近应用的归档日志时间,并拼接成RMAN删除归档日志的脚本,脚本输出到/home/oracle/scripts/deleted_dgarch/sql/deleted_dgarch.rman。

创建脚本文件:

$ su - oracle
$ cd /home/oracle/scripts/deleted_dgarch/sql
$ vi deleted_dgarch.sql
$ chmod +x deleted_dgarch.sql

添加以下内容:

set lines 200
set echo off feedback off heading off termout off
spool /home/oracle/scripts/deleted_dgarch/sql/deleted_dgarch.rman
select 'delete noprompt archivelog all completed before ' || '"to_date(''' || to_char(max(first_time-7),'yyyy-mm-dd hh24:mi:ss') || ''',' || '''yyyy-mm-dd hh24:mi:ss' || ''')";' scripts from v$archived_log where applied = 'YES' and name is not null;
spool off
exit;

脚本测试:

# 1 运行脚本
$ sqlplus / as sysdba @/home/oracle/scripts/deleted_dgarch/sql/deleted_dgarch.sql

# 2 查看结果,可以将脚本拿到rman里执行看看有没有报错
$ cat deleted_dgarch.rman
delete noprompt archivelog all completed before "to_date('2024-09-20 02:00:02','yyyy-mm-dd hh24:mi:ss')";

二、deleted_dgarch.sh

此脚本的作用是调用deleted_dgarch.sql,创建脚本文件:

$ cd /home/oracle/scripts/deleted_dgarch/src
$ vi deleted_dgarch.sh
$ chmod +x deleted_dgarch.sh

脚本内容如下:

#!/bin/bash

if [ -f $HOME/.bash_profile ];
then
    . $HOME/.bash_profile
fi

# ---------------------------------------------------------------
# environment variables
# ---------------------------------------------------------------

export ORACLE_SID=orcladg
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2/db_1

DATE=`date +'%Y%m%d%H'`

SCRBASE=/home/oracle/scripts/deleted_dgarch
SCRDIR=${SCRBASE}/src
SQLDIR=${SCRBASE}/sql
LOGDIR=${SCRBASE}/log

LOG_FILE=${LOGDIR}/${DATE}_${ORACLE_SID}_DELETED_DGARCH.log

# ---------------------------------------------------------------
# Create RMAN delete archive log script
# ---------------------------------------------------------------

echo -e "\n****** Create RMAN delete archive log script On `date +'%F %T'` ******\n" >> ${LOG_FILE}

sqlplus / as sysdba @${SQLDIR}/deleted_dgarch.sql

cat ${SQLDIR}/deleted_dgarch.rman >> ${LOG_FILE}

# ---------------------------------------------------------------
# RMAN delete archive log
# ---------------------------------------------------------------

echo -e "\n****** RMAN delete archive log On `date +'%F %T'` ******\n" >> ${LOG_FILE}

rman target / cmdfile=${SQLDIR}/deleted_dgarch.rman msglog ${LOG_FILE} append

# ---------------------------------------------------------------
# Finish
# ---------------------------------------------------------------

echo -e "\n****** RMAN delete archive log Finished On `date +'%F %T'` ******\n" >> ${LOG_FILE}

exit 0

4 脚本测试

4.1 运行脚本

$ cd /home/oracle/scripts/deleted_dgarch/src
$ ./deleted_dgarch.sh

image.png

4.2 查看日志

$ cd /home/oracle/scripts/deleted_dgarch/log
$ more 2024092613_orcladg_DELETED_DGARCH.log

image.png

5 创建定时任务

创建一个定时任务,可以每天执行这个清理脚本。删除归档的操作对资源耗费不高,可以每天多执行几次,特别是在日志切换比较频繁的数据库中,可以极大平坦每次占用的资源,降低系统负载,避免性能抖动。

$ su - oracle
$ crontab -e

添加以下内容:

# --------------------------------------------------------------------
# Delete Archive Log
# --------------------------------------------------------------------
0 0,6,12,18 * * *  sh /home/oracle/scripts/deleted_dgarch/src/deleted_dgarch.sh >/dev/null 2>&1

每6小时一次,在午夜、早上6点、中午和下午6点执行一次清理任务。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进程的那些事--实现shell

目录 前言 一、预备知识 二、实现步骤 1.思路 2.实现 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 学习的本质就是变现 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、预备知识 char * fgets ( char * str, i…

Qt开发技巧(十)新版随机数,模拟鼠标移动,QTextEdit卡死问题,函数返回值,参数结构化,选项卡控件,窗体属性

继续讲一些Qt开发中的技巧操作&#xff1a; 1.新版随机数 Qt中有自己的随机数取值方法&#xff0c;Qt5.10以前使用qsrand方法&#xff0c; Qt5.10以后提供了新的类 QRandomGenerator QRandomGenerator64 管理随机数&#xff0c;使用更方便&#xff0c;尤其是取某个区间的随机数…

【尚跑】2024铜川红色照金半程马拉松赛,大爬坡152安全完赛

1、赛事背景 2024年9月22日8点&#xff0c;2024铜川红色照金半程马拉松赛于照金1933广场鸣枪起跑&#xff01; 起跑仪式上&#xff0c;6000位选手们合唱《歌唱祖国》&#xff0c;熟悉的旋律响彻陕甘边革命根据地照金纪念馆前&#xff0c;激昂的歌声凝聚心中不变的热爱。随着国…

短视频矩阵系统源码图--示例

短视频矩阵系统源码通常指的是用于构建和管理短视频平台的一整套软件代码。这些代码包括了前端用户界面、后端服务器逻辑、数据库设计以及可能的移动应用客户端等部分。源码是软件的原始代码&#xff0c;开发者可以通过阅读和修改源码来定制或增强系统的功能。 开发短视频矩阵系…

第一弹:llama.cpp编译

1.编译llama.cpp命令行&#xff08;电脑版本&#xff09;&#xff1b; 2.交叉编译安卓命令行版本。 一、Llama.cpp是什么&#xff1f; 二、Llama.cpp编译 首先我们尝试编译llama.cpp. 2.1 下载llama.cpp 项目的github地址&#xff1a; https://github.com/ggerganov/llama…

PMP--二模--解题--151-160

文章目录 14.敏捷–流程&#xff1a;151、 [单选] 在每日站会上&#xff0c;项目负责人注意到一位资深开发人员正在将一些简单的待办事项重新分配给其他团队成员&#xff0c;理由是让资深开发人员处理复杂事项更有效率。项目负责人应该怎么做&#xff1f; 14.敏捷--通才型专家-…

0基础跟德姆(dom)一起学AI 机器学习01-机器学习概述

【知道】人工智能 - Artificial Intelligence 人工智能 - AI is the field that studies the synthesis and analysis of computational agents that act intelligently - AI is to use computers to analog and instead of human brain - 释义 - 仿智&#xff1b; 像人…

【多线程】多线程(4)(线程安全问题的原因,如何解决线程安全问题)

【线程安全问题的原因&#xff08;重点掌握&#xff09;】 1.线程在操作系统中:随机调度&#xff0c;抢占式执行&#xff08;核心原因&#xff09; 2.多个线程同时修改一个变量 3.修改操作「不是原子的」 4.内存可见性 5.指令重排列 &#xff08;后两个原因后面再谈&…

多元函数微分学基础题

这是基础题&#xff01;&#xff01;原则上必须要在第一轮初学并做完课后习题之后再做这个基础题&#xff0c;不能有错误&#xff08;马虎大意除外&#xff09;或无法解答。如有错误&#xff0c;该单元需要重学&#xff01;&#xff01; 多元函数微分学填空题 一、填空题 如…

基于SPI协议的Flash驱动控制

1、理论知识 SPI&#xff08;Serial Peripheral Interface&#xff0c;串行外围设备接口&#xff09;通讯协议&#xff0c;是Motorola公司提出的一种同步串行接口技术&#xff0c;是一种高速、全双工、同步通信总线&#xff0c;在芯片中只占用四根管脚用来控制及数据传输&#…

关于Fake Location定位,运动世界校园问题

不好意思&#xff0c;之前那个文章其实是很早之前的&#xff0c;不知道为什么审核了很久一直没有通过&#xff0c;然后前几周莫名其妙点了一下重新发布&#xff0c;竟然发布成功了&#xff0c;这个方法已经失效了&#xff0c;要可以稳定&#xff0c;我建议是买一台root的手机&a…

Element-Plus中上传文件upload取消提示按钮与文字

去除提示按钮与文字 添加样式&#xff0c;让这个div进行隐藏 .el-upload__input {display: none !important; }

单片机长短按简单实现

单片机长短按简单实现 目录 单片机长短按简单实现1 原理2 示例代码2.1 按键实现 3 测试log4 其他实现方式 1 原理 按键检测和处理的步骤如下&#xff1a; 1&#xff1a;定时扫描按键&#xff08;使用定时器定时扫描&#xff0c;也可以用软件延时或者系统心跳之类的方式&#…

【动态规划-分组背包】力扣1981. 最小化目标值与所选元素的差

给你一个大小为 m x n 的整数矩阵 mat 和一个整数 target 。 从矩阵的 每一行 中选择一个整数&#xff0c;你的目标是 最小化 所有选中元素之 和 与目标值 target 的 绝对差 。 返回 最小的绝对差 。 a 和 b 两数字的 绝对差 是 a - b 的绝对值。 示例 1&#xff1a; 输入…

DAY17||654.最大二叉树 |617.合并二叉树 |700.二叉搜索树中的搜索 |

654.最大二叉树 题目&#xff1a;654. 最大二叉树 - 力扣&#xff08;LeetCode&#xff09; 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下&#xff1a; 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树…

物联网系统中TFT_LCD屏主流驱动方案详解

01 物联网系统中为什么要使用TFT-LCD驱动芯片 在物联网系统中使用TFT-LCD&#xff08;薄膜晶体管液晶显示器&#xff09;驱动芯片的原因主要可以归纳为以下几点&#xff1a; 专业性与高效性 1、专业图形处理&#xff1a;TFT-LCD驱动芯片内置了专业的图形处理引擎&#xff0…

全功能运营级开源跨境电商平台源码 —— 多语言全球化商城解决方案

实测分享【全功能运营级开源跨境电商平台】&#xff0c;它不仅默认集成了中英文双语系统&#xff0c;更内置了强大的翻译接口&#xff0c;支持自动翻译至全球133种语言&#xff0c;为商家打开通往世界的窗口。 核心特性亮点解析&#xff1a; 多语言自动翻译&#xff1a;该平台…

WEB 编程:富文本编辑器 Quill 配合 Pico.css 样式被影响的问题之还是 iframe

这个系列已经写了 3 篇了。这篇写如何使用 iframe 解决标题里面提到的问题。 前情提要 请看上一篇博文&#xff1a; WEB 编程&#xff1a;富文本编辑器 Quill 配合 Pico.css 样式被影响的问题之Shadow DOM WEB 编程&#xff1a;富文本编辑器 Quill 配合 Pico.css 样式被影响…

常见字符函数和字符串函数(上)

1. 字符分类函数 字符分类函数是一类用于判断字符是否属于特定的字符类别&#xff08;如字母、数字、标点符号等&#xff09;的函数。在C语言中&#xff0c;这些函数通常可以在<ctype.h>头文件中找到&#xff0c;它们对于文本处理和输入验证非常有用。 这些函数通常返回…

Windows系统镜像下载

目前官网还可以下载的系统有Win10和Win11&#xff0c;Win7因为已经停止维护&#xff0c;所以只能到第三方镜像站下载&#xff0c;下面将具体展示下载方法。 Win7 下载地址&#xff1a;MSDN, 我告诉你 - 做一个安静的工具站 在操作系统中找到Windows 7&#xff0c;在右侧选择…