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日志并进行多维度分析。
相关文章
|
2天前
|
Oracle 安全 关系型数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法探讨
删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。
|
13天前
|
存储 Oracle 关系型数据库
Oracle同一台服务器创建多个数据库
【8月更文挑战第30天】在 Oracle 中,可在同一服务器上创建多个数据库。首先确保已安装 Oracle 软件并具有足够资源,然后使用 DBCA 工具按步骤创建,包括选择模板、配置存储及字符集等。重复此过程可创建多个数据库,需确保名称、SID 和存储位置唯一。创建后,可通过 Oracle Enterprise Manager 进行管理,注意服务器资源分配与规划。
26 10
|
21天前
|
存储 Oracle 关系型数据库
分享几个Oracle数据库日常维护中常见的问题
分享几个Oracle数据库日常维护中常见的问题
68 1
|
15天前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用问题之Oracle数据库是集群部署的,怎么进行数据同步
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
21天前
|
Oracle 关系型数据库 数据库
Oracle数据库备份脚本分享-Python
Oracle数据库备份脚本分享-Python
22 0
|
22天前
|
SQL 关系型数据库 MySQL
【揭秘】MySQL binlog日志与GTID:如何让数据库备份恢复变得轻松简单?
【8月更文挑战第22天】MySQL的binlog日志记录数据变更,用于恢复、复制和点恢复;GTID为每笔事务分配唯一ID,简化复制和恢复流程。开启binlog和GTID后,可通过`mysqldump`进行逻辑备份,包含binlog位置信息,或用`xtrabackup`做物理备份。恢复时,使用`mysql`命令执行备份文件,或通过`innobackupex`恢复物理备份。GTID模式下的主从复制配置更简便。
102 2
|
17天前
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!点击阅读原文完成实验就可获得一本日历哦~
|
21天前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
18天前
|
人工智能 小程序 关系型数据库
【MySQL】黑悟空都掌握的技能,数据库隔离级别全攻略
本文以热门游戏《黑神话:悟空》为契机,深入浅出地解析了数据库事务的四种隔离级别:读未提交、读已提交、可重复读和串行化。通过具体示例,展示了不同隔离级别下的事务行为差异及可能遇到的问题,如脏读、不可重复读和幻读等。此外,还介绍了在MySQL中设置隔离级别的方法,包括全局和会话级别的调整,并通过实操演示了各隔离级别下的具体效果。本文旨在帮助开发者更好地理解和运用事务隔离级别,以提升数据库应用的一致性和性能。
96 2
【MySQL】黑悟空都掌握的技能,数据库隔离级别全攻略
|
23天前
|
数据可视化 关系型数据库 MySQL
Mysql8 如何在 Window11系统下完成跳过密钥校验、完成数据库密码的修改?
这篇文章介绍了如何在Windows 11系统下跳过MySQL 8的密钥校验,并通过命令行修改root用户的密码。
Mysql8 如何在 Window11系统下完成跳过密钥校验、完成数据库密码的修改?

热门文章

最新文章

推荐镜像

更多