Sql 从以root用户身份运行的shell脚本以oracle用户身份运行oracle脚本
我有一个作为root运行的shell脚本。我希望脚本切换到oracle用户,运行sqlplus并运行一些Sql 从以root用户身份运行的shell脚本以oracle用户身份运行oracle脚本,sql,linux,shell,unix,Sql,Linux,Shell,Unix,我有一个作为root运行的shell脚本。我希望脚本切换到oracle用户,运行sqlplus并运行一些.sql文件。 我正努力做到: su - oracle << -EOF1 2>&1 sqlplus $user/$password << -EOF2 @oracle.sql; @quartz.sql; EOF2 EOF1 su-甲骨文&1 sqlplus$u
.sql
文件。
我正努力做到:
su - oracle << -EOF1 2>&1
sqlplus $user/$password << -EOF2
@oracle.sql;
@quartz.sql;
EOF2
EOF1
su-甲骨文&1
sqlplus$user/$password使用:
if[“$(id-un)”-eq“root”];然后
执行官su-甲骨文-c$0
fi
sqlplussu-oracle-c“echo”从dual中选择1;
从dual;“| sqlpus/as sysdba”中选择2
如果包含“使用以下内容”
su-oracle-c“echo\”从双通道中选择1;
从双重选择中选择2\“|sqlpus/as sysdba”我同意以root身份运行脚本是一种非常糟糕的做法,但我别无选择,因为运行脚本的基础结构是以root身份运行的。改变它不是我的事那么你的解决方案到底做了什么?我明白了。很好的技巧,不幸的是,脚本中有一些部分需要作为root用户运行(这不是整个脚本,还有其他部分)。因此,我必须使用EOF块结构。我的脚本也可以有参数,使Oracle特定的部分在另一个脚本中运行,您可以像上面那样调用它?另外,请注意,herdoc标记必须位于行的开头
if [ "$(id -un)" -eq "root" ]; then
exec su - oracle -c $0
fi
sqlplus <<EOF
blablabla
EOF