47 F2 13UR REV00 - ORACLE 7 SQL*NET V1 avec ORACLE V7
Transcription
47 F2 13UR REV00 - ORACLE 7 SQL*NET V1 avec ORACLE V7
Bases de données Bull DPS 7000 SQL*Net-V1 avec ORACLE-V7 Guide de l'utilisateur GCOS 7 Logiciel Sujet : Informations requises pour l'exploitation des fonctions SQL *Net-V1 avec ORACLE-V7 sous le système d'exploitation GCOS 7 et à partir d'un micro-ordinateur fonctionnant sous MS-DOS. Observations : Nouvelle version pour le serveur ORACLE-V7. Version du logiciel : GCOS 7-V6 Date : Décembre 1995 BULL ELECTRONICS ANGERS S.A. CEDOC Atelier de reprographie 331, Avenue Patton 49004 ANGERS Cedex 01 FRANCE 47 F2 13UR Rev00 Bull HN Information Systems Inc. Publication Order Entry FAX: (508) 294-7411 MA02/423S Technology Park Billerica, MA 0182 U.S.A. Copyright Bull S.A., 1995 Toutes les marques citées sont la propriété de leurs titulaires respectifs. Vos suggestions sur la forme et le fond de ce manuel seront les bienvenues. Une feuille destinée à recevoir vos remarques se trouve à la fin du présent manuel. La loi du 11 mars 1957, complétée par la loi du 3 juillet 1985, interdit les copies ou reproductions destinées à une utilisation collective. Toute représentation ou reproduction intégrale ou partielle faite par quelque procédé que ce soit, sans consentement de l'auteur ou de ses ayants cause, est illicite et constitue une contrefaçon sanctionnée par les articles 425 et suivants du code pénal. Ce document est fourni à titre d'information seulement. Il n'engage pas la responsabilité de Bull S.A. en cas de dommages résultant de son application. Des corrections ou modifications au contenu de ce document peuvent intervenir sans préavis ; des mises à jour ultérieures les signaleront éventuellement aux destinataires. Préface OBJET DU MANUEL Ce manuel fournit toutes les informations requises pour exploiter les fonctions SQL*Net avec ORACLE-V7(R) sous GCOS 7 de Bull, ainsi que sur un micro-ordinateur via une liaison télécom synchrone ou asynchrone sous MS-DOS. UTILISATEURS CONCERNÉS Ce manuel est destiné à toute personne souhaitant faire appel aux produits ORACLE pour assurer la gestion de réseau. Bien qu'il s'adresse plus particulièrement aux programmeurs d'applications et aux administrateurs, il pourra se révéler utile aux utilisateurs déjà familiarisés avec SQL*Plus. STRUCTURE DU MANUEL Chapitre 1 Outre une présentation générale des fonctions SQL*Net, ce chapitre explique le traitement distribué et présente l'architecture SQL*Net. Chapitre 2 Ce chapitre décrit l'architecture utilisée par SQL*Net pour créer un environnement réseau ORACLE. Il aborde des sujets tels que la spécification de base de données, le gestionnaire de communications COR et les restrictions imposées par SQL*Net. Chapitre 3 Ce chapitre indique comment accéder à une base de données distante via SQL*Plus et les précompilateurs de la série Pro*. Il présente également les fonctions de gestion de réseau du langage SQL*Plus. Chapitre 4 Ce chapitre explique de manière détaillée comment installer et exploiter les gestionnaires synchrone et asynchrone sur un micro-ordinateur. Il décrit en outre les procédures de connexion automatique et manuelle. 47 F2 13UR Rev00 iii SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur BIBLIOGRAPHIE Cette bibliographie est fournie à titre indicatif. Pour plus de précisions (disponibilité du manuel, numéro de révision, indice de mise à jour), veuillez vous adresser à CEDOC. Si vous souhaitez de plus amples informations sur des documents spécifiques, reportezvous au manuel Introduction à ORACLE-V7 Série 47 : manuels propres à GCOS 7 Introduction à ORACLE-V7 ..............................................................................42 F2 10UR ORACLE7 How to Use the Documentation..................................................... 47 A2 10UR ORACLE-V7 - Guide d'installation ...................................................................47 F2 11UR ORACLE7 Installation Guide .......................................................................... 47 A2 11UR ORACLE-V7- Processeurs et utilitaires ...........................................................47 F2 12UR ORACLE7 Guide to Processors and Utilities .................................................. 47 A2 12UR SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur....................................47 F2 13UR SQL*Net V1 With ORACLE7 User's Guide..................................................... 47 A2 13UR Série 86 : manuels généraux Manuel de référence du langage SQL (2) Serveur ORACLE-V7 - Langage SQL - Manuel de référence......................... 86 F2 43PE ORACLE7 Server SQL Language Reference Manual .....................................86 A2 43PE Serveur ORACLE-V7 - Langage SQL - Guide pratique ................................... 86 F2 47PE ORACLE7 Server SQL Language Quick Reference........................................86 A2 47PE PL/SQL (1) PL/SQL - Guide de l'utilisateur ........................................................................86 F2 76SW PL/SQL User's Guide and Reference .............................................................86 A2 76SW SGBDR et utilitaires généraux (6) Serveur ORACLE-V7 - Concepts..................................................................... 86 F2 40PE ORACLE7 Server Concepts Manual................................................................86 A2 40PE Serveur ORACLE-V7 - Guide de l'administrateur ............................................ 86 F2 41PE ORACLE7 Server Administrator's Guide .........................................................86 A2 41PE Serveur ORACLE-V7 - Guide du développeur d'applications.......................... 86 F2 42PE ORACLE7 Server Application Developer's Guide............................................86 A2 42PE Serveur ORACLE-V7 - Messages et codes ..................................................... 86 F2 45PE ORACLE7 Server Messages and Codes .........................................................86 A2 45PE Serveur ORACLE-V7 - Utilitaires - Guide de l'utilisateur.................................. 86 F2 44PE ORACLE7 Server Utilities User's Guide ..........................................................86 A2 44PE Serveur ORACLE-V7 - Guide de migration...................................................... 86 F2 46PE iv 47 F2 13UR Rev00 Préface ORACLE7 Server Migration Guide ..................................................................86 A2 46PE SQL*Plus (2) QL*Plus - Guide de l'utilisateur .......................................................................86 F2 16SW QL*Plus User's Guide and Reference.............................................................86 A2 16SW SQL*Plus - Guide pratique............................................................................... 86 F2 30PE SQL*Plus Quick Reference..............................................................................86 A2 30PE SQL*Net (1) SQL*Net ISO - Guide de l'utilisateur ................................................................ 86 F2 57AS SQL*Net ISO User's Guide ..............................................................................86 A2 57AS DOCUMENTATION OPEN7 POUR TCP/IP OPEN7 - Manuel de référence de l'administrateur...........................................47 F2 31US OPEN7 Administrator's Reference Manual ......................................................47 A2 31US OPEN7 - Guide de l'utilisateur .........................................................................47 F2 30US OPEN7 User Guide..........................................................................................47 A2 30US CONVENTIONS D'ECRITURE Les conventions d'écriture utilisées dans ce manuel pour la syntaxe des commandes sont les suivantes : • les MAJUSCULES indiquent généralement un mot-clé, à introduire tel quel ; • les minuscules désignent un terme générique, à remplacer par le nom ou la valeur appropriée ; • les éléments syntaxiques délimités par certains caractères spéciaux ont une signification précise, comme indiqué ci-dessous. Sélection facultative [YES ] YES ou pas de sélection Sélection facultative [YES ] [NO ] [WAIT] YES ou NO ou WAIT ou pas de sélection Une sélection obligatoire {YES } {NO } {WAIT} YES ou NO ou WAIT Les variables peuvent apparaître entre chevrons : <variable1> 47 F2 13UR Rev00 v vi Table des matières 1. Généralités............................................................................................................. 1-1 1.1 CONDITIONS PRÉALABLES .................................................................................... 1-1 1.2 PRESENTATION DE SQL*NET ................................................................................. 1-2 1.3 TRAITEMENT DISTRIBUE ET SQL*NET .................................................................. 1-2 1.4 ARCHITECTURE SQL*NET....................................................................................... 1-3 1.5 AVANTAGES DE SQL*NET ....................................................................................... 1-3 1.6 FONCTIONS SQL*NET .............................................................................................. 1-5 1.7 LIAISONS TÉLÉCOM................................................................................................. 1-6 1.8 ERREURS DU GESTIONNAIRE SQL*NET ............................................................... 1-6 1.9 COMPATIBILITÉ ORACLE-V6/V7 ............................................................................. 1-6 2. Architecture ........................................................................................................... 2-1 2.1 DESCRIPTION............................................................................................................ 2-2 2.1.1 2.1.2 Communication terminal-process ........................................................................... Communication tâche-tâche .................................................................................... 2-3 2-4 2.2 COR ET OPEN7 ......................................................................................................... 2-4 47 F2 13UR Rev00 vii SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 2.2.1 2.2.1.1 2.2.1.2 Activation de connexions à distance ...................................................................... Commande COR I....................................................................................................... Protocole TCP/IP......................................................................................................... 2-4 2-4 2-5 2.2.2 2.2.2.1 2.2.2.2 Désactivation de connexions à distance................................................................ Commande COR S ..................................................................................................... Protocole TCP/IP......................................................................................................... 2-5 2-5 2-5 2.2.3 Augmentation du nombre de connexions SQL*Net............................................... 2-5 2.3 PROTOCOLE DE COMMUNICATION....................................................................... 2-8 2.4 SPECIFICATION D'UNE BASE DE DONNÉES DISTANTE...................................... 2-8 2.4.1 2.4.2 Spécification de base de données .......................................................................... Fonction de connexion automatique ...................................................................... 2-9 2-10 2.5 RESTRICTIONS SQL*NET ........................................................................................ 2-11 2.6 EXPLOITATION D'AUTRES UTILITAIRES ORACLE AVEC SQL*NET ................... 2-11 3. Exploitation de bases de données .............................................................. 3-1 3.1 UTILISATION DE SQL*PLUS AVEC SQL*NET ........................................................ 3-1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.4.1 3.1.4.2 3.1.4.3 3.1.4.4 3.1.4.5 Requêtes distribuées................................................................................................ Connexion à SQL*Plus sous SQL*Net à partir d'un DPS 7000 ............................. Commande CONNECT.............................................................................................. Commande COPY ..................................................................................................... Notification d'erreurs ................................................................................................... Exemples .................................................................................................................... Substitution de macro ................................................................................................. Impact sur les transactions ouvertes sous SQL*Plus ................................................. Paramètres internes.................................................................................................... 3-1 3-2 3-2 3-3 3-5 3-8 3-8 3-9 3-9 3.1.5 3.1.5.1 3.1.5.2 Liaisons de base de données .................................................................................. Commande CREATE DATABASE LINK..................................................................... Commande DROP DATABASE LINK ......................................................................... 3-10 3-11 3-14 3.1.6 3.1.7 3.1.8 3.1.9 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 Consultation de tables distantes............................................................................. Création de synonymes pour tables distantes ...................................................... Création de vues pour tables distantes.................................................................. Suppression d'une table distante............................................................................ Insertion dans une table distante............................................................................ Copie d'un nœud distant vers un nœud local........................................................ Restrictions sur les noms d'objet de base de données ........................................ Restrictions sur les requêtes distribuées............................................................... Stockage des liaisons dans le dictionnaire de données....................................... 3-14 3-15 3-16 3-16 3-16 3-17 3-17 3-18 3-18 viii 47 F2 13UR Rev00 Table des matières 3.2 EXPLOITATION DES INTERFACES DE PROGRAMMATION ORACLE AVEC SQL*NET ......................................................................................... 3-19 SQL*Net sur micro-ordinateur MS-DOS (protocoles synchrone et asynchrone) ..................................................... 4-1 4.1 INSTALLATION .......................................................................................................... 4-2 4.1.1 4.1.2 4.1.3 Installation du gestionnaire de périphériques asynchrone .................................. Installation du gestionnaire de périphériques synchrone .................................... Paramètres de configuration ................................................................................... 4-3 4-5 4-6 4.2 CHARGEMENT DES GESTIONNAIRES SQL*NET .................................................. 4-7 4.3 PROCEDURES DE CONNEXION .............................................................................. 4-8 4.3.1 4.3.1.1 4.3.1.2 4.3.1.3 4.3.1.4 Connexion manuelle ................................................................................................. Une fois le processeur SQL*Plus appelé .................................................................... Une fois la connexion établie ...................................................................................... Une fois connecté au serveur ORACLE sur le micro-ordinateur ................................ Déconnexion ............................................................................................................... 4-8 4-9 4-10 4-10 4-10 4.3.2 4.3.3 4.3.3.1 4.3.3.2 4.3.3.3 4.3.3.4 4.3.3.5 Connexion automatique ........................................................................................... Description de dialogue de connexion automatique............................................. Ligne d'instruction ....................................................................................................... Caractères spéciaux ................................................................................................... Exemple ...................................................................................................................... Fichiers de connexion automatique par défaut ........................................................... Exemple de fichier de connexion automatique ........................................................... 4-11 4-12 4-13 4-14 4-14 4-15 4-15 4.3.4 4.3.4.1 4.3.4.2 Variables de macro ................................................................................................... Définition de macros ................................................................................................... Informations complémentaires.................................................................................... 4-15 4-16 4-16 4.3.5 4.3.5.1 4.3.5.2 Connexion de base de données par défaut............................................................ Connexion locale......................................................................................................... Connexion à distance.................................................................................................. 4-17 4-17 4-17 4.3.6 Appel des messages de suivi .................................................................................. 4-18 4. 47 F2 13UR Rev00 ix SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur Glossaire .................................................................................................................................. Index x ................................................................................................................................... g-1 i-1 47 F2 13UR Rev00 Table des matières Illustrations Figures 2-1 2-2 2-3 4-1 Modèle de communication client/serveur.................................................................... Connexions SQL*Net via DSA .................................................................................... Connexions SQL*Net via TCP/IP ................................................................................ Fichiers et répertoires MS-DOS sous SQL*NET......................................................... 2-3 2-6 2-7 4-19 Combinaisons client/serveur ....................................................................................... Préfixes de gestionnaire SQL*Net .............................................................................. 2-2 2-9 Tableaux 2-1 2-2 47 F2 13UR Rev00 xi SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur xii 47 F2 13UR Rev00 1. Généralités Ce chapitre, qui constitue une introduction à SQL*Net, inclut les informations suivantes : • les conditions requises pour l'utilisation de SQL*Net, • une description générale de SQL*Net et de ses applications, • une présentation des avantages offerts par SQL*Net, • un récapitulatif des fonctions SQL*Net. 1.1 CONDITIONS PREALABLES L'exécution d'opérations de gestion de réseau avec SQL*Net requiert la présence des produits suivants : • SQL*Net version 1.1 (ou ultérieure), • SGBDR ORACLE version 6.0 (ou ultérieure). SQL*Net est livré avec le SGBDR ORACLE. Pour plus de détails sur son installation, reportez-vous au manuel ORACLE-V7 - Guide d'installation. L'exploitation de SQL*Net avec TCP/IP requiert la version 5 de GCOS 7, ainsi que le produit OPEN7. Remarque : 47 F2 13UR Rev00 Même si la carte ATLANTIS est souvent citée dans les exemples proposés, il existe d'autres cartes capables d'exécuter les mêmes fonctions. 1-1 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 1.2 PRESENTATION DE SQL*NET SQL*Net est une couche logicielle qui, à l'aide des protocoles de communication pris en charge par divers systèmes d'exploitation, fournit un environnement de traitement distribué au système de gestion de base de données relationnelles (SGBDR) ORACLE, éliminant ainsi virtuellement les frontières entre les différents types de matériel et de système d'exploitation d'un réseau. Avant l'introduction d'ORACLE-V5, les applications ne pouvaient être connectées qu'à une seule base de données prédéfinie, sur un emplacement du réseau également prédéfini. Les programmes d'application devaient en outre résider sur le même CPU que la base de données. L'introduction du produit logiciel SQL*Net (en option) avec la version 5.0 d'ORACLE (SGBDR) a permis qu'un programme d'application exécuté sur une machine puisse manipuler les données d'une base de données ORACLE résidant sur une autre machine. Le programme d'application en question peut être soit un utilitaire ORACLE tel que SQL*Forms, soit une application développée via les interfaces de programmation ORACLE. SQL*Net permet en outre à des applications d'être connectées dynamiquement à plusieurs bases de données ORACLE via les noeuds du réseau, à l'aide d'un certain nombre de protocoles de communication. 1.3 TRAITEMENT DISTRIBUE ET SQL*NET Le traitement distribué est un processus selon lequel des programmes dépendant de noeuds différents coordonnent leurs opérations grâce aux messages qu'ils s'adressent via le réseau. Les utilisateurs d'un environnement de traitement distribué doivent être capables de localiser la base de données distante et d'envoyer sur le réseau les messages permettant de lancer un processus sur cette base. Par opposition, une base de données distribuées coordonne l'accès partagé pour le compte des utilisateurs, l'emplacement des données restant transparent. Un environnement de traitement distribué ne prend généralement pas en charge les jointures sur le réseau, ni les instructions faisant référence à plusieurs noeuds. SQL*Net permet à des applications de résider sur une machine autre que celle dont dépend la base de données et offre la possibilité de transférer des données entre deux noeuds du réseau. Associé aux applications ORACLE, il donne accès aux fonctions de traitement distribué (accès à des données distantes, etc.). De plus, la fonction de requêtes distribuées fournie par le noyau ORACLE permet à une commande SQL de faire référence à plusieurs noeuds et de prendre en charge les jointures sur le réseau. Il est également possible d'écrire des applications par le biais des interfaces de programmation ORACLE, qui permettent à des opérations de s'étendre sur plusieurs noeuds du réseau. 1-2 47 F2 13UR Rev00 Généralités 1.4 ARCHITECTURE SQL*NET Pour exécuter des fonctions de traitement distribué, SQL*Net intègre la communication de réseau multi-noeud aux communications de type process-process autorisées par la structure à deux tâches d'ORACLE. Le SGBDR ORACLE est en effet basé sur une architecture de ce type : la tâche (ou l'application) utilisateur est exécutée comme un process de système d'exploitation distinct de la tâche serveur (le noyau ORACLE), les deux tâches communiquant via les fonctions de communication interprocess offertes par le système d'exploitation. Sous SQL*Net, cette communication interprocess est assurée via un réseau plutôt que sur une même machine. On parle alors de modèle d'exploitation client/serveur, dans lequel le client est un programme ou un outil d'application, et le serveur le SGBDR ORACLE. Dans un environnement classique mono-processeur, le client et le serveur s'exécutent sur la même machine, qui assure également le stockage des fichiers base de données. SQL*Net permet d'exécuter le programme client sur une machine autre que celle intégrant le noyau (et la base de données). Le programme client demande les services du serveur en envoyant des messages sur le réseau. Vous trouverez plus de détails sur l'exploitation du modèle client/serveur par SQL*Net dans le chapitre 2. 1.5 AVANTAGES DE SQL*NET L'une des premières caractéristiques du logiciel ORACLE est qu'il offre toujours les mêmes fonctionnalités, quel que soit l'environnement d'exploitation, ce qui en fait un outil parfaitement adapté à un environnement réseau. Le principal avantage offert par l'utilisation de SQL*Net à des fins de traitement distribué est peut-être qu'elle encourage une exploitation efficace du matériel disponible. En effet, SQL*Net permettant aux produits ORACLE pris en charge par plusieurs environnements de communiquer entre eux via le réseau, les administrateurs de bases de données ont toute liberté pour choisir le matériel le plus approprié pour une application donnée. Par exemple, SQL*Net permet à SQL*Calc, exécuté sur un micro-ordinateur, d'accéder à une base de données stockée sur un système central, tel qu'un mini-ordinateur ou un gros système. Il est alors possible de profiter des avantage des deux machines : SQL*Calc utilise les temps de réponse rapides offerts par le micro-ordinateur, et la base de données exploite les techniques de partage de données performantes, les E/S rapides et la puissance de traitement économique du mini-ordinateur ou du gros système. La configuration réseau est en outre parfaitement adaptée à un environnement de base de données : elle offre un moyen d'accès à des données réparties sur des sites du réseau géographiquement distants. SQL*Net permet, par exemple, de distribuer des fonctions informatiques départementales ou régionales sur des machines locales, tout en conservant la capacité de télécharger des données sur un gros système central pour un traitement au niveau de l'entreprise. Un exemple type est un bureau de vente régional équipé d'un DPS 7000 connecté à un DPS 7000 distant plus puissant, permettant de télécharger les commandes quotidiennes vers le système distant, d'une part, et les données d'inventaire et de tarification vers le système régional, d'autre part. Cet exemple illustre également le fait que SQL*Net encourage la distribution efficace des données et donc de la charge de traitement. Un autre avantage à porter au crédit de la configuration réseau est que les opérations d'extension sont plus rentables sur les réseaux que sur des systèmes informatiques 47 F2 13UR Rev00 1-3 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur indépendants. Il est ainsi plus économique d'ajouter des micro-ordinateurs à un réseau ayant accès à un gros système que d'acquérir un nouveau gros système. La configuration réseau permet à des ordinateurs plus petits et moins coûteux de partager la puissance de systèmes plus gros et plus puissants. Un environnement recourant à SQL*Net offre encore un autre avantage : les applications générées à l'aide d'ORACLE sont accessibles sur l'ensemble du réseau, optimisant ainsi les efforts de développement d'applications. Etant donné la portabilité des applications générées via ORACLE, une seule opération de développement résulte en une application unique fonctionnant de manière identique et offrant la même interface utilisateur sur tous les systèmes du réseau. Ces applications, exécutables sur n'importe quel système du réseau, peuvent accéder à n'importe quelle base de données ORACLE. Il est également possible d'écrire des programmes en langage évolué, par le biais des interfaces de programmation ORACLE, qui incluent des fonctions SQL*Net. Il est même possible d'écrire un programme en langage évolué couvrant plusieurs noeuds de réseau - une fonction normalement non disponible. De plus, la sécurité et l'intégrité de la base de données, normalement prévues au niveau local, sont également assurées sur l'ensemble du réseau. En résumé, l'utilisation de SQL*Net offre les avantages suivants : • l'exploitation plus efficace de la puissance de traitement, • la distribution du traitement des données sur des sites géographiques distants, • la distribution plus efficace du volume de traitement des données, • la gestion économique de l'évolution de la puissance de traitement, • l'optimisation des efforts de développement d'applications, • la protection de la sécurité et de l'intégrité des données sur l'ensemble du réseau. 1-4 47 F2 13UR Rev00 Généralités 1.6 FONCTIONS SQL*NET SQL*Net offre les caractéristiques suivantes : • Un utilisateur SQL*Net situé en un point quelconque d'un réseau peut se connecter à n'importe quelle autre base de données ORACLE sur ce même réseau. • SQL*Net permet l'accès à plusieurs bases de données, même simultanément. Il vous est donc possible d'utiliser une base de données locale à certains moments et une base distante le reste du temps. Vous pouvez extraire des données d'une base distante, les traiter au sein d'une base locale, puis les renvoyer vers la base distante. Vous avez enfin la possibilité d'utiliser les données d'une base dans le cadre de transactions affectant une autre base. Voici deux exemples : les services de copie de base à base, tels que ceux fournis par la commande SQL*Plus COPY, et la possibilité de stocker localement des données statiques pour valider la base de données, tout en enregistrant les mises à jour sur la base centrale. • Les protocoles asynchrone et synchrone ORACLE offrent une fonction de connexion automatique, avec l'hôte distant à chaque demande de connexion. • SQL*Net prend en charge des connexions homogènes (entre environnements similaires). Par exemple, il est possible de connecter deux DPS 7000, jouant respectivement les rôles de client et de serveur. • SQL*Net gère également les connexions hétérogènes (entre environnements différents). Par exemple, il est possible de connecter un micro-ordinateur à un DPS 7000, le premier faisant fonction de client et le second de serveur, ou encore un système UNIX à un DPS 7000 avec TCP/IP sur un LAN Ethernet. • Vous avez la possibilité d'établir des connexions hétérogènes et homogènes simultanées. • SQL*Net fonctionne indépendamment des protocoles de réseau qu'il prend en charge. Ses fonctionnalités restent donc les mêmes, quel que soit le protocole sous-jacent. • Des connexions peuvent être établies avec des bases de données locales ou distantes, ou avec la base de données par défaut. • SQL*Net permet le réacheminement dynamique de la connexion après le lancement de l'utilitaire. Il est ainsi possible de passer d'un hôte distant à un autre, tout en restant sous la même application ORACLE. • Sous SQL*Net, les fonctions de sécurité et de reprise automatique fournies par ORACLE sont étendues et mises à jour sur l'ensemble du réseau. • La fonction de requêtes distribuées fournie par le noyau ORACLE permet de faire référence à plusieurs noeuds dans une même commande SQL. 47 F2 13UR Rev00 1-5 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 1.7 LIAISONS TELECOM SQL*Net prend en charge les liaisons télécom suivantes : Réseau DSA : X25 X25 privé LAN Ethernet Protocole TCP/IP : LAN Ethernet 1.8 ERREURS DU GESTIONNAIRE SQL*NET Les erreurs du gestionnaire SQL*Net provoquent l'affichage d'un code d'erreur compris entre ORA-6000 et ORA-6049 inclus. Vous trouverez la liste de ces erreurs, ainsi que leur origine et l'action à suivre, dans le manuel Serveur ORACLE-V7 - Messages et codes. 1.9 COMPATIBILITE ORACLE-V6/V7 SQL*Net permet la compatibilité entre un client et un serveur fonctionnant respectivement sous ORACLE-V6 et ORACLE-V7. Par exemple, il est possible d'utiliser SQL*Net en passant d'un micro-ordinateur fonctionnant sous ORACLE-V6 à un DPS 7000 exécutant ORACLE-V7. Remarque : 1-6 Il est déconseillé de renverser les rôles (client ORACLE-V7 et serveur ORACLE-V6). 47 F2 13UR Rev00 2. Architecture Ce chapitre, dédié à l'architecture SQL*Net, traite des sujets suivants : • la technique de communication à deux tâches utilisée pour la prise en charge du traitement distribué, • le modèle de communication client/serveur, • la communication terminal-process, • la communication process-process, • l'activation des fonctions SQL*Net via la commande COR, • SQL*Net via TCP/IP, • les primitives de protocole de communication requises pour la prise en charge de SQL*Net, • la spécification d'une base de données distante, • les restrictions SQL*Net, • l'exploitation d'autres utilitaires ORACLE avec SQL*Net. 47 F2 13UR Rev00 2-1 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 2.1 DESCRIPTION La technique de communication exploitée par SQL*Net est basée sur la structure à deux tâches utilisée par ORACLE dans certains environnements d'exploitation tels qu'UNIX. Ce type de structure fait généralement référence à la communication qui s'établit entre deux process résidant sur une même machine et communiquant entre eux grâce aux fonctions de communication interprocess offertes par le système d'exploitation. Avec SQL*Net, la communication s'établit entre deux process résidant non plus sur un même CPU, mais sur deux machines différentes. Ce type d'archictecture est appelé modèle de communication client/serveur. Bien que ce modèle de communication s'applique même lorsque ORACLE est exécuté dans un environnement à une seule machine (où l'application fait fonction de process frontal et le noyau ORACLE comme de process dorsal), son rôle est plus déterminant dans un environnement réseau. Dans ce type d'environnement, en effet, deux tâches, exécutées chacune sur une machine différente, communiquent par le biais des différents protocoles de communication pris en charge par SQL*Net. Une des tâches correspond au client et l'autre au serveur. Le client SQL*Net est soit le programme d'application, qui peut utiliser n'importe quelle application ORACLE, soit une application développée par l'utilisateur et faisant appel à ORACLE. Le serveur SQL*Net est le SGBDR (noyau ORACLE). Dans la terminologie SQL*Net, l'hôte désigne la machine sur laquelle réside la base de données et qui exécute le noyau ORACLE, prenant ainsi en charge le serveur. Le client est la machine sur laquelle réside l'application. Certaines machines, telles qu'un DPS 7000 ou un DPX/2, peuvent jouer à la fois le rôle de client et celui de serveur. D'autres, comme un micro-ordinateur, ne peuvent agir que comme client. Seule une machine jouant le rôle de serveur peut être un hôte. Le client peut être un système mono-utilisateur (un micro-ordinateur, par exemple), alors que le serveur doit impérativement être un système multi-utilisateur (tel qu'un DPS 7000). Le tableau ci-dessous indique les combinaisons client/serveur possibles : Tableau 2-1. Combinaisons client/serveur MACHINE micro-ordinateur mini-ordinateur gros système 2-2 CLIENT toujours oui possible SERVEUR non oui généralement 47 F2 13UR Rev00 Architecture no eud clien t applic atio n O R A C LE au tre s co uc h es lo gic ielles ré se au no eud s erv e ur SGBD O R A C LE s erv eur O R A C LE ges tionn aire S Q L*N et ges tio nnaire S Q L *N e t log ic ie l de c om m un ic atio n log ic ie l de c om m un ic atio n ligne de tra ns m is s ion Figure 2-1. Modèle de communication client/serveur SQL*Net prend en charge deux formes du modèle de communication client/serveur : la communication terminal-process et la communication tâche-tâche (décrites ci-après). 2.1.1 Communication terminal-process Avec la communication terminal-process, un process (le terminal) est censé agir comme un terminal non intelligent. Un programme exécuté sur le micro-ordinateur simule le comportement d'un terminal, afin de communiquer avec des programmes exécutés sur l'hôte distant. SQL*Net prend en charge deux protocoles de communication permettant une émulation de terminal : le protocole asynchrone et le protocole ATLANTIS. Avec l'un de ces protocoles, l'hôte distant traite le client comme un terminal non intelligent, et des messages doivent être transmis entre le client et le serveur, qui simulent chacun la communication tâche-tâche. Vous trouverez toutes les instructions relatives à l'utilisation de ces protocoles au chapitre 4. 47 F2 13UR Rev00 2-3 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 2.1.2 Communication tâche-tâche La communication tâche-tâche est identique à la communication "process-process". Les deux process coopèrent pour assurer une transmission de données fiable. Contrairement aux communications terminal-process, chacune des deux tâches reconnaît la présence d'un programme intelligent à l'autre extrémité de la connexion. Le protocole DSA pris en charge par SQL*Net permet la communication process-process. 2.2 COR ET OPEN7 COR est le gestionnaire ORACLE de communications (serveur) requis par GCOS 7 pour exécuter SQL*Net, qui ne peut fonctionner sous GCOS 7 que si COR est en cours d'exécution. SQL*Net via TCP/IP requiert également la présence du logiciel OPEN7. Le gestionnaire de communication COR doit être en cours d'exécution, afin d'autoriser des connexions SQL*Net locales et à distance (de même qu'un serveur de base de données SOR doit être en cours d'exécution pour permettre l'accès à une base de données ORACLE). Les connexions peuvent être établies à partir d'autres DPS 7000, de micro-ordinateurs ou de systèmes UNIX. COR doit en outre être en cours d'exécution sur chaque site DPS 7000, pour être exlpoité sous SQL*Net. COR génère un travail traitement par lots, qui gère toutes les connexions à distance en direction et en provenance des serveurs ou des utilisateurs ORACLE sur le site. Les opérations supplémentaires requises pour SQL*Net via TCP/IP sont détaillées dans OPEN7 - Manuel de référence de l'administrateur. 2.2.1 2.2.1.1 Activation de connexions à distance Commande COR I Pour activer des connexions à distance en provenance ou en direction de votre site, entrez la commande suivante : COR INITIALIZE (ou la commande abrégée COR I). La commande COR I doit impérativement être entrée sur chaque site concerné, avant toute tentative d'établissement d'une connexion à distance. 2.2.1.2 Protocole TCP/IP Pour activer des connexions à distance via TCP/IP, le serveur SQL*Net TCP/IP doit être lancé sous OPEN7, après COR. 2-4 47 F2 13UR Rev00 Architecture 2.2.2 2.2.2.1 Désactivation de connexions à distance Commande COR S Pour désactiver des connexions à distance en provenance ou en direction de votre site, entrez la commande suivante : COR SHUTDOWN (ou la commande abrégée COR S). Une fois la commande COR S entrée, aucun nouvel utilisateur n'a la possibilité de se connecter avec ou à partir de votre site. Le système attend toutefois que les utilisateurs déjà connectés se déconnectent. 2.2.2.2 Protocole TCP/IP Pour désactiver des connexions ORACLE à distance via TCP/IP, vous devez désactiver le serveur SQL*Net TCP/IP sous OPEN7, avant d'arrêter COR. 2.2.3 Augmentation du nombre de connexions SQL*Net Le serveur de base de données SOR standard autorise jusqu'à 11 connexions SQL*Net à distance. Si une base de données ORACLE requiert un nombre supérieur de connexions, vous devez lancer la commande SOR ADDTASKS (ou SOR A), afin d'ajouter des tâches au serveur standard. La commande SOR A permet d'augmenter le nombre de connexions possibles de 8, 16, 24 ou 32. 47 F2 13UR Rev00 2-5 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur Remarques : 1. Le gestionnaire de communications SQL*Net (commande COR I) doit être lancé avant (les commandes SOR A). Les travaux traitement par lots correspondants ne s'arrêtent qu'une fois le gestionnaire de communications SQL*Net désactivé (commande COR S). 2. Dans le cas de SQL*Net via TCP/IP, le nombre maximal de connexions ORACLE entrantes et sortantes est défini pendant l'installation et ne peut pas être modifié dynamiquement. Pour plus de détails sur la configuration de SQL*Net via TCP/IP, reportezvous à OPEN7 - Guide de l'administrateur. DPS 7000 COR SOR SOR SQL*Net BD1 BD2 COR SQL*Net SOR micro DPS 7000 BD3 Figure 2-2. Connexions SQL*Net via DSA 2-6 47 F2 13UR Rev00 Architecture D P S 7000 COR OPEN7 SOR SOR BD1 BD2 T C P /IP 7 S Q L*N et LA N E thern et m icro TC P /IP S Q L*N et O R A C LE systèm e D P X ou U N IX BD3 Figure 2-3. Connexions SQL*Net via TCP/IP 47 F2 13UR Rev00 2-7 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 2.3 PROTOCOLE DE COMMUNICATION Le logiciel SQL*Net est conçu pour être facilement transféré sur différents hôtes. SQL*Net ne requiert en fait que cinq primitives de deuxième niveau, fournies par le protocole de communication avec lequel il coopère. Pour prendre en charge SQL*Net, le protocole de communication sous-jacent doit fournir des primitives capables d'exécuter les fonctions suivantes : • connexion au système distant, • déconnexion du système distant, • envoi d'un message, • réception d'un message, • interruption de la connexion. 2.4 SPECIFICATION D'UNE BASE DE DONNEES DISTANTE Cette section explique comment spécifier une base de données distante sous SQL*Net. Pour en savoir plus sur la spécification d'une base de données distante à partir d'un micro-ordinateur sous MS-DOS, reportez-vous au chapitre 4. Veuillez noter que les valeurs par défaut associées à la base de données distante sont définies pendant l'installation. Pour plus de détails, consultez ORACLE-V7 - Guide d'installation. Pour indiquer la base de données locale ou distante avec laquelle vous souhaitez interagir, vous devez spécifier son nom au moment de la connexion, que vous recouriez à une application utilisateur ou à une application ORACLE (telle que SQL*Plus). Les procédures requises, qui dépendent du programme ou des interfaces impliqués, sont expliquées dans la documentation accompagnant chaque programme ou interface. Dans la plupart des cas, la spécification d'une base de données peut être ajoutée à la chaîne utilisateur/mot de passe, en utilisant le symbole "@" comme séparateur. Voici un exemple de nom de connexion valide : scott/tiger@D:ORA Certains programmes permettent d'entrer le mot de passe séparément. Il est alors possible de l'omettre du nom de connexion : scott@D:ORA 2-8 47 F2 13UR Rev00 Architecture La syntaxe complète est la suivante : [nom-utilisateur [/ mot-de-passe] [@spécification-base] ] La spécification d'une base de données inclut les informations requises pour indiquer à SQL*Net la base exacte à utiliser lors de l'échange. Son format dépend en grande partie du protocole de communication à utiliser ; elle peut inclure des informations de routage et d'authentification, ainsi que le nom du noeud sur lequel réside la base de données. 2.4.1 Spécification de base de données Une partie de la spécification est indépendante du protocole : il s'agit du préfixe du gestionnaire, qui détermine le logiciel de protocole (gestionnaire) à utiliser. Une spécification de base de données peut donc être affinée plus avant et donner la syntaxe suivante : [préfixe-gestionnaire : ] [id-base] Un préfixe de gestionnaire distinct est attribué à chaque protocole susceptible d'être utilisé par des applications sur le système spécifié. L'ensemble des protocoles installés (et, par conséquent, l'ensemble des préfixes autorisés) est défini lors de l'installation d'ORACLE. Le tableau ci-après répertorie les préfixes admis par SQL*Net : Tableau 2-2. Préfixes de gestionnaire SQL*Net Préfixe A: Spécification du protocole asynchrone. B: Spécification des protocoles MS-DOS Bull. D: Connexion à un système distant, via le protocole DSA (le système distant est spécifié dans l'ID de la base de données). Les connexions multiples simultanées, même à un seul hôte, sont autorisées. S: Connexion au système local, via des appels de procédure directs dans une tâche unique (l'ID de la base de données est ignoré). Un programme ne peut être associé qu'à une seule connexion directe active à la fois. T: Spécification du protocole TCP/IP. Aucun préfixe par défaut n'est défini. L'ID de la base de données, qui désigne le système distant et la base de données ORACLE, respecte la syntaxe suivante : [ <hôte-distant> : ] <id-serveur> <hôte-distant> désigne le système hôte distant sur lequel réside la base de données ORACLE distante. En cas d'omission, une connexion locale est établie. 47 F2 13UR Rev00 2-9 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur Sur un réseau DSA (préfixe D:), <hôte-distant> représente le noeud DSA du système distant et est précédé du préfixe $. Avec le protocole TCP/IP (préfixe T:), <hôte-distant> spécifie le nom Internet du système distant. Pour plus de détails sur le protocole MS-DOS Bull, reportez-vous au chapitre 4. <id-serveur> identifie la base de données ORACLE distante. Dans le cas d'un DPS 7000, <id-serveur> désigne le répertoire sous lequel le serveur ORACLE est exécuté. Exemples : 2.4.2 D:ORA Connexion locale à la base de données ORA. D:$ARES:DB Connexion à distance à la base de données DB sur le mode DSA ARES. T:DPX231:ORA Connexion à distance à la base de données ORA sur le système dont l'identification Internet est DPX231. Fonction de connexion automatique Cette sous-section fournit des informations applicables uniquement aux protocoles terminal-hôte, tels que le protocole asynchrone. Pour que le client et le serveur puissent communiquer, le client doit effectuer une demande de connexion avec l'hôte. Pour faciliter ce processus, les protocoles terminalprocess pris en charge par SQL*Net (protocoles asynchrone et ATLANTIS) offrent une fonction de connexion automatique, qui permet d'entrer automatiquement en communication avec l'hôte distant, chaque fois qu'une demande de connexion est effectuée par le système client. Pour ce faire, cette fonction entre automatiquement en communication avec le système d'exploitation distant et ordonne à l'interpréteur de ligne de commande de lancer le process serveur. La connexion automatique évite donc à un utilisateur de se connecter manuellement à l'hôte distant via un émulateur de terminal. La fonction de connexion automatique utilise le dialogue appartenant à un groupe de "fichiers prise de contact" pour établir une connexion avec l'hôte distant. Ces fichiers, créés par l'utilisateur, contiennent une représentation de la "conversation" qui aurait normalement lieu entre l'utilisateur sur le terminal et l'hôte distant. Ils consistent essentiellement en une série de messages du type "effectuez telle action, vous recevez telle réponse", le remplacement des noms d'utilisateur, des mots de passe, etc., étant assuré par un système de paramètres. Pour activer la fonction de connexion automatique, il suffit, une fois les fichiers prise de contact créés, d'inclure le préfixe associé dans la chaîne de spécification de base de données. Pour plus de détails, reportez-vous au chapitre 4. 2-10 47 F2 13UR Rev00 Architecture 2.5 RESTRICTIONS SQL*NET Cette section souligne certaines restrictions à l'utilisation de SQL*Net. • Bien qu'une application puisse accéder à plusieurs noeuds d'un réseau, une transaction ou une unité de travail ne peut affecter qu'un seul noeud. Par exemple, une commande SQL ne peut faire référence qu'à une seule base de données. Cependant, la fonction de requêtes distribuées fournie par le noyau ORACLE permet à une seule commande SQL d'accéder à des données sur plusieurs noeuds. • Les transactions distribuées ne sont pas prises en charge ; il est possible d'effectuer des mises à jour multi-site, mais chacune fait l'objet d'une validation ou d'une restauration non actualisée indépendante. • C'est aux utilisateurs de diriger une commande SQL vers le noeud contenant les données voulues : il n'existe pas de fonction de routage des requêtes. 2.6 EXPLOITATION D'AUTRES UTILITAIRES ORACLE AVEC SQL*NET L'utilisation de SQL*Net avec SQL*Plus, ainsi qu'avec les interfaces de programmation ORACLE, est présentée dans le chapitre 3. Les utilitaires ORACLE répertoriés ci-après peuvent également être utilisés avec SQL*Net : • SQL*Calc • SQL*Forms • IMPORT • EXPORT • SQL*Loader Si vous souhaitez exploiter l'un de ces utilitaires avec SQL*Net, insérez la clause de base de données distante @ au moment de la connexion. Exemple : Pour vous connecter à une base de données distante à partir de SQL*Plus, entrez cette commande : SQLPLUS nom-utilisateur/mot-de-passe@D:id-base 47 F2 13UR Rev00 2-11 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 2-12 47 F2 13UR Rev00 3. Exploitation de bases de données Ce chapitre fournit les instructions permettant de se connecter à une base de données distante, et décrit l'utilisation des fonctions SQL*Net avec SQL*Plus et avec les interfaces de programmation ORACLE. 3.1 UTILISATION DE SQL*PLUS AVEC SQL*NET Les paragraphes ci-après présentent la fonction de requêtes distribuées et expliquent comment utiliser SQL*Plus avec SQL*Net. Pour plus de détails, reportez-vous à la documentation relative à SQL*Plus. 3.1.1 Requêtes distribuées ORACLE-V5.1 offre la fonction de requêtes distribuées. Une requête distribuée est une requête dans laquelle plusieurs ou toutes les tables interrogées sont situées dans une base de données autre que celle à laquelle vous êtes connecté. Une seule requête peut ainsi regrouper des données dispersées sur plusieurs bases de données. Remarque : Cette fonctionnalité s'applique aux requêtes uniquement ; les instructions DML, telles que INSERT, UPDATE et DELETE, ne peuvent pas faire l'objet d'une exécution simultanée sur plusieurs bases de données concurrentes. Elles peuvent néanmoins être exécutées sur une base de données distante par le biais des fonctions SQL*Net. Les commandes CREATE DATABASE LINK et DROP DATABASE LINK permettent respectivement de générer et de supprimer des liaisons avec des bases de données distantes. Leur utilisation sous SQL*Net, ainsi que celle de toutes les autres commandes SQL*Plus, est décrite plus avant dans ce chapitre. Les restrictions à l'utilisation des requêtes distribuées sont détaillées à la fin de ce chapitre. 47 F2 13UR Rev00 3-1 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 3.1.2 Connexion à SQL*Plus sous SQL*Net à partir d'un DPS 7000 Pour vous connecter à SQL*Plus, entrez la commande suivante : SQLPLUS nom-utilisateur/mot-de-passe@D:spécification-base La spécification d'une base de données est décrite au chapitre 2. Exemples : SQLPLUS SCOTT/TIGER@D:$ARE2:ORA (connexion à la base de données ORA sur le site DSA ARE2) SQLPLUS SCOTT/TIGER@D: (connexion à la base de données locale par défaut) SQLPLUS SCOTT/TIGER@D:ORACLE (connexion à la base de données ORACLE sur le site local) SQLPLUS SCOTT/TIGER@T:DPX340:W (connexion à la base de données W sur l'hôte Internet DPX340, via le protocole TCP/IP) 3.1.3 Commande CONNECT La commande CONNECT vous permet de vous connecter à une base de données distante (sous le même nom ou sous celui de votre choix). Tant que vous n'avez pas lancé cette commande, vous restez connecté à la base de données spécifiée lors de l'entrée en communication avec le système. La commande CONNECT doit respecter la syntaxe suivante : CONNECT nom-utilisateur[/mot-de-passe[@spécification-base] ] où : nom-utilisateur est un nom d'utilisateur ORACLE valide ; mot-de-passe est le mot de passe associé au nom d'utilisateur spécifié ; @spécification-base est une spécification de base de données valide. Exemples : CONNECT SCOTT/TIGER@D:NEWYORK-MKT CONNECT SYSTEM/MANAGER@T:DPX230:OR 3-2 47 F2 13UR Rev00 Exploitation de bases de données 3.1.4 Commande COPY La commande COPY permet de copier des données d'une table appartenant à une base de données SQL*Net vers une table d'une autre base de données SQL*Net. Elle exécute arbitrairement la commande SQL SELECT sur un noeud et insère les lignes extraites dans une table sur l'autre noeud. Vous n'êtes pas tenu d'être connecté directement à chacune de ces bases de données. En résumé, la commande COPY permet les opérations suivantes : • copie de données de la base de données locale vers une base distante, • copie de données d'une base de données distante vers la base locale, • copie de données d'une table appartenant à une base de données distante vers une autre table de cette même base, • copie de données d'une table appartenant à une base de données distante vers une table d'une autre base distante. La table destinataire peut être existante, nouvelle, ou peut être supprimée et recréée (remplacée), avant l'insertion des données. Veuillez noter que, COPY étant une commande SQL*Plus, elle ne passe pas automatiquement de ligne en ligne. (Seules les commandes SQL sont stockées dans le tampon de commandes.) Vous devez faire appel à la fonction SQL*Plus, qui vous permet d'entrer la suite de la commande en insérant un tiret (-). La commande COPY doit respecter la syntaxe suivante : {FROM <chaîne-base> [TO <chaîne-base>]} COPY { {TO <chaîne-base> } {APPEND } { } {CREATE } { } {INSERT } { } {REPLACE} } <nom-table> [(<liste-noms-colonne>)] USING SELECT <requête> 47 F2 13UR Rev00 3-3 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur Paramètres FROM spécifie le nom d'utilisateur, le mot de passe et la base de données dans laquelle est stockée la table origine. "chaînebase" est une chaîne ORACLE valide composée du nom d'utilisateur et du mot de passe associé, suivie du symbole @ et d'un nom de base de données SQL*Net valide, comme expliqué précédemment. − En cas d'omission de FROM, la base de données origine est, par défaut, celle à laquelle SQL*Plus est actuellement connecté. Si la connexion SQL*Plus est inactive, une erreur est alors renvoyée. TO spécifie le nom d'utilisateur, le mot de passe et la base de données dans laquelle est stockée la table destinataire. "chaîne-base" est une chaîne ORACLE valide composée du nom d'utilisateur et du mot de passe associé, suivie du symbole @ et d'un nom de base de données SQL*Net valide, comme expliqué précédemment. − En cas d'omission de TO, la base de données destinataire est, par défaut, celle à laquelle SQL*Plus est actuellement connecté. Si la connexion SQL*Plus est inactive, une erreur est alors renvoyée. Remarque : 3-4 La base de données origine ne pouvant pas être la même que la base destinataire, il est interdit d'omettre en même temps les deux clauses FROM et TO. APPEND indique que les données doivent être ajoutées à la table. Si la table n'existe pas, elle est créée avant insertion des lignes copiées. Dans le cas contraire, les lignes copiées sont insérées dans la table existante. CREATE indique que la table doit être créée, avant insertion des lignes copiées. Si la table existe déjà, une erreur est renvoyée. INSERT précise que les données doivent être enregistrées dans une table existante. Si la table n'existe pas, une erreur est renvoyée. REPLACE signale que les données doivent remplacer (écraser) celles de la table existante. Si la table n'existe pas, elle est créée avant insertion des lignes copiées. nom-table spécifie une table destinataire nouvelle ou existante (en fonction de l'option choisie ; voir ci-dessus). Tout nom de table SQL valide (y compris les noms cités ou qualifiés) est admis. liste-noms-colonne spécifie les noms de colonne de la table destinataire. Tout nom de colonne SQL valide (y compris les noms cités) est admis. Les noms de la liste doivent être séparés par une virgule. − Le nombre de colonnes indiqué doit être égal au nombre de colonnes sélectionnées via la requête (voir plus loin). − En l'absence de spécification, les colonnes copiées auront le même intitulé dans la table destinataire que dans la table origine. 47 F2 13UR Rev00 Exploitation de bases de données USING 3.1.4.1 spécifie la table origine et détermine les lignes et les colonnes à copier. − La clause USING contient la commande SQL SELECT, exécutée sur le noeud origine, et insère les lignes détectées dans une table sur le noeud destinataire. − La commande SELECT n'est exécutée qu'à l'emplacement spécifié par la clause FROM et ne peut pas faire référence à des données provenant de plusieurs bases de données. − Si aucune liste de noms de colonne n'a été spécifiée dans l'option choisie, les noms de colonne de la table destinataire sont extraits de la liste SELECT. − Les colonnes spécifiées dans la liste SELECT doivent concorder une à une avec celles de la table destinataire. − Pour plus de détails sur la syntaxe de la commande SELECT, reportez-vous à la documentation relative à SQL*Plus. Notification d'erreurs Des erreurs peuvent être détectées par le noyau ORACLE, la commande COPY ou SQL*Plus. Les messages d'erreur standard émanant du noyau ORACLE ont pour préfixe "ORA". Les messages d'erreur émis par la commande COPY, répertoriés à la fin de cette section, ont pour préfixe "CPY". Enfin, les messages d'erreur détectés par SQL*Plus ne sont dotés d'aucun préfixe. Si un utilisateur entre une clause SELECT non valide, le segment faisant l'objet d'une erreur est affiché dans son contexte d'origine, et le caractère correspondant au décalage d'erreur d'analyse est marqué d'un astérisque. Le noyau détecte généralement les erreurs dans les instructions SQL générées par la commande COPY. COPY détecte les erreurs dans les arguments qu'elle reçoit via l'interface de programmation et SQL*Plus les erreurs de syntaxe de la commande COPY. Les messages d'erreur dotés du préfixe "CPY" peuvent être renvoyés par la commande COPY via SQL*Plus. Voici la liste des erreurs associées à COPY, ainsi que les causes possibles et les interventions recommandées. 47 F2 13UR Rev00 3-5 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur CPY0002 Illegal or missing APPEND, CREATE, INSERT, or REPLACE option (Option APPEND, CREATE, INSERT ou REPLACE non valide ou manquante) Cause : Erreur interne anormale : valeur de paramètre hors de la plage admise. SQL*Plus a appelé COPY en attribuant à l'option CREATE une valeur n'appartenant pas à la plage des valeurs admises. Intervention : erreur interne SQL*Plus : veuillez contacter le service client. CPY0003 Internal error: logical host number out of range (Erreur interne : numéro d'hôte logique hors des valeurs admises) Cause : Erreur interne anormale : valeur de paramètre hors de la plage admise. Une fonction COPY interne a été appelée avec un numéro d'hôte logique n'appartenant pas à la page des valeurs admises. Intervention : Erreur interne à COPY : veuillez contacter le service client. CPY0004 Source and destination table column names don't match (Les noms de colonne des tables origine et destinataire ne concordent pas) Cause : Erreur utilisateur SQL*Plus. Lors d'une opération APPEND ou INSERT (si la table existe), au moins un nom de colonne de la table destinataire ne concordait pas avec celui de la liste de noms de colonne facultative ou de la commande SELECT. Intervention : Relancez la commande COPY, en vous assurant que les noms de colonne et leur ordre dans la table destinataire sont identiques à ceux de la liste de noms de colonne facultative ou de la commande SELECT. CPY0005 Source and destination column attributes don't match (Les attributs des colonnes des tables origine et destinataire ne concordent pas) 3-6 Cause : Erreur utilisateur SQL*Plus. Lors d'une opération APPEND ou INSERT (si la table existe), au moins une colonne de la table destinataire n'est pas associée au même type de données (NUMBER, CHAR, DATE, etc.) que la colonne correspondante dans la commande SELECT. Intervention : Relancez la commande la commande COPY, en vous assurant que les types de données des éléments sélectionnés concordent avec ceux de la table destinataire. Vous pouvez, s'il y a lieu, faire appel aux fonctions TO_DATE, TO_CHAR et TO_NUMBER pour effectuer des conversions. 47 F2 13UR Rev00 Exploitation de bases de données CPY0006 Select list has more columns than destination table (Le nombre de colonnes répertoriées dans la liste de la commande SELECT est supérieur à celui de la table destinataire) Cause : Erreur utilisateur SQL*Plus. Lors d'une opération APPEND ou INSERT (si la table existe), le nombre de colonnes dans la commande SELECT est supérieur au nombre de colonnes dans la table destinataire. Intervention : Relancez la commande COPY, en vous assurant que le nombre de colonnes sélectionnées concorde avec celui de la table destinataire. CPY0007 Select list has fewer columns than destination table (Le nombre de colonnes répertoriées dans la liste de la commande SELECT est inférieur à celui de la table destinataire) Cause : Erreur utilisateur SQL*Plus. Lors d'une opération APPEND ou INSERT (si la table existe), le nombre de colonnes dans la commande SELECT est inférieur à celui de la table destinataire. Intervention : Relancez la commande COPY, en vous assurant que le nombre de colonnes sélectionnées concorde avec celui de la table destinataire. CPY0008 More column list names than columns in destination table (Le nombre de colonnes dans la liste des noms de colonne est supérieur à celui de la table destinataire) Cause : Erreur utilisateur SQL*Plus. Lors d'une opération APPEND ou INSERT (si la table existe), le nombre de colonnes dans la liste des noms de colonne est supérieur à celui de la table destinataire. Intervention : Relancez la commande COPY, en vous assurant que le nombre de colonnes répertoriées dans la liste des noms de colonne concorde avec celui de la table destinataire. CPY0009 Fewer column list names than columns in destination table (Le nombre de colonnes dans la liste des noms de colonne est inférieur à celui de la table destinataire) Cause : Erreur utilisateur SQL*Plus. Lors d'une opération APPEND ou INSERT (si la table existe), le nombre de colonnes dans la liste des noms de colonne est inférieur à celui de la table destinataire. Intervention : Relancez la commande COPY, en vous assurant que le nombre de colonnes répertoriées dans la liste des noms de colonne concorde avec celui de la table destinataire. 47 F2 13UR Rev00 3-7 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 3.1.4.2 Exemples Les exemples ci-après illustrent les différentes utilisations possibles de la commande COPY. COPY FROM joe/blow@d:BOSTON-mkt TO scott/tiger@d:BOSTON-mfg CREATE managers USING SELECT ENAME,JOB,SAL FROM EMP WHERE JOB IN ('MANAGER', 'PRESIDENT') COPY FROM moe/joe@d:NEWYORK-mkt TO scott/tiger@CHICAGO-mkt REPLACE dept (department, name, location, empcount) USING SELECT EMP.DEPTNO, DNAME, LOC, COUNT(*) FROM EMP,DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO GROUP BY EMP.DEPTNO, DNAME, LOC COPY FROM scott/tiger@d:DENVER-qa CREATE Mr_King USING SELECT * FROM EMP WHERE ENAME = 'KING' COPY TO scott/tiger@d:DEVVMS INSERT tablelist ("Table Name", creator) USING SELECT TNAME, CREATOR FROM SYSCATALOG COPY FROM scott/tiger@d:ERNIE-sys8 TO system/manager@d:BERT-qa REPLACE "Monthly Wages Paid" (total) USING SELECT SUM(SAL)+SUM(NVL(COMM,0)) FROM EMP COPY FROM JOE/FOO@D:GREEN-x TO SCOTT/TIGER@D:YELLOW-y APPEND EMP USING SELECT * FROM EMP COPY FROM scott/tiger@T:DPX2:W CREATE MYTAB USING SELECT * FROM HISTAB 3.1.4.3 Substitution de macro Les opérateurs de substitution de macro SQL*Plus "&&" et "&" peuvent être utilisés au sein de la commande COPY, tant que les éléments faisant l'objet de la substitution forment une commande syntaxiquement correcte. Veuillez noter que le caractère suite SQL*Plus "-" est accepté. Par exemple, la session interactive ci-après copie tous les noms d'employés de EMP vers NEWEMP sur "SCOTT/TIGER@D:ORA" : SQL> COPY FROM &&s TO &s > CREATE &t - 3-8 47 F2 13UR Rev00 Exploitation de bases de données > USING &sel Enter value for s: SCOTT/TIGER@D:ORA Enter value for t: NEWEMP Enter value for sel: SELECT ENAME FROM EMP 3.1.4.4 Impact sur les transactions ouvertes sous SQL*Plus La commande COPY consolide toujours les lignes insérées dans la table destinataire, ainsi que toute transaction qui n'a pas été fermée (c'est-à-dire qui a fait l'objet d'une validation ou d'une restauration non actualisée) sous SQL*Plus avant que cette même commande ne soit appelée, si la table destinataire dépend de la connexion par défaut SQL*Plus (c'est-à-dire si la clause "FROM" ou "TO" est omise). 3.1.4.5 Paramètres internes La commande COPY dispose de paramètres permettant de spécifier la taille des appels de tableau, la taille des tampons associés aux colonnes de type LONG et la fréquence des consolidations, dont les valeurs sont définies par trois options de la commande SQL*Plus "SET" : ARRAYSIZE, LONG et COPYCOMMIT respectivement. Ces options peuvent être attribuées et analysées par les commandes SQL*Plus SET et SHOW. ARRAYSIZE (1-5 000 ; valeur par défaut : 20). Contrôle la taille du tableau utilisé pour l'extraction des lignes. La valeur d'ARRAYSIZE correspond au nombre de lignes pouvant être appelées simultanément par une seule requête transmise au noyau ORACLE. Cette valeur est utilisée aussi bien par la commande COPY que par d'autres commandes SQL*Plus. La commande COPY gère sa mémoire indépendamment de SQL*Plus ; la valeur d'ARRAYSIZE peut donc être trop élevée pour le paramètre MAXDATA initialement affecté par SQL*Plus, mais parfaitement exploitable par la commande COPY. LONG (1-32767 ; valeur par défaut : 80). Détermine la longueur maximale d'une colonne de type LONG qui peut être extraite d'une table. Cette valeur est utilisée aussi bien par la commande COPY que par d'autres commandes SQL*Plus. COPYCOMMIT (0-5000 ; valeur par défaut : 0). Détermine la fréquence des consolidations de la table destinataire. Une valeur n différente de zéro indique au système d'effectuer une consolidation après chaque insertion de n groupes de lignes, la taille de groupe étant définie par ARRAYSIZE, et après l'insertion de la ligne. Si COPYCOMMIT=0, la consolidation n'a lieu qu'une fois toutes les lignes insérées. − Par exemple, si ARRAYSIZE=50 et COPYCOMMIT=4, la consolidation aura lieu après chaque insertion de 200 lignes, c'est-à-dire après les lignes 200, 400, 600, etc., et après la dernière ligne. 47 F2 13UR Rev00 3-9 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 3.1.5 Liaisons de base de données Le lancement de SQL*Plus entraîne généralement sa connexion à une base de données ORACLE sur l'ordinateur hôte. Dans la terminologie SQL*Net, cette base est appelée base de données locale. Si vous utilisez une base de données sur un autre ordinateur via SQL*Net, celle-ci est considérée comme la base de données distante. Pour utiliser une table dans une base de données distante, SQL*Plus doit savoir : • quelle base de données vous souhaitez utiliser, et • à quelles tables utilisateur vous souhaitez accéder dans cette base de données. Il vous suffit, pour ce faire, de créer une liaison de base de données. Une liaison de base de données est un objet désigné, stocké dans la base de données locale. Chaque liaison identifie les éléments suivants : • une base de données distante, • un nom d'utilisateur pour la base de données distante, • le mot de passe associé au nom d'utilisateur. Une base distante est identifiable par sa spécification de base de données, décrite au chapitre 2. Une fois créée une liaison de base de données, vous pouvez l'utiliser pour consulter des tables dans une base distante (selon les mêmes modalités que sur la base locale). Une liaison de base de données peut être accessible : • à un seul utilisateur (liaison de base de données privée), • à tous les utilisateurs (liaison de base de données publique). Deux commandes SQL permettent de créer et de supprimer les liaisons de base de données : • CREATE DATABASE LINK (création d'une liaison), • DROP DATABASE LINK (suppression d'une liaison). 3-10 47 F2 13UR Rev00 Exploitation de bases de données 3.1.5.1 Commande CREATE DATABASE LINK La commande CREATE DATABASE LINK permet de créer une liaison (ou chemin) entre une base de données locale et un nom d'utilisateur sur une base de données distante. La liaison, stockée dans la base de données locale, est accessible soit à un utilisateur, soit à tous les utilisateurs (base de données publique). Une fois établie une liaison de base de données, vous pouvez consulter une table sur la base de données distante associée, en spécifiant la liaison correspondante dans la clause FROM d'une requête ou d'une sous-requête. Cette requête ou sous-requête agit comme si vous étiez un utilisateur valide connecté directement à la base de données distante. Syntaxe CREATE [ PUBLIC ] DATABASE LINK <nom-liaison> CONNECT TO <nom-utilisateur> IDENTIFIED BY <mot-de-passe> USING '<chaîne-connexion-SQL*Net>' Paramètres PUBLIC si PUBLIC est spécifié, la liaison est disponible pour tous les utilisateurs (excepté ceux qui ont créé une liaison de base de données privée dotée du même nom). Seuls les administrateurs de base de données peuvent utiliser cette option. − Sinon, la liaison n'est accessible qu'à la personne l'ayant créée, représentée par la combinaison du nom d'utilisateur et du mot de passe associés. Elle est parfois appelée liaison privée. nom-liaison nom identifiant la liaison, utilisé pour qualifier les noms d'objet dans les requêtes, de sorte que SQL*Plus sait automatiquement à quelle base de données distante vous souhaitez accéder. nom-utilisateur nom d'utilisateur ORACLE utilisé pour se connecter à la base de données distante. Ce nom, qui doit être valide sur la base distante spécifiée, peut être différent du nom d'utilisateur associé à la base de données locale. mot-de-passe mot de passe correspondant au nom d'utilisateur ORACLE sur la base de données distante. 47 F2 13UR Rev00 3-11 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur chaîne-connexion-SQL*Net • Il s'agit de la chaîne qui spécifie le préfixe de gestionnaire, le noeud et le nom de base de données avec lesquels doit se faire la connexion. • Cette chaîne doit figurer entre apostrophes ('). • La syntaxe correspond à celle de la spécification de base de données décrite au chapitre 2. Remarque : Il est recommandé, lors de la création de liaisons de base de données de type PUBLIC, de spécifier un nom d'utilisateur standard destiné uniquement à établir une liaison avec la base de données distante (reportez-vous au deuxième exemple, page suivante). Un nom de ce type n'est pas censé "détenir" de tables sur la base distante. Les propriétaires de tables sur la base de données distante peuvent ainsi décider de leur accessibilité, en attribuant les droits d'accès appropriés (reportez-vous à la commande GRANT dans la documentation relative à SQL*Plus). Les tables pour lesquelles aucun droit d'accès n'aura été attribué au nom d'utilisateur standard ne seront pas accessibles, ce qui garantit un niveau de sécurité élevé. Les requêtes et les sous-requêtes exécutées via les liaisons de base de données sont soumises à certaines restrictions : • Le nombre de liaisons de base de données exploitables dans une seule commande est normalement limité à quatre, mais peut être modifié par l'administrateur de base de données (reportez-vous au paramètre OPEN_LINKS dans Guide de l'administrateur de base de données). • Les colonnes longues ne peuvent pas faire l'objet d'une sélection par une requête via une liaison de base de données. • Dans les requêtes à structure arborescente (utilisation de la clause CONNECT BY) : 3-12 − l'opérateur PRIOR ne peut pas être utilisé dans les clauses autres que CONNECT BY, − la clause START WITH ne peut pas contenir de sous-requêtes, − la clause CONNECT BY et la clause START WITH ne peuvent inclure ni la fonction USERENV('ENTRYID'), ni des fonctions utilisateurs, ni ROWNUM. 47 F2 13UR Rev00 Exploitation de bases de données Exemples : SQL> CREATE DATABASE LINK BOSTON 2 CONNECT TO SCOTT 3 IDENTIFIED BY TIGER USING 'D:ORA'; L'exemple ci-dessus illustre la création d'une liaison de base de données privée, appelée BOSTON. Cette base relie l'utilisateur SCOTT, disposant du mot de passe TIGER, à une base de données identifiée par la spécification D:ORA. D: désigne le préfixe du gestionnaire de communication (voir le chapitre 2), et ORA la base de données ORACLE. Aucun noeud n'étant spécifié, cette base est située sur le site local. SQL> CREATE PUBLIC DATABASE LINK KINGSTON 2 CONNECT TO NETWORK 3 IDENTIFIED BY NETPASS 4 USING 'D:$ARE2:ORACLE'; Cet exemple présente la création d'une liaison de base de données publique, appelée KINGSTON. Cette base relie l'utilisateur NETWORK, disposant du mot de passe NETPASS, à la base ORACLE sur le site DSA ARE2. Le nom d'utilisateur standard NETWORK a été défini, comme décrit page précédente, pour des liaisons publiques. Il ne possède aucune table dans la base de données KINGSTON ; mais les propriétaires de tables de cette même base peuvent décider des tables qui sont accessibles aux utilisateurs identifiés par la combinaison NETWORK/NETPASS. Ils ont également la possibilité d'interdire l'accès par des utilisateurs distants à des tables contenant des informations confidentielles. SQL> CREATE DATABASE LINK SLOUGH 2> CONNECT TO JOHN 3> IDENTIFIED BY JNS 4> USING 'B:SYN7:\ORACLE5\NET\LOG7:PASC.ORA51'; Cet exemple indique comment créer une liaison entre un micro-ordinateur et un DPS 7000 via le protocole B: de Bull. Pour transmettre des valeurs de paramètre (SMITH et SMT, par exemple) avec la connexion, vous pouvez remplacer la ligne 4> ci-dessus par la ligne suivante : 4> USING 'B:SYN7:\ORACLE5\NET\LOG7B,SMITH,SMT:PASC.ORA51'; Pour accéder à la table EMP via la liaison SLOUGH, entrez : SQL> SELECT * FROM EMP@SLOUGH; 47 F2 13UR Rev00 3-13 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 3.1.5.2 Commande DROP DATABASE LINK La commande DROP DATABASE LINK permet de supprimer une liaison de base de données existante et de valider toute modification en attente apportée à la base de données distante. Syntaxe DROP [PUBLIC] DATABASE LINK <nom-liaison> Paramètres PUBLIC si la liaison est publique, l'option PUBLIC doit être spécifiée. Seuls les administrateurs de base de données peuvent utiliser l'option PUBLIC. Si la liaison est privée, l'option PUBLIC est omise. nom-liaison nom identifiant la liaison. Exemples : SQL> DROP DATABASE LINK BOSTON; La commande ci-dessus permet de supprimer une liaison de base de données privée appelée BOSTON. SQL> DROP PUBLIC DATABASE LINK KINGSTON; Cette commande permet de supprimer une liaison de base de données publique appelée KINGSTON. 3.1.6 Consultation de tables distantes Une fois que vous avez créé une liaison de base de données privée (ou que vous connaissez le nom d'une liaison de base de données publique valide), vous pouvez utiliser la liaison en question pour lancer des requêtes sur des tables distantes. @nom-liaison spécifie la liaison. Si une liaison est entrée sans id-utilisateur, la requête recherche une table appartenant à l'utilisateur spécifié dans la définition de la liaison de base de données (clause CONNECT TO de la commande CREATE DATABASE LINK). Vous pouvez également consulter des tables appartenant à d'autres utilisateurs (à condition qu'ils aient accordé des droits d'accès SELECT au nom d'utilisateur spécifié dans la liaison de base de données - reportez-vous à la commande GRANT dans la documentation relative à SQL*Plus). 3-14 47 F2 13UR Rev00 Exploitation de bases de données Exemples : SQL> SELECT 2 FROM EMPNO, ENAME, DEPTNO EMP@BOSTON; L'exemple ci-dessus permet d'exécuter une requête simple sur la table EMP, dont le propriétaire est l'utilisateur spécifié dans la liaison BOSTON. La clause FROM spécifie la table EMP au niveau de (@) la liaison de base de données BOSTON. Vous pouvez utiliser une liaison de base de données dans la clause FROM de pratiquement n'importe quelle requête. L'exemple ci-dessous illustre l'exécution d'une requête permettant de relier la table EMP de votre propre base de données à la table DEPT dépendant de la liaison de base de données BOSTON : SQL> SELECT 2 FROM 3 WHERE 4 AND 5 ORDER DEPT.DEPTNO, DNAME, LOC, ENAME, JOB EMP, DEPT@BOSTON EMP.DEPTNO = DEPT.DEPTNO EMP.DEPTNO IN (30,40) BY EMP.DEPTNO; L'exemple ci-après indique comment consulter une table sur une base de données distante, appartenant à l'utilisateur ADAMS : SQL> SELECT* 2 FROM ADAMS.EMP@BOSTON; La requête sélectionne toutes les lignes de la table EMP, appartenant à l'utilisateur ADAMS, sur la liaison de base de données BOSTON. 3.1.7 Création de synonymes pour tables distantes Vous avez la possibilité de créer des synonymes pour des tables ou des vues distantes, que vous spécifiez à la place de la liaison de base de données, lors de l'accès à la table ou à la vue. Exemple : SQL> CREATE SYNONYM BOSTON_EMP 2 FOR EMP@BOSTON; Dans cet exemple, un synonyme est défini pour la table EMP sur la liaison BOSTON. Vous pouvez à présent exécuter une requête sur la table EMP en spécifiant BOSTON_EMP dans la clause FROM. 47 F2 13UR Rev00 3-15 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 3.1.8 Création de vues pour tables distantes Vous pouvez créer des vues pour faire référence à des tables distantes. Exemple : SQL> CREATE VIEW BOSTON_VIEW 2 AS SELECT * 3 FROM EMP@BOSTON; Cet exemple illustre la définition d'une vue pour la table EMP sur la liaison BOSTON. Vous pouvez à présent exécuter une requête sur la table EMP en spécifiant BOSTON_VIEW dans la clause FROM. 3.1.9 Suppression d'une table distante Vous pouvez supprimer des informations d'une base de données distante via la commande DELETE. Vous devez impérativement être connecté à la base de données distante. Exemple : SQL> CONNECT SCOTT/TIGER@D:BOSTON SQL> DELETE 2 FROM EMP 3 WHERE DEPTNO = 50; Cet exemple permet de supprimer toutes les lignes de la table EMP sur la liaison D:BOSTON (l'attribut DEPTNO ayant pour valeur 50). 3.1.10 Insertion dans une table distante Vous pouvez insérer des informations dans une table distante via la commande INSERT, mais vous devez impérativement être connecté à la base de données distante. 3-16 47 F2 13UR Rev00 Exploitation de bases de données Exemples : Le premier exemple permet d'insérer une nouvelle ligne dans la table EMP sur la liaison D:BOSTON. SQL> CONNECT SCOTT/TIGER@D:BOSTON SQL> INSERT INTO EMP 2 (EMPNO, ENAME, JOB, SAL, COMM, DEPTNO) 3 VALUES (7890, 'CAIRNS', 'CLERK', 1000, 4 NULL, 40); L'exemple ci-dessous permet d'insérer une ou plusieurs lignes dans la table BONUS (sur la liaison BOSTON), selon le nombre de lignes valides sélectionnées dans la table EMP sur la liaison KINGSTON. SQL> INSERT INTO 2 SELECT 3 FROM 4 WHERE 5 OR 3.1.11 BONUS ENAME, JOB, SAL, COMM EMP@KINGSTON COMM > .25 * SAL JOB IN ('PRESIDENT', 'MANAGER'); Copie d'un noeud distant vers un noeud local Vous pouvez copier des données d'un noeud distant vers un noeud local, en utilisant la syntaxe suivante : SQL> INSERT INTO table_here 2 SELECT * FROM table_there@dblink 3.1.12 Restrictions sur les noms d'objet de base de données L'utilisation du symbole @ pour les noms d'objets de base de données tels que tables, vues et définitions d'espace, doit être évitée. Toute application en cours qui utilise des noms d'objet contenant le symbole doit être modifiée, et tous les noms d'objet contenant ce caractère doivent être placés entre des guillemets ("). Les noms d'objets de base de données : • doivent commencer par un caractère alphabétique ; • peuvent inclure des caractères alphanumériques ; • admettent le symbole "dièse" (#), le caractère souligné (_) et le signe "dollar" ($) ; • ne doivent pas inclure le symbole @. 47 F2 13UR Rev00 3-17 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 3.1.13 Restrictions sur les requêtes distribuées Le traitement distribué fait l'objet des restrictions suivantes : • Trois modes de désignation des tables distantes sont possibles : − requêtes (commandes SQL commençant par SELECT) ; − commandes SELECT emboîtées utilisées avec INSERT, UPDATE, CREATE TABLE ou CREATE VIEW ; − CREATE SYNONYM. • Vous ne pouvez pas sélectionner des colonnes de type LONG dans les tables distantes. • Les requêtes faisant appel à la clause CONNECT BY sont également soumises à certaines restrictions : − l'utilisation de l'opérateur PRIOR dans des clauses autres que CONNECT BY fournira un résultat incorrect : les colonnes concernées auront pour valeur NULL au lieu de la valeur voulue ; − la clause START WITH ne peut pas contenir de sous-requêtes ; − les clauses START WITH et CONNECT BY ne peuvent inclure ni la fonction USERENV('ENTRYID'), ni des fonctions utilisateur, ni ROWNUM. • Vous ne pouvez pas insérer (INSERT), mettre à jour (UPDATE) ou supprimer (DELETE) des données dans des tables distantes, tant que vous n'êtes pas connecté directement à la base de données distante. 3.1.14 Stockage des liaisons dans le dictionnaire de données Une vue de dictionnaire, SYS.DBLINKS, fournit des informations sur les différentes liaisons de base de données du système. Seuls les administrateurs de base de données y ont accès. SYS.DBLINKS indique le propriétaire, le nom, le nom d'utilisateur hôte et le nom d'utilisateur distant associés à toutes les liaisons de base de données du système. Seuls les administrateurs de base de données y ont accès. L'administrateur de base de données (ou un utilisateur disposant des droits d'accès correspondants) a accès à cette vue via les requêtes SQL standard. Exemples : SQL> DESCRIBE SYS.DBLINKS; Cette commande permet d'obtenir le nom et le type de chaque attribut de la vue SYS.DBLINKS. 3-18 47 F2 13UR Rev00 Exploitation de bases de données SQL> SELECT * 2 FROM SYS.DBLINKS; Cet exemple illustre la sélection de toutes les lignes de la vue SYS.DBLINKS. 3.2 EXPLOITATION DES INTERFACES DE PROGRAMMATION ORACLE AVEC SQL*NET Cette section explique comment SQL*Net permet d'accéder à une base de données distante à partir d'un programme précompilé. Tous les autres aspects des précompilateurs de la série Pro sont traités dans la documentation associée à chaque produit. Les interfaces de programmation ORACLE autorisent l'accès à d'autres machines, ainsi qu'à leurs bases de données, via les fonctions SQL*Net. Vous devez commencer par établir une connexion avec la base distante, en vous conformant à la syntaxe suivante : EXEC SQL CONNECT :nom-utilisateur IDENTIFIED BY :mot-de-passe AT identificateur USING :spécification-base nom-utilisateur nom d'utilisateur valide sur la base de données distante. mot-de-passe mot de passe associé au nom d'utilisateur. identificateur nom identifiant la connexion (il ne s'agit pas d'une variable hôte). spécification-base description détaillée au chapitre 2. Exemple : EXEC SQL CONNECT :UID IDENTIFIED BY :PWD AT ORA7 USING :HST Supposons que les variables hôte UID, PWD et HST contiennent respectivement les chaînes "SCOTT", "TIGER" et "D:$ARE2:ORA". La commande ci-dessus permettra alors de connecter le programme précompilé à la base de données ORA sur le site ARE2, sous le nom d'utilisateur distant SCOTT doté du mot de passe TIGER. Cette connexion est identifiée par ORA7. Une fois une connexion établie, d'autres commandes SQL EXEC utilisent la clause AT pour indiquer au précompilateur à quel endroit émettre l'appel. Vous devez recourir à cette clause, si vous n'utilisez ni une instruction de déclaration, ni un curseur. Exemple : EXEC SQL AT ORA7 CREATE TABLE T (X NUMBER) L'exemple ci-dessus illustre la création de la table T sur la connexion ORA7. Si vous recourez à un curseur, vous ne spécifiez la clause AT que lorsque vous déclarez le curseur. Cette opération n'est pas nécessaire pour les manipulations ultérieures. 47 F2 13UR Rev00 3-19 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur Exemple : EXEC SQL AT ORA7 DECLARE C1 CURSOR FOR SELECT ENAME FROM EMP ... EXEC SQL OPEN C1 et non, EXEC SQL AT ORA7 OPEN C1 Ceci vaut également pour les instructions. Vous ne devez spécifier la clause AT qu'au moment de la déclaration. Avec SQL*Net, vous pouvez écrire des programmes qui gèrent plusieurs bases de données simultanément, mais vous ne pouvez mettre à jour qu'une seule base de données au sein de la même unité de consolidation. 3-20 47 F2 13UR Rev00 4. SQL*Net sur micro-ordinateur MS-DOS (protocoles synchrone et asynchrone) SQL*Net vous permet de vous connecter à une base de données distante à partir d'un micro-ordinateur fonctionnant sous MS-DOS. Ce chapitre traite de l'installation de SQL*Net sur le micro-ordinateur : • installation des gestionnaires, • chargement des gestionnaires, • mise en place de diverses procédures de connexion. Le lecteur est supposé être familiarisé avec le système d'exploitation MS-DOS et avoir accès aux manuels requis. MS-DOS n'est abordé ici qu'en fonction de son impact sur l'installation et l'utilisation de SQL*Net sur micro-ordinateur. Les utilisateurs disposant de lignes de communication synchrones auront besoin d'une carte ATLANTIS. Pour plus de détails, reportez-vous à la documentation ATLANTIS. Veuillez noter que l'utilitaire ALX (Autologon Exerciser Utility) interactif d'ORACLE Corporation n'est pas pris en charge. 47 F2 13UR Rev00 4-1 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 4.1 INSTALLATION L'installation de SQL*Net requiert la présence de cinq fichiers MS-DOS exécutables, fournis avec ORACLE GCOS 7. Une fois ORACLE GCOS 7 correctement installé sur le gros système, les cinq fichiers requis sont stockés dans la bibliothèque .BIN sous les noms suivants : SQLNET7_COM SQL6003_COM SQLNET7_PXE D_ASY7_BIN D_SYN7_BIN [Veuillez noter que si vous avez procédé à une installation manuelle d'ORACLE GCOS 7, il est possible que les cinq fichiers ci-dessus se trouvent dans une bibliothèque binaire (BIN) différente. Dans le doute, reportez-vous à ORACLE-V7 - Guide d'installation.] Ces cinq fichiers doivent être copiés de la bibliothèque binaire GCOS 7 vers le microordinateur, à l'aide de MICROFIT7, par exemple, ou via une disquette fournie éventuellement par l'administrateur système. Sous MS-DOS, les fichiers sont intitulés comme suit : SQLNET7.COM SQL6003.COM SQLNET7.PXE D_ASY7.BIN D_SYN7.BIN Copiez-les dans le répertoire NET (\ORACLE\NET sur la plupart des micro-ordinateurs). SQLNET7.COM (asynchrone) et SQL6003.COM (synchrone) contiennent le code exécutable SQL*Net. SQLNET7.PXE n'est requis que si vous utilisez votre micro-ordinateur en "mode professionnel", c'est-à-dire si vous disposez d'une base de données ORACLE locale et que vous êtes à même de créer des liaisons de base de données. Le gestionnaire de périphériques D_ASY7.BIN ne sera utilisé que si votre ligne télécom est asynchrone. D_SYN7.BIN n'intervient que si votre ligne télécom est synchrone et que vous disposez d'une carte ATLANTIS. Si votre ligne est synchrone, vous devez en outre disposer du logiciel de transport associé à la carte ATLANTIS utilisée. Les lignes synchrones doivent être associées à un fichier de configuration correctement installé. Pour installer et configurer le matériel de télécommunications, reportez-vous à la documentation ATLANTIS ou consultez votre administrateur réseau. 4-2 47 F2 13UR Rev00 SQL*Net sur micro-ordinateur MS-DOS (protocoles synchrone et asynchrone) 4.1.1 Installation du gestionnaire de périphériques asynchrone Le gestionnaire de périphériques asynchrone est appelé D_ASY7.BIN. D_ASY7.BIN doit faire l'objet d'une déclaration dans le fichier \CONFIG.SYS du système MS-DOS, comme suit : DEVICE = <chemin> \D_ASY7.BIN [ paramètres ] Paramètres <chemin> répertoire dans lequel le module D_ASY7.BIN est installé, en général \ORACLE\NET, mais n'importe quel nom valide est admis. paramètres série d'options répertoriées ci-dessous : /Cn adresse du port. n désigne le port COMn auquel la carte asynchrone est connectée. n peut avoir pour valeur 1 (par défaut) ou 2. La valeur par défaut est généralement adaptée mais dépend de la configuration du micro-ordinateur. /In interruption matérielle à utiliser. n peut avoir pour valeur 3 ou 4 (par défaut). La valeur par défaut est généralement adaptée mais dépend de la configuration du microordinateur. /Vn débit en bauds (ou débit ligne). n peut prendre les valeurs suivantes : 0 - ligne de 75 bauds 1 - ligne de 150 bauds 2 - ligne de 300 bauds 3 - ligne de 600 bauds 4 - ligne de 1 200 bauds 5 - ligne de 2 400 bauds 6 - ligne de 4 800 bauds 7 - ligne de 9 600 bauds 8 - ligne de 19 200 bauds(veuillez vérifier la disponibilité auprès du centre de service) La valeur par défaut est 7. 47 F2 13UR Rev00 4-3 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur /Pn type de parité de la ligne. n peut prendre les valeurs suivantes : 0 - absence de parité 1 - parité (EVEN) 2 - imparité (ODD) La valeur par défaut est 1. /Nn nombre de bits. n peut avoir pour valeur 7 (par défaut) ou 8. /Sn nombre de bits d'arrêt. n peut avoir pour valeur 1 (par défaut) ou 2. Exemple : DEVICE = \SQLNET7\D_ASY7.BIN /V4 /P2 Cet exemple déclare un débit de ligne de 1 200 bauds et une parité de type ODD, les autres paramètres étant associés aux valeurs par défaut. Pour installer le gestionnaire D_ASY7 sur un micro-ordinateur, vous devez effectuer les opérations suivantes : • copier le gestionnaire dans le répertoire de votre choix, • ajouter la syntaxe <DEVICE => au fichier \CONFIG.SYS, via EDLIN, par exemple. 4-4 47 F2 13UR Rev00 SQL*Net sur micro-ordinateur MS-DOS (protocoles synchrone et asynchrone) 4.1.2 Installation du gestionnaire de périphériques synchrone Le gestionnaire de périphériques synchrone est appelé D_SYN7.BIN. D_SYN7.BIN doit faire l'objet d'une déclaration dans le fichier \CONFIG.SYS du système MS-DOS, comme suit : DEVICE = <chemin> \D_SYN7.BIN /Ann [ /Vn ] Paramètres <chemin> répertoire dans lequel le module D_SYN7.BIN est installé, en général \ORACLE\NET, mais n'importe quel nom valide est admis. /Ann adresse de la station. Aucune valeur par défaut n'est définie. Vous devez fournir la même valeur que celle indiquée dans le masque de configuration de l'émulateur de terminal ATLANTIS. /Vn débit en bauds suivantes : 4 - ligne 5 - ligne 6 - ligne 7 - ligne (ou débit ligne). n peut prendre les valeurs de de de de 1 2 4 9 200 400 800 600 bauds bauds bauds bauds La valeur par défaut est 7. Exemple : DEVICE = \ORACLE\NET\D_SYN7.BIN /A01 Cet exemple déclare un débit de ligne de 9 600 bauds (par défaut). Le gestionnaire est installé dans le répertoire \ORACLE\NET et l'adresse de la station est 01. Pour installer le gestionnaire D_SYN7 sur un micro-ordinateur, vous devez effectuer les opérations suivantes : • copier le gestionnaire dans le répertoire de votre choix ; • ajouter la syntaxe <DEVICE => au fichier \CONFIG.SYS, via EDLIN, par exemple ; • installer et configurer le logiciel de transport ATLANTIS. 47 F2 13UR Rev00 4-5 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 4.1.3 Paramètres de configuration Vous pouvez personnaliser la configuration SQL*Net en modifiant les valeurs des paramètres CONFIG, définis dans le fichier ORACLE CONFIG (en général, \ORACLE\CONFIG.ORA). Vous pouvez insérer cette ligne : CTX_NET7=<valeur> où <valeur> doit respecter le format xxxx (quatre chiffres hexadécimaux). Cette valeur hexadécimale détermine le nombre d'octets de mémoire RAM utilisés par le gestionnaire SQLNET7 ou SQL6003 pour les tampons et pour autres types de stockage de données. La valeur par défaut est 4 000 (hexa). La ligne ci-après peut également être ajoutée : B_NET7=<valeur> où <valeur> consiste en quatre chiffres hexadécimaux, comme précédemment. Cette valeur hexadécimale détermine le nombre d'octets utilisés par le gestionnaire SQLNET7 ou SQL6003 pour la transmission de données. La valeur par défaut est 0200 (hexa). La taille maximale d'un paquet transmis est calculée comme suit : (B_NET7+16) * 2 (hexadécimal) (y compris l'en-tête et la conversion du protocole SQLNET7 ou SQL6003). 4-6 47 F2 13UR Rev00 SQL*Net sur micro-ordinateur MS-DOS (protocoles synchrone et asynchrone) 4.2 CHARGEMENT DES GESTIONNAIRES SQL*NET Une fois les gestionnaires SQL*Net installés sur le micro-ordinateur, ils doivent être chargés en mémoire, avant de pouvoir être utilisés par le programme ORACLE. Pour charger les gestionnaires SQL*Net en mémoire, vous devez entrer la commande suivante (dans le répertoire d'installation du programme) : C> SQLNET7 (pour une ligne télécom asynchrone) ou C> SQL6003 (pour une ligne télécom synchrone) Si vous utilisez une base de données ORACLE locale sur votre micro-ordinateur, vous devez commencer par charger le noyau ORACLE (commande ORACLE), puis les gestionnaires SQL*Net (commande SQLNET7 ou SQL6003) : C> ORACLE C> SQLNET7 (pour une ligne télécom asynchrone) ou C> SQL6003 (pour une ligne télécom synchrone) En effet, le gestionnaire SQLNET7 ou SQL6003 ne charge le programme SQLNET7.PXE que si le programme ORACLE a déjà été chargé. Le programme SQLNET7.PXE doit avoir été chargé pour permettre l'utilisation des liaisons de base de données. Il doit être présent dans le répertoire courant lorsque vous entrez la commande SQLNET7 ou SQL6003. Vous avez la possibilité de lancer un chargement automatique en ajoutant ces trois lignes au fichier ORACLE.BAT : CD \ORACLE\ NET C> SQLNET7 ou C> SQL6003 (pour une ligne télécom asynchrone) (pour une ligne télécom synchrone) Il vous suffit alors d'entrer le nom du fichier traitement par lots chaque fois que vous démarrez (ou réinitialisez) le micro-ordinateur, afin que les gestionnaires SQL*Net soient chargés automatiquement. [Vous pouvez encore créer un petit fichier traitement par lots contenant les lignes de programme ci-dessus et exécuter ce fichier séparément.] Une fois les gestionnaires SQL*Net chargés en mémoire, vous avez les possibilités suivantes : • utiliser les processeurs ORACLE avec des connexions locales à des serveurs de base de données, • utiliser les processeurs ORACLE avec des connexions à distance à des serveurs de base de données, • accéder à des données via des liaisons de base de données (décrites dans les chapitres précédents). 47 F2 13UR Rev00 4-7 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 4.3 PROCEDURES DE CONNEXION La connexion à partir d'un micro-ordinateur peut être manuelle ou automatique. Il est possible de configurer et de stocker une description de dialogue de connexion automatique ("fichiers prise de contact"), en vue de son exécution automatique au moment de la connexion. En cas d'incident durant la connexion automatique, le système bascule en mode manuel. Il est possible de simplifier les procédures de connexion automatique via les éléments suivants : • les macros, • la spécification de base de données par défaut. La phase de connexion automatique peut faire l'objet d'un suivi dans le fichier de suivi LOG7.TRC. Vous trouverez plus de précisions dans les pages qui suivent. 4.3.1 Connexion manuelle Si nécessaire, une fonction de connexion manuelle est disponible, ce qui peut se révéler utile pour résoudre tout incident concernant la connexion réseau. Si un incident se produit alors que vous utilisez des procédures de connexion automatique, le système bascule automatiquement en mode manuel. Pour accéder à ce mode, vous pouvez spécifier une description de dialogue non valide (voir le paramètre chemin-réseau ci-dessous). Pour connecter un serveur ORACLE sur un DPS 7000 à partir d'un micro-ordinateur, vous devez respecter la syntaxe suivante : @B:<gestionnaire>[,<identification>]:<chemin-réseau>:<répertoire> 4-8 @B préfixe de gestionnaire. B désigne les protocoles MS-DOS propres à Bull. gestionnaire protocole à utiliser, en fonction de la ligne télécom. Les valeurs admises sont ASY7 (lignes asynchrones) et SYN7 (lignes synchrones). Aucune valeur par défaut n'est définie. 47 F2 13UR Rev00 SQL*Net sur micro-ordinateur MS-DOS (protocoles synchrone et asynchrone) identification utilisée uniquement pour une connexion Transpac X25, elle doit respecter le format suivant : <préfixe><numéro> "préfixe" a toujours pour valeur "C". "numéro" correspond au numéro d'abonnement à Transpac du site cible. chemin-réseau description de dialogue de connexion automatique (ou "fichier prise de contact") utilisée pour se connecter automatiquement au DPS 7000. Pour passer en mode manuel, entrez une "valeur non valide classique", telle que le caractère 0 (voir ci-dessus). répertoire nom de la base de données située sur le DPS 7000 auquel vous souhaitez vous connecter. Il correspond au répertoire dans lequel le serveur de base de données SOR s'exécute sur la base cible. Exemple : C> SQLPLUS SCOTT/TIGER@B:SYN7,C178190734:0:ORA Cet exemple illustre l'appel du processeur SQL*Plus, désigné par la combinaison nomutilisateur/mot-de-passe SCOTT/TIGER. Une ligne synchrone est déclarée (SYN7) et la base de données ORA est spécifiée. 0 indique que le mode manuel doit être utilisé pour établir la connexion. Le numéro d'abonnement à X25, 178190734, est utilisé pour la connexion à Transpac. Remarque : 4.3.1.1 Le site sur lequel est exécuté le serveur ORACLE n'est pas spécifié. En effet, il est fourni pendant la connexion manuelle au DPS 7000 (décrit plus loin). Une fois le processeur SQL*Plus appelé Le gestionnaire SQL*Net vous invite à vous connecter au site cible. Entrez la ligne suivante : $*$LC ON Si vous utilisez le gestionnaire asynchrone (ASY7), vous devez également entrer : $*$DC LIST: $*$LC OFF Vous pouvez alors vous connecter normalement au DPS 7000, par exemple comme suit : $*$CN -MB ORACLE -SC ARE2 -USR JONES -PW JNS La connexion est dirigée sur la boîte aux lettres ORACLE sur le site ARE2. L'utilisateur est JONES et le mot de passe JNS. Veuillez noter que la boîte aux lettres d'ORACLE est toujours appelée ORACLE, afin de simplifier la connexion. 47 F2 13UR Rev00 4-9 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 4.3.1.2 Une fois la connexion établie Appuyez sur la touche F1, afin de rendre le contrôle au processeur (ici, SQL*Plus) ayant appelé le gestionnaire SQL*Net. Remarque : Il est possible que la connexion soit rejetée, pour les raisons suivantes : • Le gestionnaire de communication (COR) n'a pas été lancé sur le site spécifié : la boîte aux lettres ORACLE est introuvable. Intervention : lancez le processeur COR sur le site en question. • Le site spécifié n'est pas actuellement accessible, en raison d'incidents sur le réseau. • Le serveur de base de données requis sur la base cible n'est pas prêt. Intervention : lancez le serveur ORACLE sur la base cible. 4.3.1.3 Une fois connecté au serveur ORACLE sur le micro-ordinateur Vous pouvez utiliser ORACLE comme si la base de données du DPS 7000 était sur votre propre micro-ordinateur. 4.3.1.4 Déconnexion Lorsque vous souhaitez abandonner le processeur courant, le gestionnaire SQL*Net vous invite à vous déconnecter manuellement de la boîte aux lettres ORACLE. Vous avez alors deux possibilités : • taper $*$DIS pour vous déconnecter de la session en cours, puis appuyer sur la touche F1; • appuyer directement sur la touche F1. La connexion ORACLE est conservée en vue de la prochaine session ; il vous suffira alors d'appuyer une nouvelle fois sur la touche F1 pour vous reconnecter. Veuillez noter toutefois que les cartes ATLANTIS n'offrent pas toutes cette possibilité et que la session risque d'être perdue. 4-10 47 F2 13UR Rev00 SQL*Net sur micro-ordinateur MS-DOS (protocoles synchrone et asynchrone) 4.3.2 Connexion automatique Une fonction de connexion automatique vous permet de vous connecter dynamiquement aux serveurs ORACLE sur des gros systèmes DPS 7000, sans avoir à lancer de dialogue de connexion réseau. Avant de pouvoir exploiter cette fonction, vous devez générer une description du dialogue enregistré lors de la connexion de votre micro-ordinateur à un site DPS 7000 du réseau. Ces descriptions de dialogue sont stockées dans des fichiers de connexion automatique (parfois appelés "fichiers prise de contact"). Vous pouvez réduire le nombre de fichiers requis grâce à un certain nombre de macros et de paramètres. Remarque : La fonction de connexion automatique ne prend pas en charge les connexions commutées entre un micro-ordinateur et un DPS 7000 hôte. Le nom du fichier de connexion automatique et les paramètres associés à utiliser sont spécifiés comme suit : @B:<gestionnaire>[,<id>]:[<accès-fichier>][,<par1>,<par2>...,<par9>]:<dir> @B préfixe du gestionnaire. B désigne les protocoles MS-DOS propres à Bull. gestionnaire protocole à utiliser. Les valeurs admises sont ASY7 (lignes asynchrones) et SYN7 (lignes synchrones). Aucune valeur par défaut n'est définie. id utilisée uniquement pour une connexion Transpac X25, elle doit respecter le format suivant : <préfixe><numéro> "préfixe" a toujours pour valeur "C". "numéro" correspond au numéro d'abonnement à Transpac du site cible. accès-fichier nom d'accès complet au fichier de connexion automatique contenant la description de dialogue requise. Vous trouverez plus de détails sur la syntaxe de cette description plus avant dans ce manuel. La valeur par défaut est \ORACLE5\NET\LOG7. par1...par9 valeurs à affecter aux paramètres spécifiés (de un à neuf). [Elles sont désignées par #1, #2, etc., durant la phase de connexion.] Chaque paramètre doit être précédé d'une virgule (,). dir nom de la base de données située sur le DPS 7000 auquel vous souhaitez vous connecter. Il correspond au répertoire dans lequel le serveur de base de données SOR s'exécute sur la base cible. 47 F2 13UR Rev00 4-11 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur Exemple : C> SQLPLUS SCOTT/TIGER@B:SYN7:\MYLOG,ARE2,MYPWD:ORA Cet exemple illustre l'appel du processeur SQL*Plus, désigné par la combinaison nomutilisateur/mot-de-passe SCOTT/TIGER. Une ligne synchrone est déclarée (SYN7) et la base de données ORA est spécifiée. Le fichier de connexion automatique à utiliser est \MYLOG. Deux paramètres spécifient le site cible (ARE2) et le mot de passe (MYPWD). Une fois le processeur (SQL*Plus, dans notre exemple) appelé, le gestionnaire SQL*Net vous connecte automatiquement au DPS 7000, par le biais du fichier de connexion automatique spécifié par \MYLOG. Ce fichier contient, par exemple : (CN -MB ORACLE -SC #1 -USR JONES -PW #2 *$$*CONNECTED)::(^) La connexion est dirigée sur la boîte aux lettres ORACLE sur le site ARE2 (valeur #1). L'utilisateur est JONES et le mot de passe JNS (valeur #2). Cet exemple illustre une connexion de dialogue de connexion automatique (décrite ciaprès). La syntaxe spécifiée suppose l'aboutissement de la connexion ; dans le cas contraire, la connexion échoue et le gestionnaire SQL*Net rend le contrôle au processeur appelant (SQL*Plus, dans le cas présent). Types de modèle Mode synchrone : DKU 7107 DKU 7211 VIP 7804 Mode asynchrone : TTU 8124 VIP 7800 PC 7804 4.3.3 Description de dialogue de connexion automatique Les fichiers de connexion automatique contiennent une série de lignes d'instructions, qui répondent au format suivant : (<chaîne_entrée>?<chaîne_sortie>):<action_si_OK>:<action_si_err> 4-12 47 F2 13UR Rev00 SQL*Net sur micro-ordinateur MS-DOS (protocoles synchrone et asynchrone) 4.3.3.1 Ligne d'instruction () chaque interaction, qui regroupe <chaîne_entrée> <chaîne_sortie>, doit être délimitée par des parenthèses. et chaîne_entrée chaîne de caractères envoyée par le gestionnaire SQL*Net. Elle simule l'intervention d'un l'utilisateur souhaitant établir une connexion. En d'autres termes, il s'agit de l'entrée associée à une interaction. ? séparateur entre chaîne_entrée et chaîne_sortie. chaîne_sortie chaîne de caractères devant être associée à un message de retour. Si la correspondance existe, l'interaction a abouti. En d'autres termes, il s'agit de la sortie associée à une interaction. Vous pouvez spécifier une chaîne exacte ou faire appel à des caractères spéciaux (décrits ci-après). : séparateur entre la syntaxe du message et celle de l'intervention. action_si_OK action à suivre si la chaîne reçue correspond à <chaîne_sortie>. Vous pouvez : − spécifier d'autres chaîne_entrée et chaîne_sortie, conformes à la syntaxe ci-dessus et entre parenthèses ; − ne pas préciser d'intervention, auquel cas le système exécute la ligne suivante du fichier ; − spécifier le symbole (^) standard, qui signifie que le gestionnaire SQL*Net driver doit rendre le contrôle au processeur appelant, avec une notification d'erreur. action_si_err action à suivre si la chaîne reçue ne correspond pas au message résultant. Vous avez les mêmes possibilités que pour <action_si_OK>. Une fois la dernière ligne du fichier de connexion automatique exécutée, et en l'absence du symbole (^), la connexion est établie et le processeur appelant retrouve le contrôle. 47 F2 13UR Rev00 4-13 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 4.3.3.2 4.3.3.3 Caractères spéciaux * représente une chaîne de caractères quelconque - par exemple, *MODEL (toute chaîne de caractères finissant par MODEL) - ou un caractère quelconque. (^) indique que le contrôle doit être rendu au processeur appelant, avec une notification d'erreur. Utilisé uniquement dans la syntaxe de l'action à suivre. \t désigne une transmission unique. \ protège certains caractères appartenant à des chaînes à transmettre ou à recevoir, qui, non protégés, auraient une autre signification. Ces caractères sont * : . \ ? ( ). Par exemple, \* ou \\. \o spécifie le temps imparti. Ce caractère est suivi d'un nombre entier indiquant le nombre de secondes avant la fin du temps imparti. Par exemple : \o30 ( délai de 30 secondes). Exemple (\o10\t?*MODEL: )::(^) Cette commande fixe la valeur du temps imparti à 10 secondes, n'effectue qu'une seule transmission et appelle une chaîne se terminant par MODEL:. En cas de réception d'une chaîne de ce type, la ligne suivante (non indiquée) est exécutée ; dans le cas contraire, la connexion échoue. 4-14 47 F2 13UR Rev00 SQL*Net sur micro-ordinateur MS-DOS (protocoles synchrone et asynchrone) 4.3.3.4 Fichiers de connexion automatique par défaut Deux fichiers, LOG7_SYN et LOG7_ASY, sont réservés à la connexion automatique par défaut pour les lignes synchrones et asynchrones respectivement. Ils se présentent comme suit : LOG7_SYN (\o30$*$DIS?*$\*$)::((\t?*$\*$)::(^)) (LC ON?*$\*$)::(^) (CN -MB #1 -SC #2 -USR #3 -PW #4?\o30*$$ 0100*)::(^) LOG7_ASY (\o30$*$DIS?*$\*$)::((\t?*$\*$)::(^)) (LC ON?*$\*$)::(^) (DC?*LIST*):((\t?*$\*$)::(^)):(^) (CN -MB #1 -SC #2 -USR #3 -PW #4?\o30*$$ 0100*)::(^) 4.3.3.5 Exemple de fichier de connexion automatique Cet exemple est basé sur un terminal de type DKU 7211 et suppose l'envoi de la chaîne "MODEL:". (\o10\t ?*MODEL: ) :: (($\*$LO ?*BYE*) :((\t ?*MODEL: ) :: (^)):(^)) (DKU7211?*$\*$) :: (^) (LC ON?*$\*$) :: (^) (CN -MB ORACLE -SC BF85 -USR GAB -PW CH ?\o30 *$$ 0100*) :: (^) 4.3.4 Variables de macro Pour améliorer l'efficacité de la procédure de connexion automatique, vous pouvez définir des variables de macro. Ces variables, particulièrement utiles, permettent les opérations suivantes : • réduction du nombre d'entrées utilisateur requises pendant la phase de connexion ; • réduction du nombre d'opérations requises, pour modifier les fichiers de connexion automatique, par exemple. La liste des variables de macro doit être stockée dans le fichier CONFIG.ORA sur le micro-ordinateur, dans le répertoire d'installation d'ORACLE. Ce répertoire a pour nom la valeur de la variable ORACLE_HOME, généralement \ORACLE dans le fichier AUTOEXEC.BAT, comme ci-dessous : SET ORACLE_HOME=\ORACLE 47 F2 13UR Rev00 4-15 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 4.3.4.1 Définition de macros La définition des macros doit respecter la syntaxe suivante : <nom_macro> = <valeur> Exemples : DB70 =\ORACLE\NET\LOG7,ARE2,JONES,JNS:ORA OR7=ORA MB=,ORACLE,ARE2,ORAOPER5,ORA Les définitions de macros peuvent inclure des références à d'autres macros : Exemple : DBS=SYN7:%MB%:%OR7% Les macros sont alors désignées conformément à la syntaxe ci-après : %<nom-macro>% Exemple : %DB70% 4.3.4.2 Informations complémentaires Il est possible de faire référence à des variables de macro dans la valeur associée à d'autres définitions de macros, n'importe où après le préfixe de gestionnaire B:. Elles peuvent être insérées dans des chaînes hôte, ainsi que dans les fichiers de connexion automatique. Exemples : Dans le fichier CONFIG.ORA, vous pouvez stocker les définitions de macros suivantes : DB70S=SYN7:%DB70% SITE=... MB =... ......etc. A l'invite MS-DOS C>, vous pouvez entrer : C> SQLPLUS SCOTT/TIGER@B:%DB70S% ou C> SQLPLUS SCOTT/TIGER@B:SYN7:%MB%:ORA.GH Dans un fichier de connexion automatique, vous pouvez spécifier : (CN -MB ORACLE -SC %SITE% etc. ... ) Les variables de macro sont utilisables avec toutes les commandes spécifiques de SQL*Net - par exemple, CREATE DATABASE LINK. 4-16 47 F2 13UR Rev00 SQL*Net sur micro-ordinateur MS-DOS (protocoles synchrone et asynchrone) 4.3.5 Connexion de base de données par défaut Vous pouvez définir des connexions de base de données par défaut, que celles-ci soient locales ou distantes. Vous devez, pour ce faire, recourir aux définitions LOCAL et REMOTE du fichier CONFIG.ORA. 4.3.5.1 Connexion locale La définition LOCAL permet de configurer une base de données locale par défaut. Exemple : LOCAL=B:ASY7:\ORACLE\NET\LOG7,ARE2,JONES,JNS:ORA Si cette définition est stockée dans le fichier CONFIG.ORA, vous pouvez entrer : C> SQLPLUS SCOTT/TIGER SQL*Plus vous connectera alors (implicitement) à la base de données ORA sur le site ARE2, via le gestionnaire ASY7. 4.3.5.2 Connexion à distance La définition REMOTE permet de configurer une base de données distante par défaut. Exemple : REMOTE=B:SYN7:\ORACLE\NET\LOG7,LYR1,JONES,JNS:ORACLE Si cette définition est stockée dans le fichier CONFIG.ORA, vous pouvez entrer : C> SQLPLUS SCOTT/TIGER@B : SQL*Plus vous connectera alors (implicitement) à la base de données ORACLE sur le site LYR1, via le gestionnaire SYN7. 47 F2 13UR Rev00 4-17 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 4.3.6 Appel des messages de suivi Si un fichier de connexion automatique pose un problème, vous pouvez commencer par essayer d'exécuter manuellement la procédure de connexion automatique, comme indiqué précédemment. Vous serez ainsi à même de voir le type d'erreur à l'origine du problème. Il peut également se révéler utile d'effectuer un suivi de la connexion et de le consigner dans un fichier de suivi spécial. Le fichier regroupera tous les messages envoyés et reçus pendant la phase de connexion automatique et vous permettra de repérer l'origine du problème. Le fichier de suivi, LOG7.TRC, est stocké dans le même répertoire que le fichier de connexion automatique par défaut LOG7. LOG7.TRC doit avoir été déjà installé avant le lancement de la session de suivi. Il vous suffit, par exemple, d'entrer : C> COPY LOG7 LOG7.TRC ce qui génère une copie de LOG7 intitulée LOG7.TRC. Le contenu du fichier LOG7.TRC est toujours écrasé par le dernier dialogue de connexion automatique exécuté. Si aucun paramètre <accès-fichier> n'est défini sur la ligne de commande (voir le paragraphe 4.3.2), ces fichiers doivent être stockés dans le répertoire \ORACLE5\NET. 4-18 47 F2 13UR Rev00 SQL*Net sur micro-ordinateur MS-DOS (protocoles synchrone et asynchrone) \AUTO EXEC.BAT fich ie r sta n d ard M S -D O S , q u i co n tien t g é né ralem e n t u n e instru ction d u typ e SET ORACLE_HOME \O R A C L E 7 d é fin issa n t le ré p erto ire d 'O R A C L E \O R A C L E 5 \O R A C L E 7 rép e rto ire d'O R A C L E sur ré pe rto ire p ar dé fa ut pou r la vo tre m icro fon ction d e co nn exion au to \O R A C LE 7 \N E T \O R A C L E 7 \C O N F IG .O R A rép e rto ire d e s fich ie rs S Q L *N e t fichie r d e co nfig uratio n O R A C LE , \O R A C LE 5 \N E T con ten an t la dé fin itio n d e m acro s et le s co nn exio ns de ba ses de do nn é es d ista nte s e t lo cale s pa r d éfa ut \O R A C L E 5 \N E T \L O G 7 fic hie r d e co n n e xio n a u to p a r d é fa u t p o u r S Q L N E T 7 \O R A C L E 5 \N E T \L O G 7 .T R C fich ie r re ceva n t le s m essa g e s d e su ivi d e la fo n ction d e co n n exio n a uto m atiq u e \C O N F IG .S Y S le fich ie r sta n d ard M S -D O S d o it in clu re la d é fin itio n d e s g e stio n n a ire s S Q L *N e t D E V IC E = \O R A C L E 7\N E T \D _ A S Y7 .B IN ... D E V IC E = \O R A C L E 7\N E T \D _ S Y N 7 .B IN ... \O R A C L E 7 \N E T \D _ A S Y 7 .B IN co d e du g e stio n n a ire A S Y 7 \O R A C L E 7 \N E T \D _ S Y N 7 .B IN co d e d u g e stio nn a ire S Y N 7 \O R A C L E 7 \N E T \S Q L N E T .C O M ou \O R A C L E 7 \N E T \S Q L 6 00 3 .C O M cod e S Q L *N et exécu table \O R A C L E 7 \N E T \< co d e > le co de du type co rrect d'interface po ur la carte A T LA N T IS doit être insta llé ici \O R A C L E 7 \N E T \S Q L N E T .P X E extension de gestionnaire courante, chargée lors de l'exécution de S Q LN E T 7.C O M ou de S Q L6003 .C O M , u nique m ent si le cod e O R A C LE a déjà été chargé Figure 4-1. Fichiers et répertoires MS-DOS sous SQL*NET 47 F2 13UR Rev00 4-19 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur 4-20 47 F2 13UR Rev00 Glossaire base de données distribuées Base de données composée d'éléments pouvant être répartis sur des sites géographiques différents. Le traitement distribué est transparent pour les utilisateurs, qui n'ont pas besoin de connaître l'emplacement des données. client Machine sur laquelle réside l'application. débit en bauds Vitesse de transmission, équivalant au nombre de conditions discrètes ou de signaux par seconde. DSA (architecture de systèmes distribués) Architecture Bull réservée aux systèmes et aux produits interconnectés, consistant en un ensemble de protocoles et de définitions de services au sein d'une structure formée de sept couches conforme au modèle OSI (interconnexion de systèmes ouverts). fichier de connexion automatique Voir "fichier prise de contact". fichier prise de contact Fichier contenant un dialogue utilisé pour communiquer avec l'hôte distant. Ce type de fichier permet d'automatiser la "conversation" qui aurait normalement lieu entre le l'utilisateur du terminal et le système hôte distant. hôte Machine sur laquelle la base de données réside et exécute le noyau ORACLE, prenant ainsi le serveur en charge. 47 F2 13UR Rev00 g-1 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur Internet Protocole de réseau. liaison de base de données Objet stocké dans la base de données locale, identifiant une base de données distante, une voie de communication avec la base distante et, éventuellement, un nom d'utilisateur et un mot de passe associés. Une fois définie, la liaison de base de données est utilisée pour émettre des requêtes vers des tables de la base distante. modèle client/serveur Dans le modèle de communication client/serveur, le système client (micro-ordinateur, mini-ordinateur ou gros système) doit demander les services du système serveur (ou hôte). L'hôte peut être un mini-ordinateur ou un gros système, mais en aucun cas un micro-ordinateur. nœud Point physique du réseau. OPEN7 Nouveau sous-système GCOS 7 fournissant des commandes Unix pour TCP/IP. protocole Ensemble de normes régissant les opérations associées à une liaison télécom. protocole de terminal Protocole de communication sous lequel l'extrémité client de la liaison agit comme un terminal "non intelligent" (communication asynchrone). public (1)Visible ou disponible pour tous les utilisateurs. Les synonymes et les liaisons de base de données peuvent être publics. Seuls les administrateurs de base de données peuvent créer des objets publics. Tout utilisateur peut accorder un accès PUBLIC à ses propres objets. (2)Groupe auquel appartient chaque utilisateur de base de données - nom de ce groupe. structure à deux tâches Technique selon laquelle deux tâches ou deux process distincts communiquent entre eux pour effectuer un travail. Par exemple, le noyau ORACLE (jouant le rôle du processeur serveur) et une application ORACLE (agissant comme process frontal ou de commande). g-2 47 F2 13UR Rev00 Glossaire TCP/IP Protocole de contrôle de transmission/protocole Internet. terminal asynchrone Terminal sur lequel la transmission et la réception de données s'effectue caractère par caractère. terminal synchrone Terminal sur lequel la transmission et la réception de données s'effectue champ par champ, ou écran par écran. traitement distribué Dans ce type de traitement, les opérations avec les bases de données passent par un réseau, mais les utilisateurs doivent identifier l'emplacement des données distantes et envoyer des messages via le réseau pour lancer un process sur l'hôte distant. transmission asynchrone Transmission de données pour laquelle l'intervalle de temps entre les caractères transmis peut être variable. Ce type de transmission est contrôlé par des éléments de départ et d'arrêt situés au début et à la fin de chaque caractère. 47 F2 13UR Rev00 g-3 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur g-4 47 F2 13UR Rev00 Index A ALX architecture architecture SQL*Net ARRAYSIZE ATLANTIS protocole ATLANTIS, protocole AUTOEXEC.BAT, fichier 4-1 1-2, 2-1 1-3 3-9 2-10 2-3 4-15 B base de données distante liaison locale traitement distribué base de données distante base de données par défaut distante locale 3-10 2-1, 3-1, 3-10 3-10 1-2 2-8 4-17 4-17 protocole 2-8 tâche-tâche 2-3 terminal-process 2-3 compatibilité 1-6 CONFIG 4-6 CONNECT BY, clause 3-18 CONNECT, commande 3-2 connexion 2-5, 3-2, 4-8 connexion à distance 2-4 connexion automatique 2-10, 4-11 connexion manuelle 4-8 COPY erreurs 3-5 exemples 3-8 paramètres internes 3-9 substitution de macro 3-8 COPY COMMIT, option 3-9 COPY, commande 1-5, 3-3 COR 2-4, 4-10 CREATE DATABASE LINK 3-10 CREATE DATABASE LINK, commande 3-11, 3-14 exemples 3-13 CREATE SYNONYM, commande 3-15, 3-18 CREATE TABLE, commande 3-18 CREATE VIEW, commande 3-16, 3-18 C D client/serveur, modèle 2-2 commande CONNECT 3-2 COPY 1-5, 3-3 CREATE DATABASE LINK 3-11, 3-14 CREATE SYNONYM 3-15, 3-18 CREATE TABLE 3-18 CREATE VIEW 3-16, 3-18 DELETE 3-1, 3-16 DROP DATABASE LINK 3-1, 3-14 INSERT 3-1, 3-16 SELECT 3-3, 3-5, 3-14, 3-18 SQLPLUS 3-2, 4-17 UPDATE 3-1, 3-18 communication débit en bauds 4-3, 4-5 définition de macro 4-16 DELETE, commande 3-1, 3-16 description de dialogue 4-11 description de dialogue de connexion automatique micro-ordinateur 4-12 DEVICE 4-3 dictionnaire vue 3-18 DROP DATABASE LINK 3-10 DROP DATABASE LINK, commande 3-1, 3-14 exemples 3-14 DSA, réseau 1-6 47 F2 13UR Rev00 i-1 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur E erreur notification signalisation Ethernet, LAN EXEC SQL EXPORT 3-5 1-6 1-5, 1-6 3-19 2-11 4-15 4-15 4-15 4-15 4-18 2-10 G gestionnaire asynchrone erreur préfixe gestionnaire de micro-ordinateurs gestionnaire de périphériques asynchrone asynchrone sur micro synchrone synchrone sur micro gestionnaire SQL*Net code 2-9 1-6 2-9 4-8 4-3 4-2 4-5 4-5 4-7 i-2 4-15 3-9 3-18 macro substitution MAXDATA micro-ordinateur connexion automatique connexion manuelle MODEL types modèle client/serveur MSDOS 3-8 3-9 4-8, 4-11 4-8 4-14 1-3, 2-2 4-1 nom nom d'objet de base de données restrictions notification d'erreur 3-17 3-17 3-5 O OPEN7 ORACLE serveur ORACLE_HOME, variable 2-3, 2-4 2-9 4-15 P 2-11 2-11 3-1, 3-16 4-1 3-19 L LAN Ethernet liaison base de données privée publique liaison télécom 4-15 N I IDSORA IMPORT INSERT, commande installation micro de SQL*Net interface de programmation 4-17 4-18 M F fichier de connexion automatique sur micro-ordinateur fichier de connexion automatique par défaut LOG7_ASY LOG7_SYN sur micro fichier de suivi fichier prise de contact LOCAL, définition LOG7.TRC, fichier de suivi LOG7_ASY, fichier de connexion automatique par défaut LOG7_SYN, fichier de connexion automatique par défaut LONG, option LONG, type de données 1-5, 1-6 3-1, 3-10 3-10 3-10 1-6 PC CONFIG PRIOR, opérateur prise de contact, fichier protocole asynchrone ATLANTIS synchrone TCP/IP protocole de communication 4-5 3-18 2-10 2-9 1-5, 2-3, 2-10 2-3, 2-10 1-5 1-6 2-8 R REMOTE, définition 4-17 47 F2 13UR Rev00 Index requête table distante requête de base de données distribuée requête distribuée restriction requête emboîtée restriction nom d'objet de base de données requête distribuée ROWNUM 3-14 3-1 3-17 3-18 3-17 3-17 3-18 V variable de macro définition micro-ordinateur vue vue de dictionnaire X X25 S 4-15 4-15 4-15 3-16 3-18 1-6 SELECT, commande 3-3, 3-5, 3-14, 3-18 SET 3-9 SOR 2-5 SQL*Calc 2-11 SQL*Forms 2-11 SQL*Loader 2-11 SQL*Net architecture 1-3 conditions préalables 1-1 connexion 2-3, 2-5 erreur de gestionnaire 1-6 fonctions 1-5 généralités 1-1 micro-ordinateur 4-1 restrictions 2-11 via TCP/IP 2-1 SQL*Net TCP/IP, serveur 2-4 SQL*Plus 3-1 SQLPLUS, commande 3-2, 4-17 structure à deux tâches 1-3, 2-2 substitution de macro 3-8 synonyme 3-15 SYS.DBLINKS, vue 3-18 T table distante 3-14 insertion 3-16 requête 3-14 suppression 3-16 synonymes 3-15 vues 3-15 TCP/IP 1-5, 2-1, 2-3, 2-4 connexion 2-6 TCP/IP, protocole 1-6 traitement de base de données distribué 1-2 transpac 4-9 U UPDATE, commande 47 F2 13UR Rev00 3-1, 3-18 i-3 SQL*Net-V1 avec ORACLE-V7 - Guide de l'utilisateur i-4 47 F2 13UR Rev00