我想通过连接到数据库来检查数据库是否已启动,如果已连接,则退出并打印数据库已启动,否则以相同的方式通过登录启动数据库,然后启动和退出。
我试过下面的,我的脚本不是很流利,请原谅我的错误
#!/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.
我会做什么(无法测试):
#!/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