System表空间不足的报警问题浅析

废话不多说了,具体代码如下所示:

--SYSTEM表空间不足的报警
登录之后,查询,发现是sys.aud$占的地方太多。
SQL> select owner, segment_name, segment_type, sum(bytes)/1024/1024 space_m
  from dba_segments
  where tablespace_name = 'SYSTEM'
group by owner, segment_name, segment_type
having sum(bytes)/1024/1024 >= 20
order by space_m desc
;
 4  5  6  7
OWNER  SEGMENT_NAME   SEGMENT_TYPE SPACE_M
-------- ------------------------------- -------
SYS   AUD$       TABLE      4480
SYS   IDL_UB1$     TABLE       272
SYS   SOURCE$      TABLE       72
SYS   IDL_UB2$     TABLE       32
SYS   C_OBJ#_INTCOL#  CLUSTER      27
SYS   C_TOID_VERSION#  CLUSTER      24
6 rows selected.
SQL>
查看是哪个记得比较多。
col userhost format a30
select userid, userhost, count(1) from sys.aud$
where ntimestamp# >=CAST(to_date('2014-03-01 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)
group by userid, userhost
having count(1) > 500
order by count(1) desc
;
再继续找哪天比较多。
select to_char(ntimestamp#, 'YYYY-MM-DD') audit_date, count(1)
from sys.aud$
where ntimestamp# >=CAST(to_date('2014-03-01 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)
and userid = 'xxxx' and userhost = 'xxxx'
group by to_char(ntimestamp#, 'YYYY-MM-DD')
order by count(1) desc
;
select spare1, count(1) from sys.aud$
where ntimestamp# between CAST(to_date('2014-03-10 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)
and CAST(to_date('2014-03-11 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)
and userid = 'xxxx' and userhost = 'xxxx'
group by spare1
;
select action#, count(1) from sys.aud$
where ntimestamp# between CAST(to_date('2014-03-10 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)
and CAST(to_date('2014-03-11 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)
and userid = 'xxxx' and userhost = 'xxxx'
and spare1 = 'xxxx'
group by action#
order by count(1) desc
;
结果如下:
  ACTION#  COUNT(1)
---------- ----------
    101   124043
    100   124043
SQL>
其实是上次打开的audit一直没有关闭。
关闭:
SQL> noaudit session;
清空:
truncate table sys.aud$;
------------------------------------------------------------------------
实战
------------------------------------------------------------------------
--1,查询表空间占用情况
select dbf.tablespace_name as tablespace_name,
     dbf.totalspace as totalspace,
     dbf.totalblocks as totalblocks,
     dfs.freespace freespace,
     dfs.freeblocks freeblocks,
     (dfs.freespace / dbf.totalspace) * 100 as freeRate
     from (select t.tablespace_name,
     sum(t.bytes) / 1024 / 1024 totalspace,
     sum(t.blocks) totalblocks
     from DBA_DATA_FILES t
     group by t.tablespace_name) dbf,
     (select tt.tablespace_name,
     sum(tt.bytes) / 1024 / 1024 freespace,
     sum(tt.blocks) freeblocks
     from DBA_FREE_SPACE tt
     group by tt.tablespace_name) dfs
     where trim(dbf.tablespace_name) = trim(dfs.tablespace_name)
--2,查看哪里占的比较多 SYSTEM 为step1中查询 tablespace_name 内容
select owner, segment_name, segment_type, sum(bytes)/1024/1024 space_m
  from dba_segments
  where tablespace_name = 'SYSTEM'
group by owner, segment_name, segment_type
having sum(bytes)/1024/1024 >= 20
order by space_m desc
--3,查看是哪个记得比较多 count(1) 越大,说明占得比较多
select userid, userhost, count(1) from sys.aud$
where ntimestamp# >=CAST(to_date('2014-03-01 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)
group by userid, userhost
having count(1) > 500
order by count(1) desc
--4,再继续找哪天比较多 userid userhost 为上一步查询内容
select to_char(ntimestamp#, 'YYYY-MM-DD') audit_date, count(1)
from sys.aud$
where ntimestamp# >=CAST(to_date('2015-03-01 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)
and userid = 'userid' and userhost = 'userhost'
group by to_char(ntimestamp#, 'YYYY-MM-DD')
order by count(1) desc
;
select spare1, count(1) from sys.aud$
where ntimestamp# between CAST(to_date('2016-03-10 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)
and CAST(to_date('2016-12-11 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)
and userid = 'userid' and userhost = 'userhost'
group by spare1
;
--spare1 为上一步查询内容
select action#, count(1) from sys.aud$
where ntimestamp# between CAST(to_date('2016-03-10 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)
and CAST(to_date('2016-12-11 00:00:00', 'YYYY-MM-DD hh24:mi:ss') AS TIMESTAMP)
and userid = 'userid' and userhost = 'userhost'
and spare1 = 'Administrator'
group by action#
order by count(1) desc
--5,关闭seeion
noaudit session;
--6,清空:
truncate table sys.aud$; 

总结

以上所述是小编给大家介绍的System表空间不足的报警,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • System表空间不足的报警问题浅析

    废话不多说了,具体代码如下所示: --SYSTEM表空间不足的报警 登录之后,查询,发现是sys.aud$占的地方太多. SQL> select owner, segment_name, segment_type, sum(bytes)/1024/1024 space_m from dba_segments where tablespace_name = 'SYSTEM' group by owner, segment_name, segment_type having sum(bytes)/1

  • Oracle数据库自带表空间的详细说明

    需求: 需要整理现场用户创建的表空间以及其存储数据,进行规范化管理.在整理用户现场建立的表空间时,需要排除掉非用户创建的表空间,所有首先需要那些表空间是用户创建的,那些是Oracle自带的. 本机测试建立一个新库,发现自带表空间如下: 下面对每一个表空间进行简单说明(部分内容引自网络): 1.SYSAUX表空间 SYSAUX表空间在Oracle Database 10g中引入,作为SYSTEM表空间的辅助表空间.以前一些使用独立表空间或系统表空间的数据库组件现在在SYSAUX表空间中创建.SYS

  • Oracle数据库的实例/表空间/用户/表之间关系简单讲解

    完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例. 1) 数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等): 2) Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区. 在启动Oracle数据库服务器时,实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据文件.Oracle有一个很大的内存快,成为全局区(SGA

  • Oracle表空间与权限的深入讲解

    目录 表空间 表空间的典型应用 默认表空间 表空间查询命令 创建表空间 创建临时表空间 删除表空间 用户与表空间的关系 权限分类 系统权限 给用户授权 撤销用户权限 角色 查看权限 总结 表空间 表空间是数据库的逻辑划分,一个表空间只能属于一个数据库.所有的数据库对象都存放在指定的表空间中.但主要存放的是表,所以称作表空间. Oracle中很多优化都是基于表空间的设计理念而实现的,一个数据库可以包含多个表空间,一个表空间只能属于一个数据库.一个表空间包含多个数据文件,一个数据文件只能属于一个表空

  • Oracle表空间管理和用户管理介绍

    目录 Oracle介绍 1. Oracle表空间 2. Oracle用户权限管理 3. 查看用户及权限信息 总结 Oracle介绍 Oracle(甲骨文)公司 1977年,三人合伙创办(Software Development Laboratories,SDL) 1979年,更名为Relational Software Inc.,RSI 1983年,为了突出核心产品 ,RSI更名为Oracle 2002年04月26日,启用"甲骨文"作为中文注册商标 1. Oracle表空间 表空间是O

  • 浅析mysql 共享表空间与独享表空间以及他们之间的转化

    innodb这种引擎,与MYISAM引擎的区别很大.特别是它的数据存储格式等.对于innodb的数据结构,首先要解决两个概念性的问题: 共享表空间以及独占表空间.什么是共享表空间和独占表空间共享表空间以及独占表空间都是针对数据的存储方式而言的.共享表空间:  某一个数据库的所有的表数据,索引文件全部放在一个文件中,默认这个共享表空间的文件路径在data目录下. 默认的文件名为:ibdata1  初始化为10M.独占表空间:  每一个表都将会生成以独立的文件方式来进行存储,每一个表都有一个.frm

  • Oracle表空间设置和管理浅析

    前言 表空间是 Oracle 特有的一种逻辑结构,是管理和组织 Oracle 数据文件一种方式,一个Oracle 数据库能够有一个或多个表空间,而一个表空间则对应一个或多个物理的数据库文件.Oracle 的表空间分为永久空间和临时表空间,同时又分为 smallfile tablespace和 bigfile tablespace.表空间管理是 Oracle dba的一项重要日常工作. 今天小编就从永久表空间管理和临时表空间管理两个维度,详细介绍 Oracle表空间管理的具体操作. 永久表空间管理

  • 使用zabbix监控oracle表空间的操作流程

    0.概述 zabbix是一款极其强大的开源监控工具,下面我分享下zabbix如何监控表空间,跟着这个思路,监控其他项都是类似操作. 前提条件是你已经有了zabbix server和zabbix agent,且zabbix agent与oracle数据库运行在一台机器上面. 1.在agent上面准备脚本 a.定义查表空间使用率的脚本 /home/oracle/get_tablespace_usage.sh #!/bin/bash # get tablespace usage source ~/.b

  • Linux下Oracle删除用户和表空间的方法

    本文实例讲述了Linux下Oracle删除用户和表空间的方法.分享给大家供大家参考,具体如下: 1.删除某个用户 SQL> conn /as sysdba Connected. SQL> drop user userName cascade; 用户已删除 如果用户无法删除,并报错: ERROR at line 1: ORA-01940: cannot drop a user that is currently connected 通过查看用户的进行,并kill用户进程,然后删除用户. SQL&

  • oracle创建表空间、授权、创建用户、导入dmp文件

    oracle创建表空间,授权,创建用户,导入dmp文件,具体详解如下所示: 1.创建表空间 Create tablespace bpm datafile 'D:\ORACLE11\ORADATA\ORCL\BPM.DBF' size 400M autoextend on Create tablespace lyoa datafile 'D:\ORACLE11\ORADATA\ORCL\LYOA.DBF' size 400M autoextend on Create tablespace kdb

随机推荐