在shell脚本中插入SQL脚本

cwdobuhd  于 2023-05-07  发布在  Shell
关注(0)|答案(1)|浏览(117)

在我的docker容器里我试着-
1.在sqlplus中停止数据库
1.在特定目录下运行命令
1.重新启动数据库
下面是我正在尝试的示例脚本,但它给了我类似命令未找到的错误。请在这件事上帮帮我

#!/bin/bash

if [[ $(sqlplus -L sys/$TIA_SYS_PWD@tia as sysdba <<< "select * from v\$option where PARAMETER = 'Unified Auditing';" | grep FALSE) == *FALSE* ]]; then
     sqlplus -L -S  / as sysdba <<< "shutdown immediate"
     cd $ORACLE_HOME/rdbms/lib; make -f ins_rdbms.mk uniaud_on ioracle
     sqlplus -L -S / as sysdba <<< "startup"
     sqlplus -L sys/$TIA_SYS_PWD@tia as sysdba <<< "select * from v\$option where PARAMETER = 'Unified Auditing';"
else
     echo "Unified Auditing already enabled"   
fi

错误消息已附加x1c 0d1x

roejwanj

roejwanj1#

通常,从bash脚本与数据库对话的最佳方式是使用HERE文档
https://tldp.org/LDP/abs/html/here-docs.html
举个例子

sqlplus ... <<EOF
   whenever sqlerror exit sql.sqlcode;
   [QUERY]
   exit;
EOF

if [ $? -ne 0 ]; then
   # [QUERY] returned an error
fi

你将需要命令行参数和heredoc中的'set'调用来适应你的特定用例,但是 whenever sqlerror 子句对于检查脚本中sql语句的返回代码很有用。
这不仅适用于sqlplus,还适用于许多其他类型的数据库引擎。

相关问题