AIX下shell脚本问题,如何在脚本中交接oracle数据库然后将查询结果写入文件

我是一个萌新,每天日检太麻烦了,领导说写一个脚本,环境是aix双机rac 巡检内容包括,aix磁盘,集群状态,还有就是数据库内的问题,例如asm磁盘,变空间等。现在问题出在切换oracle数据库然后无法返回root.请各位大神指教

4回答

Alex-mAlex-m  技术经理 , 中国电信
YLFengmaguangACDante等赞同了此回答
sqlplus -s /nolog <<EOF 2>>error.logconn usrname/passwdset colsep ','set echo offset feed offset head offset pagesize 0set linesize 500set termout offset trimout onset trimspool onspool "test.lst"select sysdate from dual;spool offquit;EO...显示全部

sqlplus -s /nolog <<EOF 2>>error.log
conn usrname/passwd
set colsep ','
set echo off
set feed off
set head off
set pagesize 0
set linesize 500
set termout off
set trimout on
set trimspool on
spool "test.lst"
select sysdate from dual;
spool off
quit;
EOF

在shell中访问数据库大概手写了一个样例,,好长时间比搞了,仅做参考,关于sqlplus的参数开关以及spool的用法,可以进一步找参考资料查询,以上都是常见的一些。

收起
 2017-05-23
浏览3055
undefinedundefined  其它 , undefined
晶华烟云赞同了此回答
切换oracle数据库然后无法返回root。这个没看懂查询结果写入文件,最简单就是用重定向符号,或者用 spool显示全部

切换oracle数据库然后无法返回root。这个没看懂
查询结果写入文件,最简单就是用重定向符号,或者用 spool

收起
 2017-05-23
浏览3070
BJ-也许 邀答
ACDanteACDante  技术经理 , STARSINO
print_command "$2" "SQL";print_result_topcommand_output=su - oracle -c "export ORACLE_SID=$db_name export NLS_LANG='AMERICAN_AMERICA.ZHS16GBK' sqlplus -s /nolog &lt;&lt;EOF connect / as sysdba spool "${LogFile}.log" set pagesize 999 set line ...显示全部

print_command "$2" "SQL";print_result_top
command_output=su - oracle -c "export ORACLE_SID=$db_name export NLS_LANG='AMERICAN_AMERICA.ZHS16GBK' sqlplus -s /nolog &lt;&lt;EOF connect / as sysdba spool "${LogFile}.log" set pagesize 999 set line 170 $3$4$5$6$7$8 spool off quit EOF " 2>&amp;1
echo "$command_output"|grep -q "no rows selected"
if [[ $? -eq 0 ]];then eecho "No rows selected"
else cat ${LogFile}.log|egrep -v "rows selected"|egrep -v "PL/SQL procedure successfully completed"|awk 'NF'>>${LogFile} 2>&1;fi
RM "${LogFile}.log"
else
print_command "$3 $2 $4";print_result_top
if [[ $1 = "N_Spfile" ]];then
su - oracle -c "export ORACLE_SID=$db_name
sqlplus -s /nolog <<EOF
connect / as sysdba
quit
EOF
">/dev/null

收起
 2017-05-25
浏览2551
BJ-也许 邀答
赵海赵海  技术经理 , 大连
我理解你说的意思是当用ORACLE用户执行某些部分之后,脚本后台再次返回到root用户? 如果我理解的没有错的话,在执行数据库巡检部分你可以用“su - oracle -c”。 截取一段供你参考: function _dbinfo(){ cd $PWDDIRECTORY su - oracle -c "cd $LOGDIR/db;export ORACLE_SID=$1...显示全部

我理解你说的意思是当用ORACLE用户执行某些部分之后,脚本后台再次返回到root用户?

如果我理解的没有错的话,在执行数据库巡检部分你可以用“su - oracle -c”。

截取一段供你参考:

function _dbinfo(){ cd $PWDDIRECTORY su - oracle -c "cd $LOGDIR/db;export ORACLE_SID=$1;sqlplus -s /nolog <<EOF conn / as sysdba; @$LOGDIR/../dailycheck.sql exit; EOF" }

收起
 2017-05-24
浏览2757
BJ-也许 邀答

提问者

晶华烟云系统运维工程师, 内蒙古浪潮信息科技有限公司

问题状态

  • 发布时间:2017-05-23
  • 关注会员:5 人
  • 问题浏览:5399
  • 最近回答:2017-05-25
  • 关于TWT  使用指南  社区专家合作  厂商入驻社区  企业招聘  投诉建议  版权与免责声明  联系我们
    © 2019  talkwithtrend — talk with trend,talk with technologist 京ICP备09031017号-30