在数据库运维的过程中,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