Les caractéristiques que vous définissez sont ajoutées dans votre fichier pureQueryXML. Lorsque vous exécutez l'utilitaire StaticBinder pour lier les instructions SQL se trouvant dans un fichier pureQueryXML d'un module DB2, l'utilitaire lit ces caractéristiques.
Cette rubrique contient les sections suivantes :
Pour comprendre les conventions utilisées dans les diagrammes, voir Lecture des diagrammes de syntaxe.
Pour connaître les mises à jour que l'utilitaire Configure apporte à un fichier pureQueryXML, vous pouvez ouvrir ce fichier dans un éditeur.
Utilisez ce paramètre pour poursuivre la création des packages DB2 à partir des instructions SQL dans le fichier pureQueryXML.
Lorsque pureQuery Runtime capture des instructions SQL s'exécutant sur une base de données DB2, certaines valeurs de registre spécial DB2 sont contrôlées et capturées avec les instructions SQL. Les valeurs de registre spécial capturées correspondent aux valeurs qui sont les plus fréquemment définies et qui peuvent affecter les données renvoyées par l'instruction SQL en cas de modification.
Pour afficher les activités de registre spécial capturées dans le fichier pureQueryXML en entrée dans le résumé des activités de l'utilitaire Configure, définissez l'option -showDetails sur true.
Le fichier d'options répertorie le ou les fichiers pureQueryXML que l'utilitaire pureQuery Configure doit traiter, ainsi que les options indiquant aux utilitaires comment traiter les fichiers. Vous pouvez définir les options par défaut s'appliquant à tous les fichiers pureQueryXML répertoriés dans un fichier d'options. Vous pouvez également définir des options d'interfaces afin de remplacer les options par défaut et d'en définir d'autres spécifiques aux fichiers pureQueryXML individuels.
Dans la commande d'exécution de l'utilitaire Configure, vous pouvez indiquer le fichier à utiliser avec l'option -optionsFile.
defaultOptions = -collection COLL01 -traceFile C:\logs\configure.txt -traceLevel ALL C:\capture_files\capture_sales.pdqxml = -collection NULLID -rootPkgName SALES C:\capture_files\capture_employee.pdqxml = -collection COLL02 -rootPkgName EMP C:\capture_files\capture_orders.pdqxml = -rootPkgName ORDERSDans cet exemple, la ligne commençant par defaultOptions indique l'ID de collecte des packages DB2 qui seront créés et dont les accès seront définis. La ligne indique également le fichier dans lequel les messages sont journalisés. Les deux lignes suivantes suppriment l'ID de collecte par défaut. Pour les trois fichiers pureQueryXML, l'option obligatoire -rootPkgName indique le nom de package racine des packages DB2.
-pkgVersion "ver#1"
Si vous disposez d'un seul fichier pureQueryXML, vous pouvez utiliser cette commande afin de spécifier son nom et les options du module DB2.
(1) >>-java--com.ibm.pdq.tools.Configure----------------------------> >--+----------------------------------+-------------------------> | .-NULLID---------. | '- -collection--+-nom_collection-+-' >--+-----------------------------+------------------------------> '- -markDDLForBind--+-TRUE--+-' '-FALSE-' >--+--------------------------------+---------------------------> '- -pkgVersion-- -+-AUTO-------+-' '-ID_version-' >-- -rootPkgName--racine_nom_module-----------------------------> >--+--------------------------------------------------------+---> '- -allowStaticRowsetCursors--+-READ_ONLY--------------+-' +-READ_ONLY_SCROLLABLE---+ +-READ_ONLY_FORWARD_ONLY-+ '-NEVER------------------' >--+-----------------------------+------------------------------> | .-FALSE-. | '- -cleanConfigure--+-TRUE--+-' >--+--------------------------+---------------------------------> | .-FALSE-. | '- -showDetails--+-TRUE--+-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+------------------------+-----------------------------------> | .-100----. | '- -sqlLimit--+-nombre-+-' >--+---------------------------------------+--------------------> '- -removeSQLInactiveForDays----jours---' >--+---------------------------------------+--------------------> '- -setPreStatusOfAllPkgs--+-AUTO-----+-' +-FINAL----+ '-REQUIRED-' >--+---------------------------------+--------------------------> '- -setPostStatusOfAllPkgs--FINAL-' >--+-----------------------------------------+------------------> | .-FALSE-. | '- -groupSQLBySpecialRegisters--+-TRUE--+-' >--+-------------------------------------------+----------------> | .------------------. | | | .-|------. | | | V V | | | '- -groupSQLByStrings----(----chaîne-+--)-+-' >--+--------------------------+--+--------------------------+---> | .-FALSE-. | | (2) | '- -validateXml--+-TRUE--+-' '-| options de trace |-----' >-- -pureQueryXml--fichier_pureQueryXML--+--------+------------>< '- -help-'
Si vous disposez de plusieurs fichiers pureQueryXML, utilisez la commande et un fichier d'options pour spécifier leurs noms et les options des modules DB2. Vous pouvez utiliser la commande et un fichier d'options même si vous ne disposez que d'un seul fichier pureQueryXML.
>>-java--com.ibm.pdq.tools.Configure----------------------------> >-- -optionsFile--nom_fichier--+--------------------------+---->< | (1) | '-| options de trace |-----'
Ce diagramme de syntaxe affiche les options par défaut que vous pouvez définir pour tous les fichiers pureQueryXML figurant dans un fichier d'options.
(1) >>-defaultOptions--=--------------------------------------------> >--+----------------------------------+-------------------------> | .-NULLID---------. | '- -collection--+-nom_collection-+-' >--+-----------------------------+------------------------------> '- -markDDLForBind--+-TRUE--+-' '-FALSE-' >--+--------------------------------+---------------------------> '- -pkgVersion-- -+-AUTO-------+-' '-ID_version-' >--+--------------------------------------------------------+---> '- -allowStaticRowsetCursors--+-READ_ONLY--------------+-' +-READ_ONLY_SCROLLABLE---+ +-READ_ONLY_FORWARD_ONLY-+ '-NEVER------------------' >--+--------------------------+---------------------------------> | .-FALSE-. | '- -showDetails--+-TRUE--+-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+------------------------+-----------------------------------> | .-100----. | '- -sqlLimit--+-nombre-+-' >--+---------------------------------------+--------------------> '- -removeSQLInactiveForDays----jours---' >--+---------------------------------------+--------------------> '- -setPreStatusOfAllPkgs--+-AUTO-----+-' +-FINAL----+ '-REQUIRED-' >--+---------------------------------+--------------------------> '- -setPostStatusOfAllPkgs--FINAL-' >--+-----------------------------------------+------------------> | .-FALSE-. | '- -groupSQLBySpecialRegisters--+-TRUE--+-' >--+-------------------------------------------+----------------> | .------------------. | | | .-|------. | | | V V | | | '- -groupSQLByStrings----(----chaîne-+--)-+-' >--+--------------------------+--+--------------------------+-->< | .-FALSE-. | | (2) | '- -validateXml--+-TRUE--+-' '-| options de trace |-----'
Ce diagramme de syntaxe affiche les options que vous pouvez définir pour chaque fichier pureQueryXML figurant dans un fichier d'options.
(1) >>-fichier_pureQueryXML--=--------------------------------------> >--+----------------------------------+-------------------------> | .-NULLID---------. | '- -collection--+-nom_collection-+-' >--+-----------------------------+------------------------------> '- -markDDLForBind--+-TRUE--+-' '-FALSE-' >--+--------------------------------+---------------------------> '- -pkgVersion-- -+-AUTO-------+-' '-ID_version-' >-- -rootPkgName--racine_nom_module-----------------------------> >--+--------------------------------------------------------+---> '- -allowStaticRowsetCursors--+-READ_ONLY--------------+-' +-READ_ONLY_SCROLLABLE---+ +-READ_ONLY_FORWARD_ONLY-+ '-NEVER------------------' >--+-----------------------------+------------------------------> | .-FALSE-. | '- -cleanConfigure--+-TRUE--+-' >--+--------------------------+---------------------------------> | .-FALSE-. | '- -showDetails--+-TRUE--+-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+------------------------+-----------------------------------> | .-100----. | '- -sqlLimit--+-nombre-+-' >--+---------------------------------------+--------------------> '- -removeSQLInactiveForDays----jours---' >--+---------------------------------------+--------------------> '- -setPreStatusOfAllPkgs--+-AUTO-----+-' +-FINAL----+ '-REQUIRED-' >--+---------------------------------+--------------------------> '- -setPostStatusOfAllPkgs--FINAL-' >--+-----------------------------------------+------------------> | .-FALSE-. | '- -groupSQLBySpecialRegisters--+-TRUE--+-' >--+-------------------------------------------+----------------> | .------------------. | | | .-|------. | | | V V | | | '- -groupSQLByStrings----(----chaîne-+--)-+-' >--+--------------------------+-------------------------------->< | .-FALSE-. | '- -validateXml--+-TRUE--+-'
Seul DB2 for z/OS utilise des curseurs d'ensemble de lignes, et uniquement lorsque les propriétés IBM Data Server Driver for JDBC and SQLJ indiquent que les curseurs d'ensemble de lignes doivent être utilisés. Si vous effectuez la capture depuis un type de données source différent, ou sans activer les curseurs d'ensemble de lignes, aucune des instructions capturées n'utilise de curseur d'ensemble de lignes.
Lorsque les curseurs d'ensemble de lignes ne sont pas utilisés pour les curseurs de défilement vers l'avant, une connexion de Type 4 peut utiliser de façon interne un mécanisme similaire pour atténuer le trafic réseau.
Cette option prend l'une des quatre valeurs suivantes :
Cette option n'est pas nécessaire si l'une de ces conditions est remplie :
pureQuery considère qu'une instruction est actualisable si l'une de ces conditions est vraie :
Si vous exécutez des instructions de façon statique sur une source de données qui ne prend pas en charge les curseurs d'ensemble de ligne, le curseur de ligne n'est utilisé par pureQuery pour aucune instruction.
Si vous n'indiquez pas cette option, pureQuery utilise par défaut les curseurs d'ensemble de lignes pour les instructions pour lesquelles le pilote IBM Data Server Driver for JDBC and SQLJ a utilisé des curseurs d'ensemble de lignes lors de la capture des instructions.
Au cours de l'exécution, toutes les instructions SQL sont organisées en des ensembles d'instructions selon les options spécifiées, telles que sqlLimit, groupSQLByString et groupSQLBySpecialRegister. Les ensembles d'instructions du fichier de sortie peuvent être différents de ceux du fichier en entrée.
Vous devez indiquer une valeur pour l'option -rootPkgName.
Il s'agit de la valeur par défaut. Vous devez indiquer une valeur pour l'option -rootPkgName.
Pour les ensembles d'instructions sans nom, la configuration applique toutes les options spécifiées.
Pour les ensembles d'instructions nommés avec l'option REQUIRED pour configureStatus, certaines options sont appliquées, telles que -collection, -pkgVersion, -forceSingleBindIsolation et -markDDLForBind. La marque de cohérence est mise à jour.
Pour les ensembles d'instructions dont l'ensemble d'indicateurs est défini sur AUTO, la configuration applique les options uniquement si l'utilitaire Configure détermine que l'ensemble d'instructions doit être modifié. La marque de cohérence n'est pas mise à jour si l'ensemble d'instructions n'est pas modifié.
Pour les ensembles d'instructions nommés dont l'ensemble d'indicateurs configureStatus est défini sur FINAL, l'utilitaire Configure affiche des erreurs lorsque des problèmes sont trouvés dans l'ensemble d'instructions. Les erreurs comprennent des numéros de section en ordre décroissant et des instructions de mise à jour de position non associées à une instruction SELECT. L'utilitaire Configure affiche des avertissements lorsque les instructions doivent être supprimées d'un ensemble d'instructions. Par exemple, une instruction peut être supprimée d'un ensemble d'instructions lorsque l'option -removeSQLInactiveForDays est spécifiée et que l'horodatage de l'instruction correspond aux critères de suppression. Une instruction peut être déplacée vers un autre ensemble d'instructions si les valeurs de registre spécial sont associées aux modificiations de l'instruction.
Si vous souhaitez utiliser l'option -isolationLevel pour définir les accès d'un seul jeu d'instructions en deux ou trois packages différents (chaque package à un autre niveau d'isolement), n'utilisez pas l'option -forceSingleBindIsolation lorsque vous exécutez l'utilitaire Configure sur le fichier pureQueryXML dans lequel apparaît le jeu d'instructions.
Par exemple, dans un fichier d'options pour l'utilitaire StaticBinder, supposez que vous avez inclus les deux entrées suivantes :
C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel UR C:/dir/captureFile.pdqxml:MYPKGA = -isolationLevel CS
Si vous avez utilisé l'option -forceSingleBindIsolation lors de l'exécution de l'utilitaire Configure sur le fichier captureFile.pdqxml, l'utilitaire StaticBinder effectue les actions suivantes :
Le résultat est un package MYPKGA unique dont les accès sont définis au niveau d'isolement CS.
Si vous voulez avoir deux packages MYPKGA comme résultat, un au niveau d'isolement UR et l'autre au niveau CS, n'utilisez pas l'option -forceSingleBindIsolation lors de l'exécution de l'utilitaire Configure sur captureFile.pdqxml.
Les valeurs correctes sont les chaînes TRUE et FALSE (non sensibles à la casse). Il n'y a pas de valeur par défaut.
Si vous n'utilisez pas cette option, l'utilitaire Configure vérifie si l'option isBindable est TRUE pour l'une des instructions DDL se trouvant dans des ensembles d'instructions sans nom dans le fichier pureQueryXML. Si l'option isBindable est TRUE pour au moins l'une de ces instructions DDL, lorsque l'utilitaire Configure regroupe les instructions DDL dans un ensemble d'instructions DDL unique et nommé, l'utilitaire définit l'attribut isBindable sur TRUE pour l'ensemble d'instructions DDL.
Lorsque l'utilitaire StaticBinder rencontre la valeur TRUE pour l'attribut isBindable de l'ensemble d'instructions DDL, il tente de définir les accès de toute instruction de cet ensemble dont l'attribut isBindable est défini sur TRUE.
DB2 accepte la présence simultanée de plusieurs versions d'un même module, ce qui vous permet de définir les accès des nouveaux modules sans devoir remplacer les anciennes versions des modules portant un nom identique. Si vous rencontrez des difficultés avec une version récente d'un module, vous pouvez toujours utiliser une version plus ancienne de ce module.
Si vous n'utilisez pas cette option, les modules de base de données résultant de définitions d'accès ultérieures sont créés sans version.
La vérification de la version au moment de l'exécution est basée sur la marque de cohérence, et non pas sur le nom de la version.
La valeur racine_nom_module doit respecter les contraintes imposées par la base de données DB2 que vous utilisez.
Si vous prévoyez de générer des fichiers DBRM avec l'utilitaire pureQuery StaticBinder plutôt que de créer des modules DB2, vous devez utiliser des majuscules pour la valeur racine_nom_module et cette valeur ne doit pas comporter plus de 6 caractères. L'utilitaire Configure ajoute des caractères à la racine du nom soit lorsque le fichier pureQueryXml contient des instructions DDL, soit lorsque le nombre maximal d'instructions par module (défini avec sqlLimit) est atteint. Si vous utilisez l'utilitaire StaticBinder pour générer un fichier DBRM, cet utilitaire émet une exception dès lors que vous dépassez un total de 8 caractères pour la combinaison racine_nom_module / caractères supplémentaires consécutifs à l'intervention de l'utilitaire Configure / niveau d'isolement.
Lorsque cette option est définie sur true, l'utilitaire Configure affiche les activités de registre spécial capturées dans le fichier pureQueryXML en entrée dans le résumé des activités.
Cette valeur par défaut est 100.
Module avec les 100 premières instructions SQL | Module avec les n instructions SQL suivantes, où 100 < n < 200 | |
---|---|---|
Niveau d'isolement CS | monModuleA1 | monModuleB1 |
Niveau d'isolement RR | monModuleA2 | monModuleB2 |
Niveau d'isolement RS | monModuleA3 | monModuleB3 |
Niveau d'isolement UR | monModuleA4 | monModuleB4 |
Les chiffres représentent le niveau d'isolement des modules, cependant que les lettres représentent le nombre de modules créés selon la valeur de sqlLimit et le nombre d'instructions présentes dans le fichier pureQueryXML. Les lettres sont celles de l'alphabet anglais, de A à Z. Si la lettre Z est atteinte alors qu'il reste des modules à créer, une deuxième lettre est ajoutée à la première, ce qui donne AA, AB, AC, etc. Si les noms deviennent trop longs pour votre base de données, réduisez la longueur du nom racine du module ou augmentez la valeur de sqlLimit. Vous pouvez également utiliser l'option -forceSingleBindIsolation pour supprimer le nombre indiquant le niveau d'isolement, si vous prévoyez de créer un module pour un niveau d'isolement unique.
Dans certaines situations, l'utilitaire Configure dépasse la limite de l'instruction SQL lors de la création d'ensembles d'instructions représentant les packages DB2. Toutes les instructions SQL qui manipulent un curseur doivent se trouver dans le module contenant l'instruction DECLARE CURSOR pour ce curseur. Par exemple, si une application exécute quinze instructions UPDATE différentes qui se réfèrent au même curseur, ces quinze instructions doivent toutes se trouver dans le package DB2 contenant l'instruction DECLARE CURSOR pour ce curseur.
Pour que votre application maintienne des performances optimales, n'indiquez pas de valeur supérieure à 400 pour sqlLimit.
>>-+--------------------------+---------------------------------> '- -traceFile--nom_fichier-' >--+---------------------------+------------------------------->< | .-OFF-----. | '- -traceLevel--+-ALL-----+-' +-SEVERE--+ +-WARNING-+ +-INFO----+ +-CONFIG--+ +-FINE----+ +-FINER---+ '-FINEST--'
Par exemple, si la variable jours est définie sur 5 et que nous sommes le 25 novembre, les instructions SQL datées du 20 novembre et antérieures au 20 novembre ne sont pas écrites.
Si l'instruction SQL n'est pas horodatée, elle est écrite dans le fichier de sortie. Par exemple, si une version antérieure du fichier pureQueryXML n'est autre qu'un fichier en entrée, l'instruction SQL n'est pas horodatée. En cas de version précédente d'un fichier pureQueryXML (version 3 ou antérieure), l'option est ignorée, toutes les instructions SQL sont écrites dans le fichier de sortie et un message s'affiche.
Un message est consigné dans le fichier journal pour les instructions SQL qui ne sont pas écrites dans le fichier de sortie pureQueryXML. Si l'option -showDetails est définie sur true, toutes les instructions non écrites dans le fichier de sortie s'affichent.
Si l'option -cleanConfigure est définie sur TRUE, l'option -setPreStatusOfAllPkgs est ignorée. Aucun message n'est consigné.
Lorsque les options -groupSQLBySpecialRegisters et -groupSQLByStrings sont toutes deux utilisées pour créer des ensembles d'instructions. Les instructions sont tout d'abord regroupés en fonction de valeurs de registre spécial. Pour chaque groupe basé sur des registres spéciaux, les instructions SQL sont regroupées sur la base des valeurs indiquées par l'option -groupSQLByStrings. Une fois le regroupement terminé, le regroupement basé sur l'option -sqlLimit est effectué, si nécessaire. Une fois les ensembles d'instructions créés, ils sont nommés.
Les chaînes entre parenthèses sont utilisées pour rechercher et regrouper les instructions SQL dans un ensemble d'instructions. Plusieurs chaînes peuvent être utilisées pour affecter une instruction SQL à un ensemble d'instructions en séparant les chaînes par une barre verticale ( | ). Un avertissement est consigné si la même chaîne apparaît plusieurs fois ou si une chaîne est une sous-chaîne d'une autre chaîne.
Une instruction SQL est affectée à un ensemble d'instructions si elle contient la chaîne. Si plusieurs chaînes sont utilisées pour créer un ensemble d'instructions, l'instruction SQL est affectée à l'ensemble d'instructions si elle contient l'une des chaînes.
Lorsque les options -groupSQLBySpecialRegisters et -groupSQLByStrings sont toutes deux utilisées pour créer des ensembles d'instructions. Les instructions sont tout d'abord regroupés en fonction de valeurs de registre spécial. Dans chaque groupe utilisant des registres spéciaux, les instructions SQL sont regroupées sur la base des valeurs indiquées par l'option -groupSQLByStrings. Une fois le regroupement terminé, l'option -sqlLimit est appliquée si nécessaire et les ensembles d'instructions créés sont nommés.
Si le fichier pureQueryXML contient une combinaison de packages nommés et non nommés et que l'option -cleanConfigure est définie sur FALSE, seuls les packages non nommés sont regroupés et le regroupement des packages nommés reste inchangé. Si l'option -cleanConfigure est définie sur TRUE, les instructions SQL dans tous les packages, nommés ou non, sont regroupées.
Le succès ou l'échec de la validation de schéma XML est déterminé et signalé pour chaque fichier en entrée. En cas d'échec d'un fichier en entrée, le traitement de la configuration ne s'arrête pas et les fichiers suivants sont traités.
En cas d'échec de la validation de schéma par un fichier pureQueryXML, la configuration du fichier ne s'achève pas. La première erreur de validation de schéma et l'échec de la configuration du fichier sont signalés.
Seule l'édition actuelle ou la version précédente des fichiers pureQueryXML est validée (version 4 ou 3). En cas de détection d'une version antérieure du fichier pureQueryXML, la validation n'est pas appliquée à ce fichier.
Les erreurs de validation sont imprimées en tant que résultats de l'utilitaire Configure.
Soit deux fichiers pureQueryXML, un pour chaque connexion réalisée par l'application d'API différente de pureQuery. Ces fichiers sont nommés capture_sales.pdqxml (contenant 450 instructions SQL) et capture_employee.pdqxml (contenant également 450 instructions SQL, dont 50 sont des instructions DDL).
Pour ces fichiers, vous souhaitez fournir les valeurs suivantes à l'utilitaire Configure lors de la première exécution de l'utilitaire sur ces fichiers :
Options pour l'utilitaire Configure | capture_sales.pdqxml | capture_employee.pdqxml |
---|---|---|
-collection | first | second |
-markDDLForBind | FALSE | FALSE |
-pkgVersion | 1.0 | 1.0 |
-rootPkgName | PK001S | PK005E |
-sqlLimit | 200 | 200 |
java com.ibm.pdq.tool.Configure -collection first -pkgVersion 1.0 -rootPkgName PK001S \ -sqlLimit 200 -pureQueryXml C:\capture_files\capture_sales.pdqxml
java com.ibm.pdq.tool.Configure -collection second -pkgVersion 1.0 -rootPkgName PK005E \ -sqlLimit 200 -pureQueryXml C:\capture_files\capture_employee.pdqxml
La commande peut ressembler à ce qui suit :
java com.ibm.pdq.tool.Configure -optionsFile myOptionsFile.txt
Le fichier d'options, qui peut porter un nom et une extension pris en charge par votre système d'exploitation, contient ces entrées :
defaultOptions = -pkgVersion 1.0 -sqlLimit 200 C:\capture_files\capture_sales.pdqxml = -collection first -rootPkgName PK001S C:\capture_files\capture_employee.pdqxml = -collection second -rootPkgName PK005E
capture_sales.pdqxml_1.0
capture_employee.pdqxml_1.0
capture_employee.ddl
SELECT * FROM TABLE3 SELECT * FROM TABLE2 SELECT * FROM TABLE1
Statement set 1: SELECT * FROM TABLE3 Statement set 2: SELECT * FROM TABLE2 Statement set 3: SELECT * FROM TABLE1
Statement set 1: SELECT * FROM TABLE1 Statement set 2: SELECT * FROM TABLE2 SELECT * FROM TABLE3
Statement set 1: SELECT * FROM TABLE1, SELECT * FROM TABLE2 Statement set 2: SELECT * FROM TABLE3
Il est déconseillé d'utiliser le même nom de table dans plusieurs définitions d'ensembles d'instructions. Le cas échéant, un message d'avertissement sera consigné.