互联网服务AIXshellOracle

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

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

参与14

4同行回答

Alex-mAlex-m技术经理中国电信
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的用法,可以进一步找参考资料查询,以上都是常见的一些。

收起
IT其它 · 2017-05-23
浏览5333
liucj2004liucj2004其它undefined
切换oracle数据库然后无法返回root。这个没看懂查询结果写入文件,最简单就是用重定向符号,或者用 spool显示全部

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

收起
农业其它 · 2017-05-23
浏览5311
BJ-也许 邀答
AcdanteAcdante技术总监SHFY
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 <<EOF ...显示全部

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 <<EOF
                                 connect / as sysdba
                                 spool "${LogFile}.log"
                                 set pagesize 999
                                 set line 170
                                 $3$4$5$6$7$8
                                 spool off
                                 quit
                                 EOF
                                " 2>&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
浏览4743
BJ-也许 邀答
haizdlhaizdl技术经理大连
我理解你说的意思是当用ORACLE用户执行某些部分之后,脚本后台再次返回到root用户?如果我理解的没有错的话,在执行数据库巡检部分你可以用“su - oracle -c”。截取一段供你参考:function _dbinfo(){cd $PWDDIRECTORYsu - oracle -c "cd $LOGDIR/db;export ORACLE_SID=$1;sqlp...显示全部

我理解你说的意思是当用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
浏览5063
BJ-也许 邀答

提问者

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

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2017-05-23
  • 关注会员:5 人
  • 问题浏览:8841
  • 最近回答:2017-05-25
  • X社区推广