REBIND PACKAGE 子命令(数据链路层)

当您对应用程序包进行了影响包但未更改程序中SQL语句的更改时,DSN子命令REBIND PACKAGE会重新绑定该应用程序包。

例如,在完成以下操作后,您可以使用“重新绑定软件包”:

  • 迁移到新的 Db2 版本
  • 进行维护 Db2
  • 修改授权
  • 创建一个新索引,以便程序包中的语句可以使用
  • 使用RUNSTATS实用程序或其他实用程序,通过STATISTICS关键字收集统计数据

更改开始此命令可用于重新绑定高级触发器的程序包。 然而,如果在功能级别500 或更高版本激活之前创建的触发器或基本触发器发出REBIND PACKAGE命令,将导致错误。更改结束

更改开始对于高级触发器的触发器包,您可以使用REBIND PACKAGE进行以下操作:更改结束

更改开始
  • 在创建新索引或使用RUNSTATS实用程序后,重新优化触发器中的SQL语句
  • 更改创建软件包时使用的部分默认绑定选项
  • 使一个触发器包在标记为无效后仍然有效,因为触发器所依赖的对象被丢弃了
更改结束

更改开始您可以使用REBIND PACKAGE为现有的REST服务更改默认的REST服务版本。更改结束

REBIND PACKAGE通常比BIND PACKAGE更快、更经济。 在以下情况下,您应该使用带有ACTION(REPLACE)选项的BIND PACKAGE:
  • 当您更改 SQL 语句时
  • 当您重新编译程序时
  • 当您之前使用SQLERROR(CONTINUE)选项运行过BIND PACKAGE时

更改开始当发出REBIND PACKAGE(重新绑定包)(*)命令时,唯一受影响的触发器包是发行人有权重新绑定的先进触发器包。更改结束

更改开始

逐步引入套餐副本,用于 REBIND PACKAGE

FL 505

REBIND PACKAGE 命令可能会创建一个新版本的当前副本,同时保留现有的当前副本作为淘汰副本。 这被称为重新绑定阶段。 一个现有数据包可能会有多个副本,但只有一个当前副本。 可能存在一份原始副本、一份之前的副本以及多份已淘汰的副本。

当前副本的副本ID为0(或 non-0 ),存储在目录表SYSPACKAGE中。 原始副本的副本ID分别为1和2,可在SYSPACKCOPY表中找到。 所有已淘汰的副本都有一个不同于1和2的副本ID,也可以在SYSPACKCOPY中找到。

线程执行的包副本可以在包会计跟踪记录中找到。 该副本可以是当前版本,也可以是已淘汰版本。 Db2 在后续执行REBIND PACKAGE命令时,可能会删除已淘汰的副本。 您可能希望静置执行已淘汰副本的线程,然后重新绑定软件包,以减少因淘汰副本而产生的存储空间。

通过以下选项支持重新绑定分阶段:
  • APREUSE(无)PLANMGMT(扩展)
  • 警报(警告) 计划管理(扩展) 警报源(当前)
  • apreuse(错误) planmgmt(扩展) apreusesource(当前)

更改开始如果命令还指定了任何绑定选项的更改,导致无法使用 PLANMGMT(EXTENDED) 选项,则不支持重新绑定分阶段。 更多信息,请参阅 PLANMGMT 绑定选项更改结束

该包不得是为触发器或SQL例程(如存储过程或用户定义函数)生成的包。

Db2 在创建包副本以进行重新绑定阶段操作之前,等待 IRLMRWT 子系统参数指定的持续时间。

有关更多信息,请参阅 《包重新绑定分阶段实施》

更改结束

环境 REBIND PACKAGE

您可以通过 DB2I 使用 REBIND PACKAGE,或者在前台或后台运行的 DSN 会话中输入 REBIND PACKAGE 子命令。

数据共享范围 :集团

授权 REBIND PACKAGE

包所有者必须有权执行包中嵌入的所有SQL语句,以便REBIND PACKAGE能够构建包而不返回错误消息。 对于VALIDATE(BIND), Db2 会在绑定时验证授权。 对于 VALIDATE(RUN), Db2 会在绑定时验证授权,但如果授权检查失败, Db2 会在运行时重新检查。

当指定EXPLAIN(ONLY)时,您必须拥有EXPLAIN权限。

包所有者必须是一个角色,在可信环境中执行 REBIND PACKAGE,并拥有角色所有权。

下表根据指定的选项说明了运行REBIND PACKAGE所需的授权。

表 1. 特权摘要 REBIND PACKAGE
选项 运行REBIND PACKAGE需要授权
重新绑定套餐,所有权不变,因为未指定所有者关键字。 流程的授权ID必须具有以下权限之一:
  • 套餐所有权
  • 对程序包的 BIND 特权
  • 包裹所有者提供的绑定特权
  • 对集合或所有集合的 PACKADM 权限
  • SYSADM或SYSCTRL或系统DBADM权限
REBIND PACKAGE,所有权不变,但原始所有者被指定为OWNER关键字。 流程的授权ID必须具有以下权限之一:
  • 所有者 授权ID 必须是活页夹的主要或次要授权 ID 之一
  • 包裹所有者提供的绑定特权
所有权变更后的重新编号包。 (非原车主的授权ID在OWNER关键字中指定。) 新的车主必须具备以下权限之一:
  • 对程序包的 BIND 特权
  • 对集合或所有集合的 PACKADM 权限
  • SYSADM或SYSCTRL或系统DBADM权限

如果进程的任何授权ID或角色具有SYSADM权限、SYSCTRL权限或系统DBADM权限,则当子系统参数SEPARATE_SECURITY设置为NO时,OWNER 授权ID 可以为任何值。 如果授权ID中包含所有者授予的BINDAGENT权限,则 授权ID 可以将授权者指定为所有者。 否则,OWNER 授权ID 必须是活页夹的主授权ID或次授权ID之一。

如果您指定了所有者 授权IDDb2 会首先检查所有者,然后检查活页夹是否具有必要的活页夹权限。

如果绑定者没有 SYSADM、SYSCTRL 或系统 DBADM 权限,则所有者必须具有以下权限之一,才能将新软件包或现有软件包的新版本添加到集合中:

  • BINDADD系统特权以及CREATE IN特权或PACKADM权限,适用于单个或所有收藏
  • SYSADM、SYSCTRL或系统DBADM权限
更改开始

语法 REBIND PACKAGE

阅读语法图跳过可视化语法图 REBIND PACKAGEID块OWNER( 授权ID)QUALIFIER( 限定词) 启用块计划管理模块 加速挡CONCENTRATESTMT(NOYES)CURRENTDATA(YESNO)DBPROTOCOL(DRDADRDACBF)DEFER(PREPARE)DEFER(INHERITFROMPLAN)NODEFER(PREPARE)DEGREE(1ANY)DESCSTAT(NOYES)DYNAMICRULES(RUNBINDDEFINEINVOKE)ENCODING(ASCIIEBCDICUNICODEccsid)ACCELERATOR( ' 加速器名称' )EXPLAIN(YESNOONLY)FLAG(IWEC)IMMEDWRITE(INHERITFROMPLANNOYES)ISOLATION(RRRSCSURNC)KEEPDYNAMIC(NOYES)REOPT(NONE1ALWAYS2ONCEAUTO)OPTHINT(' 提示-ID')PATH(,模式名称USER) PATHDEFAULT3 ROUNDING(CEILINGDOWNFLOORHALFDOWNHALFEVENHALFUPUP)RELEASE(COMMITDEALLOCATEINHERITFROMPLAN)RESTSERVICEDEFAULT4(是的)SWITCH(PREVIOUSORIGINAL)VALIDATE(RUNBIND)EXTENDEDINDICATOR(NOYES)CONCURRENTACCESSRESOLUTION(USECURRENTLYCOMMITTEDWAITFOROUTCOME)GENERIC( ' 字符串' )BUSTIMESENSITIVE(YESNO)SYSTIMESENSITIVE(YESNO)ARCHIVESENSITIVE(YESNO)APPLCOMPAT( 应用兼容性级别)
注意:
  • 1 NOREOPT(VARS) 可以被指定为 REOPT(NONE) 的同义词
  • 2 REOPT(VARS) 可以被指定为 REOPT(ALWAYS) 的同义词
  • 3 PATHDEFAULT 关键字与 PATH 关键字互斥。 请勿在同一REBIND命令中同时指定两个关键字。
  • 4 “RESTSERVICEDEFAULT”选项仅适用于本地REST服务包。

ID块

阅读语法图跳过可视化语法图(,地点名称.收藏-ID*.包裹编号*.(版本号*)*)

启用块

阅读语法图跳过可视化语法图ENABLEDISABLE(,BATCHDLIBATCHDB2CALLCICSIMSIMSBMPIMSMPPREMOTERRSAF)ENABLE(*)DLIBATCH(,连接名称)CICS(,APPLID)IMSBMP(,)IMSMPP(,)

计划管理模块

阅读语法图跳过可视化语法图 PLANMGMT1(BASICEXTENDEDOFF) APREUSE1(NONEERRORWARN)APREUSESOURCE(CURRENTPREVIOUSORIGINAL)APCOMPARE1(NONEWARNERROR)APRETAINDUP1(YESNO)
注意:
  • 1 该选项不支持触发器包。

加速挡

阅读语法图跳过可视化语法图GETACCELARCHIVE(NOYES)QUERYACCELERATION(NONEENABLEENABLEWITHFAILBACKELIGIBLEALL)

加速挡

阅读语法图跳过可视化语法图加速挡QUERYACCELERATION(NONEENABLEENABLEWITHFAILBACKELIGIBLEALL)GETACCELARCHIVE(NOYES)ACCELERATIONWAITFORDATA( ' nnnn.m' )ACCELERATOR( ' 加速器名称' )
阅读语法图跳过可视化语法图QUERYACCELERATION(NONEENABLEENABLEWITHFAILBACKELIGIBLEALL)GETACCELARCHIVE(NOYES)ACCELERATIONWAITFORDATA( ' nnnn.m' )ACCELERATOR( ' 加速器名称' )
更改结束

描述 REBIND PACKAGE

以下选项通过指定位置、集合、包名称和版本来识别要重新绑定的包。 您必须指定一个包名称,也可以提供一个版本ID。

地点名称

数据库管理系统(DBMS)的位置,包在此重新绑定,包的描述也位于此处。 必须在 SYSIBM.LOCATIONS 目录表中定义地点名称。 如果该表不存在或数据库管理系统中不存在该表,您将收到一条错误消息。 请参阅 《地点》目录表

默认值为本地数据库管理系统。

收藏-ID*

指定包含要绑定的包的集合,或指定已包含要重新绑定的包的集合。 没有缺省值。

您可以使用星号(* )在您拥有绑定权限的所有收藏集中,用指定的 包裹编号 重新绑定所有本地软件包。

package-id*

指定要重新绑定的包的名称,该名称列在目录表 SYSPACKAGE 的 NAME 列中。 没有缺省值。 您可以使用星号(* )重新绑定所有您有绑定权限的本地软件包。

包标识符值可以是未定界或定界的标识符。 package-id的分隔符是双引号(“)。如果 package-id 被分隔, Db2 不会将值转换为大写。

版本号或 *
指定要重新绑定的包版本,如目录表 SYSPACKAGE 的版本列中所示。

您可以使用星号(*)重新绑定您拥有绑定权限的指定 软件包ID集合ID中的 所有本地版本。

仅使用 () 重新绑定空字符串标识的包版本。

如果省略 version-id ,则默认值取决于 package-id 的指定方式。 如果您在 包裹编号 中使用*,则 版本号 默认为*。 如果您明确提供了 package-id 的值,则 version-id 默认为空字符串版本。

*
重新绑定所有本地 Db2 软件包,其中适用的授权ID具有绑定权限。 指定 (*) 与指定软件包名称为 (*.*.(*))(*.*) 相同。 适用的授权ID为:
  • 如果您使用该选项,OWNER的价值
  • 如果您不使用OWNER选项,则运行绑定过程的主要授权ID
REBIND PACKAGE的其他选项

有关语法图中其他选项的说明,请参阅主题 " 软件包、计划和服务的 BIND 和 REBIND 选项 "。

使用说明 REBIND PACKAGE

重新装订多个包裹
如果您重新绑定多个软件包, Db2 会在绑定下一个软件包之前提交每个成功的绑定。
更改开始逐步实行包件重新绑定更改结束
更改开始FL 505重新绑定阶段Db2 可以在执行软件包的同时重新绑定软件包。 重新装订操作会创建一个新副本。 当重新绑定操作完成后,新线程可以立即使用新的包副本,而现有线程可以继续使用重新绑定前正在使用的副本(即淘汰的副本),不会造成任何中断。 如需了解更多信息,请参阅软件包分阶段重新绑定更改结束
为本地SQL程序重新绑定包
更改开始如果针对本地 SQL 存储过程包发出 REBIND PACKAGE 命令,则可以更改的绑定选项只有 EXPLAIN(但不接受 EXPLAIN(ONLY))、PLANMGMT、SWITCH、APRETAINDUP、APREUSE、APREUSESOURCE 和 APCOMPARE。更改结束 如果您尝试更改其他绑定选项,命令将失败并返回信息。 DSNT215I REBIND PACKAGE命令仅重新绑定存储过程中的SQL语句,而不重新绑定存储过程定义中的控制语句。
为SQL函数重新绑定包
如果您对SQL函数的包发出REBIND PACKAGE命令,则只能更改EXPLAIN、PLANMGMT和SWITCH绑定选项。 如果您尝试更改其他绑定选项,命令将失败并返回消息 DSNT215I。 REBIND PACKAGE命令仅重新绑定函数中包含的SQL语句,而不重新绑定函数定义中的控制语句。
更改开始为触发器重新绑定软件包更改结束
更改开始虽然触发器名称中一般允许使用 DBCS 字符,但在 REBIND TRIGGER PACKAGE 操作中不能使用包含 DBCS 字符的触发器名称。 更改结束
更改开始为高级触发器重新绑定软件包更改结束
更改开始

如果您对高级触发器的包发出REBIND PACKAGE命令,则只能更改EXPLAIN (但不接受EXPLAIN(ONLY) )、FLAG、PLANMGMT和CONCENTRATESTMT。 如果您尝试更改其他绑定选项,命令将失败并返回消息 DSNT215I。

REBIND PACKAGE命令仅重新绑定触发器中包含的SQL语句,而不重新绑定触发器定义中的控制语句。

更改结束
更改开始触发器软件包的限制更改结束
更改开始触发包可以显式反弹,但不能使用 BIND PACKAGE 子命令显式绑定。 触发器包不能使用FREE PACKAGE子命令或DROP PACKAGE语句明确释放。 使用DROP TRIGGER语句删除触发器包。 触发器包无法复制,只能在本地重新设置。 不允许远程重新绑定触发包。更改结束
数据共享成员的信息追踪
当在 Db2 数据共享成员中发出具有组范围的命令时,该命令也会在所有其他活动成员中运行。 IFICID 090 跟踪记录显示,除了发出原始命令的成员的跟踪记录外, 016.TLPKN5F 相关 ID 的 SYSOPR 授权 ID 也发出了相同的命令。 请参阅 Db2 数据共享中的命令范围

示例 REBIND PACKAGE

重新绑定软件包 TEST.DSN8BC81。(五月版)和 PRODUCTION.DSN8BC81。(DEC_VERSION),两者都位于本地地址 USIBMSTODB22。 如果连接ID为 CON2 ,则程序包只能在 CICS® 或DLIBATCH环境中运行。 这将取代BIND PACKAGE命令中指定的 CON1。
REBIND PACKAGE (USIBMSTODB22.TEST.DSN8BC81.(MAY_VERSION),
                USIBMSTODB22.PRODUCTION.DSN8BC81.(DEC_VERSION)) -
  ENABLE (CICS,DLIBATCH) CICS (CON2)