DB2 如何获得存储过程对应的包中的执行计划

编写一个 shell 脚本,可以直接根据 存储过程名字来查看执行计划.


vi ck_proc_expln.sh
### ck_proc_expln.sh
# 将第1个 输入参数 的值,赋予 base_dir,用于shell 执行的 根目录
base_dir=${1}


# 将第2个 输入参数 的值,赋予 v_proc_schema,用于 存储 存储过程的模式名
v_proc_schema=${2}


# 将第3个 输入参数 的值,赋予 v_proc_name,用于 存储 存储过程的名字
v_proc_name=${3}


# 设置数据库名
database_name=testdb


# 连接数据库.
db2 +o "connect to ${database_name}"


# 根据存储过程名获取数据库中对应的包名.
packe_name_tmp=`db2 -x "select substr(b.bname,1,40) package_name from syscat.procedures a,syscat.routinedep b where a.specificname = b.routinename and procschema=upper('${v_proc_schema}') and procname=upper('${v_proc_name}') and b.btype='K'"`
packe_name=`echo ${packe_name_tmp}`


echo ""
# 断开数据库.
db2 +o "terminate"


# 查看存储过程对应的包中的执行计划
db2expln -d ${database_name} -g -c ${v_proc_schema} -p ${packe_name} -s 0 -t


# 调用例子:
# ./ck_proc_expln.sh /home/db2inst1 db2inst1 proc_get_app_handle
# 第1个 参数为shell 执行的 根目录
# 第2个 参数为存储过程的模式名
# 第3个 参数为存储过程的名字


[db2inst1@db2-005 ~]$ ./ck_proc_expln.sh /home/db2inst1 db2inst1 proc_get_app_handle


DB2 Universal Database Version 10.1, 5622-044 (c) Copyright IBM Corp. 1991, 2011
Licensed Material - Program Property of IBM
IBM DB2 Universal Database SQL and XQUERY Explain Tool


******************** PACKAGE ***************************************


Package Name = "DB2INST1"."P1120771772"  Version = ""


        Prep Date = 2015/01/15
        Prep Time = 21:20:54


        Bind Timestamp = 2015-01-15-21.20.54.456606


        Isolation Level          = Cursor Stability
        Blocking                 = Block Unambiguous Cursors
        Query Optimization Class = 5


        Partition Parallel       = No
        Intra-Partition Parallel = No


        SQL Path                 = "SYSIBM", "SYSFUN", "SYSPROC", "SYSIBMADM", 
                                   "DB2INST1"


-------------------- SECTION ---------------------------------------
Section = 1




Statement:
  
  select APPLICATION_HANDLE, APPLICATION_NAME into :HV00009 :HI00009 ,
          :HV00010 :HI00010 
  from SYSIBMADM.MON_CURRENT_SQL 
  where ACTIVITY_TYPE='CALL' and LOCATE(UPPER(:HV00008 :HI00008 ), 
          UPPER(STMT_TEXT))> 0 and LOCATE(UPPER(:HV00012 :HI00012 ), 
          UPPER(STMT_TEXT))=0




Section Code Page = 1208


Estimated Cost = 1.299523
Estimated Cardinality = 0.003495


Access User Defined Table Function
|  Name = SYSPROC.MON_GET
|  Specific Name = MON_GET_PKG_CACHE_STMT
|  SQL Access Level = No SQL
|  Language = C
|  Parameter Style = 


ERROR -- Unknown Parameter Style (9)


|  Not Fenced                   Not Deterministic
|  Called on NULL Input         Disallow Parallel
|  Threadsafe                   Secured
|  #Columns = 3
|  May participate in Scan Sharing structures
|  Scan may start anywhere and wrap, for completion
|  Scan can be throttled in scan sharing management
|  Relation Scan
|  |  Prefetch: Eligible
|  Residual Predicate(s)
|  |  #Predicates = 2
Hash Join
|  Estimated Build Size: 4000   
|  Estimated Probe Size: 4000   
|  Access User Defined Table Function
|  |  Name = SYSPROC.WLM_GET
|  |  Specific Name = WLM_GET_WORKLOAD_OCCURRENCE_ACTIVITIES
|  |  SQL Access Level = No SQL
|  |  Language = C
|  |  Parameter Style = 


ERROR -- Unknown Parameter Style (9)


|  |  Not Fenced                   Not Deterministic
|  |  Called on NULL Input         Disallow Parallel
|  |  Threadsafe                   Secured
|  |  #Columns = 6
|  |  May participate in Scan Sharing structures
|  |  Scan may start anywhere and wrap, for completion
|  |  Scan can be throttled in scan sharing management
|  |  Relation Scan
|  |  |  Prefetch: Eligible
|  |  Residual Predicate(s)
|  |  |  #Predicates = 1
Hash Join
|  Early Out: Single Match Per Inner Row
|  Estimated Build Size: 4000   
|  Estimated Probe Size: 36000  
|  Bit Filter Size: 4096
|  Access User Defined Table Function
|  |  Name = SYSPROC.WLM_GET
|  |  Specific Name = WLM_GET_WORKLOAD_OCCURRENCE_ACTIVITIES
|  |  SQL Access Level = No SQL
|  |  Language = C
|  |  Parameter Style = 


ERROR -- Unknown Parameter Style (9)


|  |  Not Fenced                   Not Deterministic
|  |  Called on NULL Input         Disallow Parallel
|  |  Threadsafe                   Secured
|  |  #Columns = 4
|  |  May participate in Scan Sharing structures
|  |  Scan may start anywhere and wrap, for completion
|  |  Fast scan, for purposes of scan sharing management
|  |  Scan can be throttled in scan sharing management
|  |  Relation Scan
|  |  |  Prefetch: Eligible
|  Insert Into Sorted Temp Table  ID = t1
|  |  #Columns = 4
|  |  #Sort Key Columns = 3
|  |  |  Key 1: (Ascending)
|  |  |  Key 2: (Ascending)
|  |  |  Key 3: (Ascending)
|  |  Sortheap Allocation Parameters:
|  |  |  #Rows     = 1000.000000
|  |  |  Row Width = 28
|  |  Piped
|  Access Temp Table  ID = t1
|  |  #Columns = 4
|  |  Relation Scan
|  |  |  Prefetch: Eligible
|  |  Sargable Predicate(s)
|  |  |  Predicate Aggregation
|  |  |  |  Group By
|  |  |  |  Column Function(s)
|  |  |  Process Probe Table for Hash Join
|  Aggregation Completion
|  |  Group By
|  |  Column Function(s)
Hash Join
|  Estimated Build Size: 4000   
|  Estimated Probe Size: 116000 
|  Bit Filter Size: 4096
|  Access User Defined Table Function
|  |  Name = SYSPROC.MON_GET
|  |  Specific Name = MON_GET_CONNECTION
|  |  SQL Access Level = No SQL
|  |  Language = C
|  |  Parameter Style = 


ERROR -- Unknown Parameter Style (9)


|  |  Not Fenced                   Not Deterministic
|  |  Called on NULL Input         Disallow Parallel
|  |  Threadsafe                   Secured
|  |  #Columns = 3
|  |  May participate in Scan Sharing structures
|  |  Scan may start anywhere and wrap, for completion
|  |  Fast scan, for purposes of scan sharing management
|  |  Scan can be throttled in scan sharing management
|  |  Relation Scan
|  |  |  Prefetch: Eligible
Return Data to Application
|  #Columns = 2


End of section




Optimizer Plan:


         Operator 
           (ID)   
                 
          RETURN 
           ( 1)  
            |    
          HSJOIN 
           ( 2)  
         /      \
  TBSCAN          HSJOIN 
   ( 3)            ( 4)  
   |             /      \
 TFunc:    GRPBY        HSJOIN 
 SYSPROC   ( 5)          ( 9)  
 MON_GET    |          /      \
          TBSCAN   TBSCAN   TBSCAN 
           ( 6)     (10)     (11)  
            |       |        |     
           SORT   TFunc:   TFunc:  
           ( 7)   SYSPROC  SYSPROC 
            |     WLM_GET  MON_GET 
          TBSCAN 
           ( 8)  
           |     
         TFunc:  
         SYSPROC 
         WLM_GET 













  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值