`
lovejuan1314
  • 浏览: 336747 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle监视表空间,并自动增加数据文件脚本

阅读更多
--- 创建view

--- 百分比

create view tablespace_used_percent as
select useage from
(
select
a.tablespace_name,
a.file_name,
a.total "Total(MB)",
round(a.total-b.Free_Space) "Used(MB)",
round(((a.total-b.Free_Space)/a.total)*100,2) as useage,
a.auto_extend
from
(select
FILE_ID,
tablespace_name,
file_name,
bytes/(1024*1024) Total,
AUTOEXTENSIBLE auto_extend
from
dba_data_files ddf) a,
(select
file_id,
sum(bytes)/(1024*1024) Free_Space
from
dba_free_space
group by file_id) b
where
a.file_id=b.file_id
)
where tablespace_name = 'YOUR TABLESPACE NAME';


--- deails 
create view TABLESPACE_USAGE as
select
a.tablespace_name,
a.file_name,
a.total "Total(MB)",
round(a.total-b.Free_Space) "Used(MB)",
round(((a.total-b.Free_Space)/a.total)*100,2) "Used(%)",
a.auto_extend
from
(select
FILE_ID,
tablespace_name,
file_name,
bytes/(1024*1024) Total,
AUTOEXTENSIBLE auto_extend
from
dba_data_files ddf) a,
(select
file_id,
sum(bytes)/(1024*1024) Free_Space
from
dba_free_space
group by file_id) b
where
a.file_id=b.file_id;




Linux 脚本
#####################################################################
## checkTabsp.sh ##
## This Script will add the new datafile if  Tablespace's data
## file, which is greater than  the 80% of one datafiles size
#####################################################################
#!/bin/bash
usedPercentNO=(`sqlplus -s '/as sysdba' <<\EOF 
SET heading OFF; 
SET verify OFF;
SELECT * FROM tablespace_used_percent;
EOF`
)
#get  the length of array
len=${#usedPercentNO[*]}

echo "The array has $len members."

i=0

 while [ $i -lt $len ]; do
      echo "$i: ${usedPercentNO[$i]}"
      arrNo=`echo "${usedPercentNO[$i]}" | awk -F. '{print $1}'`
      if [ -z $arrNo ]
      then
        arrNo=1
      fi
# if usedPercentNo >= 80 then we add new data file,which will have 8G size 
      if [ $arrNo -gt 80 ]
      then
        let sigNo=$i+1
     sqlplus -s "/ as sysdba" <<EOF
        ALTER TABLESPACE DB_TABLESPACE ADD DATAFILE '/opt/oracle/oradata/DB/DB_DATA$sigNo.dbf' SIZE 2G  AUTOEXTEND ON MAXSIZE 8G;
EOF
# we need send email to report the tablespace stats info
      sqlplus -s "/as sysdba" <<\EOF 
        col tablespace_name for a30
        col file_name for a60
        col auto_extend for a12
        col tablespace_name justify center
        col file_name justify center
        col autoextend justify right
        set linesize 200
        set pagesize 500
        SPOOL tablespace.alert  
        SELECT * FROM TABLESPACE_USAGE;
        SPOOL OFF;
        EXIT
EOF
      fi
  let i++
done

#we needn't send email from there the crontab will do

  if [ `cat tablespace.alert|wc -l` -gt 0 ]
  then
    cat tablespace.alert >tablespace.tmp
  mailx -s "TABLESPACE ALERT for DB"  EMAIL-ADDRESS  < tablespace.alert
  fi



上面这个脚本会导致如果有一个文件超过80%的话,脚本会不停添加数据文件....

更新修改后的,而且把sql直接用文本文件来代替了以前使用的view

#!/bin/bash

# Managed by Puppet

#####################################################################
## checkTabsp.sh ##
## This Script will add the new datafile if BOCC Tablespace's data
## file, which is greater than  the 80% of one datafiles size
#####################################################################

# Avoid have the script run if already running
source /opt/app/inc/some_functions.sh
pgrpfile=/tmp/checkTabsp.pgrp
check_if_running
# end


source /home/oracle/.profile

usedDatafileNO=(`sqlplus -s '/as sysdba' <<\EOF 
SET heading OFF; 
SET verify OFF;
@/opt/app/sql/chktabspused.sql
EOF`
)
# check whether it needs add data file
if [ $usedDatafileNO -eq 0 ]
then
usedDatNO=(`sqlplus -s '/as sysdba' <<\EOF 
SET heading OFF; 
SET verify OFF;
@/opt/app/sql/chkdatno.sql
EOF`
)

let sigNO=$usedDatNO+1
sigNO=`printf "%03d" $sigNO`

sqlplus -s "/ as sysdba" <<EOF
       ALTER TABLESPACE DB_TABLESPACE ADD DATAFILE '/opt/oracle/oradata/DB/DB_DATA$sigNO.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M;
EOF
# we need send email to report the tablespace stats info to check whether add data file successful
      sqlplus -s "/as sysdba" <<\EOF 
        col tablespace_name for a30
        col file_name for a60
        col auto_extend for a12
        col tablespace_name justify center
        col file_name justify center
        col autoextend justify right
        set linesize 200
        set pagesize 500
        @/opt/bocc/sql/chktabspstats.sql
        EXIT
EOF
# out put the disk space useage
df -h
fi
#we will don't send email from there the crontab will do
#  if [ `cat tablespace.alert|wc -l` -gt 0 ]
#  then
#    cat tablespace.alert >tablespace.tmp
#  mailx -s "TABLESPACE ALERT for DB" YOUR_EMAIL_ADDRESS t  < tablespace.alert
#  fi



分享到:
评论

相关推荐

    Oracle 主要配置文件介绍

    Oracle 应 用进行文件 I/O操作的目录为任意目录 因此 只要空间允许 可以将备份数 据存放到任意目录下 &lt;br&gt;1.2.4 监听配置文件 为了使得外部进程 如 CAMS后台程序 能够访问 Oracle 数据库 必须配 ...

    oracle 12c 数据库 教程

    (三)表空间和数据文件 57 (四)什么是自动存储管理 58 七、数据的并发处理 60 (一)锁定的机制 60 (三)锁的队列 60 (四)死锁 62 (五)手动加锁 64 (方式一)lock 语句 64 八、管理还原数据 65 (一)什么...

    ORACLE9i_优化设计与系统调整

    §1.1.2 表空间与数据文件 24 §1.1.3 Oracle实例(Instance) 24 §1.2 Oracle文件 26 §1.2.1 数据文件 26 §1.2.2 控制文件 26 §1.2.3 重做日志文件 26 §1.2.4 其它支持文件 26 §1.3 数据块、区间和段 28 §...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    5.1 了解表空间和数据文件 140 5.1.1 Oracle数据存储模型 140 5.1.2 段、区间、块和行 142 5.1.3 文件存储技术 144 5.2 创建和管理表空间 146 5.2.1 创建表空间 146 5.2.2 更改表空间 150 5.2.3 删除表空间 ...

    最全的oracle常用命令大全.txt

    执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置, 但此时不对数据文件和日志文件进行校验检查。 3、startup open dbname 先执行“nomount”,然后执行“mount”,再打开包括Redo log文件...

    oracle10g课堂练习I(2)

    表空间和数据文件 1-17 SYSTEM 和 SYSAUX 表空间 1-18 段、区和块 1-19 逻辑和物理数据库结构 1-20 课程示例: HR 方案 1-22 数据库体系结构:结构化组件概要 1-23 小结 1-24 2 安装 Oracle 数据库软件 ...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第1/2部分)

    5.1 了解表空间和数据文件 140 5.1.1 Oracle数据存储模型 140 5.1.2 段、区间、块和行 142 5.1.3 文件存储技术 144 5.2 创建和管理表空间 146 5.2.1 创建表空间 146 5.2.2 更改表空间 150 5.2.3 删除表空间 ...

    Oracle9i的init.ora参数中文说明

    并确保在同一事务处理种对相同数据的两次查询看到的是相同的值。 值范围: TRUE | FALSE 默认值: FALSE row_locking: 说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ALWAYS, 只有在表被更新后才获取...

    Oracle从入门到精通

    7. tablespace 表空间:一个或多个数据文件的逻辑组成。 ..... 8. redo log file 重做日志文件............................. 9. control file 控制文件 ................................. 10. parameter file 初始...

    Visual C++程序开发范例宝典(光盘) 第四部分

    实例003 根据表中数据动态生成菜单 实例004 浮动的菜单 1.2 弹出菜单应用实例 实例005 在控件上单击右键弹出菜单 实例006 个性化的弹出菜单 实例007 任务栏托盘弹出菜单 1.3 工具栏应用实例 实例008 带背景...

    Visual C++程序开发范例宝典(光盘) 第八部分

    实例003 根据表中数据动态生成菜单 实例004 浮动的菜单 1.2 弹出菜单应用实例 实例005 在控件上单击右键弹出菜单 实例006 个性化的弹出菜单 实例007 任务栏托盘弹出菜单 1.3 工具栏应用实例 实例008 带背景...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例005 下载并安装JRE执行环境 8 实例006 编程输出星号组成的等腰三角形 9 1.2 开发工具 11 实例007 下载最新的Eclipse 11 实例008 为最新的Eclipse安装中文语言包 12 实例009 活用Eclipse的工作空间 14 实例010 在...

    JAVA上百实例源码以及开源项目源代码

     用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...

    Visual C++程序开发范例宝典(PDF扫描版).part3

     cc实例003 根据表中数据动态生成菜单   cc实例004 浮动的菜单   1.2 弹出菜单应用实例   cc实例005 在控件上单击右键弹出菜单   cc实例006 个性化的弹出菜单   cc实例007 任务栏托盘弹出菜单   ...

Global site tag (gtag.js) - Google Analytics