`
lovejuan1314
  • 浏览: 342812 次
  • 性别: 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定时删除表空间的数据并释放表空间

    1. **Oracle 表空间(Tablespaces)**:表空间是Oracle数据库中存储数据的基本单位,它由一个或多个数据文件组成。每个表、索引和其他对象都会被分配到特定的表空间中。理解表空间的工作原理对于管理数据库空间至关...

    ORACLE-DBA常用脚本.ppt

    - 空间管理包括数据库表空间、数据文件、临时表空间等的监视和调整,以确保空间的有效利用。 - 监控数据文件的大小和使用情况,当需要扩展或创建新数据文件时,可以使用脚本操作,如:`alter database datafile '/...

    oracle dba的官方教材3

    - 数据库(Database):由数据文件、控制文件、重做日志文件等组成,存储实际的数据。 - 后台进程(Background Processes):负责维护数据库的正常运行。 - **Oracle DB Server 体系结构概览**: - **内存结构**...

    监控Oracle数据库的常用 Linux shell脚本.pdf

    下面的脚本可以帮助自动清理这些文件: ```bash #!/bin/bash ARCHIVE_DIR="/u01/app/oracle/archived" CUTOFF_DAYS=30 # 清理超过30天的归档文件 find "${ARCHIVE_DIR}" -name "*.arc" -mtime +${CUTOFF_DAYS} -...

    Oracle 11g 实用教程

    在Oracle 11g中,数据库由多个表空间组成,每个表空间包含多个数据文件。数据文件用于存储实际的数据,而控制文件则记录数据库的物理结构,重做日志文件用于记录事务的更改历史。 ### SQL语言基础 SQL(Structured...

    oracle9g数据库管理基础

    - **表空间**:逻辑容器,包含一个或多个数据文件。 - **段**:表空间内的逻辑单元,包含一组数据块。 - **区**:段内的连续数据块集合。 - **块**:数据库中的最小读写单位。 ##### 5. 处理SQL语句 - **解析**:...

    oracle10g administration

    3. **数据库实例与表空间**:数据库实例是Oracle内存结构和后台进程的集合,而表空间是数据存储的逻辑单位,由一个或多个数据文件组成。管理表空间是数据库管理员的日常工作,包括创建、扩展和删除表空间。 4. **...

    ORACLE基础知识学习

    一个数据库实例可以包含多个数据文件,但每个数据文件仅能属于一个表空间。 - **日志文件**: 日志文件记录了对数据库的所有更改,这对于故障恢复至关重要。这些文件通常命名为`Log*.dbf`。根据是否将日志信息归档,...

    oracleOcp课程大纲

    2. 学习数据库的逻辑与物理存储结构,包括数据文件、控制文件、重做日志文件等。 3. 掌握数据库实例的管理,包括启动、关闭、监控等操作,并管理日志、控制文件、表空间、用户、权限、角色等。 4. 学习Oracle ...

    oracle\Oracle从入门到精通

    - **表空间**: 逻辑存储单元,包含一个或多个数据文件。 - **3. 实例/例程** - 实例是数据库在内存中的映像,包括内存结构和后台进程。 - **4. 进程结构** - 用户进程: 与用户应用程序交互。 - 服务进程: 处理...

    Oracle 9i DBA guide.rar

    你可以创建多个表空间以组织数据,并通过数据文件在磁盘上存储这些表空间。 4. **备份与恢复**:Oracle 9i提供了多种备份策略,如完整备份、增量备份和差异备份。恢复技术包括简单恢复、归档日志模式恢复和介质恢复...

    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 §...

    oracle9i企业管理器详解

    在学习Oracle 9i企业管理器时,建议先了解基本的Oracle数据库概念,如表空间、用户、权限和SQL语法。然后,逐步探索企业管理器的各项功能,通过实际操作来熟悉其工作流程。《Oracle9i企业管理器详解》这份资料应会...

    oracle dba 培训PPT

    - **物理备份与逻辑备份**:理解全库备份、表空间备份和数据文件备份的概念,以及使用RMAN(恢复管理器)进行备份的优势。 - **增量备份与差异备份**:如何进行增量备份以节省存储空间,并理解差异备份的工作原理...

    ORACLE1Z0-062认证考试大纲及试题库

    学习使用恢复管理器(RMAN)和数据恢复顾问(DataRecoveryAdvisor)进行控制文件、重做日志文件和数据文件的恢复。 15. 移动数据 数据迁移是数据库管理员经常需要进行的操作,包括使用SQL*Loader程序加载数据,利用...

    oracle dba sql

    - **表空间**:是Oracle数据库中的逻辑存储单元,可以包含多个数据文件。 - **段**:表空间内用于存储特定类型数据的空间分配单位,例如表段、索引段等。 - **区**:一个段内的连续存储空间,由多个块组成。 - **块*...

    Oracle_DBA突击__帮你赢得一份DBA职位 上

    这包括表空间、数据文件、控制文件、重做日志文件、实例与服务等概念,以及它们如何协同工作以保证数据的存储和恢复。 2. **SQL语言**:作为DBA,你需要精通SQL,包括查询、插入、更新和删除数据,以及创建和管理表...

    Oracle从入门到精通

    ### Oracle从入门到精通 #### 一、SQL基础 ##### 1.1 基本概念 - **Oracle**:一款广泛使用的商业关系型数据库管理系统。 - **SQL**(Structured Query ... - **重定义表空间的大小**:增加或减少数据文件的大小。 ...

Global site tag (gtag.js) - Google Analytics