Ingénieurs 2000 Informatique et Réseaux TP Administration Oracle DIOP Ngoné ESSAIDI Abderrahim Février 2008 1
Sommaire Sommaire... 2 Introduction... 3 1. Déploiement d application... 4 1.1 Résumé du besoin... 4 1.2 Notions de tablespaces... 4 1.3 Notions d utilisateur... 4 1.4 Mise en place de l application... 4 2. Etudes statistiques du serveur... 6 2.1 A propos des statistiques... 6 2.2 PerfStat... 6 2.3 Oracle Entreprise Manager... 6 2.4 Résolution d une anomalie sur le serveur... 7 Conclusion... 8 Annexe... 9
Introduction L objectif de ce TP est tout d abord de nous familiariser avec l environnement d Oracle et le langage de requête SQL via l outil oracle SQL PLUS mais également de découvrir des méthodes de gestion avancées des bases de données sous Oracle. En effet, ce dernier possède malgré tout certaines restrictions comme le fait d utiliser une instance du moteur d Oracle pour chaque base de données, ce qui peut être très gourmand en ressources dès lors que le nombre de bases de données est important. L objectif de ce TP va donc consister en d une part la mise en place d un canvas de déploiement d applications indépendantes sur la même base de données Oracle. D autre part il va consister à mettre en place un système de monitoring. Ce système va nous permettre, entre autres, de visualiser le trafic et ainsi détecter les problèmes potentiels sur notre base.
1. Déploiement d application 1.1 Résumé du besoin Le but de cette partie du TP est de mettre en place un canvas de déploiement d applications indépendantes sur la même base de données Oracle. Nous allons créer un tablespace et un compte utilisateur pour chacune des applications. Ces dernières étant indépendantes, l utilisateur n a accès qu à son tablespace. Cela permet donc à celui-ci de travailler librement et d avoir l impression qu il est seul sur la même base, alors que d autres accès concurrent sont admis. 1.2 Notions de tablespaces Un tablespace est un espace logique qui contient les objets stockés dans la base de données comme les tables ou les indexes. Une base de données contient donc un ensemble de tablespaces Un tablespace est composé d'au moins un datafile, c'est à dire un fichier de données qui est physiquement présent sur le serveur à l'endroit stipulé lors de sa création. Chaque datafile est constitué de segments d'au moins un extent (ou page) lui-même constitué d'au moins 3 blocs : l'élément le plus petit d'une base de données. 1.3 Notions d utilisateur Un utilisateur de base de données va correspondre à un login qui aura reçu certains privilèges. Cet utilisateur sera stocké dans le dictionnaire de données et disposera d'un espace de stockage pour ses objets qui seront alors stockés dans son schéma. En Oracle on pourra assimiler un utilisateur avec un tablespace comme on aurait associé un utilisateur à un schéma de la base de données. 1.4 Mise en place de l application Nous allons utiliser SQL Plus pour la mise en place des tablespaces. Cette interface permet de manipuler aisément la base de données Oracle. Pour se connecter à cette interface, on tape la commande sqlplus / as sysdba.
1.4.1 Création du tablespace Le script ci-dessous permet de créer un tablespace qui va par la suite être associé à l utilisateur qui sera par la suite, créé. TABLESPACE=mytablespace $sqlplus / as sysdba prompt CREATE SMALLFILE TABLESPACE "$TABLESPACE" DATAFILE '/data/topo/$tablespace' SIZE 100M REUSE LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; 1.4.2 Création de l utilisateur Nous allons créer un utilisateur dont le nom sera le même que le nom du tablesapce qu on vient de créer un le mot de passe sera «mypass». Le script ci-dessous permet de réaliser cette tâche. MOTDEPASSE=myspass TABLESPACE= mytablespace prompt CREATE USER "$TABLESPACE" PROFILE "DEFAULT" IDENTIFIED BY "$MOTDEPASSE" DEFAULT TABLESPACE "$TABLESPACE" TEMPORARY TABLESPACE "TEMP"QUOTA UNLIMITED ON "$TABLESPACE" ACCOUNT UNLOCK; prompt GRANT "DINIROLE" TO "$TABLESPACE"; GRANT "DINIROLE" TO "$TABLESPACE"; 1.4.3 Droits d accès à la base Ce script permet de donner les privilèges de connexion à la base de données à notre utilisateur. TABLESPACE=mytablespace prompt GRANT "CONNECT" TO "$TABLESPACE"; prompt GRANT "DINIROLE" TO "$TABLESPACE"; 1.4.4 Analyse Lors du TP un script a été utilisé pour faciliter la création d un tablespace et le compte associé. Les scripts simplifient et sécurisent les tâches fastidieuses d administration d une base de données. Celui-ci nous a permis de créer rapidement un tablespace en fournissant uniquement un nom et un mot de passe. Le script complet est disponible en annexe.
2. Etudes statistiques du serveur 2.1 A propos des statistiques Dans cette partie du TP, nous allons avoir l occasion de mettre en place un système de monitoring. Ce système va nous permettre, entre autres, de visualiser le trafic et ainsi détecter les problèmes potentiels sur notre base. 2.2 PerfStat PerfStat est un ensemble d utilitaires (scripts, packages, procédures et fonctions stockées) qui permet de suivre finement les performances des bases Oracle. Il est notamment utilisé pour contrôler les flux entrant et sortant du serveur de base de données. Il fournit des fonctionnalités supérieures aux outils classiques. La commande «sprepart.snap» permet de faire une capture de la BDD à un moment spécifique. Pour l analyse statistique, il faut lancer la commande «sqlplus perfstat/perfstat». Un fichier de trace est généré. Il détaille tout l historique du serveur. Les données suivantes sont mises en évidence : - moyennes d exécution des requêtes - accès à la mémoire - accès au CPU. 2.3 Oracle Entreprise Manager L application Oracle Enterprise Manager (OEM or EM) permet de gérer mes applications développées par Oracle notamment sa base de données. Il fournit un outil de monitoring graphique qui permet de suivre la «vie» d une base de données Oracle depuis une application web.
2.4 Résolution d une anomalie sur le serveur Une analyse statistique a été effectuée sur le serveur de base de données. Au terme de celle-ci, nous avons constaté qu une ressource utilisait la quasi-totalité du CPU du serveur. L utilisation excessive de cette ressource était due au fait que le serveur, à chaque requête, fait un scan complet de toutes les tables concernées. La correction de ce problème a été relativement simple. Des index on été ajoutés à la colonne de la table sur laquelle le serveur faisait le scan. Par la suite, les requêtes se sont effectuées en utilisant l index créé. Cette intervention nous a permis de baisser d optimiser les performances du serveur en baissant le taux d utilisation du CPU.
Conclusion Nous avons vu dans ce TP les forces d Oracle et comment contourner ses faiblesses. Ce TP nous a également permis de nous familiariser avec son langage de requête SQL, son outil Oracle SQL PLUS et son interface web d administration. Enfin nous avons pu découvrir les canvas de déploiement d applications ainsi que le système de monitoring
Annexe #! /bin/bash echo "Choix du nom de la table space : " read TABLESPACE TABLESPACE=` echo "$TABLESPACE" tr [a-z] [A-Z]` echo "mot de passe : " read MOTDEPASSE echo lancement du script echo creation du tablespace sqlplus / as sysdba <<!EOD prompt CREATE SMALLFILE TABLESPACE "$TABLESPACE" DATAFILE '/data/topo/$tablespace' SIZE 100M REUSE LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; CREATE SMALLFILE TABLESPACE "$TABLESPACE" DATAFILE '/data/topo/$tablespace' SIZE 100M REUSE LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; Echo creation du premier compte utilisateur prompt CREATE USER "$TABLESPACE" PROFILE "DEFAULT" IDENTIFIED BY "$MOTDEPASSE" DEFAULT TABLESPACE "$TABLESPACE" TEMPORARY TABLESPACE "TEMP"QUOTA UNLIMITED ON "$TABLESPACE" ACCOUNT UNLOCK; prompt GRANT "DINIROLE" TO "$TABLESPACE"; GRANT "DINIROLE" TO "$TABLESPACE";!EODCREATE USER "$TABLESPACE" PROFILE "DEFAULT" IDENTIFIED BY "$MOTDEPASSE" DEFAULT TABLESPACE "$TABLESPACE" TEMPORARY TABLESPACE "TEMP" QUOTA UNLIMITED ON "$TABLESPACE" ACCOUNT UNLOCK; Echo connection sur la base prompt GRANT "CONNECT" TO "$TABLESPACE"; GRANT "CONNECT" TO "$TABLESPACE"; prompt GRANT "DINIROLE" TO "$TABLESPACE"; GRANT "DINIROLE" TO "$TABLESPACE";!EOD