oracle的oracle数据库日志查看的日志空间不足,可以进行什么操作?

首先请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)

  • 存储过程是一个预编译的代码块,执行效率比较高
  • 一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率
  • 每个数据库的存储过程语法几乎都不一样,十分难以维护(不通用)
  • 业务逻辑放在数据库上,难以迭代

第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。 第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。
第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系: 关键字段 → 非关键字段x → 非关键字段y

上面的文字我们肯定是看不懂的,也不愿意看下去的。接下来我就总结一下:

  • 首先要明确的是:满足着第三范式,那么就一定满足第二范式、满足着第二范式就一定满足第一范式
  • 第一范式:字段是最小的的单元不可再分
    • 学生信息组成学生信息表,有年龄、性别、学号等信息组成。这些字段都不可再分,所以它是满足第一范式的
  • 第二范式:满足第一范式,表中的字段必须完全依赖于全部主键而非部分主键。
    • 其他字段组成的这行记录和主键表示的是同一个东西,而主键是唯一的,它们只需要依赖于主键,也就成了唯一的
    • 学号为1024的同学,姓名为Java3y,年龄是22岁。姓名和年龄字段都依赖着学号主键。
  • 第三范式:满足第二范式,非主键外的所有字段必须互不依赖
    • 就是数据只在一个地方存储,不重复出现在多张表中,可以认为就是消除传递依赖
    • 比如,我们大学分了很多系(中文系、英语系、计算机系……),这个系别管理表信息有以下字段组成:系编号,系主任,系简介,系架构。那我们能不能在学生信息表添加系编号,系主任,系简介,系架构字段呢?不行的,因为这样就冗余了,非主键外的字段形成了依赖关系(依赖到学生信息表了)!正确的做法是:学生表就只能增加一个系编号字段。

什么是视图?以及视图的使用场景有哪些?

视图是一种基于数据表的一种虚表

  • (2)视图建立在已有表的基础上, 视图赖以建立的这些表称为基表
  • (3)向视图提供数据内容的语句为 SELECT 语句,可以将视图理解为存储起来的 SELECT 语句
  • (4)视图向用户提供基表数据的另一种表现形式
  • (5)视图没有存储真正的数据,真正的数据还是存储在基表中
  • (6)程序员虽然操作的是视图,但最终视图还会转成操作基表
  • (7)一个基表可以有0个或多个视图

有的时候,我们可能只关系一张数据表中的某些字段,而另外的一些人只关系同一张数据表的某些字段...

那么把全部的字段都都显示给他们看,这是不合理的。

我们应该做到:他们想看到什么样的数据,我们就给他们什么样的数据...一方面就能够让他们只关注自己的数据,另一方面,我们也保证数据表一些保密的数据不会泄露出来...

我们在查询数据的时候,常常需要编写非常长的SQL语句,几乎每次都要写很长很长....上面已经说了,视图就是基于查询的一种虚表,也就是说,视图可以将查询出来的数据进行封装。。。那么我们在使用的时候就会变得非常方便...

值得注意的是:使用视图可以让我们专注与逻辑,但不提高查询效率

我们来对比一下他们的区别:

  • 4)表结构在,表内容要看where执行的情况

  • 5)删除速度慢,需要逐行删除

  • 不再需要一张表的时候,用drop

  • 想删除部分数据行时候,用delete,并且带上where子句

  • 保留表而删除所有数据的时候用truncate

索引是什么?有什么作用以及优缺点?

什么是索引【Index】

  • (1)是一种快速查询表中内容的机制,类似于新华字典的目录
  • (2)运用在表中某个些字段上,但存储时,独立于表之外

索引表把数据变成是有序的....

快速定位到硬盘中的数据文件...


  • (1)位于每个表中,但表面上看不见,例如:desc emp是看不见的
  • (2)只有在select中,显示写出rowid,方可看见
  • (3)它与每个表绑定在一起,表亡,该表的rowid亡,二张表rownum可以相同,但rowid必须是唯一的
  • (4)rowid是18位大小写加数字混杂体,唯一表代该条记录在DBF文件中的位置
  • (5)rowid可以参与=/like比较时,用''单引号将rowid的值包起来,且区分大小写
  • (6)rowid是联系表与DBF文件的桥梁
  • (1)索引一旦建立,** Oracle管理系统会对其进行自动维护**, 而且由Oracle管理系统决定何时使用索引
  • (2)用户不用在查询语句中指定使用哪个索引
  • (3)在定义primary key或unique约束后系统自动在相应的列上创建索引
  • (4)用户也能按自己的需求,对指定单个字段或多个字段,添加索引

需要注意的是:Oracle是自动帮我们管理索引的,并且如果我们指定了primary key或者unique约束,系统会自动在对应的列上创建索引..

什么时候【要】创建索引

  • (2)表很大(记录超多),记录内容分布范围很广
  • (3)列名经常在 WHERE 子句或连接条件中出现

什么时候【不要】创建索引

  • (2)表很小(记录超少)
  • (3)列名不经常作为连接条件或出现在 WHERE 子句中
  • 索引加快数据库的检索速度
  • 索引降低了插入、删除、修改等维护任务的速度(虽然索引可以提高查询速度,但是它们也会导致数据库系统更新数据的性能下降,因为大部分数据更新需要同时更新索引)
  • 唯一索引可以确保每一行数据的唯一性,通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能
  • 索引需要占物理和数据空间
  • 唯一索引:唯一索引不允许两行具有相同的索引值
  • 主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的,并且不能为空
  • 聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个
  • 非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。可以有多个,小于249个

事务简单来说:一个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、查询不同老师所教不同课程平均分, 从高到低显示

我要回帖

更多关于 oracle数据库日志查看 的文章

 

随机推荐