数据库环境中的shell脚本应用
维护多个数据库,又没有EM,在各个数据库之间来回切换很是麻烦,
今天参照一些资料写了如下的shell脚本。主要来讲dba的账户密码,ORACLE_SID都以环境变量的形式注入,然后在当前session中可以灵活的切换实例来进行相应的操作。
比如想查看数据库中的表空间情况,可以在当前的session中查看其他数据库实例的数据情况。
export SH_USERNAME=system
export SH_PASSWORD=oracle
export ORACLE_SID=PROD
Num=`echo show user | $ORACLE_HOME/bin/sqlplus -s $SH_USERNAME/$SH_PASSWORD | grep -i ‘USER ‘ | wc -l`
if [ $Num -gt 0 ]
then
## ok – instance is up
echo Instance $ORACLE_SID has been connected
else
## inst is down
echo $ORACLE_SID is down
count=`expr $count + 1 `
fi
$SHELL
运行结果如下:
[oracle@oel1 ~]$ ksh settdb.sh PROD
Instance PROD has been connected
这可以作为一个初始化的操作,如果切换到其他数据库也很方便,
然后编写相应的shell 脚本,比如查看表空间的情况
脚本如下:
sqlplus -S ${SH_USERNAME}/${SH_PASSWORD}@${ORACLE_SID} << EOF
set echo off
set feedback off
set verify off
set linesize 150
set pages 30
set heading off
REM clear screen
COLUMN Tablespace FORMAT A20 HEADING ‘Tablespace|Name’ JUSTIFY left
COLUMN Total_Size FORMAT 999,999 HEADING ‘Total|Size(MB)’ JUSTIFY left
COLUMN Free_Space FORMAT 999,999 HEADING ‘Free(MB)’
COLUMN Percentage FORMAT 90.0 HEADING ‘%|Used’ JUSTIFY left
COLUMN decode FORMAT A14 HEADING ‘(Space Gauge)’
COLUMN fragdec FORMAT A14 HEADING ‘(Frag Gauge)’
COLUMN percfrag FORMAT 90.0 HEADING ‘%|Frag’ JUSTIFY left
COLUMN frags FORMAT 999,999 HEADING ‘Frags’
COLUMN bigchunk FORMAT 999,999 HEADING ‘Big|Chunk(MB)’ JUSTIFY left
COLUMN data_files FORMAT 99 HEADING ‘Data|Files’ JUSTIFY left
set heading on
select free.tablespace_name Tablespace, tot.total Total_Size,
100 – ((free.free / tot.total) * 100) Percentage,
decode
((ceil(10-(free.free / tot.total) * 10)),
0,’| ………. |’,
1,’| *……… |’,
2,’| **…….. |’,
3,’| ***……. |’,
4,’| ****…… |’,
5,’| *****….. |’,
6,’| ******…. |’,
7,’| *******… |’,
8,’| ********.. |’,
9,’| *********. |’,
10,’| !! DNGR !! |’) decode,
free.free Free_Space, bigchunk, data_files, frags, percfrag,
decode ((ceil(percfrag / 10)) ,
0,’| ………. |’,
1,’| *……… |’,
2,’| **…….. |’,
3,’| ***……. |’,
4,’| ****…… |’,
5,’| *****….. |’,
6,’| ******…. |’,
7,’| *******… |’,
8,’| ********.. |’,
9,’| *********. |’,
10,’| !! DNGR !! |’) fragdec
from (select tablespace_name, ceil(sum(bytes) / 1048576) total, count(*) data_files
from dba_data_files
group by tablespace_name) tot,
(select tablespace_name, ceil(sum(bytes) / 1048576) free,
ceil(max(bytes) / 1048576) bigchunk, count(*)frags, 100 – (max(bytes) /sum(bytes)) * 100 percfrag
from dba_free_space
group by tablespace_name) free
where free.tablespace_name = tot.tablespace_name;
exit
EOF
运行结果如下:
Tablespace Total % Big Data %
Name Size(MB) Used (Space Gauge) Free(MB) Chunk(MB) Files Frags Frag (Frag Gauge)
——————– ——– —– ————– ——– ——— —– ——– —– ————–
TBS2 20 0.0 | ………. | 20 20 1 1 0.0 | ………. |
SYSAUX 325 19.1 | **…….. | 263 263 1 1 0.0 | ………. |
TBS1 55 5.5 | *……… | 52 29 3 3 44.2 | *****….. |
UNDOTBS 200 6.0 | *……… | 188 185 1 5 1.5 | *……… |
USERS 135 78.5 | ********.. | 29 28 2 3 3.6 | *……… |
TEST 10 0.0 | ………. | 10 10 1 1 0.0 | ………. |
SYSTEM 325 68.3 | *******… | 103 103 1 1 0.0 | ………. |
RCTS 100 0.0 | ………. | 100 100 1 1 0.0 | ………. |
📌 本文来自作者的 ITPUB 技术博客存档(2013 年),原文链接:https://blog.itpub.net/23718752/viewspace-764433/
