首先请DBA团队分析oracle数据库的日志,经DBA分析得知数据库有两个控制数据库资源的进程在20:06时hang了大概几十秒,oracle出于数据保护的机制便重启了数据库。然后从操作系统层面分析在20:06时操作系统的资源使用情况。
Oracle数据库发生重启。
首先请DBA团队分析oracle数据库的日志,经DBA分析得知数据库有两个控制数据库资源的进程在20:06时hang了大概几十秒,oracle出于数据保护的机制便重启了数据库。
然后从操作系统层面分析在20:06时操作系统的资源使用情况。
从nmon的数据中可以得知CPU在全天使用率都很低,都低于30%,可见CPU使用情况正常。
分析内存的数据可知全天内存使用率并不高,基本稳定在80%以内,在20:06之前的一段时间,有计算内存增长情况,这和当时处理的业务相关。(注:nmon采样点是6分钟采一个点并取平均值)
再分析内存的换页,从图可以见看到,在20:06时产生了大量的换页,当瞬间产生大量换页时说明有应用程序在短时间内申请了大量的内存,同时内存不足并启动lrud进程进行换页,换页带来的问题就是会影响系统的性能。
由于nmon采样的颗粒度比较粗,而oswatcher监控的采样间隔是20秒,因此分析oswatcher的数据,主要分析vmstat的输出,从vmstat的输出可以看到当时free还有3103118个内存页面(每个页面4KB),即12GB内存,而此时有746个pi和16989个po。因此可见在内存有剩余的情况下产生了换页。
下面分析在内存有剩余的情况下产生换页的原因,AIX的内存管理机制是把内存分为多个内存池(memory pool),这个系统有90GB内存,120个逻辑CPU。AIX会按8个逻辑CPU分一个内存池的划分机制,把内池划分为多个内存池。即这个系统它的内存池有15个:
为了优化内存的管理,在AIX 6.1时引入了numperm_global参数,这个参数设置为0时代表在换页时以内存池为单位去判断是否把计算内存换出,这个参数设置为1时代表在换页时以全局为单位去判读是否把计算内存换出。
6100-07-sp5)numperm_global这个参数设置为1会触发操作系统的bug,即当系统的PIN住的64KB页面达到maxpin%(80%)时,换页程序在换取4KB页面时,即使有文件系统缓存剩余(大于minperm,缺省为物理内存的3%)的情况下,也只换取计算内存页面,而计算内存页面被换出会对性能有很大的影响并有可能导致应用程序缓慢或者数据库挂起。
一般来说,大量PIN 64KB内存页面应用程序并不多,但是Oracle数据库出于提高性能的原因,一般都会将SGA和PGA PIN在内存里。如果SGA和PGA加起来接近maxpin%,那么在numperm_global设置为1的时候就有很大的可能触发上面提到的bug,导致early paging问题。
经检查发现numperm_global这个参数设置的为1,因此在oracle有大量64KB页面申请时,64KB页面达到maxpin%(80%),这时即使有12GB剩余的内存,此时也只会把计算内存换出去,这样导致系统在20:06左右操作系统出现性能问题。
基于上面分析,建议如下:
方案1:作为规避方案,把numperm_global修改为0,并重启生效。
方案2:为了彻底解决early paging的问题,IBM在AIX 6.1 TL09 SP01版本中发布了补丁IV44998。在此种情况下,建议升级操作系统并启用numperm_global参数来达到优化内存的分配机制的目的。
方案3:将Oracle SGA使用的内存指定为16MB页面,从而避免大量的64KB 页面被PIN。
【sqlserver数据库清理日志空间不足】内容共 100 条
SQLServer数据库日志会越来越大,尤其是服务器空间紧张时,你不得不收缩日志来放出部分空间,下面说方法。版本: SQLserver 2008 R2方法: 新建查询,执行脚本。脚本如下注意 红色部分需要修改成相应的数据库名. 绿色部分需要修改成相应数据库日志名称USE [USRINF]G
有时候当系统运行时间比较长的时候,我们把备份的数据库还原的时候发现,数据库中数据文件和日志文件变的好大,特别是日志文件。现在给大家介绍如何清理SQLServer数据库日志;
定期自动清理数据库日志文件数据库日志文件是随着时间增长而增长的,如果长时间不清理,文件会变得特别大,因此需要定期清空,但是日至文件是恢复数据库的重要依据,不用日志文件也是不明智的。手工清除单个数据库的还好说,但数据库多了,或者临时没有来得及清理,可能硬盘空间就会占满了,影响访问。因此设置自动清理数据库日志文件还是比较实用的。手动清理方法:右键单击需要清理的数据库,选择“属性”,在“选项”卡上,把故
SQL2000删除数据库日志有两种方法一种方法:清空日志。1.打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件, 在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 另一种方法有一定的风险性,因为SQL SERVER
您还在为庞大的数据库日志发愁吗?只要收缩一下数据库就能解决这个问题! 在进行该操作的时候最好先完全备份一下数据库,然后再进行操作,这是个好习惯以免遇到不必要的麻烦,也可以不备份的。USE
Sqlserver 数据库因长时间使用,错误日志过大导致硬盘空间不足。解决办法:清除Sqlserver错误日志1.新建查询 2.选择master3.执行 sp_cycle_errorlog六次用来不断的切换错误日志,直到清空为止。
方法一、重启库 库重启时,Smon进程会完成临时段释放,TEMP表空间的清理操作,不过很多的时侯我们的库是不允许down的,所以这种方法缺少了一点的应用机会,不过这种方法还是很好用的。 法二、Metalink给出的一个方法
1. 查看日志信息 DACC LOGINFO(‘数据库名称’) Status=0:该状态的日志代表已经备份到磁盘的日志文件。 Status=2: 该状态是日志还没有备份。这样的状态下日志时无法减小的。 2. 查看日志截断延迟的原因 活跃(active)的日志无法通过收缩来截断,有各种原因会使日志截断延迟,具体表现就是事务日志的物理文件无法通过截断、收缩来减小,通
Studio打开数据库管理。2.如下图,点击连接登陆数据库3.如下图,打开数据库属性窗口4.如下图,更改数据库恢复模式5.如下图,收缩数据库日志到这里已经完成了,数据库的日志收缩6.如下图,数据库恢复模式修改为完整
数据库的使用过程中,特别是频繁更新的系统中,会产生大量的日志文件。由于商业化的运作,我们的数据库都是有备份的,在隔一段时间之后,我们就可以把日志数据清除掉。由于现在很多时候我们使用的都是虚拟主机,空间商在安全策略上做了限制,导致没有办法清除我们的数据库日志。唯一的办法就是利用dbower的权限打开查询分析器,使用如下的Sql语句就可以清空并收缩你的数据库空间了:1.清空日志
什么是存储过程?有哪些优缺点?
存储过程就像我们编程语言中的函数一样,封装了我们的代码(PLSQL、T-SQL)。
第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。 第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。
第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系: 关键字段 → 非关键字段x → 非关键字段y
上面的文字我们肯定是看不懂的,也不愿意看下去的。接下来我就总结一下:
什么是视图?以及视图的使用场景有哪些?
视图是一种基于数据表的一种虚表
有的时候,我们可能只关系一张数据表中的某些字段,而另外的一些人只关系同一张数据表的某些字段...
那么把全部的字段都都显示给他们看,这是不合理的。
我们应该做到:他们想看到什么样的数据,我们就给他们什么样的数据...一方面就能够让他们只关注自己的数据,另一方面,我们也保证数据表一些保密的数据不会泄露出来...
我们在查询数据的时候,常常需要编写非常长的SQL语句,几乎每次都要写很长很长....上面已经说了,视图就是基于查询的一种虚表,也就是说,视图可以将查询出来的数据进行封装。。。那么我们在使用的时候就会变得非常方便...
值得注意的是:使用视图可以让我们专注与逻辑,但不提高查询效率
我们来对比一下他们的区别:
4)表结构在,表内容要看where执行的情况
5)删除速度慢,需要逐行删除
不再需要一张表的时候,用drop
想删除部分数据行时候,用delete,并且带上where子句
保留表而删除所有数据的时候用truncate
索引是什么?有什么作用以及优缺点?
什么是索引【Index】
索引表把数据变成是有序的....
快速定位到硬盘中的数据文件...
需要注意的是:Oracle是自动帮我们管理索引的,并且如果我们指定了primary key或者unique约束,系统会自动在对应的列上创建索引..
什么时候【要】创建索引
什么时候【不要】创建索引
事务简单来说:一个Session中所进行所有的操作,要么同时成功,要么同时失败
ACID — 数据库事务正确执行的四个基本要素
一个支持事务(Transaction)中的数据库系统,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易。
举个例子:A向B转账,转账这个流程中如果出现问题,事务可以让数据恢复成原来一样【A账户的钱没变,B账户的钱也没变】。
* 我们来模拟A向B账号转账的场景 * A和B账户都有1000块,现在我让A账户向B账号转500块钱 <span>//JDBC默认的情况下是关闭事务的,下面我们看看关闭事务去操作转账操作有什么问题</span> 107,查询学过“李四”老师所教所有课程的所有同学的学号、姓名 118、查询如下课程平均成绩和及格率的百分数(用"1行"显示):
企业管理(001),马克思(002),UML (003),数据库(004) 119、查询不同老师所教不同课程平均分, 从高到低显示