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 d'un fichier pureQueryXML dans des packages DB2, l'utilitaire StaticBinder lit ces caractéristiques. pureQuery Runtime utilise également des informations du fichier, telles que l'ID collection, l'ID package, l'ID version et le numéro de section lors de l'exécution d'instructions SQL en mode statique.
Cette rubrique contient les sections suivantes :
Pour comprendre les conventions utilisées dans les diagrammes, voir Lecture des diagrammes de syntaxe.
Le fichier d'options de l'utilitaire Configure répertorie le(s) fichier(s) pureQueryXML que l'utilitaire pureQuery Configure doit traiter, ainsi que les options indiquant aux utilitaires comment traiter les fichiers pureQueryXML. Vous pouvez définir certaines options de l'utilitaire Configure comme options par défaut appliquées à 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
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 ORDERS
Dans cet exemple, la ligne commençant par
defaultOptions indique
l'ID collection des packages DB2 qui seront créés et dont les accès seront définis. Les deux lignes suivantes
suppriment l'ID collection 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 package DB2.
(1) >>-java--com.ibm.pdq.tools.Configure----------------------------> >--+----------------------------------+-------------------------> | .-NULLID---------. | '- -collection--+-nom_collection-+-' >--+-----------------------------+------------------------------> '- -markDDLForBind--+-TRUE--+-' '-FALSE-' >--+--------------------------------+---------------------------> '- -pkgVersion-- -+-AUTO-------+-' '-ID_version-' >-- -rootPkgName--racine_nom_package----------------------------> >--+--------------------------------------------------------+---> '- -allowStaticRowsetCursors--+-READ_ONLY--------------+-' +-READ_ONLY_SCROLLABLE---+ +-READ_ONLY_FORWARD_ONLY-+ '-NEVER------------------' >--+-----------------------------+------------------------------> | .-FALSE-. | '- -cleanConfigure--+-TRUE--+-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+-----------------------------------------+------------------> | .-FALSE-. | '- -groupSQLBySpecialRegisters--+-TRUE--+-' >--+-------------------------------------------+----------------> | .------------------. | | | .-|------. | | | V V | | | '- -groupSQLByStrings----(----chaîne-+--)-+-' >--+----------------------------------+-------------------------> | .- -1----. | '- -maxMissingSections--+-nombre-+-' >--+---------------------------------------+--------------------> '- -removeSQLInactiveForDays----jours---' >--+-------------------------------+----------------------------> | .-FALSE-. | '- -removeInvalidSQL--+-TRUE--+-' (2) >--+-------------------------------------+----------------------> | .-FALSE-. | '- -restoreInvalidSQLForce--+-TRUE--+-' >--+-----------------------------------------------------------------+--> | .-----------------------------------. | | V | | '- -replaceLocations--"----(--nom_origine-->--nouveau_nom--)-+--"-' >--+---------------------------------------------------------------+--> | .-----------------------------------. | | V | | '- -replaceSchemas--"----(--nom_origine-->--nouveau_nom--)-+--"-' >--+--------------------------+--+------------------------+-----> | .-FALSE-. | | .-100----. | '- -showDetails--+-TRUE--+-' '- -sqlLimit--+-nombre-+-' >--+---------------------------------------+--------------------> '- -setPreStatusOfAllPkgs--+-AUTO-----+-' +-FINAL----+ '-REQUIRED-' >--+---------------------------------+--------------------------> '- -setPostStatusOfAllPkgs--FINAL-' >--+-------------------------------------------------------------+--> '- -optionsFileForBind--+-fichier-options-liaison-----------+-' '-DEFAULT_IN_PUREQUERYXML_DIRECTORY-' >--+--------------------------+--+--------------------------+---> | .-FALSE-. | | (3) | '- -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 packages 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-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+-----------------------------------------+------------------> | .-FALSE-. | '- -groupSQLBySpecialRegisters--+-TRUE--+-' >--+-------------------------------------------+----------------> | .------------------. | | | .-|------. | | | V V | | | '- -groupSQLByStrings----(----chaîne-+--)-+-' (2) >--+----------------------------------+-------------------------> | .- -1----. | '- -maxMissingSections--+-nombre-+-' >--+-----------------------------------------------------------------+--> | .-----------------------------------. | | V | | '- -replaceLocations--"----(--nom_origine-->--nouveau_nom--)-+--"-' >--+---------------------------------------------------------------+--> | .-----------------------------------. | | V | | '- -replaceSchemas--"----(--nom_origine-->--nouveau_nom--)-+--"-' >--+---------------------------------------+--------------------> '- -removeSQLInactiveForDays----jours---' >--+-------------------------------+----------------------------> | .-FALSE-. | '- -removeInvalidSQL--+-TRUE--+-' >--+-------------------------------------+----------------------> | .-FALSE-. | '- -restoreInvalidSQLForce--+-TRUE--+-' >--+--------------------------+--+------------------------+-----> | .-FALSE-. | | .-100----. | '- -showDetails--+-TRUE--+-' '- -sqlLimit--+-nombre-+-' >--+---------------------------------------+--------------------> '- -setPreStatusOfAllPkgs--+-AUTO-----+-' +-FINAL----+ '-REQUIRED-' >--+---------------------------------+--------------------------> '- -setPostStatusOfAllPkgs--FINAL-' >--+-------------------------------------------------------------+--> '- -optionsFileForBind--+-fichier-options-liaison-----------+-' '-DEFAULT_IN_PUREQUERYXML_DIRECTORY-' >--+--------------------------+--+--------------------------+-->< | .-FALSE-. | | (3) | '- -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_package----------------------------> >--+--------------------------------------------------------+---> '- -allowStaticRowsetCursors--+-READ_ONLY--------------+-' +-READ_ONLY_SCROLLABLE---+ +-READ_ONLY_FORWARD_ONLY-+ '-NEVER------------------' >--+-----------------------------+------------------------------> | .-FALSE-. | '- -cleanConfigure--+-TRUE--+-' >--+---------------------------------------+--------------------> | .-FALSE-. | '- -forceSingleBindIsolation--+-TRUE--+-' >--+-----------------------------------------+------------------> | .-FALSE-. | '- -groupSQLBySpecialRegisters--+-TRUE--+-' >--+-------------------------------------------+----------------> | .------------------. | | | .-|------. | | | V V | | | '- -groupSQLByStrings----(----chaîne-+--)-+-' >--+----------------------------------+-------------------------> | .- -1----. | '- -maxMissingSections--+-nombre-+-' >--+---------------------------------------+--------------------> '- -removeSQLInactiveForDays----jours---' >--+-------------------------------+----------------------------> | .-FALSE-. | '- -removeInvalidSQL--+-TRUE--+-' (2) >--+-------------------------------------+----------------------> | .-FALSE-. | '- -restoreInvalidSQLForce--+-TRUE--+-' >--+-----------------------------------------------------------------+--> | .-----------------------------------. | | V | | '- -replaceLocations--"----(--nom_origine-->--nouveau_nom--)-+--"-' >--+---------------------------------------------------------------+--> | .-----------------------------------. | | V | | '- -replaceSchemas--"----(--nom_origine-->--nouveau_nom--)-+--"-' >--+--------------------------+--+------------------------+-----> | .-FALSE-. | | .-100----. | '- -showDetails--+-TRUE--+-' '- -sqlLimit--+-nombre-+-' >--+---------------------------------------+--------------------> '- -setPreStatusOfAllPkgs--+-AUTO-----+-' +-FINAL----+ '-REQUIRED-' >--+---------------------------------+--------------------------> '- -setPostStatusOfAllPkgs--FINAL-' >--+--------------------------+-------------------------------->< | .-FALSE-. | '- -validateXml--+-TRUE--+-'
Seul DB2 for z/OS prend en charge les curseurs d'ensemble de lignes. Les curseurs d'ensemble de lignes sont utilisés uniquement quand les propriétés IBM Data Server Driver for JDBC and SQLJ le requièrent. 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.
L'utilitaire Configure désactive les curseurs d'ensembles de lignes quelle que soit l'instruction SQL pour laquelle pureQuery Runtime ne prend pas en charge ces curseurs, même si IBM Data Server Driver for JDBC and SQLJ les ont utilisés pour ces instructions.
Si vous n'indiquez pas cette option et que pureQuery Runtime prend en charge les curseurs d'ensembles de lignes pour l'instruction, pureQuery les utilise pour les instructions que IBM Data Server Driver for JDBC and SQLJ ont employé lors de la capture des instructions.
Pour tous les ensembles d'instructions, l'utilitaire Configure associe l'attribut configureStatus à la valeur AUTO pendant la procédure de configuration. Remplace la valeur FINAL pour l'attribut configureStatut de l'ensemble d'instructions.
FALSE est la valeur par défaut.
Pour les ensembles d'instructions sans nom, la configuration applique toutes les options spécifiées.
Pour les ensembles d'instructions nommés dont l'attribut configureStatus correspond à REQUIRED, certaines options sont appliquées. Les options appliquées comprennent les options -collection, -pkgVersion , -forceSingleBindIsolation et -markDDLForBind. La marque de cohérence est mise à jour. Si vous exécutez des instructions SQL dans l'ensemble d'instructions en mode statique, vous devez relier le package créé à partir de l'ensemble d'instructions.
Pendant la procédure de configuration, l'utilitaire Configure remplace la valeur REQUIRED de configureStatus par AUTO.
Pour les ensembles d'instructions dont l'attribut configureStatus a pour valeur AUTO, l'utilitaire Configure applique les options uniquement s'il 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é. Lorsque l'attribut configureStatus correspond à AUTO et que l'option -pkgVersion est indiquée, l'utilitaire met à jour l'ensemble d'instructions en utilisant l'ID version. Si vous exécutez des instructions SQL de l'ensemble d'instructions de manière statique et que l'ensemble d'instructions a été modifié, vous devez lier une nouvelle fois le package créé à partir de l'ensemble d'instructions.
Pour les ensembles d'instructions nommés dont l'attribut configureStatus correspond à FINAL, l'utilitaire Configure affiche des erreurs lorsque des problèmes liés à l'ensemble d'instructions sont détectés. 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 modifications de l'instruction.
Si l'option -groupSQLBySpecialRegisters est spécifiée, un avertissement est consigné en cas de modification apportée à un attribut du registre spécial. Aucune erreur n'est émise dans ce cas.
Si vous souhaitez utiliser l'option -isolationLevel pour définir les accès d'un seul ensemble 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 l'ensemble 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.
Lorsque les options -groupSQLBySpecialRegisters et -groupSQLByStrings sont utilisées pour créer des ensembles d'instructions, les instructions sont d'abord regroupées en fonction des valeurs des registres spéciaux. Pour chaque groupe basé sur des registres spéciaux, les instructions SQL sont regroupées en fonction 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.
Si le fichier pureQueryXML contient une combinaison de packages nommés et non nommés et que l'option -cleanConfigure a pour valeur 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.
Si vous exécutez les instructions SQL en mode statique, vous pouvez utiliser les options -groupSQLBySpecialRegisters et -optionsFileForBind pour vous aider à lier les packages à une base de données DB2.
Pour obtenir des informations sur les données du registre spécial enregistrées par pureQuery Runtime, reportez-vous aux liens connexes à la fin de cette rubrique.
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 utilisées pour créer des ensembles d'instructions, les instructions sont d'abord regroupées en fonction des valeurs des registres spéciaux. Dans chaque groupe contenant des registres spéciaux, les instructions SQL sont regroupées en fonction des valeurs spécifié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.
Pour obtenir des exemples de regroupement des instructions SQL par chaîne, voir Exemples.
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 détecte la valeur TRUE pour l'attribut isBindable des ensembles d'instructions, il tente de lier les instructions dont l'attribut isBindable a pour valeur TRUE dans cet ensemble.
La valeur nombre indique le nombre maximum d'écarts inutiles autorisés dans un jeu d'instructions avant que l'utilitaire Configure ne réattribue les numéros de section. La valeur nombre peut être un nombre entier de valeur -1 ou supérieure. Avec la valeur par défaut -1, l'utilitaire Configure ne réattribue par les numéros de section. Par exemple, si la valeur de nombre est 0 (zéro) ou 1, tous les écarts inutiles entre les numéros de section sont supprimés.
L'utilitaire Configure réattribue les numéros de section uniquement sur des ensemble d'instructions nommés et dont l'attribut configureStatus n'est pas défini sur FINAL.
Lorsque vous utilisez l'option -removeInvalidSQL ou l'option -removeSQLInactiveForDays, certaines instructions SQL peuvent être supprimées des ensembles d'instructions. L'utilitaire Configure ne réattribue pas automatiquement les numéros de section des instructions SQL restantes. Pour que les numéros de section soient réattribués, les packages de bases de données correspondants doivent être reliés.
Si vous indiquez l'option -removeInvalidSQL ou l'option -removeSQLInactiveForDays avec l'option -maxMissingSections, les instructions SQL sont supprimées avant que les numéros de section ne soient réattribués.
Si cette valeur est indiquée sur la ligne defaultOptions d'un fichier d'options de l'utilitaire Configure, tous les fichiers pureQueryXML indiqués dans le fichier doivent être stockés dans le même répertoire.
Les options de liaison et les autres informations du fichier vous aident à indiquer un ensemble d'options de liaison pour exécuter une instruction SQL en mode statique en obtenant un comportement comparable à celui obtenu avec une exécution dynamique lancée à partir de l'application. Vous pouvez utiliser les options de liaison avec l'utilitaire pureQuery StaticBinder pour créer des packages dans une base de données DB2 et lier les packages à la base de données.
L'utilitaire Configure ajoute des commentaires avec des informations sur les ensembles d'instructions et les ensembles de valeurs des registres spéciaux référencés dans le fichier.
L'utilitaire Configure ajoute l'option -configureWarning de l'utilitaire StaticBinder avec des avertissements. Les avertissements indiquent pourquoi les instructions SQL risquent de ne pas se comporter comme prévu lors de leur exécution en mode statique, une fois que les packages sont liés à la base de données à partir de l'ensemble d'instructions.
Pour plus d'informations sur le fichier d'options StaticBinder créé par l'utilitaire Configure et les données du registre spécial enregistrées lors de la capture des instructions SQL, reportez-vous aux liens connexes à la fin de cette rubrique.
DB2 accepte la présence simultanée de plusieurs versions d'un même package, ce qui vous permet de définir les accès des nouveaux packages sans devoir remplacer les anciennes versions des packages portant un nom identique. Si vous rencontrez des difficultés avec une version récente d'un package, vous pouvez toujours utiliser une version plus ancienne de ce package.
L'utilitaire Configure crée une copie du fichier pureQueryXML en ajoutant l'ID version au nom de ce fichier.
L'ID version ne doit inclure que des caractères valides pour les noms de fichier sur votre système d'exploitation. Par ailleurs, la chaîne et le nom du package ne peuvent pas dépasser la longueur acceptée par votre système d'exploitation pour les noms de fichier.
Si vous indiquez cette option et que l'utilitaire Configure ne modifie pas le fichier pureQueryXML, l'utilitaire ne crée pas de copie du fichier pureQueryXML.
Si vous n'indiquez pas cette option, les packages de base de données provenant de liaisons ultérieures sont créés sans version et la copie du fichier n'est pas créée.
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.
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.
L'horodatage est mis à jour lorsque pureQuery Runtime capture l'instruction SQL ou lors de l'exécution de l'utilitaire Merge avec des fichiers de capture incrémentielle.
Si l'instruction SQL n'est pas horodatée, elle est écrite dans le fichier de sortie. Par exemple, un fichier pureQueryXML d'une version antérieure risque de ne pas avoir d'horodatage. Si vous configurez un fichier pureQueryXML qui ne possède pas d'horodatage (version 3 ou précédente), l'option est ignorée, toutes les instructions SQL sont placées dans le fichier de sortie et un message est affiché.
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.
-replaceLocations "(SAMPLE > SAMPLE1) (STLEC1 > STLEC2)"
-replaceLocations "(\"test1\">\"prod1\")"
Le remplacement de nom est un processus exécuté en une seule fois. Par exemple, si vous indiquez la chaîne de remplacement "(S1>S2) (S2>S3)", les occurrences de S1 sont remplacées par S2 et les occurrences d'origine de S2 sont remplacées par S3. L'utilitaire Configure ne remplace pas S1 par S2 en une seule fois, puis il remplace S2 par S3 dans une autre opération. Pour obtenir des exemples de remplacement de nom, consultez l'exemple disponible à la fin de cette rubrique.
Cette option est uniquement prise en charge pour DB2 for z/OS Version 10 et DB2 for Linux, UNIX et Windows Version 9.8. L'utilitaire Configure n'empêche pas le remplacement d'un nom d'emplacement par d'autres versions des bases de données prises en charge. Il affiche un avertissement lorsque vous indiquez un fichier pureQueryXML utilisé avec des versions ultérieures de la base de données. En ce qui concerne les versions antérieures de la base de données, aucun avertissement n'est affiché. L'utilitaire Configure détermine la base de données et la version à partir des informations figurant dans le fichier pureQueryXML.
Avant d'utiliser l'utilitaire Configure avec l'option -replaceLocations, le fichier JAR pdqsqlparser.jar doit être ajouté à votre chemin d'accès aux classes. Le fichier JAR se trouve dans le répertoire d'installation lib/sqlparser de pureQuery Runtime.
Les valeurs des autres options n'ont aucun effet sur les options -replaceLocations et -replaceSchemas. Le remplacement des noms est effectué avant d'appliquer d'autres options, sauf -cleanConfigure et -setPreStatusOfAllPkgs.
-replaceSchemas "(MYSCH1 > MYSCH2) (MYSCH3 > MYSCH4)"
-replaceSchemas "(\"schmTest\">\"schmProd\")"
Le remplacement de nom est un processus exécuté en une seule fois. Par exemple, si vous indiquez la chaîne de remplacement "(S1>S2) (S2>S3)", les occurrences de S1 sont remplacées par S2 et les occurrences d'origine de S2 sont remplacées par S3. L'utilitaire Configure ne remplace pas S1 par S2 en une seule fois, puis il remplace S2 par S3 dans une autre opération. Pour obtenir des exemples de remplacement de nom, consultez l'exemple disponible à la fin de cette rubrique.
Cette option est uniquement prise en charge pour DB2 for z/OS Version 10 et DB2 for Linux, UNIX et Windows Version 9.8. L'utilitaire Configure n'empêche pas le remplacement d'un nom de schéma par d'autres versions des bases de données prises en charge. Il affiche un avertissement lorsque vous indiquez un fichier pureQueryXML utilisé avec des versions ultérieures de la base de données. En ce qui concerne les versions antérieures de la base de données, aucun avertissement n'est affiché. L'utilitaire Configure détermine la base de données et la version à partir des informations figurant dans le fichier pureQueryXML.
Avant d'utiliser l'utilitaire Configure avec l'option -replaceSchemas, le fichier JAR pdqsqlparser.jar doit être ajouté à votre chemin d'accès aux classes. Le fichier JAR se trouve dans le répertoire d'installation lib/sqlparser de pureQuery Runtime.
Pour plus d'informations sur les effets de la valeur de l'attribut configureStatus et les options -cleanConfigure et -setPreStatusOfAllPkgs, reportez-vous à l'option -replaceLocations.
Les valeurs valides sont TRUE et FALSE. Si la valeur par défaut FALSE est définie, les instructions SQL non valides ne sont pas supprimées du fichier pureQueryXML file.
Si la valeur de l'attribut configureStatus de l'ensemble d'instructions est FINAL, les instructions SQL non valides de l'ensemble d'instructions ne sont pas supprimées. Un message d'avertissement s'affiche.
Une erreur s'affiche si vous indiquez également l'option -restoreInvalidSQLForce avec la valeur TRUE.
Pour obtenir des informations sur les instructions SQL marquées comme non valides, reportez-vous à l'option -statementBindError de l'utilitaire pureQuery StaticBinder.
Les valeurs valides sont TRUE et FALSE. La valeur par défaut est FALSE et indique que les instructions SQL marquées comme non valides ne sont pas restaurées.
Une erreur s'affiche si vous indiquez également l'option -removeInvalidSQL avec la valeur TRUE.
Lors de la restauration d'instructions SQL non valides, l'utilitaire Configure met à jour les instructions SQL non valides pour qu'elles ne soient plus marquées comme non valides. L'utilitaire Configure procède également à d'autres modifications dans le fichier pureQueryXML pour que pureQuery Runtime reconnaisse les instructions SQL comme valides. Par exemple, des numéros de section sont attribués aux instructions SQL.
Pour obtenir des informations sur les instructions SQL marquées comme non valides, reportez-vos à l'option -statementBindError de l'utilitaire pureQuery StaticBinder.
La valeur racine_nom_package 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 packages DB2, vous devez utiliser des majuscules pour la valeur racine_nom_package 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 package (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_package / caractères supplémentaires consécutifs à l'intervention de l'utilitaire Configure / niveau d'isolement.
Si l'option -cleanConfigure est définie sur TRUE, l'option -setPreStatusOfAllPkgs est ignorée. Aucun message n'est consigné.
Cette valeur par défaut est 100.
Package avec les 100 premières instructions SQL | Package avec les n instructions SQL suivantes, où 100 < n < 200 | |
---|---|---|
Niveau d'isolement CS | monPackageA1 | monPackageB1 |
Niveau d'isolement RR | monPackageA2 | monPackageB2 |
Niveau d'isolement RS | monPackageA3 | monPackageB3 |
Niveau d'isolement UR | monPackageA4 | monPackageB4 |
Les chiffres représentent le niveau d'isolement des packages, cependant que les lettres représentent le nombre de packages 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 packages à 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 package 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 package 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 package 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--'
Le succès ou l'échec de la validation de schéma XML est déterminé et signalé pour chaque fichier en entrée. Si un fichier en entrée échoue, le traitement de 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.
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 continuer à utiliser les packages DB2 créés à partir des instructions SQL dans le fichier pureQueryXML.
Si la valeur de l'attribut isBindable est true pour l'ensemble d'instructions et false pour une instruction SQL de l'ensemble, la valeur de la propriété allowDynamicSQL de pureQuery Runtime contrôle si pureQuery Runtime doit tenter d'exécuter l'instruction de manière dynamique ou doit renvoyer une erreur.
Si la valeur de l'attribut isBindable est false pour l'ensemble d'instructions, la valeur de la propriété allowDynamicSQL de pureQuery Runtime contrôle si pureQuery Runtime doit tenter d'exécuter une instruction SQL de l'ensemble de manière dynamique ou doit renvoyer une erreur.
Vous pouvez utiliser l'éditeur pureQueryXML dans le plan de travail pour modifier la valeur de l'attribut isBindable dans un fichier pureQueryXML pour un ensemble d'instructions et une instruction.
Si vous éditez manuellement un fichier pureQueryXML, veillez à créer au préalable une copie de sauvegarde de ce fichier. Utilisez l'option -validateXml avec les utilitaires Merge, Configure ou StaticBinder de pureQuery afin de procéder à la validation de schéma XML sur les fichiers en entrée pureQueryXML.
Si vous devez modifier un fichier pureQueryXML en dehors du plan de travail, associez l'attribut configureStatus à la valeur REQUIRED dans la balise de début de l'ensemble d'instructions statementSet à modifier. Une fois le fichier modifié, exécutez l'utilitaire Configure sur le fichier.
<statementSet configureStatus="REQUIRED">
Si vous modifiez un fichier pureQueryXML en dehors du plan de travail, vous pouvez modifier la valeur de l'attribut isBindable pour un ensemble d'instructions et une instruction.
Pour modifier l'attribut isBindable d'un ensemble d'instructions, modifiez la valeur de l'attribut isBindable de l'élément de package correspondant à l'élément enfant de l'élément de l'ensemble d'instructions.
Pour modifier l'attribut isBindable d'une instruction SQL, modifiez la valeur de l'attribut isBindable de l'élément statementAttributes correspondant à l'élément enfant de l'élément de l'instruction.
<statementSet configureStatus="AUTO">
<package collection="NULLID" consistencyToken="0000012551b7579f" isBindable="true"
isDDLPackage="false" name="pureQu" version=""/>
<statements>
<statement id="1" sectionNumber="1">
<statementDescriptor>
<prepareSql>SELECT CID FROM CUSTOMER WHERE CID > 1002 </prepareSql>
<statementType>QUERY</statementType>
<resultSetMetadata>
<column columnName="CID" columnNameX="CID" databaseName="XMLTEST"
databaseSchema="TEST " db2type="492" length="8" nullable="false"
tableName="CUSTOMER"/>
</resultSetMetadata>
<statementAttributes cursorName="DB_PDQ_SPC2" isBindable="true"
prepareOptions="FOR READ ONLY " resultSetConcurrency="CONCUR_READ_ONLY"
resultSetHoldability="HOLD_CURSORS_OVER_COMMIT"
resultSetType="TYPE_FORWARD_ONLY"/>
<processedSql />
</statementDescriptor>
<statementMetadata>
<traceInfo>
<sqlDefinitionStackTraces>
<trace>
. . .
</statementSet>
Dans le fragment XML suivant de l'exemple, l'attribut isBindable se trouve dans la balise de début de l'élément du package. La valeur est true.
<package collection="NULLID" consistencyToken="0000012551b7579f" isBindable="true"
isDDLPackage="false" name="pureQu" version=""/>
L'exemple d'ensemble d'instructions suivant contient l'instruction SQL SELECT CID FROM CUSTOMER WHERE CID > 1002. Dans le fragment XML suivant, l'attribut isBindable de l'instruction SQL est un attribut de l'élément statementAttributes. L'élément statementAttributes est un élément enfant de l'élément de l'instruction qui contient l'instruction SQL. La valeur est true.
<statementAttributes cursorName="DB_PDQ_SPC2" isBindable="true"
prepareOptions="FOR READ ONLY " resultSetConcurrency="CONCUR_READ_ONLY"
resultSetHoldability="HOLD_CURSORS_OVER_COMMIT"
resultSetType="TYPE_FORWARD_ONLY"/>
Lorsque pureQuery Runtime capture des instructions SQL exécutées dans une base de données DB2, certaines valeurs des registres spéciaux DB2 sont contrôlées et enregistrées avec les instructions SQL. Les valeurs des registres spéciaux enregistrées sont des valeurs couramment définies et qui peuvent affecter le comportement de l'instruction SQL si elles sont modifiées.
L'utilitaire Configure affiche l'activité du registre spécial enregistrée dans le fichier pureQueryXML dans le cadre de son activité.
Pour créer des ensembles d'instructions en fonction des informations des registres spéciaux enregistrées avec les instructions SQL, indiquez l'option -groupSQLBySpecialRegisters.
Pour créer un fichier d'options StaticBinder contenant des informations de liaison basées sur les données des registres spéciaux enregistrées lors de la capture des instructions SQL, indiquez l'option -optionsFileForBind. Vous pouvez créer un fichier d'options StaticBinder même si vous n'avez pas indiqué l'option -groupSQLBySpecialRegisters pour créer des ensembles d'instructions en fonction des informations des registres spéciaux des instructions SQL. Pour plus d'informations sur le fichier et les données des registres spéciaux enregistrées par pureQuery Runtime, reportez-vous aux liens connexes à la fin de cette rubrique.
Lorsque pureQuery Runtime capture une instruction SQL dans un fichier pureQueryXML, il enregistre les informations des registres spéciaux pour l'instruction. Dans le fichier, les informations des registres spéciaux sont stockées dans l'élément XML nommé specialRegValuesSet.
L'élément specialRegValuesSet contient une ou plusieurs instances de l'élément XML nommé specialRegValue. L'attribut specialRegValueId est un attribut de l'élément specialRegValue. La valeur de l'attribut specialRegValueId est l'ID de l'élément specialRegValue.
L'élément specialRegValue contient également un ensemble d'informations des registres spéciaux enregistrées lors de la capture de l'instruction SQL. Les instructions SQL capturées sont stockées dans une instance de l'élément XML statementSet. Chaque élément statementSet contient une ou plusieurs instances d'un élément XML nommé statement. Chaque instruction contient des informations SQL sur l'instruction SQL capturée.
La valeur de l'attribut specialRegValueId permet de lier les informations du registre spécial de l'élément specialRegValue aux instructions SQL. pureQuery Runtime indique la valeur de l'attribut specialRegValueId sous la forme de la valeur d'un attribut de l'élément nommé statementAttributes de l'instruction SQL.
Pour plus d'informations sur les données des registres spéciaux enregistrées par pureQuery Runtime, reportez-vous aux liens connexes à la fin de cette rubrique.
Le fragment XML suivant présente un exemple de l'élément specialRegValuesSet d'un fichier pureQueryXML :
<specialRegValuesSet>
<specialRegValue specialRegValueId="0"
specialRegisterVectorValue="UNTRACKED_SET: FALSE|
SCHEMA: MYTEST |
PATH: "SYSIBM","SYSFUN","SYSPROC",
"SYSIBMADM","MYTEST"|
SQLID: MYTEST |
DECFLOAT ROUNDING: ROUND_HALF_EVEN"/>
<specialRegValue specialRegValueId="1"
specialRegisterVectorValue="UNTRACKED_SET: FALSE|
SCHEMA: DB2ADMIN|
PATH: "SYSIBM","SYSFUN","SYSPROC",
"SYSIBMADM","DB2ADMIN"|
SQLID: DB2ADMIN|
DECFLOAT ROUNDING: ROUND_HALF_EVEN"/>
</specialRegValuesSet>
<statement id="1" sectionNumber="1">
<statementDescriptor>
<prepareSql>SELECT count(EMPNO) FROM EMPLOYEE WHERE WORKDEPT NOT LIKE 'E21' </prepareSql>
<statementType>QUERY</statementType>
<resultSetMetadata>
<column columnName="1" databaseName="SAMPLE" db2type="496" length="4" nullable="false"
unnamedColumn="1"/>
</resultSetMetadata>
<statementAttributes cursorName="DB_PDQ_SPC5"
isBindable="true" prepareOptions="FOR READ ONLY " resultSetConcurrency="CONCUR_READ_ONLY"
resultSetHoldability="HOLD_CURSORS_OVER_COMMIT" resultSetType="TYPE_FORWARD_ONLY"
specialRegValuesUsed="0,1"/>
<processedSql />
</statementDescriptor>
. . .
</statement>
Dans l'exemple, la valeur de l'attribut specialRegValuesUsed de l'élément statementAttributes indique les deux ID des ensembles du registre spécial. Les valeurs des ID de l'ensemble sont 0 et 1. pureQuery Runtime a capturé l'instruction SQL plusieurs fois. Lorsque pureQuery a capturé l'instruction, deux ensembles différents d'informations du registre spécial ont été enregistrés.
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 se présenter comme suit :
java com.ibm.pdq.tool.Configure -optionsFile myOptionsFile.txt
Le fichier d'options, qui peut porter tout nom et extension pris en charge par votre système d'exploitation, contient les entrées suivantes :
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
Le remplacement de nom est un processus en un seul passage. Par exemple, si vous indiquez la chaîne de remplacement "(S1>S2) (S2>S3)", les occurrences de S1 sont remplacées par S2 et les occurrences d'origine de S2 sont remplacées par S3. L'utilitaire Configure remplace S1 par S2 en un seul passage puis remplace S2 par S3 lors d'un autre passage.
Si vous spécifiez une chaîne de remplacement similaire à "(SCH1>SCH2) (SCH2>SCH3)", il est possible que vous receviez des résultats inattendus si vous configurez un fichier pureQueryXML plusieurs fois. Lors de la première configuration, le nom SCH1 passe sur SCH2 et le nom qui était à l'origine SCH2 dans le fichier passe sur SCH3. Lors de la deuxième configuration du fichier, le nom SCH2 passe sur SCH3, notamment les instances du nom SCH2 modifiées lors de la première configuration. Tous les noms qui étaient à l'origine SCH1 ou SCH2 dans le fichier passent sur SCH3.
Si vous souhaitez effectuer un remplacement de nom, par exemple remplacer les noms de schéma SCHIf par SCH2 puis SCH2 par SCH1, exécutez deux fois l'utilitaire Configure. Exécutez d'abord l'utilitaire avec l'option -replaceSchemas "(SCH1>SCH2)" puis réexécutez-le avec l'option -replaceSchemas "(SCH2>SCH1)".
INSERT INTO "schm0".table0 (col1, col2, col3) values (1, 'schm0', 'col3')
Si vous indiquez
-replaceSchemas "(\"schm0\">\"prodSch\")",
l'utilitaire remplace le nom de schéma mais pas le littéral :INSERT INTO "prodSch".table0 (col1, col2, col3) values (1, 'schm0', 'col3')
-replaceLocations " ( sample > testDB ) "
-replaceLocations "(sample > testDB)"
SET CURRENT SCHEMA = "schm0"
SET CURRENT SCHEMA = 'schm0';
SET CURRENT SCHEMA = "prodSchm"
SET CURRENT SCHEMA = 'prodSchm';
SET PACKAGE PATH = 'schema1, schema2'
L'utilitaire Configure reconnaît les deux noms comme noms de schéma et les remplace si nécessaire.SET PACKAGE PATH = 'abc'
SET PATH = 'schema1';
Le nom est modifié par l'utilitaire si nécessaire.