`

表空间增长率监控脚本(原创)

 
阅读更多

由于最近业务量大增大,导致表空间增长速度变得很快,客户也开始担忧表空间的增长率。因此也提出了每日监控表空间增长量的需求。笔者根据客户的需求,在这里写了个简单的脚本,主体思想是通过,将每日查询到的表空间增长率插入到自己建的表中,然后通过构造查询语句,反映出表空间的增长率,具体实施不走如下

在数据主机上建立tbs_usage表反映数据中数据文件的使用量,其中tbs_timeid为该表主键,作为唯一标识当日数据库表空间的id构造tbs_timeid为df.tablespace_name||'-'||(sysdate)
1、pansky用户作为日常管理,目前主要用户表空间数据量的监控
SQL> create user pansky identified by pansky default tablespace users quota 50M on users;
User created.


SQL> grant create session to pansky;
Grant succeeded.


SQL> grant create table to pansky;
Grant succeeded.


SQL> grant select on dba_data_files to pansky;
Grant succeeded.


SQL>  grant select on dba_free_space to pansky;
Grant succeeded.


2、以pansky用户创建tbs_usage表
create table tbs_usage
as
SELECT df.tablespace_name||'-'||(sysdate) tbs_timeid ,df.tablespace_name||'-'||(sysdate-1) ys_tbs_timeid,df.tablespace_name,
COUNT(*) datafile_count,
ROUND(SUM(df.BYTES) / 1048576) size_mb,
ROUND(SUM(free.BYTES) / 1048576, 2) free_mb,
ROUND(SUM(df.BYTES) / 1048576 - SUM(free.BYTES) / 1048576, 2) used_mb,
ROUND(MAX(free.maxbytes) / 1048576, 2) maxfree,
100 - ROUND(100.0 * SUM(free.BYTES) / SUM(df.BYTES), 2) pct_used,
ROUND(100.0 * SUM(free.BYTES) / SUM(df.BYTES), 2) pct_free,(sysdate) time
FROM dba_data_files df,
(SELECT tablespace_name,
file_id,
SUM(BYTES) BYTES,
MAX(BYTES) maxbytes
FROM dba_free_space
GROUP BY tablespace_name, file_id) free
WHERE df.tablespace_name = free.tablespace_name(+)
AND df.file_id = free.file_id(+)
GROUP BY df.tablespace_name
ORDER BY 8;


3、创建主键约束
alter table tbs_usage add constraint tbs_usage_pk_tbs_timeid primary key(tbs_timeid);

4、在crontab中运行每日7点30分更新数据库表空间信息的脚本update_tbs_info.sh
30 07 * * * /oracle10g/update_tbs_info.sh
其中 update_tbs_info.sh脚本内容如下
#!/bin/ksh
#FileName: update_tbs_info.sh
#CreateDate:2011-10-09
#Discription:take the basic information to  insert into  the table tbs_usage
PATH=/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/oracle/bin:/home/                                                                   oracle/bin:/oracle10g/app/oracle/product/10.2.0/db_1/bin;export PATH

ORACLE_SID=zgscdb1;export ORACLE_SID
ORACLE_BASE=/oracle10g/app/oracle;export ORACLE_BASE
ORACLE_HOME=/oracle10g/app/oracle/product/10.2.0/db_1;export ORACLE_HOME
PATH=$ORACLE_HOME/bin:$PATH;export PATH

date >> /oracle10g/log/update_tbs_info.log
sqlplus pansky/pansky <<EOF  >> /oracle10g/log/update_tbs_info.log 2>&1
insert into pansky.tbs_usage
SELECT df.tablespace_name||'-'||(sysdate) tb_timeid,df.tablespace_name||'-'||(sysdate-1) y                                                                   s_tb_timeid,df.tablespace_name,
COUNT(*) datafile_count,
ROUND(SUM(df.BYTES) / 1048576) size_mb,
ROUND(SUM(free.BYTES) / 1048576, 2) free_mb,
ROUND(SUM(df.BYTES) / 1048576 - SUM(free.BYTES) / 1048576, 2) used_mb,
ROUND(MAX(free.maxbytes) / 1048576, 2) maxfree,
100 - ROUND(100.0 * SUM(free.BYTES) / SUM(df.BYTES), 2) pct_used,
ROUND(100.0 * SUM(free.BYTES) / SUM(df.BYTES), 2) pct_free,sysdate time
FROM dba_data_files df,
(SELECT tablespace_name,
file_id,
SUM(BYTES) BYTES,
MAX(BYTES) maxbytes
FROM dba_free_space
GROUP BY tablespace_name, file_id) free
WHERE df.tablespace_name = free.tablespace_name(+)
AND df.file_id = free.file_id(+)
GROUP BY df.tablespace_name
ORDER BY 8;
commit;
EOF
echo >> /oracle10g/log/update_tbs_info.log


4、查询数据库表空间使用情况的SQL,下例可查询出2011-10-08的表空间使用情况以及相较于2011-10-09日的表空间增长量(MB),并根据pct_used降序排列。

Set linesize 150
Col tablespace_name for a22
select a.tablespace_name,a.datafile_count,a.size_mb,a.free_mb,a.used_mb,a.maxfree,a.pct_used,a.pct_free,to_char(a.time,'yyyy-mm-dd hh24:mi') time,(a.USED_MB-b.USED_MB) increase_mb from pansky.tbs_usage a,pansky.tbs_usage b
where a.YS_TBs_TIMEid= b.TBs_TIMEid
and a.time>=to_date('2011-11-02','yyyy-mm-dd') and a.time< to_date('2011-11-03','yyyy-mm-dd')  order by pct_used desc;


本文原创,转载请注明出处、作者

如有错误,欢迎指正

邮箱:czmcj@163.com

0
0
分享到:
评论

相关推荐

    oracle数据库表空间监控实用脚本

    ### Oracle数据库表空间监控实用脚本解析 #### 一、概览 Oracle数据库中的表空间是数据文件的逻辑容器,用于存储数据、索引等数据库对象。为了确保数据库的高效运行,对表空间进行监控至关重要。本文将详细介绍几...

    获取oracle表空间脚本

    ### 获取Oracle表空间脚本 #### 背景与需求 在进行数据库备份与恢复的过程中,经常需要获取当前Oracle数据库中的表空间信息及其创建脚本。这样做的目的是为了确保在恢复过程中能够快速重建原有的数据库环境,包括...

    Linux/Unix shell 脚本监控磁盘可用空间

    Linux下监控磁盘的空闲空间的shell脚本,对于系统管理员或DBA来说,必不可少。下面是给出的一个监控磁盘空间空间shell脚本的样本,供大家参考。  1、监控磁盘的空闲空间shell脚本 robin@SZDB:~/dba_scripts/...

    查看oracle表空间利用率的三个脚本

    在Oracle数据库管理中,了解和监控表空间的利用率是至关重要的任务之一,它直接关系到数据库性能、存储管理和数据安全。本文将详细解析三个用于查看Oracle表空间利用率的SQL脚本,这些脚本能帮助数据库管理员(DBA)...

    oracle常用监控脚本

    这类脚本用于检测索引使用、表空间使用、缓冲区命中率等,帮助进行性能调优。 9. **Backup and Recovery Monitoring**: 监控备份和恢复进程,确保数据的安全性和完整性。 10. **Database Health Check**: ...

    OGG简单监控脚本.zip

    4. **资源利用率**:监控脚本可能还会关注服务器资源,如CPU、内存、磁盘空间和网络带宽,确保它们在合理范围内,避免资源瓶颈影响OGG性能。 5. **事件触发警报**:当检测到异常情况时,脚本会发送通知,例如通过...

    Nagios监控脚本

    本压缩包包含的`check_cpu.sh`、`check_mem.sh`和`check_uptime.sh`是Nagios监控脚本,用于监测服务器的CPU使用率、内存使用情况以及系统运行时间(即系统负载)。 1. **CPU监控脚本 (check_cpu.sh)** - Nagios中...

    linux性能监控脚本

    这些脚本是经典工具,适用于监控Linux系统的不同性能指标,如流量、磁盘大小、CPU负载和已用磁盘空间。下面将详细解释每个脚本的功能以及它们在性能监控中的作用。 1. **getflowcount.sh**:这个脚本通常用于监控...

    查看表空间大小 sql 脚本

    以上SQL脚本为Oracle数据库管理员提供了强大的工具来监控和管理表空间。通过对这些脚本的理解和应用,可以有效地进行表空间容量规划、性能调优等工作,从而确保数据库系统的稳定运行。希望本文能对你有所帮助。

    tomcat监控脚本(支持windows、linux)

    【标题】"Tomcat监控脚本(支持Windows、Linux)"涉及到的是如何确保Tomcat服务器的稳定运行,通过自动化脚本来实现对服务器状态的实时监控,防止宕机情况的发生。这通常包括性能指标的采集、异常检测和自动处理机制。...

    ORACLE表空间的回收脚本.rar

    - 监控脚本执行期间的性能和空间变化,以防止数据库不可用或异常情况发生。 6. **优化表空间管理** - 定期进行空间审计,了解表空间的使用情况。 - 使用自动段空间管理(ASSM)以简化空间管理,自动处理碎片。 ...

    电脑屏幕实时监控脚本.py

    电脑屏幕实时监控脚本,可以实时监控电脑屏幕,可以调节监控频率等参数。

    jvm线程持续监控脚本

    jvm线程持续监控脚本

    oracledba日常监控脚本

    - **默认表空间**:每个用户的默认表空间信息。 - **临时表空间**:用户的临时表空间分配情况。 - **概要文件**:控制用户资源限制的概要文件设置。 - **创建时间**:记录用户账号的创建时间。 ### 7. 概要文件资源...

    Linux流量监控脚本 上下行流量监控shell脚本

    Linux流量监控脚本 上下行流量监控shell脚本

    Oracle性能监控脚本

    4. **表空间和数据文件状态**:监控数据文件的读写速度、空间使用,预防存储不足的问题。`dba_data_files`和`dba_free_space`视图可以提供这些数据。 5. **数据库参数**:检查并记录关键参数的值,如`pga_aggregate...

    NC6.5 数据库参考脚本及临时表空间配置.pdf

    根据提供的文件信息,本文将详细说明关于“NC6.5 数据库参考脚本及临时表空间配置”的知识点。 首先,文档标题“NC6.5 数据库参考脚本及临时表空间配置.pdf”指出了文件内容涉及三个方面:NC6.5数据库、参考脚本...

    redis主从切换监控脚本

    redis哨兵模式或redis一主多从,主从切换监控脚本

    oracle监控脚本

    oracle监控脚本

    python性能监控脚本

    APP测试过程中需要对监控脚本运行过程APP相关数据 ,通过python编写此监控装饰器,不需要修改相关数据的情况下,实现灵活监控;监控数据包括CPU,Memory,Net,功耗。

Global site tag (gtag.js) - Google Analytics