Linux/Unix shell参数传递到SQL脚本

在数据库运维的过程中,Shell脚本在很大程度上为运维提供了极大的便利性。而Shell脚本参数作为变量传递给SQL以及SQL脚本也是DBA经常碰到的情形之一。本文主要讨论了如何将Shell脚本的参数传递到SQL脚本之中并执行SQL查询。


1,启动sqlplus时执行脚本并传递参数


robin@SZDB: ~/dba_scripts/定制/awr>更多的tmp。sh,

# !/bin/bash,


# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,

#,这里设置环境,

#,作者:罗宾逊程,

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,


如果[- f ~/ash_profile];然后,

,,。~/ash_profile, fi,


如果[- z“$ {1}“;)| | (- z“$ {2}“;)| | (- z“$ {3}“;);然后,

,,呼应“用法:“,

,,呼应“;,,,' basename $ 0 ' & lt; ORACLE_SID>& lt; begin_dat>& lt; end_date>“,

,,阅读- p“请输入开始ORACLE_SID:“ORACLE_SID,

,,阅读- p“请输入开始日期和时间(如。yyyymmddhh34):“begin_date,

,,阅读- p“请输入结束日期和时间(如。yyyymmddhh34):“end_date,其他

,

,,ORACLE_SID=$ {1}

,,begin_date=$ {2}

,,end_date=$ {3}

fi,


出口ORACLE_SID begin_date end_date,


#方法1:直接将参数传递给脚本脚本名后,

sqlplus - s gx_adm/gx_adm @/用户/罗宾/dba_scripts/定制/心田/tmp。sql begin_date end_date美元,


退出,


robin@SZDB: ~/dba_scripts/定制/awr>更多的tmp。sql,

选择snap_id dbid, snap_level,

,从dba_hist_snapshot,

, TO_CHAR (begin_interval_time & # 39; yyyymmddhh34& # 39;)=& # 39;, 1 & # 39;,

,,,和TO_CHAR (end_interval_time & # 39; yyyymmddhh34& # 39;)=& # 39;, 2 & # 39;;,

退出;,



2,在SQL提示符下传递参数


robin@SZDB: ~/dba_scripts/定制/awr>更多的tmp2。sh,

# !/bin/bash,


# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,

#,这里设置环境,

#,作者:罗宾逊程,

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,


如果[- f ~/ash_profile];然后,

,,。~/ash_profile, fi,


如果[- z“$ {1}“;)| | (- z“$ {2}“;)| | (- z“$ {3}“;);然后,

,,呼应“用法:“,

,,呼应“;,,,' basename $ 0 ' & lt; ORACLE_SID>& lt; begin_dat>& lt; end_date>“,

,,阅读- p“请输入开始ORACLE_SID:“ORACLE_SID,

,,阅读- p“请输入开始日期和时间(如。yyyymmddhh34):“begin_date,

,,阅读- p“请输入结束日期和时间(如。yyyymmddhh34):“end_date,其他

,

,,ORACLE_SID=$ {1}

,,begin_date=$ {2}

,,end_date=$ {3}

fi,


出口ORACLE_SID begin_date end_date,


# 2:方法传递参数的SQL提示。使用相同的方法和方法1,

sqlplus - s“;/sysdba"& lt; & lt; EOF,

@/用户/罗宾/dba_scripts/定制/心田/tmp。sql begin_date end_date美元,

退出;,

EOF,退出

,



3,通过定义变量的方式来传递参数


robin@SZDB: ~/dba_scripts/定制/awr>更多的tmp3。上海,

# !/bin/bash,


# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,

#,这里设置环境,

#,作者:罗宾逊程,

# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -,


如果[- f ~/ash_profile];然后,

,,。~/ash_profile, fi,


如果[- z“$ {1}“;)| | (- z“$ {2}“;)| | (- z“$ {3}“;);然后,

,,呼应“用法:“,

,,呼应“;,,,' basename $ 0 ' & lt; ORACLE_SID>& lt; begin_dat>& lt; end_date>“,

,,阅读- p“请输入开始ORACLE_SID:“ORACLE_SID,

,,阅读- p“请输入开始日期和时间(如。yyyymmddhh34):“begin_date,

,,阅读- p“请输入结束日期和时间(如。yyyymmddhh34):“end_date,其他

,

,,ORACLE_SID=$ {1}

,,begin_date=$ {2}

,null

Linux/Unix shell参数传递到SQL脚本