-
数据库系统日志文件无法自动增长的后果
2014-02-27 18:30:16数据库系统日志文件无法自动增长昨天下午生产系统突然无法保存销售提单了,而且是全面爆发,所有用户都无法保存销售类单据了。事情比较紧急,所以公司的运维部门的电话很快就被打爆了。
我们马上检查了数据库服务器和应用服务器的网络状况及内存,cpu使用状况等等,发现这些都正常,于是我们又检查了数据库的文件大小及磁盘空间是否够用,日志
文件增长情况等等,也毫无头绪。
在这个时候我们想起在前几天从线上取了一个完整备份库恢复到了测试服务器上,并搭建了一个测试环境,测试时发现库存单据也无法进行保存。当时由于测试服
务器空间有限,急需将测试库的数据清理一部分,所以我们就将所有数据量比较大的表列出来了,并首先将库存单据明细表和主表给清除了一部分数据,然后测试系统
中的库存单据又可以保存了。
于是我们初步断定应该和数据库文件的空间大小有关系,经过查看系统日志发现日志果然存在错误信息,数据库日志自动增长时,分配日志空间失败。我们现在的
日志文件已经有80G了,数据库日志文件增长为每次增长10%,并且不限制大小。于是我们的DBA尝试将按照比例增长改为每次固定增长512MB,结果这次系统分配日志
文件空间就可以成功了。
这样销售单据也可以重新保存,所以业务操作都ok了。可是为什么按照比例增长日志空间就会失败,而按照固定的大小增长就没有问题呢,我们排除了磁盘坏道,
空间不足,网络传输失败,IO瓶颈等等原因,一直无法给出合理的解答。求助基础架构的同事也没有结果,百度和google也没有找到合理的解释。
但是由于日志文件自动增长分配空间失败引起的后果的确是非常的严重,让我们切实感受到了数据库维护的重要性。
-
数据库系统日志的处理和作用
2013-01-07 14:09:27--内存大小,cpu速度,磁盘速度,磁盘大小这四个因素哪个对数据库系统来说最重要?也就是说哪个因素是数据库性能的瓶颈? 其实是磁盘速度。数据库的作用就是把磁盘中东西读到内存中然后处理完毕后提交上去,操作...--内存大小,cpu速度,磁盘速度,磁盘大小这四个因素哪个对数据库系统来说最重要?也就是说哪个因素是数据库性能的瓶颈?
其实是磁盘速度。数据库的作用就是把磁盘中东西读到内存中然后处理完毕后提交上去,操作系统能管理的内存也就是几GB,但是超过最大内存容量的数据库很普遍,所以瓶颈还是在磁盘上面。
sqlserver数据库存放数据用的是页,每8个连续的页叫做一个盘区,每页有若干个数据行。sqlserver每次读8页,这样减少了读盘的次数,读上来后放入内存缓存,sqlserver中一个页是8kb,页与页之间形成一个双向链表,首尾相连。
--数据库系统日志作用:怎样恢复数据的?里面都记录了些什么东西?
记录数据操作和被操作的数据,一般来说数据文件大于日志文件,插入或是删除操作时,日志中不但要记录操作还要记录数据,如果专门是插入的话,而且如果更新的次数太多的话,那么数据文件不会怎么改变,但是日志文件会越来越大,sqlserver采用归档模式,用5个日志文件来记录,如果5个都记录满了的话,就开始覆盖第一个日志文件,继续覆盖的方法重新存储这5个日志。
修改数据库时候,客户端发送一个update命令,数据库服务器收到update请求,数据库引擎首先会把表里面的数据先按照8页一个盘区的方式读到缓存里面,读入缓冲区后,就要在硬盘的日志文件中记录数据修改的操作过程以及原始参数,然后根据客户端的要求修改缓冲区中的数据,最后检查点程序向数据库中写入已经提交的事务(一次或者多次数据的修改,也就是批处理数据的修改,这样减少写盘的次数,提高效率)。如果内存里面的数据经过了修改,但是没有写入磁盘,也就是没有和磁盘里面的数据同步,这就是脏数据了。
当你的数据在内存当中但是还没有写入硬盘的数据库中的时候,突然断电了,假如这时候有个银行帐户的转帐,如果发生这种事情的话,银行系统一般如何处理这种情况呢?以前是通过填写单子的方式来保证避免这种问题,现在都是通过日志来保证的,因为先是写入日志,然后才在内存中修改数据,日志中有个叫做检查点的东西,这个checkpoint后面的数据为脏数据块,证明没有写入硬盘,下一次启动系统后,会检查日志中的脏数据块记录,然后把他们再重新作一遍。
Oracle中用的是还原模式,不是归档模式,如果执行delete from删除的话,如果是完全还原模式的话,删除的所有数据都必须记录日志,sqlserver中全表的删除是不写日志的,这是简单的还原模式,无法还原了。
转自:http://hi.baidu.com/zhangxuan1224/blog/item/e812e2f2ac96ef1bb07ec585.html -
触发器实现数据库系统日志功能
2012-12-22 16:01:49各位大侠,问题是这样的,我的一个数据库里面有一张系统操作日志表,用于记录数据库的改变, 当数据库的某个字段的值改变时,系统操作日志表里面就记录此次数据库操作的数据表名称,字段名称,字段改变之前的值,... -
mysql数据库日志_02. MySQL数据库的日志系统
2021-01-18 18:26:45要了解数据库的日志系统首先得知道其存在的必要性:数据库事务的ACID中的Durability-持久性就是依靠日志系统来实现的日志模块:redo-log(InnoDB特有)当数据库引擎InnoDB从服务层接收到一条更新语句,InnoDB 引擎就会...要了解数据库的日志系统首先得知道其存在的必要性:
数据库事务的ACID中的Durability-持久性就是依靠日志系统来实现的
日志模块:redo-log(InnoDB特有)
当数据库引擎InnoDB从服务层接收到一条更新语句,InnoDB 引擎就会先把记录写到 redo log中并更新到内存中(效率非常高),并在空闲的时候将数据写入到磁盘中(此时才是实际更新)
值得注意的是 InnoDB 的 redo-log 记录的数据有限,当超过大小之后会先等日志写入到磁盘释放出一部分空间后才能继续写入到redo-log日志文件中
虽然redo-log 记录的数据有限但依旧可以保留大量数据,当数据库发生异常重启时,依旧可以通过redo-log恢复数据而不用担心数据写入磁盘过程中发生异常而产生的数据丢失
日志模块:bin-log(存在于server层 MySQL自带)
最开始 MySQL 里并没有 InnoDB 引擎。MySQL自带的引擎是 MyISAM。
bin-log是记录着mysql所有事件的操作,可以通过bin-log做完整恢复,因此当你不小心删库了也可以通过bin-log日志系统恢复数据,可以基于时间点恢复也可以基于位置恢复。你也可以利用二进制日期进行远程复制,通过主机上的二进制日志文件,将数据更改同步到备机。
值得注意的是 MyISAM 的bin-log日志系统并没有 crash-safe 能力,这也是 InnoDB 引入redo-log日志系统的原因。
bin-log日志文件没有大小限制,是可以线性增长的。当一个文件满了,会重新创建一个日志文件。一般情况下我们安装mysql之后binary log二进制日志并没有开启,需要我们自行开启。 (具体开启语句以及恢复数据语句可以自行百度查到)
日志的两阶段提交
上面我们讲了数据库存在的两种日志而其中一种日志不具有crash-safe 能力,那么问题来了:当发生数据库异常重启时,redo-log记录的数据比bin-log记录的数据多怎么办?
为了保证日志一致性需要引入事务控制,即日志的两阶段提交
可以看到 在最后三步 写入redo-log先prepare,然后写bin-log,最后提交事务。
当然MySQL还有很多其他的日志,这里只讲解了常用的两种,其余日志可以自行查阅学习
-
系统日志及数据库日志
2020-10-30 11:03:31数据库日志 [root@rac1 ~]# find /u01/app/ -name alert*.log 节点的 /u01/app/11.2.0/grid/log/rac1/alertrac1.log 升级的 /u01/app/oracle/product/11.2.0/db_1/log/diag/rdbms/dbua0/DBUA0/trace/alert_DBUA0.log...数据库日志
[root@rac1 ~]# find /u01/app/ -name alert*.log
节点的
/u01/app/11.2.0/grid/log/rac1/alertrac1.log
升级的
/u01/app/oracle/product/11.2.0/db_1/log/diag/rdbms/dbua0/DBUA0/trace/alert_DBUA0.log
数据库的
/u01/app/oracle/diag/rdbms/racdb/racdb1/trace/alert_racdb1.log
asm的
/u01/app/grid/diag/asm/+asm/+ASM1/trace/alert_+ASM1.log
oracle 下的alert日志
$ORACLE_BASE/diag/rdbms/orcl/orcl1/trace/alertorcl1.log
grid 下的 alert 日志
$ORACLE_HOME/log/rac1/alertrac1.log
css的日志
$ORACLE_HOME/log/rac1/cssd/cssd.log ocssd.log
crs的日志
$ORACLE_HOME/log/rac1/crsd/crsd.log
ohas的日志
$ORACLE_HOME/log/rac1/ohasd/ohasd.log
evm的日志
$ORACLE_HOME/log/rac1/evmd/evmd.log
系统日志
日志文件的默认路径是:/var/log
下面是几个重要的日志文件的路径及其包含的信息:/var/log/syslog
:它和/etc/log/messages
日志文件不同,它只记录警告信息,常常是系统出问题的信息。
/var/log/messages
:包括整体系统信息,其中也包含系统启动期间的日志。此外,还包括mail,cron,daemon,kern和auth等内容。/var/log/user.log
:记录所有等级用户信息的日志。/var/log/auth.log
:包含系统授权信息,包括用户登录和使用的权限机制等。/var/log/daemon.log
:包含各种系统后台守护进程日志信息。/var/log/kern.log
:包含内核产生的日志,有助于在定制内核时解决问题。 -
数据库归档日志
2019-10-22 17:13:33其对数据库备份和恢复有下列用处: 数据库后备以及在线和归档日志文件,在操作系统和磁盘故障中可保证全部提交的事物可被恢复。 在数据库打开和正常系统使用下,如果归档日志是永久保存,在线后备可以进行和使用。 ... -
数据库的日志
2019-06-02 14:01:00事务日志是数据库的重要组件,如果系统出现故障,则可能需要使用事务日志将数据库恢复到一致状态。删除或移动事务日志以前,必须完全了解此操作带来的后果。事务日志支持以下操作:恢复个别的事务。在SQLServer启动... -
oracle 数据库归档日志
2018-09-11 09:23:04数据库归档日志 在系统创建归档路径mkdir /u01/arch 修改数据库归档日志的路径参数alter system set log_archive_dest_1='location=/u01/arch' scope=spfile; show parameter arch可查看归档日志文件 修改... -
C#+SQL Server数据库系统操作日志的实现完整案例
2014-03-15 11:05:15在开发数据库系统时,通常需要添加系统日志功能。系统日志是用来记录用户、管理员等对系统的操作记录,系统操作日志的实现方式有很多,本文基于C#和SQL Server数据库,通过设计日志记录表、编写操作记录存储过程、... -
数据库日志系统原理详解
2016-04-14 13:17:59日志系统原理 作者:杨万富 一:事务系统1.事务的工作模型 事务必须满足原子性,所封装的操作或者全做或者全不做。事务管理系统需要做两件事,1)让日志系统产生日志,2)保证多个事务并发执行,满足ACID特性。... -
snmp获取交换机日志_日志审计系统和数据库审计系统的区别
2020-12-08 13:49:0901、日志审计系统系统日志系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。系统日志包括系统日志、... -
Oracle系统查询很慢或索引慢 数据库清理日志
2019-02-21 17:54:08系统查询很慢或索引慢 Enter user-name: conn /as sysdba Enter password: 3、打开数据库 SQL> alter database open; alter database open 4、查日志 SQL> select group#,sequence#,... -
深入理解数据库日志系统原理
2016-02-29 21:20:30事务管理系统需要做两件事,1)让日志系统产生日志,2)保证多个事务并发执行,满足ACID特性。 事务系统工作模型,见图1。 如图,事务管理管理器控制查询处理器的执行、控制日志系统以及缓冲区。日志在... -
mysql备份数据库事务日志_教你备份与恢复数据库(2)事务日志
2021-01-28 12:55:47事务日志是数据库的重要组件,如果系统出现故障,则可能需要使用事务日志将数据库恢复到一致状态。 删除或移动事务日志以前,必须完全了解此操作带来的后果。事务日志支持以下操作:(1) 恢复个别的事务。(2) 在 SQL ... -
MYSQL数据库日志
2020-08-29 11:11:20目录 1.日志介绍 2. 日志作用 3. 日志分类 Mysql数据库日志 4 .日志讲解 ...一、innodb引擎中的redo/undo log是什么 ...5. 日志原理 ...延迟的数据库修改redo ...数据库都具有事务日志,用于记录所有事务以及每个事务对数据 -
Oracle数据库归档日志满后造成系统宕机解决一例
2017-11-26 15:38:48提示归档日志写入失败,检查服务器发现磁盘空间满了,于是清理磁盘空间后,重启数据库问题解决。随后把服务器磁盘空间扩容,直接给了oracle数据所在盘1TB的磁盘空间。 第二次又出现此问题,经过仔细检查,并与同 -
MySQL 的数据库错误日志设置
2019-04-29 14:51:461. 数据库错误日志设置 概述 这篇文章主要讨论怎样配置MySQL 的诊断日志信息.还有对于设置错误信息的字符集和语言设置. 这些错误日志包含了MySQL 启动和关闭的次数.也包含了错误,警告,和注释的相关诊断信息. MySQL ... -
数据库归档日志管理方案
2009-09-29 19:01:00数据库归档日志管理方案 需求描述: 由于使用了LOGRETAIN=ON数据库配置,所以数据库日志文件将不会被数据库从活动日志目录中...此时,系统中将会存在三种类型的日志文件: 活动日志:该日志包含尚未提交或回滚的事务 -
SQL Server数据库还原时,报错:“尚未备份数据库的日志尾部”
2019-07-29 13:35:10问题描述:进行数据库还原时,报错:“尚未备份数据库的日志尾部”。...系统提示进行备份或覆盖日志。 解决方法:由于本次不需要后续产生的日志部分,直接覆盖:在选项中,勾选覆盖现有数据库。 ... -
checkpoint执行太频繁导致数据库日志报错
2017-12-18 14:59:02数据库系统日志报错如下所示: checkpoints are occurring too frequently (3 seconds apart),Consider increasing the configuration parameter "max_wal_size" 解决方案: 首先看一下参数checkpoint_warning的... -
清除系统日志及数据库(sql server)日志最佳实践
2016-06-21 11:19:00在一个项目中遇到的问题:系统日志过大,后来用delete语句删除了(相当的慢),结果数据库日志又变成很大了(差不多10G),所以又得把数据库日志删除。 方法: --备份系统中的部份日志--SELECT * INTO #keep FROM ... -
达梦数据库SQL日志功能的使用
2020-03-09 14:17:16在项目当中遇到性能问题时,有个很重要的优化手段是去检查SQL的执行...DM数据库控制SQL日志是通过一个系统参数,以及一个ini文件动态控制的 DM数据库开启SQL日志的方法: SP_SET_PARA_VALUE(1,‘SVR_LOG’,1); 关... -
ORACLE数据库归档日志满后造成系统宕机的处理方法
2014-06-24 20:47:16提示归档日志写入失败,检查服务器发现磁盘空间满了,于是清理磁盘空间后,重启数据库问题解决。随后把服务器磁盘空间扩容,直接给了oracle数据所在盘1TB的磁盘空间。 第二次又出现此问题,经过仔细检查,并与同事... -
个人日志管理系统--数据库实验数据库设计
2010-06-26 13:39:32数据库实验 个人日志管理系统 mdb格式的 另外内含数据库开发文档 -
如何查看数据库alert日志文件
2020-12-17 08:29:58本文将详细介绍下查看操作系统版本/查看预警日志文件(alert_sid.log)的位置/查看alert中的内容/看看数据库有哪些 可爱的ORA- 错误吧等等,感兴趣的你可以参考下 1、查看操作系统版本 SQL> select * from v$... -
尚未备份数据库的日志尾部
2018-08-28 17:25:00原因参考这个解释:“这是因为还原的数据库随后后又产生了新的日志,所以按照默认设置的备份选项,系统将提示备份日志尾部以免造成事务中断。” 转载于:https://www.cnblogs.com/yanan7890/p/9549675.html... -
日志管理系统之保存日志到数据库
2016-10-24 17:14:14保存Web访问日志到数据库 Web项目可以通过log4j logback等技术实现保存访问日志到本地文件中,但是会在一些特殊的需求中会让我们保存用户访问日志到数据库中,此时我们可以通过拦截器来实现访问日志的保存。 目录 ...