Oracle数据库一键启停脚本

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

说明:

        1、数据库本地root用户一键启停oracle数据库

        2、ssh连接一键启停远程oracle数据库(需要做免密登录)

一、oracle一键启停脚本-本地

#!/bin/bash
# date: 2023-07-04
# creator: @tudou

var=$1
# ORACLE_HOME=/oracle/18.3/db/dbhome

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

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

if [ $? -eq 0 ];then
   echo -e "\e[33m"
   echo "监听服务运行正常"
   echo -e "\e[0m"
   return 0
else
   echo -e "\e[33m"
   echo "监听服务未启动"
   echo -e "\e[0m"
   return 1
fi

}

# 检查数据库服务状态
function ServiceStatus() {
  
ps -ef|grep pmon|grep -v grep > /dev/null

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

}

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

echo -e "\e[33m"
echo "监听服务启动中..." 
echo -e "\e[0m"
su - oracle << EOF  > /dev/null
lsnrctl start
EOF

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

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

echo -e "\e[33m"
echo "启动数据库服务中..."
echo -e "\e[0m"

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

echo -e "\e[33m"
echo "数据库服务已启动完成"
echo -e "\e[0m"

}

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

echo -e "\e[33m"
echo "监听服务关闭中..."
echo -e "\e[0m"

su - oracle << EOF
lsnrctl stop
EOF

echo -e "\e[33m"
echo "监听服务关闭完成..."
echo -e "\e[0m"

}

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

echo -e "\e[33m"
echo "数据库服务关闭中..."
echo -e "\e[0m"

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

echo -e "\e[33m"
echo "数据库服务关闭完成..."
echo -e "\e[0m"

}

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

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

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

}

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

ListenerStatus
if [ $? -eq 0 ];then
# 场景1:监听已启动,,检查启动数据库服务
  echo -e "\e[33m"
  echo "监听服务已是运行状态"
  echo -e "\e[0m"
  ServiceStatus
  if [ $? -eq 0 ];then
    echo -e "\e[33m"
    echo "数据库服务已是运行状态"
    echo -e "\e[0m"
  else
    # 启动数据库服务
    StartupService
  fi

# 监听服务未启动,检查启动监听和数据库服务
else
  echo -e "\e[33m"
  echo "监听服务未启动" 
  echo -e "\e[0m"
  # 启动监听服务
  StartupListener

  # 启动数据库服务或者重启数据库服务
  ServiceStatus
  if [ $? -eq 0 ];then
     # 数据库状态是运行中,重启数据库服务
    echo -e "\e[33m"
    echo "数据库服务是运行状态,重启数据库服务"
    echo -e "\e[0m"
    # 关闭数据库服务
    ShutdownService

    sleep 5s
    
    # 启动数据库服务
    StartupService
    echo -e "\e[33m"
    echo "数据库服务已重启完成"
    echo -e "\e[0m"
    
  # 数据库服务停止状态,启动数据库服务
  else
    echo -e "\e[33m"
    echo "数据库服务是已关闭状态"
    echo -e "\e[0m"
    # 启动数据库服务
    StartupService
  fi
fi

}

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

case $var in
status)
    echo ""
    # 监听服务状态
    ListenerStatus

    echo ""
    # 数据库服务状态
    ServiceStatus
    echo ""
    ;;

start)
    # 启动监听和数据库服务
    StartupDB
    ;;

stop)
    # 关闭数据库服务和监听
    ShutdownDB
    ;;

restart)
    # 关闭数据库服务和监听
    ShutdownDB

    # 启动监听和数据库服务
    StartupDB
    ;;

*)
    echo "usage $0 [ status|start|restart|stop ]"
    ;;
esac


二、oracle一键启停脚本-ssh远程文章来源地址https://www.toymoban.com/news/detail-529492.html

#!/bin/bash
# cat oracle.sh
# date: 2023-07-04
# creator: @tudou
# 使用root用户ssh免密登录
# ssh -t 表示分配伪终端
# ssh  -o "StrictHostKeyChecking no" 解决第一次免密登录后面输入交互yes问题
# 脚本使用方法如:  sh oracle.sh status 192.168.51.133

var=$1
newip=$2
# newip=192.168.51.133
# ORACLE_HOME=/oracle/18.3/db/dbhome

task_file=/tmp/task/$(date +%Y%m%d%H)
mkdir -p $task_file
out_log=$task_file/std.log


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

ssh  -o "StrictHostKeyChecking no" -t root@${newip} << EOF  > /dev/null
su - oracle
lsnrctl status
EOF

if [ $? -eq 0 ];then
   echo "监听服务运行正常"
   return 0
else
   echo "未启动监听服务"
   return 1
fi

}

# 检查数据库服务状态
function ServiceStatus() {
  
ssh  -o "StrictHostKeyChecking no" -t root@${newip} "ps -ef|grep pmon|grep -v grep"

if [ $? -eq 0 ];then
   echo "数据库服务运行正常"
   return 0
else
   echo "未启动数据库服务"
   return 1
fi

}


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

  echo "启动监听服务中..." 
  ssh  -o "StrictHostKeyChecking no" -t root@${newip} << EOF |tee -a $out_file
  su - oracle
  lsnrctl start
EOF
  echo "启动监听服务完成..."

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

  echo "启动数据库服务中..."
  ssh  -o "StrictHostKeyChecking no" -t root@${newip} << EOF |tee -a $out_file
  su - oracle
  sqlplus / as sysdba
  startup;
  alter pluggable database all open;
  exit;
EOF
  echo "启动数据库服务已完成"

}

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

  echo "关闭监听服务中..."
  ssh  -o "StrictHostKeyChecking no" -t root@${newip} << EOF |tee -a $out_file
  su - oracle
  lsnrctl stop
EOF

echo "关闭监听服务完成..."

}

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

  echo "关闭数据库服务中..."
  ssh  -o "StrictHostKeyChecking no" -t root@${newip} << EOF |tee -a $out_file
  su - oracle
  sqlplus / as sysdba
  shutdown immediate;
  exit;
EOF
  echo "关闭数据库服务完成..."
}

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

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

#场景2: 数据库已关闭,检查关闭监听 
else
  echo "未启动数据库服务,无需执行关闭数据库动作"  
  # 检查监听状态,若已启动监听,则关闭
  ListenerStatus
  if [ $? -eq 0 ];then
    # 关闭监听服务
    ShutdownListener
  else
    echo "未启动监听服务,无需执行关闭监听动作" 
  fi
  
fi

}

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

ListenerStatus
if [ $? -eq 0 ];then
# 场景1:监听已启动,,检查启动数据库服务
  echo "监听服务已是运行状态"
  ServiceStatus
  if [ $? -eq 0 ];then
    echo "数据库服务已是运行状态"
  else
    # 启动数据库服务
    StartupService
  fi

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

  # 启动数据库服务或者重启数据库服务
  ServiceStatus
  if [ $? -eq 0 ];then
     # 数据库状态是运行中,重启数据库服务
    echo "数据库服务状态是运行中,重启数据库服务"
    # 关闭数据库服务
    ShutdownService

    sleep 5s
    
    # 启动数据库服务
    StartupService
  echo "重启数据库服务器已完成"
    
  # 数据库服务停止状态,启动数据库服务
  else
    echo "数据库状态是已关闭"
    # 启动数据库服务
    StartupService
  fi
fi

}

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

case $var in
status)
    # 监听服务状态
    ListenerStatus

    # 数据库服务状态
    ServiceStatus
    ;;

start)
    # 启动监听和数据库服务
    StartupDB
    ;;

stop)
    # 关闭数据库服务和监听
    ShutdownDB
    ;;

restart)
    # 关闭数据库服务和监听
    ShutdownDB

    # 启动监听和数据库服务
    StartupDB
    ;;

*)
    echo "usage $0 [ status|start|restart|stop ]"
    ;;
esac

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

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

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

相关文章

  • oracle数据库常见的优化步骤与脚本

    要优化 Oracle 数据库的性能,可以按照以下步骤进行: 1. 性能分析和诊断:首先,使用 Oracle 提供的性能分析工具(如 AWR 报告、ASH 报告)对数据库进行分析和诊断。这些报告可以帮助您确定数据库的性能瓶颈和潜在问题。 2. 优化 SQL 查询语句:针对频繁执行的 SQL 查询语句进

    2024年02月09日
    浏览(41)
  • 一键启停脚本

    在/root 目录下创建bin文件夹再创建你的文件 文件里面写如下命令 #!/bin/bash if [ $# -lt 1 ] then     echo \\\"No Args Input...\\\"     exit ; fi case $1 in \\\"start\\\")         echo \\\" =================== 启动集群 ===================\\\"         echo \\\" --------------- 启动 ---------------\\\"         ssh linux01 \\\"source /etc/profi

    2024年02月07日
    浏览(27)
  • ​ 金仓数据库KingbaseES数据库如何启停和重启

    数据库、启动数据库、停止数据库、重启数据库 在访问数据库之前,必须启动数据库服务器。可通过命令: ps -ef|grep kingbase 查看数据库服务器当前是否处于启动状态。如下图所示,kingbase进程存在且为正常开启状态,否则数据库服务器未启动。蓝色标注为主进程。 通过king

    2024年02月05日
    浏览(34)
  • Neo4j数据库自动启停与定时备份

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

    2024年01月22日
    浏览(77)
  • 数据库数据恢复-Oracle数据库数据恢复案例

    数据库数据恢复环境: Oracle数据库ASM磁盘组有4块成员盘。 数据库故障分析: Oracle数据库ASM磁盘组掉线 ,ASM实例无法挂载,用户联系我们要求恢复oracle数据库。 数据库数据恢复工程师拿到磁盘后,先将所有磁盘以只读方式进行扇区级别的镜像备份,后续的数据分析和数据恢

    2024年02月13日
    浏览(44)
  • Oracle数据库

    ①层次型数据库 ②网状型数据库 ③关系型数据库(主要介绍) E-R图:属性(椭圆形),实体(矩形),联系(菱形-一对一、一对多、多对多) 注:有的联系也有属性 关系型数据库的设计范式: 第一范式(1NF):属性不可再分,字段保证原子性 第二范式(2NF):在满足1

    2024年02月08日
    浏览(46)
  • Oracle 数据库恢复删除的数据

    需求描述: 同事让删除脏数据,结果删错了,需要恢复数据 思路: 利用闪回恢复数据只能恢复15分钟之内的,后面undo空间会被重写,就恢复不了,所以删除数据后,要谨慎再三确认,若发现不对,则利用闪回恢复 先查询删除时的时间节点的快照 查到时间戳之后 闪回恢复数

    2024年01月24日
    浏览(51)
  • 【数据库】日常使用PL/SQL 登录ORACLE 数据库查询数据

    一、PL/SQL 登录方式 username: ##访问数据库的账号 password: ##访问数据库的密码 Databse: ##数据库IP地址/实例名 数据库集群心跳地址/实例名 Connect as : ##Normal,如果使用sysdba账户登录选择SYSDBA 二、PL/SQL使用SQL语句查询 点击上方导航栏,New,选择SQL Window,即可再次输入要查询的

    2024年02月19日
    浏览(51)
  • 【Oracle】收集Oracle数据库内存相关的信息

    【声明】文章仅供学习交流,观点代表个人,与任何公司无关。 编辑|SQL和数据库技术(ID:SQLplusDB) Oracle数据库包含多个内存区域,每个区域都包含多个子组件。 Oracle Database Memory Structures 根据具体问题的需要,可以通过如下命令收集Oracle数据库内存相关的信息。 例: 注:SET

    2024年01月21日
    浏览(53)
  • Oracle数据库面试题 精选 Oracle 面试题

    1.解释冷备份和热备份的不同点以及各自的优点 冷备份 发生在数据库已经正常关闭的情况下,将关键性文件拷贝到另外位置的一种说法。适用于所有模式的数据库。 优点 1. 是非常快速的备份方法(只需拷贝文件) 2. 容易归档(简单拷贝即可) 3. 容易恢复到某个时间点上(只

    2024年02月05日
    浏览(84)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包