OracleDB数据库一键启停脚本-企业微信通知

这篇具有很好参考价值的文章主要介绍了OracleDB数据库一键启停脚本-企业微信通知。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

说明:

        1、该脚本是Oracle数据库一键启停脚本

        2、该脚本适合于比较适合于自动化平台场景

        3、适合于批量执行数据库启停操作,并通过企业微信返回结果

        4、我使用该脚本和蓝鲸平台实现数据库单台或者批量执行数据库启停操作,同时通过脚本发送通知到企业微信,而不是使用蓝鲸平台的通知,更加便于脚本移植到不同环境和平台使用文章来源地址https://www.toymoban.com/news/detail-529408.html

#!/bin/bash
# OracleDB 启停脚本 
# date: 2023-07-04
# creator: @tudou

var=$1
var=${var:-status} # 默认值是: status

# ORACLE_HOME=/oracle/18.3/db/dbhome

# ==========================================================================================
# 定义函数发送企业微信消息
function SendWechat() {

  #message=${message}
  # 发送GET请求
  curl "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=$webhook_key" \
      -H 'Content-Type: application/json' \
      -d "{\"msgtype\": \"text\",\"text\": {\"content\": \"$message\"}}"
  sleep 3s
  exit  # 发完通知退出执行程序
}

# 消息体模板
function MsgResult(){

  webhook_key="您的企业微信认证秘钥key" # 填写企业微信的认证秘钥
  wechat_tag="运维组"

cat > /tmp/.msg_result << EOF
标题: 数据库状态通知
IP地址: $(hostname -I)
操作标识: ${var}
监听服务操作: ${ListenerAction}
数据库服务操作: ${ServiceAction}
监听服务状态: ${ListenerStatus_result}
数据库服务状态: ${ServiceStatus_result}
服务器当前时间: $(date)
企业微信标签: ${wechat_tag}
EOF

cat > /tmp/.msg_usage << EOF
标题: 脚本使用指导通知
IP地址: $(hostname -I)
异常提示: 脚本使用方法不正确
脚本使用指导: usage sh $0 [ status|start|restart|stop ]
服务器当前时间: $(date)
企业微信标签: ${wechat_tag}
EOF
}

# 通发送结果到企业微信
function SendWechatMsg(){

  # 发送通知
  MsgResult
  if [[ $var == "stop" || $var == "start" || $var == "status" || $var == "restart" ]];then
    message=$(cat /tmp/.msg_result)  # 输出的结是一行,没有换行
  else
    message=$(cat /tmp/.msg_usage)    
  fi
  # echo $message # 输出的结是一行,没有换行
  # 解决输出换行问题,输出显示换行
  echo -e "$message"

  # SendWechat  # 使用企业微信通知,需要将该注释打开
}

# ==========================================================================================

# 检查监听服务状态
function ListenerStatus() {

ListenerAction="查看监听服务状态"

su - oracle << EOF > /dev/null
lsnrctl status 
EOF

if [ $? -eq 0 ];then
   echo -e "\e[33m"
   ListenerStatus_result="监听服务运行中"
   echo ${ListenerStatus_result}
   #echo "<SOPS_VAR>ListenerStatus_result:$ListenerStatus_result</SOPS_VAR>" # 蓝鲸平台流程阶段之间传递参数
   echo -e "\e[0m"
   return 0
else
   echo -e "\e[33m"
   ListenerStatus_result="监听服务未启动"
   echo ${ListenerStatus_result}
   echo -e "\e[0m"
   return 1
fi

}

# 检查数据库服务状态
function ServiceStatus() {
  
ServiceAction="查看数据库服务状态"

ps -ef|grep pmon|grep -v grep > /dev/null

if [ $? -eq 0 ];then
   echo -e "\e[33m"
   ServiceStatus_result="数据库服务运行中"
   echo ${ServiceStatus_result}
   echo -e "\e[0m"
   return 0
else
   echo -e "\e[33m"
   ServiceStatus_result="数据库服务未启动"
   echo ${ServiceStatus_result}
   echo -e "\e[0m"
   return 1
fi
}

# 启动监听服务
function StartupListener(){

ListenerAction="启动监听服务"

su - oracle << EOF  > /dev/null
lsnrctl start
EOF

echo -e "\e[33m"
ListenerStatus_result="监听服务启动完成"
echo -e "\e[0m"
}

# 启动数据库服务
function StartupService(){

ServiceAction="启动数据库服务"

su - oracle << EOF
sqlplus / as sysdba
startup;
alter pluggable database all open;
exit;
EOF

echo -e "\e[33m"
ServiceStatus_result="数据库服务启动完成"
echo $ServiceStatus_result
echo -e "\e[0m"
}

# 关闭监听服务
function ShutdownListener(){

ListenerAction="关闭监听服务"

su - oracle << EOF
lsnrctl stop
EOF

echo -e "\e[33m"
ListenerStatus_result="监听服务关闭完成"
echo $ListenerStatus_result
echo -e "\e[0m"
}

# 关闭数据库服务
function ShutdownService(){

ServiceAction="关闭数据库服务"

su - oracle << EOF
sqlplus / as sysdba
shutdown immediate;
exit;
EOF

echo -e "\e[33m"
ServiceStatus_result="数据库服务关闭完成"
echo $ServiceStatus_result
echo -e "\e[0m"
}

# ==========================================================================================
# 关闭数据库和监听服务
function ShutdownDB() {

# 检查数据库运行状态,运行则关闭
ServiceStatus
if [ $? -eq 0 ];then
#场景1: 数据库服务未关闭,检查关闭数据库和监听服务
  # 关闭数据库服务
  ShutdownService
  
  # 检查监听状态,若已启动监听,则关闭
  ListenerStatus 
  if [ $? -eq 0 ];then
    # 关闭监听服务
    ShutdownListener
  else
    ListenerAction="关闭监听服务"
    echo -e "\e[33m"
    ListenerStatus_result="监听服务未启动,无需再执行关闭监听服务操作"
    echo $ListenerStatus_result
    echo -e "\e[0m"
  fi

#场景2: 数据库已关闭,检查关闭监听 
else
  ServiceAction="关闭数据库服务"
  echo -e "\e[33m"
  ServiceStatus_result="数据库服务未启动,无需再执行关闭数据库服务操作" 
  echo $ServiceStatus_result
  echo -e "\e[0m"

  # 检查监听状态,若已启动监听,则关闭
  ListenerStatus
  if [ $? -eq 0 ];then
    # 关闭监听服务
    ShutdownListener
  else
    ListenerAction="关闭监听服务"
    echo -e "\e[33m"
    ListenerStatus_result="监听服务未启动,无需再执行关闭监听服务操作"
    echo $ListenerStatus_result
    echo -e "\e[0m"
  fi
  
fi
}

# 启动数据库和监听服务
function StartupDB() {

ListenerStatus
if [ $? -eq 0 ];then
# 场景1:监听已启动,检查启动数据库服务
  ListenerAction="启动监听服务"
  echo -e "\e[33m"
  ListenerStatus_result="监听服务已是运行状态,无需再执行启动监听服务操作"
  echo $ListenerStatus_result
  echo -e "\e[0m"

  ServiceStatus
  if [ $? -eq 0 ];then
    ServiceAction="启动数据库服务"
    echo -e "\e[33m"
    ServiceStatus_result="数据库服务已是运行状态,无需再执行启动数据库服务操作"
    echo $ServiceStatus_result
    echo -e "\e[0m"
  else
    # 启动数据库服务
    StartupService
  fi

# 监听服务未启动,检查启动监听和数据库服务
else
  # 启动监听服务
  StartupListener

  # 启动数据库服务或者重启数据库服务
  ServiceStatus
  if [ $? -eq 0 ];then
    # 数据库服务是运行状态,重启数据库服务
    ShutdownService
    sleep 3s
    # 启动数据库服务
    StartupService

    ServiceAction="数据库服务是运行状态,重启数据库服务"
    echo -e "\e[33m"
    ServiceStatus_result="数据库服务重启完成"
    echo $ServiceStatus_result
    echo -e "\e[0m"
    
  # 数据库服务停止状态,启动数据库服务
  else
    echo "数据库服务是关闭状态"
    # 启动数据库服务
    StartupService
  fi
fi
}

# ==========================================================================================

case ${var} in
status)
    # 查看监听和数据库服务状态
    ListenerStatus
    ServiceStatus

    # 发送通知
    SendWechatMsg
    ;;

start)
    # 启动监听和数据库服务
    StartupDB
    
    # 发送通知
    SendWechatMsg
    ;;

stop)
    # 关闭数据库服务和监听
    ShutdownDB
    
    # 发送通知
    SendWechatMsg
    ;;

restart)
    # 重启监听和数据库服务
    ShutdownDB
    StartupDB

    ListenerAction="重启监听服务"
    ServiceAction="重启数据库服务"
    ListenerStatus_result="监听服务已重启完成"
    ServiceStatus_result="数据库服务已重启完成"
    
    # 发送通知
    SendWechatMsg
    ;;

*)
    # echo "usage $0 [ status|start|restart|stop ]"
    # 发送通知
    SendWechatMsg
    ;;

esac


到了这里,关于OracleDB数据库一键启停脚本-企业微信通知的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Neo4j数据库自动启停与定时备份

    本文介绍neo4j数据库定时自动备份的方案和一些问题的解决方式。自动备份基本流程为“关闭-备份-启动”;首先介绍三个准备工作:安装service实现start和stop的操作、备份的基本逻辑、.bat文件操作;然后提供一个完整的备份脚本内容示例,并结合win10任务计划程序实现自动备

    2024年01月22日
    浏览(77)
  • 一键导出数据库中表结构定义(数据字典)的工具

    导出数据库中标的定义,即所谓的数据字典 一、新建maven工程中加入依赖 在maven工程的pom.xml中添加依赖 二、在maven工程,将如下GenerateDocument .java文件加入工程中; 修改想要导出的mysql链接参数,直接执行即可导入数据库设计的word文档

    2024年02月06日
    浏览(55)
  • 【数据库】Python脚本实现数据库批量插入事务

    在工作中可能会遇到需要批量插入的场景, 而批量插入的过程具有 耗时长 的特点, 再此过程很容易出现程序崩溃的情况.为了解决插入大量数据插入后崩溃导致 已插入数据无法清理 及 未插入数据无法筛出 的问题, 需要编写一个脚本记录已插入和未插入的数据, 并可以根据记录

    2024年02月08日
    浏览(34)
  • 大数据 | (六)Hadoop集群启停脚本

    hello,大家好! 这篇文章是我在使用Hadoop集群时使用到的启停脚本的详细内容与感想,希望能帮助到大家! 本篇文章收录于 初心 的 大数据 专栏。 🧑 个人简介:大家好,我是初心,一个很菜但没放弃的人✨ 💕 座右铭:理想主义的花,终究会盛开在浪漫主义的土壤里!🍺

    2024年02月08日
    浏览(28)
  • 使用 NocoDB 一键将各种数据库转换为智能表格

    NocoDB 是一款开源的无代码数据库平台,可以进行数据管理和应用开发。它的灵感来自 Airtable,支持与 Airtable 类似的电子表格式交互、关系型数据库 Schema 设计、API 自动生成等特性。 但与 Airtable 相比, NocoDB 完全免费且代码开源 ,可以通过 Docker 等方式快速部署到自己的服务

    2024年03月26日
    浏览(31)
  • 德迅云安全数据库审计——如何保障企业数据库安全

    在当今快速发展的数字环境中,以人工智能 (AI) 的兴起和云计算的无处不在为标志,数据库安全的重要性从未如此突出。随着数据库日益成为人工智能算法和基于云的服务的支柱,它们积累了大量的敏感信息,使其成为网络攻击的主要目标。这些技术的融合不仅放大了潜在

    2024年04月26日
    浏览(27)
  • Docker一键极速安装Nacos,并配置数据库!

    1.2.1 Clone 项目 1.2.2 单机模式 Derby: 单机模式的MySQL: MySQL5.7: MySQL8: 1.2.3 集群模式 属性名称 描述 选项 MODE 系统启动方式: 集群/单机 cluster/standalone默认 cluster NACOS_SERVERS 集群地址 p1:port1空格ip2:port2 空格ip3:port3 PREFER_HOST_MODE 支持IP还是域名模式 hostname/ip 默认 ip NACOS_SERVER_POR

    2024年02月03日
    浏览(38)
  • 企业数据,大语言模型和矢量数据库

    随着ChatGPT的推出,通用人工智能的时代缓缓拉开序幕。我们第一次看到市场在追求人工智能开发者,而不是以往的开发者寻找市场。每一个企业都有大量的数据,私有的用户数据,自己积累的行业数据,产品数据,生产线数据,市场数据,等等一应俱全。这些数据都不在基础

    2024年02月15日
    浏览(28)
  • 数据爆炸,Python一键获取阿里法拍的爆款商品数据,并保存到数据库!

    阿里法拍是中国大陆一个知名的在线拍卖网站,它提供了各种商品和服务的拍卖、固定价交易和一口价销售。如果您想要从阿里法拍网站中获取商品的信息,比如商品名称、价格、图片等信息,则可以使用Python编写一个代码获取这些数据。 在实现前,请确保您已经安装以下

    2024年02月09日
    浏览(35)
  • oracle数据库巡检脚本

    用于Oracle数据库巡检的示例脚本: 

    2024年02月14日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包