数据库环境中的shell脚本应用

简介: 维护多个数据库,又没有EM,在各个数据库之间来回切换很是麻烦, 今天参照一些资料写了如下的shell脚本。主要来讲dba的账户密码,ORACLE_SID都以环境变量的形式注入,然后在当前session中可以灵活的切换实例来进行相应的操作。
维护多个数据库,又没有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}
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 | .......... |



阅读(7252) | 评论(0) | 转发(5) |
目录
相关文章
|
5天前
|
Java 关系型数据库 MySQL
Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
【4月更文挑战第12天】Elasticsearch【问题记录 01】启动服务&停止服务的2类方法【及 java.nio.file.AccessDeniedException: xx/pid 问题解决】(含shell脚本文件)
33 3
|
2天前
|
监控 Shell 应用服务中间件
第十二章 Shell脚本编写及常见面试题(二)
第十二章 Shell脚本编写及常见面试题(二)
|
2天前
|
监控 关系型数据库 Shell
第十二章 Shell脚本编写及常见面试题(一)
第十二章 Shell脚本编写及常见面试题(一)
|
2天前
|
监控 Shell
生产环境Shell脚本Ping监控主机是否存活(多种方法)
生产环境Shell脚本Ping监控主机是否存活(多种方法)
|
2天前
|
运维 Shell
Shell脚本判断IP是否合法性(多种方法)
Shell脚本判断IP是否合法性(多种方法)
|
8天前
|
运维 监控 Shell
利用Shell脚本编写局域网监控软件:实时监测主机连接情况
本文介绍了如何使用Shell脚本创建一个局域网监控工具,以实时检查主机连接状态。脚本包括扫描IP地址范围检测主机可达性及使用`netstat`监控ESTABLISHED连接。此外,还展示了如何每60秒将连接数数据自动提交到指定网站API,以便实时跟踪网络活动。这个自动化监控系统有助于提升网络安全性和故障排查效率。
33 0
|
9天前
|
Shell
Shell脚本之流程控制语句
Shell脚本之流程控制语句
|
9天前
|
存储 数据库连接 数据处理
NumPy与数据库的结合应用探索
【4月更文挑战第17天】本文探讨了NumPy与数据库结合在数据处理和分析中的应用,阐述了结合使用的必要性,包括数据提取、转换、处理与分析及结果存储。通过Python数据库连接库提取数据,转化为NumPy数组进行高效计算,适用于金融等领域的数据分析。结合应用的优势在于高效性、灵活性和可扩展性,但也面临数据转换、性能优化和安全性挑战。
|
10天前
|
JSON 运维 监控
训练shell常用脚本练习(三)
【4月更文挑战第14天】shell代码训练(三)
33 1
|
14天前
|
存储 弹性计算 Shell
ecs服务器shell常用脚本练习(十)
【4月更文挑战第11天】shell代码训练(十)
144 0