REBIND PACKAGE subcomando (DSN)
El submandato de DSN REBIND PACKAGE vuelve a enlazar un paquete de aplicación cuando se realizan cambios que afectan al paquete, pero no se han cambiado las sentencias SQL en el programa.
Por ejemplo, puede utilizar REBIND PACKAGE después de completar las actividades siguientes:
- Migrar a un nuevo release de Db2
- Aplicar mantenimiento a Db2
- Modificar autorizaciones
- Crear un nuevo índice que las sentencias del paquete pueden utilizar
- Recopilar estadísticas utilizando el programa de utilidad RUNSTATS u otro programa de utilidad utilizando la palabra clave STATISTICS
Este comando se puede utilizar para volver a vincular un paquete para activadores avanzados. Sin embargo, si se emite el comando REBIND PACKAGE con un desencadenador creado antes de la activación del nivel de función 500 o superior, o con un desencadenador básico, se produce un error.
Para un paquete de activación para una activación avanzada, puede utilizar el PAQUETE DE REACTIVACIÓN para las siguientes actividades:

- Reoptimizar sentencias de SQL en el desencadenante después de crear un nuevo índice o utilizar el programa de utilidad RUNSTATS
- Cambiar algunas de las opciones de enlace predeterminadas que se utilizaron cuando se creó el paquete
- Hacer que un paquete de desencadenante sea válido después de que se haya marcado como no válido porque se eliminó un objeto del cual el desencadenante dependía

Puede utilizar REBIND PACKAGE para cambiar la versión de servicio rest predeterminada de un servicio REST existente.
- Cuando cambie las sentencias de SQL
- Cuando vuelva a compilar el programa
- Cuando haya ejecutado anteriormente BIND PACKAGE con la opción SQLERROR(CONTINUE)
Cuando se emite el mandato REBIND PACKAGE(*), los únicos paquetes desencadenantes afectados son los de los desencadenantes avanzados que el emisor está autorizado a volver a enlazar.

Introducción gradual de copias de paquetes para REBIND PACKAGE
FL 505El comando REBIND PACKAGE puede crear una nueva copia actual del paquete, mientras conserva la copia actual existente como copia de eliminación gradual. Esto se llama fase transitoria de revinculación. Puede haber varias copias de un paquete existente, pero sólo habrá una copia actual. Puede haber una copia original, una copia anterior y varias copias de eliminación gradual.
La copia actual, con el ID de copia 0 (o distinto de 0) se almacena en la tabla de catálogo SYSPACKAGE. Las copias anteriores y originales tienen el ID de copia 1 y 2, respectivamente, y se pueden encontrar en la tabla SYSPACKCOPY. Todas las copias de eliminación gradual tienen un ID de copia distinto de 1 y 2 y se pueden encontrar también en SYSPACKCOPY.
La copia del paquete que ejecuta una hebra se puede encontrar en el registro de rastreo de contabilidad de paquetes. Esa copia puede ser actual o eliminada. Db2 podría eliminar las copias eliminadas en ejecuciones posteriores del comando REBIND PACKAGE. Es posible que desee desactivar temporalmente las hebras que ejecutan las copias de eliminación gradual y, a continuación, volver a enlazar el paquete para reducir el almacenamiento generado por las copias de eliminación gradual.
- APREUSE(NONE) PLANMGMT(EXTENDED)
- APREUSE(WARN) PLANMGMT(EXTENDED) APREUSESOURCE(CURRENT)
- APREUSE(ERROR) PLANMGMT(EXTENDED) APREUSESOURCE(CURRENT)
No se admite la introducción gradual de reencuadernación para ningún comando que también especifique cambios en cualquier opción de reencuadernación que impida el uso de la opción PLANMGMT(EXTENDED). Para más información, consulte la opción PLANMGMT bind.
El paquete no debe ser un paquete generado para un desencadenador o una rutina SQL, como un procedimiento o una función definida por el usuario.
Db2 espera el tiempo de duración especificado por el parámetro de subsistema IRLMRWT antes de crear copias de paquete para la operación de frase transitoria de revinculación.
Para obtener más información, consulte Introducción gradual de las revinculaciones de paquetes.

Medio ambiente para REBIND PACKAGE
Puede utilizar REBIND PACKAGE a través de DB2I o especificar el submandato REBIND PACKAGE desde una sesión DSN que se ejecuta en primer plano o en el fondo.
Ámbito de uso compartido de datos: Grupo
Autorización para REBIND PACKAGE
El propietario del paquete debe tener autorización para ejecutar todas las sentencias de SQL incorporadas en el paquete para REBIND PACKAGE para crear un paquete sin devolver mensajes de error. Para VALIDATE(BIND), Db2 verifica la autorización en tiempo de vinculación. Para VALIDATE(RUN), Db2 verifica la autorización inicialmente en tiempo de vinculación, pero si la comprobación de autorización falla, Db2 la vuelve a comprobar en tiempo de ejecución.
Cuando se especifica EXPLAIN(ONLY), debe tener el privilegio EXPLAIN.
El propietario del paquete debe ser un rol para ejecutar REBIND PACKAGE en un contexto de confianza con propiedad de rol.
La tabla siguiente explica la autorización necesaria para ejecutar REBIND PACKAGE, en función de las opciones especificadas.
| Opción | Autorización necesaria para ejecutar REBIND PACKAGE |
|---|---|
| REBIND PACKAGE sin ningún cambio en la propiedad porque no se ha especificado la palabra clave OWNER. | Los ID de autorización del proceso deben tener una de las autorizaciones siguientes:
|
| REBIND PACKAGE sin ningún cambio en la propiedad, aunque se especifique el propietario original para la palabra clave OWNER. | Los ID de autorización del proceso deben tener una de las autorizaciones siguientes:
|
| REBIND PACKAGE con cambio de propiedad. (Se especifica un ID de autorización que no es el propietario original en la palabra clave OWNER.) | El nuevo PROPIETARIO debe tener una de las siguientes autorizaciones:
Si alguno de los ID de autorización o roles del proceso tiene autorización SYSADM, autorización SYSCTRL o autorización DBADM del sistema, OWNER id-autorización puede ser cualquier valor, cuando el parámetro de subsistema SEPARATE_SECURITY está establecido en NO. Si alguno de los ID de autorización tiene el privilegio BINDAGENT otorgado por el propietario, id-autorización puede especificar el otorgante como OWNER. De lo contrario, el OWNER id-autorización debe ser uno de los ID de autorización primarios o secundarios del enlazador. Si especifica OWNER id-autorización, Db2 primero comprueba OWNER y luego el enlazador para el privilegio de enlace necesario. Si el enlazador no tiene autorización SYSADM, SYSCTRL o DBADM del sistema, el ID de autorización o rol del PROPIETARIO debe tener uno de los siguientes para añadir un paquete nuevo o una nueva versión de un paquete existente a una colección:
|

Sintaxis para REBIND PACKAGE
- 1 NOREOPT(VARS) puede especificarse como sinónimo de REOPT(NONE)
- 2 REOPT(VARS) puede especificarse como sinónimo de REOPT(ALWAYS)
- 3 La palabra clave PATHDEFAULT es mutuamente excluyente con la palabra clave PATH. No especifique ambas palabras clave en el mismo mandato REBIND.
- 4 La opción RESTSERVICEDEFAULT solo es válida para paquetes de servicios REST locales.

Descripciones para REBIND PACKAGE
Las siguientes opciones identifican los paquetes que se deben reenviar especificando la ubicación, la recogida, el nombre del paquete y la versión. Debe identificar un nombre de paquete, y también puede proporcionar un ID de versión.
- nombre-ubicación
La ubicación del DBMS donde el paquete se vuelve a vincular y donde reside la descripción del paquete. El nombre de la ubicación debe estar definido en la tabla del catálogo de SYSIBM.LOCATIONS. Si esa tabla no existe o si el DBMS no está en ella, recibirá un mensaje de error. Consulte la tabla del catálogo de LOCALIZACIONES.
El valor predeterminado es el DBMS local.
- collection-id o *
Especifica la colección que contendrá el paquete a encuadernar, o que ya contiene el paquete a re-encuadernar. No hay ningún valor predeterminado.
Puede utilizar un asterisco (
*) para volver a vincular todos los paquetes locales con el id de paquete especificado en todas las colecciones para las que tenga privilegios de vinculación.- id del paquete o *
Especifica el nombre del paquete que se va a reasignar, tal como aparece en la columna NAME de la tabla de catálogo SYSPACKAGE. No hay ningún valor predeterminado. Puede utilizar un asterisco (
*) para volver a vincular todos los paquetes locales en collection-id para los que tenga privilegios de vinculación.El valor de id del paquete puede ser un identificador delimitado o no delimitado. El delimitador para el identificador de paquete son las comillas dobles ("). Si el identificador de paquete está delimitado, Db2 no convierte el valor a mayúsculas.
- version-id o *
- Especifica la versión del paquete que se va a volver a enlazar, tal como aparece en la columna VERSION de la tabla de catálogo SYSPACKAGE.
Puede utilizar un asterisco (*) para volver a vincular todas las versiones locales del paquete-id especificado en la colección-id para el que tiene privilegios de vinculación.
Usar solo
()vuelve a vincular la versión del paquete que se identifica por la cadena vacía.Si omite version-id, el valor predeterminado depende de cómo especifique package-id. Si utiliza * para id-paquete , entonces version-id se establece por defecto en *. Si proporciona explícitamente un valor para id-paquete , entonces version-id se establece por defecto en la versión de cadena vacía.
- *
- Vuelve a vincular todos los paquetes de Db2 locales para los que el ID de autorización aplicable tiene el privilegio BIND. Especificar
(*)es lo mismo que especificar el nombre del paquete como(*.*.(*))o(*.*). El ID de autorización aplicable es:- El valor de PROPIETARIO, si utiliza esa opción
- El ID de autorización principal del proceso que ejecuta el enlace, si no utiliza la opción PROPIETARIO
- Otras opciones para el PAQUETE REBIND
Para obtener descripciones de las demás opciones del diagrama de sintaxis, consulte el tema Opciones BIND y REBIND para paquetes, planes y servicios.
Notas de uso para REBIND PACKAGE
- Reencuadernación de varios paquetes
- Si vuelve a vincular varios paquetes, Db2 confirma cada reasociación correcta antes de volver a vincular el siguiente paquete.
Reencuadernación progresiva de paquetes
FL 505Con rebind-phase in, Db2 puede rebindar un paquete concurrentemente con su ejecución. Una operación de reimpresión crea una nueva copia del paquete. Cuando finaliza la operación de reenlace, las nuevas hebras pueden utilizar la nueva copia de paquete inmediatamente y las hebras existentes pueden continuar utilizando la copia que estaba en uso antes del reenlace (la copia de eliminación gradual) sin interrupciones. Para más información, consulte la introducción progresiva de los reencuadres de paquetes.
- Reencuadernación de un paquete para un procedimiento SQL nativo
Si emite un comando REBIND PACKAGE contra un paquete de procedimientos SQL nativo, las únicas opciones bind que puede cambiar son EXPLAIN (pero no se acepta EXPLAIN(ONLY)), PLANMGMT, SWITCH, APRETAINDUP, APREUSE, APREUSESOURCE y APCOMPARE.
Si intenta cambiar otras opciones de bind, el comando fallará y devolverá el mensaje DSNT215I. El mandato REBIND PACKAGE únicamente vuelve a enlazar las sentencias de SQL incluidas en el procedimiento y no las sentencias de control de la definición de procedimiento.- Reencuadernación de un paquete para una función SQL
- Si emite un comando REBIND PACKAGE contra un paquete para una función SQL, las únicas opciones de enlace que puede cambiar son EXPLAIN, PLANMGMT y SWITCH. Si intenta cambiar otras opciones de enlace, el mandato no se ejecutará correctamente y devolverá el mensaje DSNT215I. El mandato REBIND PACKAGE únicamente vuelve a enlazar las sentencias SQL incluidas en la función y no las sentencias de control en la definición de función.
Reencuadernación de paquetes para activadores
Aunque los caracteres DBCS suelen estar permitidos en los nombres de activadores, los nombres de activadores que contienen caracteres DBCS no pueden utilizarse en operaciones REBIND TRIGGER PACKAGE. 
Paquetes de reenganche para activadores avanzados

Si emite un comando REBIND PACKAGE contra un paquete para un activador avanzado, las únicas opciones de enlace que puede cambiar son EXPLAIN (pero EXPLAIN(ONLY) no se acepta ), FLAG, PLANMGMT y CONCENTRATESTMT. Si intenta cambiar otras opciones de enlace, el mandato no se ejecutará correctamente y devolverá el mensaje DSNT215I.
El mandato REBIND PACKAGE únicamente vuelve a enlazar las sentencias de SQL incluidas en el desencadenante y no las sentencias de control en la definición de desencadenante.

Restricciones para los paquetes de activación
Un paquete de activación puede rebotarse explícitamente, pero no puede vincularse explícitamente mediante el subcomando BIND PACKAGE. No se puede liberar explícitamente un paquete desencadenante utilizando el submandato FREE PACKAGE o la sentencia DROP PACKAGE. Utilice la sentencia DROP TRIGGER para suprimir el paquete desencadenante. No se puede copiar un paquete desencadenante y únicamente se puede volver a vincular localmente. No se permite la revinculación remota de un paquete desencadenante.
- Información de seguimiento para miembros que comparten datos
- Cuando este comando con ámbito de grupo se emite en un miembro de intercambio de datos de Db2 , también se ejecuta en todos los demás miembros activos. Los registros de rastreo de IFICID 090 para otros miembros del grupo pueden mostrar que el mismo comando fue emitido por el ID de autorización SYSOPR desde el ID de correlación de la red de área local ( 016.TLPKN5F ), además de los registros de rastreo del miembro donde se emitió el comando original. Véase el ámbito de aplicación de Command en el intercambio de datos de Db2.
Ejemplo para REBIND PACKAGE
REBIND PACKAGE (USIBMSTODB22.TEST.DSN8BC81.(MAY_VERSION),
USIBMSTODB22.PRODUCTION.DSN8BC81.(DEC_VERSION)) -
ENABLE (CICS,DLIBATCH) CICS (CON2) 