在我的 docker 容器中,我正在尝试 -
下面是我正在尝试的示例脚本,但它给我错误,例如找不到命令。 请帮我解决这个
#!/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
通常,从 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 中的命令行参数和“设置”调用以适合您的特定用例,但whenever sqlerror 子句可用于检查脚本中 sql 语句的返回码。
这不仅适用于 sqlplus,还适用于许多其他类型的数据库引擎。