1. 表空间使用率

SQL> select  a.tablespace_name,
  2          round(a.total_size) "total_size M",  
  3          round(a.total_size)-round(b.free_size,3) "used M",
  4          round(b.free_size ,3)  "free_size M",
  5          round(b.free_size/total_size *100,2) ||'%' free_rate
  6        from  (select  tablespace_name,sum(bytes) /1024/1024 total_size
  7               from dba_data_files  group  by  tablespace_name) a,
  8              (select  tablespace_name,sum(bytes)/1024/1024 free_size
  9               from  dba_free_space group by  tablespace_name)  b
 10  where   a.tablespace_name=b.tablespace_name(+);

TABLESPACE_NAME                total_size M     used M free_size M FREE_RATE
------------------------------ ------------ ---------- ----------- -----------------------------------------
SYSAUX                                  530    494.312      35.688 6.73%
UNDOTBS1                                195     67.625     127.375 65.32%
USERS                                   114    108.562       5.438 4.78%
SYSTEM                                 1060   1002.187      57.813 5.45%
EXAMPLE                                 127    103.562      23.438 18.47%
TEST01                                  300          1         299 99.67%

2. 检查监听程序的配置

#!/bin/bash

export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1;
export ORACLE_SID=prod
export ORACLE_TERM=xterm
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH; export PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib;

lsn=`netstat -an |grep :1521 |head -1 |awk '{print $4}'|cut -c9-12`

if [ "$lsn" = '1521' ] ;then
 echo  "Current  Listener  Port is :  $lsn"
 echo   'listener is up !'
else
 echo "This   `hostname`   listener  is   down !"
 echo "Starting listener ...."
 lsnrctl   start
fi
3. 检查失效对象

#####################################################################
##invalid_object_alert.sh
#####################################################################
#!/bin/ksh
EDITOR=vi; export EDITOR
ORACLE_SID=prod; export ORACLE_SID
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH
TNS_ADMIN=/var/opt/oracle;export TNS_ADMIN
NLS_LANG=american; export NLS_LANG
NLS_DATE_FORMAT='Mon DD YYYY HH24:MI:SS'; export NLS_DATE_FORMAT
ORATAB=/etc/oratab;export ORATAB
PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin:/usr/ccs/bin:/bin:/usr/bin:/usr/sbin:/sbin:/usr/openwin/bin:/opt/bin:.; export PATH
DBALIST="oracle,root";export DBALIST

sqlplus -s '/ as sysdba' <<EOF
set feed off
set heading off
column OWNER format a10
column OBJECT_NAME format a35
column OBJECT_TYPE format a10
column STATUS format a10
spool invalid_object.alert
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE, STATUS FROM DBA_OBJECTS WHERE STATUS = 'INVALID' ORDER BY OWNER, OBJECT_TYPE, OBJECT_NAME;
spool off
exit
EOF
if [ `cat invalid_object.alert | wc -l` -gt 0 ]
then
mailx -s "INVALID OBJECTS for prod" $DBALIST < invalid_object.alert
fi

4. 检查实例是否启动

#!/bin/bash
#chkinst.sh
###################################################################
## ckinstance.ksh ##
###################################################################
ORATAB=/etc/oratab
echo "`date` "
echo "Oracle Database(s) Status `hostname`"
db=`egrep -i ":Y|:N" $ORATAB | cut -d":" -f1 | grep -v "^#" | grep  -v "^*"`
pslist="`ps -ef | grep pmon`"
for i in $db
do
echo "$pslist" | grep "ora_pmon_$i" > /dev/null 2>&1
if (( $? )); then
echo "Oracle Instance - $i: Down"
else
echo "Oracle Instance - $i: Up"
fi
done

5.检查死锁

###################################################################
## deadlock_alert.sh ##
###################################################################
#!/bin/ksh

EDITOR=vi; export EDITOR
ORACLE_SID=prod; export ORACLE_SID
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH
TNS_ADMIN=/var/opt/oracle;export TNS_ADMIN
NLS_LANG=american; export NLS_LANG
NLS_DATE_FORMAT='Mon DD YYYY HH24:MI:SS'; export NLS_DATE_FORMAT
ORATAB=/etc/oratab;export ORATAB
PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin:/usr/ccs/bin:/bin:/usr/bin:/usr/sbin:/sbin:/usr/openwin/bin:/opt/bin:.; export PATH
DBALIST="oracle,root";export DBALIST

sqlplus -s '/ as sysdba' <<EOF
set feed off
set heading off
spool deadlock.alert
SELECT SID, DECODE(BLOCK, 0, 'NO', 'YES' ) BLOCKER,
DECODE(REQUEST, 0, 'NO','YES' ) WAITER
FROM V\$LOCK
WHERE REQUEST > 0 OR BLOCK > 0
ORDER BY block DESC;
spool off
exit
EOF
if [ `cat deadlock.alert | wc -l` -gt 0 ]
then
mailx -s "DEADLOCK ALERT for prod" $DBALIST < deadlock.alert
fi

5.检查表空间使用率的 shell脚本

#!/bin/bash

sqlplus -s  '/as sysdba' <<EOF
set feedback off
set echo on
set linesize 100
set pagesize 200
column "USED (MB)" format a10
column "FREE (MB)" format a10
column "TOTAL (MB)" format a10
column PER_FREE format a10
spool /home/oracle/tablespace.more    append        
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') "TIME:" from dual;
select a.name "DB_NAME",b.instance_name "INSTANCE_NAME"  from v\$database a,v\$instance b ;  
SELECT F.TABLESPACE_NAME,
  TO_CHAR ((T.TOTAL_SPACE - F.FREE_SPACE),'999,999') "USED (MB)",
  TO_CHAR (F.FREE_SPACE, '999,999') "FREE (MB)",
  TO_CHAR (T.TOTAL_SPACE, '999,999') "TOTAL (MB)",
  TO_CHAR ((ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100)),'999')||' %' PER_FREE
  FROM (
  SELECT TABLESPACE_NAME,
  ROUND (SUM (BLOCKS*(SELECT   VALUE/1024
  FROM V\$PARAMETER            
  WHERE NAME = 'db_block_size')/1024)
  ) FREE_SPACE
  FROM DBA_FREE_SPACE
 GROUP BY TABLESPACE_NAME
 ) F,
  (
  SELECT TABLESPACE_NAME,
  ROUND (SUM (BYTES/1048576)) TOTAL_SPACE
  FROM DBA_DATA_FILES
  GROUP BY TABLESPACE_NAME
  ) T
  WHERE F.TABLESPACE_NAME = T.TABLESPACE_NAME
  AND (ROUND ((F.FREE_SPACE/T.TOTAL_SPACE)*100)) < 80;
spool off
exit;
EOF

6.取样分析对象
set heading off
set feedback off
set pagesize 200
set linesize 100
set echo off
set time off
set timing off
set term off
set trimspool on
spool analyze_table.sql
select 'ANALYZE TABLE ' || owner || '.' || segment_name || ' ESTIMATE STATISTICS SAMPLE 10 PERCENT;' from dba_segments  where segment_type = 'TABLE' and owner not in ('SYS', 'SYSTEM');
spool off

分享整理的sql脚本的更多相关文章

  1. mssql sqlserver 使用sql脚本检测数据表中一列数据是否连续的方法分享

    原文地址:http://www.maomao365.com/?p=7335 摘要:    数据表中,有一列是自动流水号,由于各种操作异常原因(或者插入失败),此列数据会变的不连续,下文将讲述使用sql ...

  2. mssql sqlserver两条求和sql脚本相加的方法分享

    转自:http://www.maomao365.com/?p=7205 摘要: 下文分享两条sql求和脚本,再次求和的方法分享 /* 例: 下文已知两条sql求和脚本,现需对两张不同表的求和记录再次求 ...

  3. mssql sqlserver 使用sql脚本输出交替不同的背景色的html信息的方法分享

    转自:http://www.maomao365.com/?p=6679 摘要: 下文将分享使用sql脚本输出交替变换的不同背景颜色的sql脚本的方法分享,如下所示: 实验环境:sqlserver 20 ...

  4. mssql sqlserver避免sql脚本中出现除零错误的方法分享

    摘自:http://www.maomao365.com/?p=6612 摘要:下文介绍sql server中,sql脚本避免出现除零错误的方法分享 在各种业务系统开发中,通常会遇到除零的错误,下文分享 ...

  5. mssql sqlserver 使用sql脚本获取群组后,按时间排序(asc)第一条数据的方法分享

    摘要: 下文讲述使用sql脚本,获取群组后记录的第一条数据业务场景说明: 学校教务处要求统计: 每次作业,最早提交的学生名单下文通过举例的方式,记录此次脚本编写方法,方便以后备查,如下所示: 实现思路 ...

  6. mssql sqlserver 使用sql脚本实现相邻两条数据相减的方法分享

    摘要: 下文讲述使用sql脚本实现相邻两条数据相减的方法,如下所示: 实验环境:sql server 2008 R2 实现思路: 1.使用cte表达式,对当前表进行重新编号 2.使用左连接对 表达式 ...

  7. mssql sqlserver 使用SSMS运行sql脚本的六种方法分享

    摘要: 下文讲述五种运行sql脚本的方法,如下所示: 实验环境:sql server 2008 R2 在一次会议讨论中,大家咨询我使用SSMS运行sql脚本的方法,下文我将依次举例讲述sql脚本的运行 ...

  8. Winform开发框架之字典管理模块的更新,附上最新2013年全国最新县及县以上行政区划代码sql脚本

    在很多项目里面,字典管理是必备的项目模块,而这个又是比较通用的功能,因此可以单独做成一个通用字典管理,例如这个模块,可以通过集成的方式,使用在我的<Winform开发框架>.<WCF ...

  9. 如何书写优雅、漂亮的SQL脚本?

    本篇来聊聊如何书写漂亮.整洁.优雅的SQL脚本,下面这些是我个人总结.整理出来的.姑且做个抛砖引玉吧,呵呵,欢迎大家一起来讨论.   我们首先来看看一段创建数据表的脚本(如下所示),你是否觉得有什么不 ...

随机推荐

  1. WPF Image控件中的ImageSource与Bitmap的互相转换

    原文:WPF Image控件中的ImageSource与Bitmap的互相转换  1.从bitmap转换成ImageSource [DllImport("gdi32.dll", ...

  2. 【VirtualDOM】

    前沿技术解密——VirtualDOM miniflycn/qvd Matt-Esch/virtual-dom Facebook React 和 Web Components(Polymer)对比优势和 ...

  3. Linux Shell编程(19)——测试与分支

    case和select结构在技术上说不是循环,因为它们并不对可执行的代码块进行迭代.但是和循环相似的是,它们也依靠在代码块的顶部或底部的条件判断来决定程序的分支.在代码块中控制程序分支case (in ...

  4. 新手入门 acm 输入输出练习

    A + B Problem(1000) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  5. lightoj 1033 区间dp

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1033 #include <cstdio> #include <cst ...

  6. LianLianKan - HDU 4272(状态压缩)

    题目大意:有一列数据,可以从最上面的开始连接下面相同的元素,然后消除,不过距离不能超过6,询问最后能不能消除完整个数列. 分析:首先讨论一点最远能消除的地方,比如点的位置是x,如若想要消除x+1位置处 ...

  7. MySQL基本配置

    >>添加环境变量 把MySQL Server的bin目录添加到系统path中. >>MySQL启动和停止命令 net start mysql56 net stop mysql5 ...

  8. java实现链表结构

    1. 定义节点node public class Node<T> { private Node<T> pre; private Node<T> next; priv ...

  9. MFC编程小技巧——强制杀死进程

    在某些应用场合下,我们可能需要在启动A进程启动时关闭进程B.MFC下该如何做呢?以下是我项目中用到的代码: int KillProcess(DWORD Pid) { //打开进程得到进程句柄 HAND ...

  10. Nubia Z5S(高通公司MSM8974) QHSUSB_BULK砖的方法节省模式(随着win7在恢复recovery分区案例)

    Nubia Z5S在某些异常情况或按组合键进入QHSUSB_BULK状态, 这种模式的现象, 猜想windows(实例win7)即使在数据线, 它会出现在计算机n载,甚至会提示要格式化某些分区(这里要 ...