oracle数据库满了,数据库hang住

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

Oracle数据库归档目录usr5满的解决办法

故障现象:

C网数据库的逻辑日志增长很快,有时候每分钟就产生150M的日志文件,导致归档目录不到一天的时间就满了。我们的备份策略是每天的晚上0点执行,也就是说还没来得及备份归档目录就满了。

导致的结果:

数据库挂起不能工作。

问题分析及解决办法:

解决办法有3种: 
1,增加归档目录的空间 2,增加备份频度 3,删除归档日志文件 

  每一种办法都会存在一些问题或产生一些负面影响:

1,增加归档目录的空间,这个已经不可行,因为已经没有可用空间 

  2,增加备份频度,会影响部分系统性能,后来观察影响不大,远远排在了oracle进程后面。 

  3,删除归档日志文件,这只是权宜之计,会带来控制文件和日志文件的不同步从而影响下一次的数据库备份失败,以及万一数据文件损坏从而因影响恢复的问题。

经过分析和权衡,初步采用了每天办法2次的办法。除了原来夜里零点备份的1次之外,又安排在白天2点备份一次,至于为什么定到2点,主要是想均衡一下业务量,考虑到凌晨业务量较小可能产生较少的日志(相对白天而言)。结果很见效。后来讨论,又发现了一下新的问题。 问题是: 万一备份失败或者在12小时之内usr5空间满怎么办?于是又添加了一个执行脚本fs_monitor.sh,每小时执行一次,若发现usr5空间达到80% 就自动删除归档日志文件然后自动数据库同步

以下是自动自动清楚自动同步的脚本(由左亮撰写)

 


#!/bin/sh 
#Please change the ARCHIVE_FS to your actual filesystem that your archive log storaged 
ARCHIVE_FS=/usr5 
#Please change the ARCHIVE_DIR to your actual directory that your archive log storaged 
ARCHIVE_DIR=/usr5/oracle/bjdb/arch_2 
#Defined the location of log file 
LOG=/usr5/oracle/bjdb/${0}.`date +%m%d`.log 
#Obtain the usage of filesystem at that time 
DFK=`df -k|grep $ARCHIVE_FS|awk ’{USAGE=substr($5,1,length($5) - 1) 
print USAGE}’` 
START_RMAN=" 
setenv ORACLE_SID rman 
sqlplus /nolog << EOF 
connect /as sysdba 
startup 
exit 
EOF" 
STOP_RMAN=" 
setenv ORACLE_SID rman 
sqlplus /nolog << EOF 
connect /as sysdba 
shutdown immediate 
exit 
EOF 

#Defined the command of archivelog crosscheck 
CMD_STR=" 
setenv ORACLE_SID bjdb 
rman target sys/sys catalog rman/rman@rman<<EOF
crosscheck archivelog all; 
exit 
EOF 

#Check the usage of ARCHIVE_FS 
if [ $DFK -gt 80 ] 
then 
TIME=`date` 
echo "At the time: "$TIME", Usage of " $ARCHIVE_FS "filesystem is beyond 80%. The used rate is :"$DFK"% now">>$LOG 
cd $ARCHIVE_DIR 
#Obtain file list that need to be remove 
FILE_LIST=`ls -lt|tail -600|awk ’{print $9}’` 
for FILE in $FILE_LIST 
do 
rm $FILE 2>>$LOG 
done 
#Start rman database 
su - oracle -c "$START_RMAN">>$LOG 
#Run the crosscheck operation 
su - oracle -c "$CMD_STR">>$LOG 
#Stop rman database 
su - oracle -c "$STOP_RMAN">>$LOG 
echo "……">>$LOG 
else 
exit 0 
fi 

 













本文转自东方之子736651CTO博客,原文链接: http://blog.51cto.com/ecloud/1362360,如需转载请自行联系原作者




相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
13 7
|
1天前
|
Oracle 关系型数据库 数据库
oracle数据库技巧
【10月更文挑战第25天】oracle数据库技巧
9 6
|
1天前
|
存储 Oracle 关系型数据库
Oracle数据库优化策略
【10月更文挑战第25天】Oracle数据库优化策略
9 5
|
8天前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
10天前
|
监控 Oracle 关系型数据库
Oracle数据库性能优化
【10月更文挑战第16天】Oracle数据库性能优化是
13 1
|
18天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
78 6
|
16天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
50 3
Mysql(4)—数据库索引
|
18天前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
57 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
1天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
14 2
|
4天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
19 4

推荐镜像

更多