Loading [MathJax]/jax/element/mml/optable/BasicLatin.js

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+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日志并进行多维度分析。
相关文章
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
214 28
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
【赵渝强老师】Oracle数据库的闪回表
本文介绍了Oracle数据库中的闪回表(Flashback Table)功能,它能够将表的数据快速恢复到特定时间点或系统改变号(SCN),无需备份。文章通过实战示例详细演示了如何使用闪回表恢复数据,包括授权、创建测试表、记录时间与SCN号、删除数据、启用行移动功能、执行闪回操作以及验证恢复结果等步骤。同时,还展示了如何通过触发器禁止插入操作,并在闪回过程中处理触发器的启用问题。文末附有视频讲解,帮助读者更好地理解闪回表的使用方法。
78 10
【赵渝强老师】Oracle数据库的闪回查询
本文介绍了Oracle数据库的闪回查询(Flashback Query)功能及其实际应用。闪回查询通过`AS OF`子句,结合时间戳或SCN号,可查询历史数据状态,帮助分析数据差异。文中通过具体示例演示了如何使用闪回查询:创建测试表、记录当前SCN号、更新数据并提交事务,最后通过闪回查询获取历史数据。附带的视频和代码块详细展示了操作步骤与结果。
【赵渝强老师】Oracle数据库的闪回技术
在Oracle数据库操作中,难免会遇到误删表或提交错误事务等问题,可能导致数据丢失甚至数据库停止运行。传统解决方法依赖备份恢复,但需提前准备正确备份。为此,Oracle提供了闪回技术,无需备份即可快速恢复数据。它支持7种类型的操作,如闪回查询、版本查询、表恢复等,能有效应对逻辑损坏和用户错误。闪回技术基于还原(undo)数据管理,启用自动管理后可实现高效恢复。
"深度剖析:Oracle SGA大小调整策略——从组件解析到动态优化,打造高效数据库性能"
【8月更文挑战第9天】在Oracle数据库性能优化中,系统全局区(SGA)的大小调整至关重要。SGA作为一组共享内存区域,直接影响数据库处理能力和响应速度。本文通过问答形式介绍SGA调整策略:包括SGA的组成(如数据缓冲区、共享池等),如何根据负载与物理内存确定初始大小,手动调整SGA的方法(如使用`ALTER SYSTEM`命令),以及利用自动内存管理(AMM)特性实现智能调整。调整过程中需注意监控与测试,确保稳定性和性能。
578 2
Oracle数据库可扩展性和性能
【7月更文挑战第6天】
169 7
达梦数据库与Oracle数据库:功能、性能和适用场景对比
数据库在现代信息技术领域中扮演着至关重要的角色。在企业级应用中,选择正确的数据库管理系统对于数据存储、处理和查询效率至关重要。本文将对比两个备受关注的数据库管理系统——达梦数据库和Oracle数据库,从功能、性能和适用场景等方面进行深入探讨,以帮助读者在选择合适数据库时做出明智的决策。
3164 1
Oracle优化01-引起数据库性能问题的因素
Oracle优化01-引起数据库性能问题的因素
206 0

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等