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

简介:

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日志并进行多维度分析。
相关文章
|
11天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
【Oracle】玩转Oracle数据库(一):装上去,飞起来!
51 7
|
29天前
|
Oracle 关系型数据库 数据库
Oracle数据库基本概念理解(3)
Oracle数据库基本概念理解(3)
18 2
|
11天前
|
SQL Oracle 关系型数据库
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
【Oracle】玩转Oracle数据库(七):RMAN恢复管理器
39 5
|
4天前
|
存储 Oracle 关系型数据库
Oracle的模式与模式对象:数据库的“城市规划师”
【4月更文挑战第19天】在Oracle数据库中,模式是用户对象的集合,相当于数据库的城市规划,包含表、视图、索引等模式对象。模式对象是数据存储结构,如表用于存储数据,视图提供不同查看角度,索引加速数据定位。良好的模式与模式对象设计关乎数据效率、安全和稳定性。规划时需考虑业务需求、性能、安全和可扩展性,以构建高效数据库环境,支持企业业务发展。
|
11天前
|
存储 SQL Oracle
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
35 7
|
Oracle 关系型数据库 数据库
|
SQL Oracle 关系型数据库
【Oracle】数据库hang 诊断
一 什么是数据库hang 1 用户不能登录数据库 2 数据库不能正常工作 3 select 1 from dual 不出结果 4 不能正常完成建表操作 二 数据库被锁住    1  一个或多个会话停止工作 三 如果得知数据库hang 或者被锁    1 测试...
807 0
|
1月前
|
Oracle 关系型数据库 数据库
|
2月前
|
开发框架 Oracle 关系型数据库
ASP.NET实验室LIS系统源码 Oracle数据库
LIS是HIS的一个组成部分,通过与HIS的无缝连接可以共享HIS中的信息资源,使检验科能与门诊部、住院部、财务科和临床科室等全院各部门之间协同工作。 
37 4
|
1月前
|
关系型数据库 分布式数据库 数据库
PolarDB PostgreSQL版:Oracle兼容的高性能数据库
PolarDB PostgreSQL版是一款高性能的数据库,具有与Oracle兼容的特性。它采用了分布式架构,可以轻松处理大量的数据,同时还支持多种数据类型和函数,具有高可用性和可扩展性。它还提供了丰富的管理工具和性能优化功能,为企业提供了可靠的数据存储和处理解决方案。PolarDB PostgreSQL版在数据库领域具有很高的竞争力,可以满足各种企业的需求。

热门文章

最新文章

推荐镜像

更多