运维联盟俱乐部

 找回密码
 立即注册
查看: 305|回复: 0

[日常管理] select shell

[复制链接]
  • TA的每日心情
    开心
    2023-8-9 11:05
  • 发表于 2023-12-6 17:12:23 | 显示全部楼层 |阅读模式
    1.使用场景
    从一个本地装有instant client得客户端,在sql脚本目录里选择一个sql,在ip地址池里选择一个ip,查看sql得执行结果,前提是每套库里都有一个固定得监控账户。(tns连接,远端数据库监听要开启)
    2.使用过程
    执行t.sh,输入要执行得sql编号,输入要查询得数据库编号,查看结果。
    1. [oracle@vm1 dbmonitor]$ sh t.sh
    2. ======================================================================
    3. ==              SINGLE SQL IN SINGLE DATABASE                       ==
    4. ==                   AUTHOR:ZHANGYU                                 ==
    5. ==     demo:selected sql==>selected database==>results              ==
    6. ======================================================================

    7. SETP1:WE HAVE QUERY SCRIPTS FOLLOWING,PLEASE SELECT ONE SQL YOU WANTED.

    8. 1) actsess.sql           20) job.sql
    9. 2) asmdg.sql           21) parameter.sql
    10. 3) autotask.sql         22) profile.sql
    11. 4) awrsetting.sql         23) recyclebin.sql
    12. 5) bchit.sql           24) redofile.sql
    13. 6) controlfile.sql         25) registry_history.sql
    14. 7) cursorusage.sql         26) registry.sql
    15. 8) database.sql         27) rmanjob.sql
    16. 9) datafile.sql         28) rman.sql
    17. 10) dblink.sql           29) scndays.sql
    18. 11) dboption.sql         30) sequence.sql
    19. 12) dbproperty.sql         31) sessusage.sql
    20. 13) dbtime.sql           32) tablespace.sql
    21. 14) directory.sql         33) userdata.sql
    22. 15) grant.sql           34) user_roles.sql
    23. 16) info_database_summary.sql  35) usersegsum.sql
    24. 17) instance.sql         36) users.sql
    25. 18) invalididx.sql         37) utinsys.sql
    26. 19) invalidobj.sql
    27. please select a num from menu:17

    28. Selected sql_statement: [ instance.sql ]

    29. STEP2:WE HAVE AVALIABLE DATABASES FOLLOWING,PLEASE SELECT ONE DATABASE YOU WANTED.

    30. 1) 192.168.56.101:1511/ora11
    31. 2) 192.168.56.101:1511/ora11a
    32. please select a num from menu:1

    33. Selected Database: [ 192.168.56.101:1511/ora11 ]

    34. STEP3:THE RESULTS AS FOLLOWING.


    35. DB_NAME       CHK_DATE  INSTANCE_NAME    INSTANCE_NUMBER VERSION         PAR HOST_NAME                  STARTUP_T    UPTIME STATUS
    36. ------------------------- --------- ---------------- --------------- ----------------- --- ---------------------------------------------------------------- --------- ---------- ------------
    37. 192.168.56.101:1511/ora11 06-NOV-22 ora11         1 11.2.0.4.0        NO  vm1                    05-NOV-22        .3 OPEN
    复制代码
    2.交互式输入用户名和密码
    1. ############################################################################
    2. #author:           zhangyu
    3. #version:          V1.0
    4. #production        godba studio           
    5. #last modified     2022-10-28
    6. ############################################################################

    7. #!/bin/bash
    8. echo "======================================================================"
    9. echo "==              SINGLE SQL IN SINGLE DATABASE                       =="
    10. echo "==                   AUTHOR:ZHANGYU                                 =="
    11. echo "==     demo:selected sql==>selected database==>results              =="
    12. echo "======================================================================"
    13. sleep 1
    14. echo

    15. #set envirments
    16. dbc_dir=/home/oracle/dbmonitor/dbs
    17. sql_dir=/home/oracle/dbmonitor/sqls
    18. res_dir=/home/oracle/dbmonitor/res
    19. chk_date=`date +%Y%m%d_%H%m`
    20. username=dbsnmp
    21. password=dbsnmp
    22. ORACLE_HOME=/home/oracle/dbmonitor/instantclient_19_17
    23. PATH=/home/oracle/dbmonitor/instantclient_19_17:$PATH
    24. LD_LIBRARY_PATH=/home/oracle/dbmonitor/instantclient_19_17
    25. PS3="please select a num from menu:"

    26. #get username if not configuared
    27. #read -r -p "please enter username:" username
    28. #get password if not configuared
    29. #read -r -s -p "please enter password:" password

    30. # check user is oracle or not
    31. [ $USER != 'oracle' ] && echo "please run the script with oracle user! " && exit 1

    32. # check sqlplus is available
    33. sqlplus -v>/dev/null
    34. [ $? -ne 0 ] && echo -e "\033[31mERROR! sqlplus not found.\033[0m" && exit 1

    35. # check sqlplus version >12 or not
    36. client_version=`sqlplus -v|awk '{print $3}'|awk -F[.] '{print $1}'`
    37. [ $client_version -lt 12 ] && echo -e "\033[31mERROR! sqlplus version must equal to or greater than 12.2.\033[0m" && exit 1
    38.   
    39. #LOAD SECRIPTS
    40. echo -e "\033[31mSETP1:WE HAVE QUERY SCRIPTS FOLLOWING,PLEASE SELECT ONE SQL YOU WANTED.\033[0m"
    41. echo
    42. select sql_stmt in $( ls $sql_dir )
    43.   do
    44.           export SQL_STMT=$sql_stmt
    45.           echo
    46.           printf "`echo "Selected sql_statement: ["` `echo -e "\033[33;5m${SQL_STMT}\033[0m"` `echo "]"`\n"
    47.           echo
    48.           break
    49.   done

    50. #LOAD DATABASE CONNECT STRINGS
    51. echo -e "\033[31mSTEP2:WE HAVE AVALIABLE DATABASES FOLLOWING,PLEASE SELECT ONE DATABASE YOU WANTED.\033[0m"
    52. echo
    53. select db_con in $( cat $dbc_dir/db_cons |awk -F [@] '{print $2}' )
    54.   do
    55.            export DN=$db_con
    56.            echo
    57.            printf "`echo "Selected Database: ["` `echo -e "\033[33;5m${DN}\033[0m"` `echo "]"`\n"
    58.            echo
    59.            break
    60.   done

    61. #print results of items as selected above   
    62. echo -e "\033[31mSTEP3:THE RESULTS AS FOLLOWING.\033[0m"
    63. echo
    64. sqlplus -S $username/$password@$DN<<EOF
    65. SET LINESIZE 300
    66. SET PAGESIZE 2000
    67. SET VERIFY OFF
    68. SET ECHO OFF
    69. define dn=$DN
    70. @$sql_dir/$SQL_STMT
    71. exit;
    72. EOF
    73. exit
    复制代码


    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    运维联盟俱乐部 ( 冀ICP备19036648号 )

    GMT+8, 2024-5-2 10:51 , Processed in 0.048656 second(s), 21 queries , Gzip On.

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表