运行 pl/sql 脚本时遇到问题

Posted

技术标签:

【中文标题】运行 pl/sql 脚本时遇到问题【英文标题】:Facing issues while running pl/sql script 【发布时间】:2020-11-27 13:14:03 【问题描述】:

通过运行以下脚本在 /etc/udev/rules.d/99-oracle-asmdevices.rules 文件中重建 udev 规则:

 i=1
          cmd="/sbin/scsi_id -g -u -d"
          for disk in sdb sdc sdd sde sdf; do 
                   cat <<EOF >> /etc/udev/rules.d/99-oracle-asmdevices.rules
          KERNEL=="sd?1",SUBSYSTEM=="block", PROGRAM=="$cmd /dev/\$parent", \
           RESULT=="`$cmd /dev/$disk`", SYMLINK+="asm-disk$i", OWNER="grid", GROUP="dba", MODE="0660"
          EOF
                   i=$(($i+1))

错误消息:

script.sh:第 11 行:语法错误:文件意外结束 [root@london1 sf_D_DRIVE]# 警告:第 5 行的此处文档由文件结尾分隔(需要 EOF') -bash: syntax error near unexpected token ('

【问题讨论】:

虽然是一个有趣的代码挑战,但归根结底,如果您只是用 vi 打开文件并手动调整/插入设置,那么您现在就完成了。文件中只有 5 行需要处理 有时为了学习如何处理更复杂的问题,有意识地将任务复杂化是值得的。不过,知道何时手动处理它也很好 【参考方案1】:

首先,https://www.shellcheck.net/ - 收藏它,使用它。

我的修正和调整 -

#!/bin/bash
i=0
cmd="/sbin/scsi_id -g -u -d"
for disk in sdb sdc sdd sde sdf
do ((i++)); cat >> /etc/udev/rules.d/99-oracle-asmdevices.rules <<EOF
      KERNEL=="sd?1",SUBSYSTEM=="block", PROGRAM=="$cmd /dev/\$parent", \
       RESULT=="$($cmd /dev/$disk)", SYMLINK+="asm-disk$i", OWNER="grid", GROUP="dba", MODE="0660"
EOF
done

【讨论】:

感谢您的帮助和链接!我目前正在导入一些文件,之后我一定会这样做。 有帮助吗?如果是这样,请接受解决方案 - 单击复选标记。

以上是关于运行 pl/sql 脚本时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

在 PL/SQL 脚本上使用 DB 链接会引发“找不到表”错误

Oracle SQL Developer:运行脚本,出错时继续

传递多个 oracle PL\SQL 块的 C# 得到“遇到符号 /”

PL/SQL:我在用另一个表中的数据更新表时遇到问题

PL/SQL:如何运行存储在表列中的sql语句来获取sql语句的执行时间?

当我选择 [关闭] 时,我在正文包 pl/sql 中遇到问题