Prérequis pour l'installation de Query Patroller, Version 8
Définition de DYN_QUERY_MGMT pour l'installation et l'utilisation de Query Patroller
Remarques supplémentaires sur la migration à partir de Query Patroller, version 7
Suppression des prérequis concernant le démarrage de Query Patroller (AIX)
Utilisation de DB2 Governor avec Query Patroller
Correction apportée à l'aide concernant la ligne de commande Query Patroller
Reprise sur incident de requêtes Query Patroller
Installation du serveur Query Patroller
Utilisation de Query Patroller avec le concentrateur de connexions DB2
Objets DBCLOB non disponibles dans la boîte de dialogue Affichage des résultats
Nécessité d'exécuter la commande qpsetup sur chaque base de données
Différenciation des majuscules et des minuscules dans les ID profil de Query Patroller
Aucun profil opérateur nécessaire pour les utilisateurs ayant les droits DBADM
Application de filtres pour l'affichage d'un nombre important de requêtes
Modification de la description de la commande LIST QUERIES
Modification de la description des commandes qpstart et qpsetup
Recommandations pour la génération de données historisées
Arrêt du générateur de données historisées
Les requêtes exécutées en arrière-plan une commande LOAD
Erreurs d'insuffisance de mémoire avec Query Controller ou le Centre Query Patroller
Si vous installez Query Patroller, Version 8 sur DB2 Universal Database Enterprise Server Edition, Version 8.1.2, vous devez également avoir installé le FixPak 2+. Cela signifie que vous devez avoir installé DB2 Version 8.1.2 (aussi appelé FixPak 2) et le FixPak 2+ avant de procéder à l'installation de Query Patroller.
Si vous disposez d'une version ultérieure de DB2 Enterprise Server Edition, vous n'avez pas besoin de ce FixPak supplémentaire.
DB2 Version 8.1.2 (Fixpak 2) et FixPak 2+ sont tous deux disponibles sur la page de téléchargement du support technique DB2, à l'adresse suivante : http://www-3.ibm.com/cgi-bin/db2www/data/db2/udb/winos2unix/support/download.d2w/report
Si vous tentez d'installer Query Patroller, Version 8 sur DB2 Enterprise Server Edition, Version 8.1.2 sans avoir installé FixPak 2+, vous recevrez des messages d'erreur indiquant que vous ne disposez pas du niveau correct de DB2 Universal Database pour pouvoir installer le produit.
Afin que Query Patroller puisse intercepter et gérer des requêtes, le paramètre DYN_QUERY_MGMT doit être défini sur ENABLE. Cependant, ce paramètre doit être défini sur DISABLE avant l'installation de Query Patroller pour éviter l'interception de toute requête interne exécutée par le programme d'installation.
Par défaut, ce paramètre est défini sur DISABLE.
Lors de la migration d'un profil administrateur de la version 7 de Query Patroller vers la version 8, un profil opérateur est créé. Ce profil bénéficie automatiquement du niveau d'autorisation maximal sur tous les privilèges Query Patroller. Cependant, le profil migré n'obtient pas automatiquement les droits DBADM sur la base de données Query Patroller. Ainsi, le profil administrateur migré ne dispose pas des privilèges nécessaires pour la génération de données historiques ou pour la création, la mise à jour ou la suppression de profils opérateur. Si les utilisateurs ayant ce profil migré ont besoin d'effectuer ces opérations, il vous faut leur accorder manuellement les droits DBADM après la migration.
Il est impossible de générer des données historiques pour des requêtes contenant des instructions UPDATE ou DELETE sur une position.
La documentation de Query Patroller contient les prérequis suivants concernant le démarrage de Query Patroller sur les systèmes d'exploitation AIX :
EXTSHM=ON export EXTSHM
Cette dépendance a été supprimée et les éléments ci-dessus ne sont plus des prérequis au démarrage de Query Patroller sur les systèmes d'exploitation AIX.
La fonction principale de Query Patroller est d'aider les administrateurs de base de données à gérer les requêtes lancées sur une base de données. La fonction principale de DB2 governor est d'aider les administrateurs à gérer les applications lancées sur une base de données.
DB2 governor vous permet de définir des limites sur les ressources, telles que le nombre de verrous, la durée d'inactivité et la quantité d'UC utilisée par une application. DB2 governor peut être utilisé avec Query Patroller et fournir ainsi de nombreux contrôles administratifs. Afin de les utiliser correctement, il est primordial de comprendre comment ils agissent ensemble.
Query Patroller est un système d'applications collaboratives s'exécutant sur une base de données. Data governor pouvant agir sur ces applications de la même manière que sur d'autres applications, il est nécessaire de suivre certaines instructions lors de la spécification de règles dans le fichier de configuration de Data Governor.
Il est notamment important d'éviter d'y inclure les processus utilisés par Query Patroller. Query Patroller utilise javaw.exe, java.exe, db2fmp.exe et qp.exe sous Windows et java, db2fmp et qp sous UNIX pour effectuer ses opérations. Afin d'éviter que Data governor soit en conflit avec Query Patroller, n'insérez pas ces processus dans son fichier de configuration. Vérifiez également qu'il n'existe pas de règle générale interceptant toutes les applications par défaut. Insérez explicitement la liste d'applications que DB2 Governor doit intercepter.
Si les processus utilisés par Query Patroller ne peuvent être exclus de l'interception par DB2 Governor, veuillez suivre les instructions ci-dessous lors de l'écriture des règles du fichier de configuration de Data Governor.
Le caractère restrictif des autres limites, dont l'utilisation de l'UC et le délai d'inactivité, peut également amener DB2 Governor à agir sur les processus Query Patroller, selon la quantité de temps et de ressources utilisée par Query Patroller pour agir sur les tables de contrôle Query Patroller. Là encore, cette quantité ne peut être pré-déterminée, puisqu'elle dépend des capacités matérielles et de la taille des données. Si vous le souhaitez, augmentez les valeurs des limites pour empêcher DB2 Governor d'agir sur Query Patroller.
Si les actions prioritaires ou planifiées s'appliquent sur les processus Query Patroller, Query Patroller continuera à s'exécuter avec des ressources système réduites. Cependant, si une action forcée s'applique à un processus Query Patroller, ce dernier risque de se terminer. L'action forcée peut terminer un processus Query Patroller de façon normale, renvoyant un code retour SQL1224N, ou il peut provoquer une erreur d'application ou une fin anormale du processus DARI (SQL1131N) si le processus db2fmp est démarré avant que l'interruption ne soit provoquée. Query Patroller ne peut arrêter le processus db2fmp quand celui-ci est démarré. Le processus db2fmp essaiera de terminer l'exécution même après que Query Patroller ait fermé la connexion à la base de données dont le processus db2fmp a besoin pour s'exécuter correctement.
Pour plus d'informations concernant le processus db2fmp, consultez Application Development Guide: Programming Client Applications.
Query Patroller et DB2 Governor peuvent être utilisés tous les deux sur les mêmes applications émettrices de requêtes. Par exemple, une application émettrice telle que DB2 CLP (db2bp.exe sous Windows et db2bp sous UNIX) peut être considérée comme une application interceptée par Query Patroller et comprise dans le fichier de configuration de Data Governor.
Query Patroller intercepte les requêtes au moment de l'émission, tandis que DB2 Governor intercepte les applications au moment de l'exécution des requêtes. L'émission des requêtes intervenant avant leur exécution, Query Patroller interceptera toujours les requêtes avant DB2 Governor. Ainsi, si Query Patroller met une requête en suspens ou en file d'attente, DB2 Governor doit attendre que la requête soit exécutée avant d'intercepter l'application qui a émis la requête.
Une requête interceptée par Query Patroller peut être exécutée soit par l'application émettrice ou par une autre application appelée qprunquery.exe sous Windows et qprunquery sous UNIX. Si les préférences d'émission de l'émetteur spécifient que l'application émettrice doit attendre que les résultats de la requête soit renvoyés avant de libérer l'application, c'est l'application émettrice qui exécutera la requête. Si l'application émettrice est listée dans le fichier de configuration de DB2 governor, ce dernier l'interceptera en exécutant la requête.
Si les préférences d'émission de l'émetteur spécifient que l'application émettrice doit être libérée et que les résultats de la requête doivent être envoyés dans une table de résultats, la requête sera exécutée par qprunquery. Dans ce cas, DB2 governor interceptera l'application seulement si qprunquery. est inclus dans le fichier de configuration de DB2 governor.
La documentation de Query Patroller indique qu'il est possible d'obtenir une liste des commandes Query Patroller à partir de la ligne de commande, en entrant "qp ?". Ceci est incorrect. Pour afficher une liste des commandes Query Patroller, vous devez entrer un nom de base de données de la façon suivante :
qp -d nom_bdd ?
ou
qp -d nom_bdd help
qp -d nom_bdd -u id_utilisateur -p motdepasse ?
ou
qp -d nom_bdd -u id_utilisateur -p motdepasse help
Dans certains cas, lorsque le statut d'une requête mise en file d'attente ou en cours de fonctionnement est modifié, il peut arriver que Query Patroller soit incapable d'enregistrer immédiatement le nouveau statut. Ceci arrive généralement dans une des situations d'arrêt anormal ci-dessous :
Le serveur Query Patroller effectue une reprise sur incident automatique au démarrage et à intervalles réguliers. Il repère les requêtes mises en file d'attente ou en cours de fonctionnement et vérifie que ce statut est toujours correct. Si c'est le cas, la requête est gérée normalement, et si le serveur Query Patroller a été arrêté puis redémarré, la structure interne de données du serveur Query Patroller est restaurée. Cependant, s'il apparaît qu'une requête ayant le statut mise en file d'attente ou en cours de fonctionnement n'existe plus dans DB2 car le serveur DB2 a été arrêté puis redémarré, ou Query Patroller a été arrêté et n'a pu mettre à jour le statut de la requête, alors la reprise sur incident sera effectuée sur la requête. L'action de reprise varie selon que la requête envoie les résultats à une application cliente ou à une table de résultats DB2 :
Lorsque vous installez le serveur Query Patroller, veuillez prendre en compte les informations suivantes :
Quand Query Patroller place une requête dans la file d'attente, cette requête bloque l'application pendant toute la période où elle est dans la file jusqu'à son exécution.
Lorsque le concentrateur de connexions DB2 n'est pas activé, chaque application dispose de son propre agent pour gérer la connexion à la base de données jusqu'à la déconnexion de l'application. Lorsque le concentrateur est activé, toutes les applications partagent le même pool d'agents qui passent d'une application à l'autre sur des limites de transactions. Ainsi, si le concentrateur est activé et que Query Patroller met les requêtes en file d'attente, il immobilise ces agents jusqu'à l'exécution de ces requêtes. Par conséquent, le pool d'agents disponibles serait réduit et les performances de DB2 affectées puisque les applications ne pourraient pas se connecter à une requête ou l'exécuter comme elles ne peuvent pas obtenir les services d'un agent. Ainsi, lorsque le concentrateur de connexions est activé, Query Patroller ne mettra pas les requêtes en file d'attente ; en revanche, il rejettera, par défaut, les requêtes supposées être mises en file d'attente avec un code sqlcode 29009, code anomalie 6.
Pour éviter le rejet des requêtes destinées à être mises en file d'attente, vous pouvez autoriser Query Patroller à exécuter les requêtes au lieu de les rejeter lorsque le concentrateur est activé, en configurant l'option BLOCK_OPTION au niveau du système, à l'aide de la commande UPDATE QP_SYSTEM, ou au niveau de l'utilisateur, à l'aide de la commande UPDATE SUBMITTER_PROFILE. Par défaut, BLOCK_OPTION est positionnée sur 'reject' ('R'), signifiant ainsi que les requêtes seront rejetées et ne seront pas mises en file d'attente lorsque le concentrateur est activé. Pour spécifier à Query Patroller d'exécuter les requêtes plutôt que de les rejeter lorsque le concentrateur est activé, positionnez BLOCK_OPTION sur 'proceed' ('P').
Par exemple, pour autoriser Query Patroller à exécuter les requêtes sur la base de données "sample" plutôt que de les rejeter lorsque le concentrateur est activé, positionnez l'option BLOCK_OPTION sur 'P' comme suit :
qp -d sample -u idutil -p motdepasse "UPDATE QP_SYSTEM USING BLOCK_OPTION 'P'"
Pour permettre à Query Patroller d'exécuter les requêtes émises sous le profil "STEVED" au lieu de les rejeter lorsque le concentrateur est activé, positionnez l'option BLOCK_OPTION pour ce profil sur 'P' comme suit :
qp -d sample -u idutil -p motdepasse "UPDATE SUBMITTER_PROFILE FOR USER'STEVED' USING BLOCK_OPTION 'P'"
Les valeurs attribuées à BLOCK_OPTION sont stockées dans les tables QP_SYSTEM et SUBMITTER_PROFILE pour la base de données.
Le paramètre BLOCK_OPTION pour QP_SYSTEM n'accepte pas les valeurs NULL ; le paramètre BLOCK_OPTION pour SUBMITTER_PROFILE accepte les valeurs NULL. Si BLOCK_OPTION est défini pour QP_SYSTEM et pour le profil émetteur d'un utilisateur, la valeur pour le profil émetteur est prioritaire pour cet utilisateur. Pour les autres utilisateurs, le paramètre BLOCK_OPTION pour QP_SYSTEM s'appliquera. Pour être sûr que le paramètre BLOCK_OPTION pour QP_SYSTEM s'applique à un utilisateur spécifique, positionnez BLOCK_OPTION pour le profil émetteur de cet utilisateur sur NULL.
En raison d'une limitation de JDBC, les objets DBCLOB ne peuvent être affichés dans la boîte de dialogue Affichage des résultats de Query Patroller. Une chaîne vide est affichée à la place des objets DBCLOB. Cette limitation s'applique seulement au Centre Query Patroller, et non à la ligne de commande Query Patroller.
Pour chaque base de données avec laquelle vous souhaitez utiliser Query Patroller, vous devez exécuter la commande qpsetup. Celle-ci permettra de créer, pour chaque base de données, un ensemble d'objets de base de données de contrôle Query Patroller, tels que les tables de contrôle, les vues et les déclencheurs associés aux tables, ainsi que les fonctions utilisateur et les procédures nécessaires à l'exécution de QP. Les tables de contrôle contiennent des informations telles que les paramètres de configuration, les profils utilisateur et les données de requêtes historiques. Pour plus d'informations, consultez le Guide Query Patroller : Installation, administration et utilisation ou les informations sur Query Patroller contenues dans le Centre d'aide et d'information DB2.
Il est important de garder à l'esprit que les majuscules et les minuscules sont différenciées dans les ID profil opérateur et émetteur de Query Patroller. Ces ID profil doivent également exister en tant qu'ID autorisation DB2. Ainsi, si vous créez un profil émetteur pour un utilisateur identifié en tant que"TESTUSER", il doit également exister un ID autorisation DB2 appelé "TESTUSER". Si vous créez un profil émetteur pour un utilisateur identifié comme "testuser," ce profil ne sera pas associé à l'ID autorisation DB2 "TESTUSER" et ne sera pas utilisé par Query Patroller. A la place, toutes les requêtes émises sous l'ID "TESTUSER" seront associées au profil émetteur PUBLIC par défaut.
Il n'est pas nécessaire de créer de profil opérateur pour les utilisateurs ayant les droits DBADM sur la base de données. Ces utilisateurs possèdent déjà le niveau maximal de privilèges opérateur ; il est donc superflu de leur rajouter des profils opérateur. De plus, ces utilisateurs peuvent automatiquement effectuer toutes les tâches Query Patroller en dépit des restrictions éventuelles sur les privilèges opérateur associés à ce profil.
Le temps de réponse du Centre Query Patroller peut être considérablement ralenti si vous visionnez plusieurs centaines de requêtes gérées ou historiques. Pour minimiser ce problème, il est recommandé d'appliquer un filtre sur les vues et de réduire ainsi le nombre de requêtes affichées. Pour obtenir des informations sur l'application de filtres dans le Centre Query Patroller, consultez le Guide Query Patroller : Installation, administration et utilisation ou les informations sur Query Patroller contenues dans le Centre d'aide et d'information.
La documentation de Query Patroller, Version 8 décrit de manière incorrecte les valeurs du paramètre WITH STATUS de la commande LIST QUERIES. Elle indique, en effet, qu'une valeur de "R" renverra toutes les requêtes rejetées, alors qu'en réalité, cette valeur spécifie le renvoi d'une liste de toutes les requêtes en cours d'exécution.
Il y a également une erreur dans la description du comportement par défaut de la commande LIST QUERIES. La documentation stipule que l'émission de la commande LIST QUERIES sans spécification de paramètres renverra les 100 dernières requêtes. Ceci est incorrect. La commande LIST QUERIES émise sans paramètres renverra une liste de toutes les requêtes gérées appartenant à l'utilisateur en cours. Pour afficher toutes les requêtes gérées, il faut spécifier "FOR USER ALL" .
La documentation de Query Patroller, Version 8 stipule qu'un utilisateur avec les droits DBADM peut exécuter la commande qpstart. Ceci est incorrect. Pour émettre la commande qpstart, vous devez être le propriétaire de l'instance contenant la base de données sur laquelle vous voulez exécuter Query Patroller.
La documentation stipule également que vous pouvez exécuter le commande qpsetup si vous disposez des droits DBADM. Ceci est incorrect. Vous devez disposer des droits SYSADM pour exécuter la commande qpsetup sur une base de données.
Il est vivement recommandé d'exécuter le générateur de données historisées (à l'aide de la commande GENERATE HISTORICAL_DATA) pendant les périodes d'utilisation minimale de la base de données. L'exécution de cette commande pendant les heures creuses permet de minimiser les les risques d'un impact sur les performances sur la base de données.
Par ailleurs, il est recommandé d'exécuter la commande GENERATE HISTORICAL_DATA régulièrement afin de réduire le nombre de requêtes pour lesquelles des données sont collectées simultanément.
Pour arrêter la génération de données historisées pendant que le générateur est en cours de fonctionnement, exécutez la commande suivante :
generate historical_data stop
Cette commande permet de définir un indicateur qui est vérifié toutes les 20 requêtes pendant l'exécution du générateur de données historisées. Si cet indicateur est défini, le générateur de données historisées s'arrêtera. Les données de requête qui ont été générées jusqu'à ce moment seront conservées et ne seront pas régénérées à la prochaine exécution du générateur de données historisées. Cependant, la valeur indiquant l'heure de la dernière collecte de données historisées (TIME_HIST_GENERATOR_LAST_RUN dans la table de contrôle QP_SYSTEM) ne sera pas mise à jour.
Lorsqu'une requête est exécutée en arrière-plan, ses résultats sont stockés dans une table de résultats. Toute requête générant une table de résultats est exécutée par un processus appelé qprunquery. Ce processus crée une table de résultats et émet une commande LOAD à partir d'un curseur pour remplir la table avec les résultats de la requête. Ceci signifie que les requêtes qui génèrent des tables de résultats sont soumises aux mêmes restrictions que toute autre commande LOAD à partir d'un curseur. Pour une description complète de ces restrictions, reportez-vous à la documentation de la commande LOAD dans le manuel DB2 Command Reference.
Lors de chaque opération LOAD exécutée par qprunquery, les entrées sont placées dans le fichier db2diag.log. Sous les systèmes d'exploitation UNIX, un ou plusieurs messages seront créés dans un sous-répertoire du répertoire INSTANCE/db2dump, où INSTANCE est le répertoire d'installation de DB2. Sous Windows, un ou plusieurs messages seront créés dans un sous-répertoire du répertoire spécifié dans le paramètre de configuration de base de données diagpath. Le nom du sous-répertoire du fichier de messages est généré en fonction des détails de l'opération de chargement. Voici, par exemple, le nom d'un sous-répertoire de fichier de messages :
qpTbLoad_SAMPLE_349_2003-05-21-16.51.32
où :
Le nom du fichier de messages contenu dans ce sous-répertoire sera le suivant.
qpTbLoad_SAMPLE_349_2003-05-21-16.51.32.MSG.*
.
Les fichiers de messages sont supprimés une fois que le chargement a abouti. Pour aider à identifier les incidents, les fichiers de messages ne sont pas supprimés si le chargement échoue.
Une limite est établie pour le nombre de chargements simultanés pouvant être lancés en parallèle. Si cette limite est dépassée, la requête en cours sera abandonnée et une erreur SQL6555 sera enregistrée dans le fichier qpdiag.log. Si vous êtes confronté à cette erreur, vous pouvez y remédier en modifiant l'intervalle spécifié par la variable de registre DB2ATLD_PORTS qui détermine le nombre de chargements parallèles autorisés simultanément. Pour calculer le nombre approximatif de ports requis dans votre système, choisissez le nombre maximal de chargements devant être exécutés simultanément, en incluant ceux émis par qprunquery ainsi que d'autres opérations de chargement. Multipliez ce nombre par le nombre de partitions logiques par partition physique dans votre environnement. Ajoutez 25 % à ce résultat.
Pour définir la variable de registre DB2ATLD_PORTS, émettez la commande suivante :
db2set DB2ATLD_PORTS=num1:num2
où num1< num2
Query Patroller utilise par défaut 6000 ports dans l'intervalle 50000-56000 ; la définition de DB2ATLD_PORTS remplacera cette valeur.
Lorsque Query Patroller gère un grand nombre de requêtes et que Query Controller ou le Centre Query Patroller est en cours de fonctionnent, vous pouvez recevoir une erreur d'insuffisance de mémoire même s'il y a suffisamment de mémoire disponible sur la machine. Afin de pouvoir utiliser plus de mémoire disponible, vous pouvez augmenter les paramètres de variables d'environnement de la mémoire dynamique à partir de leurs niveaux par défaut.
Les variables d'environnement à mettre à jour sont QP_INIT_JAVA_HEAP_SIZE et QP_MAX_JAVA_HEAP_SIZE. Si ces variables ne sont pas définies, les valeurs par défaut sont respectivement 32 Mo et 512 Mo.
Le présent document peut contenir des informations ou des références concernant certains produits, logiciels ou services IBM non annoncés dans ce pays. Pour plus de détails, référez-vous aux documents d'annonce disponibles dans votre pays, ou adressez-vous à votre partenaire commercial IBM. Toute référence à un produit, logiciel ou service IBM n'implique pas que seul ce produit, logiciel ou service puisse être utilisé. Tout autre élément fonctionnellement équivalent peut être utilisé, s'il n'enfreint aucun droit d'IBM. Il est de la responsabilité de l'utilisateur d'évaluer et de vérifier lui-même les installations et applications réalisées avec des produits, logiciels ou services non expressément référencés par IBM.
IBM peut détenir des brevets ou des demandes de brevets couvrant les produits mentionnés dans le présent document. La remise de ce document ne vous donne aucun droit de licence sur ces brevets ou demandes de brevet. Si vous désirez recevoir des informations concernant l'acquisition de licences, veuillez en faire la demande par écrit à l'adresse suivante :
IBM EMEA Director of LicensingPour le Canada, veuillez adresser votre courrier à :
IBM Director of Commercial RelationsLes informations sur les licences concernant les produits utilisant un jeu de caractères à deux octets (DBCS) peuvent être obtenues par écrit à l'adresse suivante :
IBM World Trade Asia CorporationLe paragraphe suivant ne s'applique ni au Royaume-Uni ni dans aucun autre pays dans lequel il serait contraire aux lois locales. LE PRESENT DOCUMENT EST LIVRE "EN L'ETAT". IBM DECLINE TOUTE RESPONSABILITE, EXPRESSE OU IMPLICITE, RELATIVE AUX INFORMATIONS QUI Y SONT CONTENUES, Y COMPRIS EN CE QUI CONCERNE LES GARANTIES DE QUALITE MARCHANDE OU D'ADAPTATION A VOS BESOINS. Certaines juridictions n'autorisent pas l'exclusion des garanties implicites, auquel cas l'exclusion ci-dessus ne vous sera pas applicable.
Le présent document peut contenir des inexactitudes ou des coquilles. Il est mis à jour périodiquement. Chaque nouvelle édition inclut les mises à jour. IBM peut modifier sans préavis les produits et logiciels décrits dans ce document.
Les références à des sites Web non IBM sont fournies à titre d'information uniquement et n'impliquent en aucun cas une adhésion aux données qu'ils contiennent. Les informations contenues dans ces sites Web ne sont pas associées à ce produit IBM, et l'utilisation de ces sites se fait à vos propres risques et périls.
IBM pourra utiliser ou diffuser, de toute manière qu'elle jugera appropriée et sans aucune obligation de sa part, tout ou partie des informations qui lui seront fournies.
Les licenciés souhaitant obtenir des informations permettant : (i) l'échange des données entre des logiciels créés de façon indépendante et d'autres logiciels (dont celui-ci), et (ii) l'utilisation mutuelle des données ainsi échangées, doivent adresser leur demande à :
IBM Canada LimitedCes informations peuvent être soumises à des conditions particulières prévoyant notamment le paiement d'une redevance.
Le logiciel sous licence décrit dans ce document et tous les éléments sous licence disponibles s'y rapportant sont fournis par IBM conformément aux dispositions de l'ICA, des Conditions internationales d'utilisation des logiciels IBM ou de tout autre accord équivalent.
Les données de performance indiquées dans ce document ont été déterminées dans un environnement contrôlé. Par conséquent, les résultats peuvent varier de manière significative selon l'environnement d'exploitation utilisé. Certaines mesures évaluées sur des systèmes en cours de développement ne sont pas garanties sur tous les systèmes disponibles. En outre, elles peuvent résulter d'extrapolations. Les résultats peuvent donc varier. Il incombe aux utilisateurs de ce document de vérifier si ces données sont applicables à leur environnement d'exploitation.
Les informations concernant des produits non IBM ont été obtenues auprès des fournisseurs de ces produits, par l'intermédiaire d'annonces publiques ou via d'autres sources disponibles. IBM n'a pas testé ces produits et ne peut confirmer l'exactitude de leurs performances ni leur compatibilité. Toute question concernant les performances de produits non IBM doit être adressée aux fournisseurs de ces produits.
Toute instruction relative aux intentions d'IBM pour ses opérations à venir est susceptible d'être modifiée ou annulée sans préavis, et doit être considérée uniquement comme un objectif.
Ce document peut contenir des exemples de données et des rapports utilisés couramment dans l'environnement professionnel. Ces exemples mentionnent des noms fictifs de personnes, de sociétés, de marques ou de produits à des fins illustratives ou explicatives uniquement. Toute ressemblance avec des noms de personnes, de sociétés ou des données réelles serait purement fortuite.
LICENCE DE COPYRIGHT :
Le présent logiciel peut contenir des exemples de programmes d'application en langage source destinés à illustrer les techniques de programmation sur différentes plateformes d'exploitation. Vous avez le droit de copier, de modifier et de distribuer ces exemples de programmes sous quelque forme que ce soit et sans paiement d'aucune redevance à IBM, à des fins de développement, d'utilisation, de vente ou de distribution de programmes d'application conformes aux interfaces de programmation des plateformes pour lesquelles ils ont été écrits ou aux interfaces de programmation IBM. Ces exemples de programmes n'ont pas été rigoureusement testés dans toutes les conditions. Par conséquent, IBM ne peut garantir expressément ou implicitement la fiabilité, la maintenabilité ou le fonctionnement de ces programmes.
Toute copie totale ou partielle de ces programmes exemples et des oeuvres qui en sont dérivées doit comprendre une notice de copyright, libellée comme suit :
(C) (nom de votre société) (année). Des segments de code sont dérivés des Programmes exemples d'IBM Corp. (C) Copyright IBM Corp. _indiquez l'année ou les années_. All rights reserved.
Les termes qui suivent sont des marques d'International Business
Machines Corporation aux Etats-Unis et/ou dans certains autres pays et ont été
utilisées dans au moins un des documents de la bibliothèque DB2 UDB.
ACF/VTAM AISPO AIX AIXwindows AnyNet APPN AS/400 BookManager C Set++ C/370 CICS Database 2 DataHub DataJoiner DataPropagator DataRefresher DB2 DB2 Connect DB2 Extenders DB2 OLAP Server DB2 Query Patroller DB2 Universal Database Distributed Relational Database Architecture DRDA eServer Extended Services FFST First Failure Support Technology IBM IMS IMS/ESA iSeries |
LAN Distance MVS MVS/ESA MVS/XA Net.Data NetView OS/390 OS/400 PowerPC pSeries QBIC QMF RACF RISC System/6000 RS/6000 S/370 SP SQL/400 SQL/DS System/370 System/390 SystemView Tivoli VisualAge VM/ESA VSE/ESA VTAM WebExplorer WebSphere WIN-OS/2 z/OS zSeries |
Les termes qui suivent sont des marques d'autres sociétés et ont été utilisés dans au moins un des documents de la bibliothèque DB2 UDB :
Microsoft, Windows, Windows NT et le logo Windows sont des marques de Microsoft Corporation aux Etats-Unis et/ou dans certains autres pays.
Intel et Pentium sont des marques de Intel Corporation aux Etats-Unis et/ou dans certains autres pays.
Java, ou toutes les marques et logos incluant Java, sont des marques de Sun Microsystems, Inc. aux Etats-Unis et/ou dans certains autres pays.
UNIX est une marque enregistrée de The Open Group aux Etats-Unis et/ou dans certains autres pays.
D'autres sociétés sont propriétaires des autres marques, noms de produits ou logos qui pourraient apparaître dans ce document.