Oracle文件自动“减肥”记

2024-01-06 14:20
文章标签 oracle 自动 减肥

本文主要是介绍Oracle文件自动“减肥”记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 1.归档日志删除
      • 归档概述
      • 定时删除
    • 2.监听日志
      • 监听概述
      • 定时删除
    • 3.告警日志
      • 告警日志述概述
      • 定时删除
    • 4.备份删除
      • 全备脚本
      • 备份删除

前言

日常运维我们会遇到各种Oracle文件过大,导致磁盘爆了,数据库异常Down了,以下分享一些自动处理的脚本给大家。

1.归档日志删除

归档概述

Oracle 归档日志(Archive Log)是一种用于记录数据库事务日志的技术。它可以将数据库中的更改操作(如插入、更新和删除)记录下来,以便在出现故障时恢复数据。归档日志采用增量方式记录,即每次更改操作后,日志文件会逐步变大.

如果归档的空间满了,就会导致
ORA-00257: archiver error. Connect internal only, until freed.

定时删除

以下脚本为定时删除7天前的归档日志
[root@mesdb1 ~]# su - oracle
[oracle@mesdb1 ~]$ mkdir -p /home/oracle/script
[oracle@mesdb1 ~]$ mkdir -p /home/oracle/arch/log

vi /home/oracle/script/arch_del.sh

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=mesdb1
dt=`date '+%Y%m%d_%H%M'`
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
rman target / log /home/oracle/arch/log/log_arch_$dt.log  <<EOF
run{ 
allocate channel ch1 type;
allocate channel ch2 type;
crosscheck archivelog all;
sql 'ALTER SYSTEM ARCHIVE LOG CURRENT';
delete expired archivelog all;
delete archivelog until time 'sysdate-7' ;  
release channel ch1;
release channel ch2; 
}  
EOF

0 1 * * * sh /home/oracle/script/arch_del.sh

2.监听日志

监听概述

在oracle 10g时候,只有文本格式的listener.log; 在11.2版本时,由于ADR特性出现了xml/log两种格式的监听日志,xml格式的日志会达到一定大小后自动分片,形成log_1.xml 这种数字序号的文件;log格式的日志会达到一定大小后自动分片,形成log_1.log 这种数字序号的文件.

Oracle11g的新特性自动诊断库(ADR)默认会启用,
监听日志默认以xml方式存放,如果空间占用太大,你可以关闭

建议调整监听参数文件DIAG_ADR_ENABLED_listener = OFF ,
然后reload监听,监听就不会存放为XML文件格式,而是使用10g老的方式。

同时建议在SQLNET.ORA文件中设置参数 DIAG_ADR_ENABLED = OFF
来屏蔽ADR向ALERT写入错误信息(如ORA-609),操作如下:

在listener.ora里面加入如下行:
DIAG_ADR_ENABLED_ LISTENER = OFF 其中LISTENER为监听名

sqlnet.ora加入如下行:
DIAG_ADR_ENABLED = OFF

重启监听:
lsnrctl reload

监听进程的查询,RAC一般使用ASM的监听
ps -ef |grep tnslsnrgrid     12386     1  0  2023 ?        05:00:31 /u01/app/19.0.0/grid/bin/tnslsnr LISTENER -no_crs_notify -inherit
grid     12460     1  0  2023 ?        00:47:24 /u01/app/19.0.0/grid/bin/tnslsnr ASMNET1LSNR_ASM -no_crs_notify -inherit
oracle   70467 68189  0 08:40 pts/2    00:00:00 grep --color=auto tnslsnr

定时删除

监听的位置在如下位置
cd $ORACLE_BASE/diag/tnslsnr/{hostname}
asmnet1lsnr_asm
listener
listener_scan1

crontable -l
0 23 * * * /home/oracle/scirpt/listener_clear.sh > /dev/null 2>&1;

#!/bin/sh
#listener
find /u01/app/grid/diag/tnslsnr/rac1/listener/alert -mtime +7 -name “log_.xml" | xargs rm -rf ;
find /u01/app/grid/diag/tnslsnr/rac1/listener/trace -mtime +7 -name "listener_
.llog” | xargs rm -rf ;
#asmnet1lsnr_asm
find /u01/app/grid/diag/tnslsnr/rac1/asmnet1lsnr_asm/alert -mtime +7 -name “log_.xml" | xargs rm -rf ;
find /u01/app/grid/diag/tnslsnr/rac1/asmnet1lsnr_asm/trace -mtime +7 -name "asmnet1lsnr_asm_
.log” | xargs rm -rf ;

3.告警日志

告警日志述概述

Oracle跟踪文件分为三种类型
1)后台报警日志文件
2)DBWR、LGWR、SMON等后台进程创建的后台跟踪文件
3)连接到Oracle的用户进程(Server Processes)生成的用户跟踪文件

定时删除

这里涉及两个参数:
LONGP_POLICY:默认保留365天的事件与警告。
SHORTP_POLICY:默认保留30天的trace文件或core dump file

[oracle@rac1 ]$ adrci
adrci> show home
ADR Homes:
diag/kfod/mes-all-db1/kfod
diag/rdbms/mesdb/mesdb1
diag/clients/user_oracle/host_314373652_110
adrci> set home diag/rdbms/mesdb/mesdb1

删除一天前的alert log
adrci> PURGE -age 1440 -type ALERT

删除一天前的trace 文件
adrci> PURGE -age 1440 -type TRACE

adrci> show control ##单位是小时

更改 SHORTP_POLICY即可实现保留的日期
adrci> set control (SHORTP_POLICY=360)

清理trace文件(单位分钟,前一天之前的)
adrci> purge -age 1440 -type TRACE
默认情况下当天的trace文件是不能被清理的!

SYS@mesdb1> SELECT * FROM V$DIAG_INFO WHERE NAME = ‘Diag Trace’;

4.备份删除

全备脚本

#!/bin/bash
databaseName='PROD'
baseDir='/usr01/backup/'
backupDate=`date "+%Y-%m-%d"`if [ `whoami` != 'oracle' ];thenecho 必须使用 oracle 用户进行备份,备份停止exit
fiif [ ! -e $baseDir ]
thenecho 备份根 $baseDir 目录不存在,备份停止exit
fibackupDir=$baseDir$backupDate
if [ ! -e $backupDir ];thenmkdir -p $backupDir/arcmkdir -p $backupDir/datamkdir -p $backupDir/ctl
elseecho 备份目录 $backupDir 已存在,备份停止exit
filogFile=$backupDir/backup_log_$backupDate
echo `date` 备份开始
# 要添加 catalog
rman target / log=${logFile} <<EOF
run {allocate channel c1 device type disk ;allocate channel c2 device type disk ;CONFIGURE BACKUP OPTIMIZATION ON;backup as compressed backupset incremental level 0tag '${databaseName}_{backupDate}' filesperset 8format '${backupDir}/data/${databaseName}_data_%U.bak' databaseinclude current controlfile  ;sql 'alter system archive log current';backup current controlfile format '${backupDir}/ctl/${databaseName}_ctl_%U.bak';backup as compressed backupsetskip inaccessiblefilesperset 32format '${backupDir}/arc/${databaseName}_arc_%U.bak'archivelog  all;delete noprompt archivelog  until time = 'sysdate-3';release channel c1;release channel c2;
}
EOF
echo `date` 备份完成 >> $logFile

备份删除

[oracle@mes-all-db1 ~]$ rman target /Recovery Manager: Release 19.0.0.0.0 - Production on Sat Jan 6 10:11:34 2024
Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.connected to target database: MESDB (DBID=3146269603)RMAN> show all;using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name MESDB are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/19.0.0/dbhome_1/dbs/snapcf_mesdb1.f'; # default--备份策略调整,备份保留7天
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

这篇关于Oracle文件自动“减肥”记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/576619

相关文章

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

Oracle Start With关键字

Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, 有一种比较常见得 设计模式, 层级结构 设计模式, 具体到 Oracle table中, 字段特点如下: ID, DSC, PID; 三个字段, 分别表示 当前标识的 ID(主键), DSC 当

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9

ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理

陈科肇 示例: 包规范 CREATE OR REPLACE PACKAGE PACK_WMS_YX IS-- Author : CKZ-- Created : 2015/8/28 9:52:29-- Purpose : 同步数据-- Public type declarations,游标 退休订单TYPE retCursor IS REF CURSOR;-- RETURN vi_co_co

Oracle主键和外键详解及实用技巧

在 Oracle 数据库中,主键(Primary Key)和外键(Foreign Key)用于维护数据库表之间的数据完整性。 1. 主键(Primary Key) 主键是一列或多列,能够唯一标识表中的每一行。表中只能有一个主键,并且主键列不能为空(即 NOT NULL)。 特性: 唯一性:主键中的每一个值都是唯一的,不能重复。非空性:主键列不能包含 NULL 值。索引:Oracle 自动为

Shell脚本实现自动登录服务器

1.登录脚本 login_server.sh #!/bin/bash# ReferenceLink:https://yq.aliyun.com/articles/516347#show all host infos of serverList.txtif [[ -f ./serverList.txt ]]thenhostNum=`cat ./serverList.txt | wc -l`e

Jenkins 通过 Version Number Plugin 自动生成和管理构建的版本号

步骤 1:安装 Version Number Plugin 登录 Jenkins 的管理界面。进入 “Manage Jenkins” -> “Manage Plugins”。在 “Available” 选项卡中搜索 “Version Number Plugin”。选中并安装插件,完成后可能需要重启 Jenkins。 步骤 2:配置版本号生成 打开项目配置页面。在下方找到 “Build Env