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. linux下mysql的安装

    一.下载 http://dev.mysql.com/downloads/mysql/ 选择对应的版本,这里选择“Linux-Generic” 以64位系统为例,这里需要下载如下两个文件: MySQL- ...

  2. 如何在jasperreport自动生成序号

    在导出报表时,有时候我们需要显示序号,有两种方法: 1.就是再加一个字段,就是说将序号也当做是要导出的字段来处理,然后用程序给这个字段赋值,这方面有点傻,就不说了. 2.利用jasperreport提 ...

  3. eclipse 导入Android项目时报告 Invalid Project Description

    现象描述: 1.新建Android项目XX2.删除Android项目XX3.使用Existing Android Code Into Workspace(EACIW)导入Android项目XX,报错: ...

  4. Linq打印

    Method syntax: Enumerable.Range(1, 100).ToList().ForEach(Console.WriteLine); Query syntax: (from n i ...

  5. haproxy实现mysql slave负载均衡

    简单画一个图: 一.服务器规划 192.168.116.132 (master)  -->写操作 192.168.116.129 (slave1)  -->读操作 192.168.116. ...

  6. SD卡中FAT32文件格式快速入门(图文详细介绍)

    说明: MBR :Master Boot Record ( 主引导记录) DBR :DOS Boot Record ( 引导扇区) FAT :File Allocation Table ( 文件分配表 ...

  7. HDU --2665

    Kth number Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  8. 卡特兰数(Catalan Number) 算法、数论 组合~

    Catalan number,卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名. 卡特兰数的前几个数 前20项为( ...

  9. vijosP1014 旅行商简化版

    vijosP1014 旅行商简化版 链接:https://vijos.org/p/1014 [思路] 双线DP. 设ab,ab同时走.用d[i][j]表示ab所处结点i.j,且定义i>j,则有转 ...

  10. BNUOJ 34985 Elegant String 2014北京邀请赛E题 矩阵快速幂

    题目链接:http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=34985 题目大意:问n长度的串用0~k的数字去填,有多少个串保证任意子串中不包含0~k的 ...