如何使用 shell 脚本以 sysdba 作为登录 ID 检查 oracle 数据库连接

问题描述 投票:0回答:1

我想通过连接到数据库来检查数据库是否已启动,如果已连接,则退出并打印数据库已启动,否则以相同的方式通过登录启动数据库,然后启动和退出。

我试过下面的,我的脚本不是很流利,请原谅我的错误

#!/bin/sh

 echo "exit" | $ORACLE_HOME/bin/sqlplus -S -L  / as sysdba 
 if [ $? -eq 0 ]
 then
       echo "dp up"
  else
      echo "not up  starting $ORACLE_SID db"
      ORACLE_HOME/bin/sqlplus / as sysdba << EOF
      startup
      exit;
       EOF
   done

错误是它总是打印 db is down 即使 db 已启动并且启动没有被执行,它不打印这样的路径或无法连接为 sysdba,我尝试了 change_on_install 密码,但这也不起作用。但我可以手动使用 path/bin/sqlplus / 作为 sysdba 登录并连接到 db.

linux shell logic
1个回答
0
投票

我会做什么(无法测试):

#!/bin/sh

if echo "SELECT 'TRUE'; exit" |
    $ORACLE_HOME/bin/sqlplus -S -L  / as sysdba |
    grep -q 'TRUE'
then 
    echo "dp up"  
else                                      
    echo >&2 "not up  starting $ORACLE_SID db"     
    $ORACLE_HOME/bin/sqlplus / as sysdba <<-EOF
    startup
    exit
    EOF
fi
© www.soinside.com 2019 - 2024. All rights reserved.