Cours DBA Oracle 10g

download Cours DBA Oracle 10g

of 98

Transcript of Cours DBA Oracle 10g

COURS DBA ORACLE 10g

CHAPITRE 1 -concepts de baseSGBDs et SGBDRsUn SGBD est un systme complexe permettant de grer de manire efficace, un volume important de donnes structures, accessible par des utilisateurs simultans locaux ou non. Un SGBDR (ou RDBMS en Anglais) est un SGBD bas sur le modle relationnel. Une relation est un sous-ensemble de donnes caractris par des attributs et visualisable sous forme de table. Bien que cela ne soit pas vraiment formalis, envisageons dun point de vue pragmatique quelles doivent tre les caractristiques dun vrai SGBD par opposition des systmes de gestion de fichiers plus ou moins volus comme Paradox, Omnis, fileMaker, Access Caractristique dun vrai SGBD Un SGBDR digne de ce nom doit disposer dun certain nombre de caractristiques minimales : * gestion de gros volumes de donnes (en consultation et en mise jour), * Scurit des donnes, qui se dcline en : * disponibilit Un SGBDR se doit doffrir une bonne disponibilit des donnes. Une disponibilit totale des donnes est possible (temps de reprise nul) il suffit de sen donner les moyens logiciels et matriels * fiabilit Des mcanismes de sauvegarde varis (physique, logique, off-line, on-line, totale, partielle, incrmentale), ainsi que des mcanismes de journalisation, et de reprise permettent de restaurer une information sans pratiquement aucune perte, dans tous les cas de problme matriel ou logiciel. * confidentialit Tout nest pas accessible tout le monde! Se connecter la base de donnes, donne un certain nombre de droits et de ressources en fonction dun profil dfini et maintenu par un administrateur. La granularit daccs peut aller jusqu la vision unique dun champ dun enregistrement dune table particulire. Encore une fois on ne manipule plus des fichiers1

COURS DBA ORACLE 10g * cohrence Que les donnes soient rparties ou non dans ce dernier cas les mcanismes mis en jeux seront plus complexes elles doivent tre cohrentes. Cela sous entend, dune part que les accs concurrents dutilisateurs, notamment lors de mises jour, ne doivent pas compromettre lintgrit des donnes et dautre part que ces dernires satisfassent aux contraintes dintgrit du modle, mais aussi aux rgles de gestion de lentreprise. * traabilit On peut, notamment en cas de problme important ou en cas dattaque du systme, recourir lanalyse de traces ou de logs du SGBD. Le niveau de dtail de ces traces est paramtrable, et concerne soit les aspects systme, soit rseau, soit laccs aux donnes lmentaires elles-mmes. * concurrence daccs en lecture et criture (avec une bonne granularit), * gestion (efficace) des transactions, * portabilit sur diffrents OS, des donnes et du code * administrabilit : Existence doutils dadministration gnraux : gestion des donnes, des utilisateurs, des fichiers physiques, des espaces logiques, des droits, des profils, des ressources systmes, etc. - existence doutils de surveillance En temps rel grce un moniteur, si possible graphique ou en temps diffr grce des journaux ou des traces paramtrables - possibilit dexport import : De, ou vers des fichiers texte, des logiciels bureautiques ou des fichiers gros systmes par exemple - optimisation de performances : Offrir de bonnes performances et des outils permettant de les mesurer et de les contrler via des paramtres de configuration. Des processus doptimisation en temps rel des requtes complexes sont galement souvent prsents. Les donnes peuvent tre indexes, de manire souple, dynamique et complte (index simples, concatns, multiples, tables de hashage, recherche textuelle, etc.). Un nombre important dutilisateurs, ainsi quun volume consquent de donnes peuvent tre pris en compte.2

COURS DBA ORACLE 10g Caractristiques du relationnel * modle sous jacent simple, bien formalis et prouv, * accs simple via un langage de requtes SQL * normalis : Comme dans toute norme, elle est enrichie par les diffrents fournisseurs de logiciels. Mais si lon se contraint crire des procdures respectant la norme ISO/ANSI 92 par exemple, on est quasiment garanti de pouvoir porter ce code sur Oracle, Informix ou Sybase * oprateur de projection (ou slection), restriction, produit cartsien, union, diffrence, * indpendance entre stockage physique et vision logique des donnes : Les donnes (le plus souvent des tables) sont rfrences de manire logique. Un dictionnaire de donnes permet de retrouver la correspondance avec lobjet physique dsir. Ceci est bien sr trs utile dans les environnements ouverts, et offre une grande souplesse aussi bien lors du dveloppement, que lors de la mise en production ou dans la phase de maintenance des applicatifs. La consquence est que lon pourra dplacer physiquement des donnes, par exemple les changer de serveur, renommer ou retailler un fichier sans pour autant retoucher le code des applications. Il ny a pas de correspondance bijective entre un fichier et une table. * existence de contraintes dintgrit - intgrit de domaines (contrle du type de la donne) - intgrit de relation (existence dune cl primaire : unique et toujours dfinie (non nulle)) - intgrit de rfrence (contrle de la cohrence dattributs de tables diffrentes lors des mises jour

Architectures locales et rpartiesOn peut distinguer essentiellement 3 types darchitecture globale de systmes dinformation bass sur Oracle : * architecture locale Tout est sur le mme serveur matriel, programme client et serveur de donnes Oracle * architecture client/serveur3

COURS DBA ORACLE 10g On a un programme client (un excutable) sur le poste client, dit alors client lourd. Le PC communique avec le serveur de donnes sur un serveur distant, via le rseau, et la couche Oracle Net. * architecture 3 tiers Pas de programme client. Un navigateur suffit sur le poste de travail (dit alors client lger). Il dialogue avec le serveur de donnes distant via http. Note : il existe galement des architectures n- tiers plus anecdotiques, mais

conceptuellement intressantes Exemple darchitecture 3-tiers

Bases, instances et serveurs de donnesUne base de donnes Oracle est un objet riche et complexe compos physiquement dune INSTANCE (zone mmoire partage + processus de fond) et dun certain nombre de FICHIERS PHYSIQUES, totalement indpendants du nombre de table (vrai SGBDR!). Une base de donnes peut hberger des centaines, voire des milliers, dapplications, dutilisateurs et de tables. Un ensemble de tables (et de structures de donnes connexes) fonctionnellement dpendantes et appartenant au mme utilisateur sappelle us SCHEMA (parfois un COMPTE) Oracle. Pour fixer les ides une DATABASE MySQL correspond un SCHEMA Oracle. Note : dans la pratique on confond gnralement la notion dinstance Oracle avec la notion de base de donnes Oracle. En thorie, une base de donnes peut tre partage par plusieurs instances, mais cela est assez rare. Cela permet de faire une rpartition de la charge ou dintroduire de la redondance, pour pallier des problmes ventuelle de panne de CPU4

COURS DBA ORACLE 10g

Exemple de 2 instances qui se partagent une base de donnes physique Un serveur de donnes au sens Oracle) est lensemble : instance(s) + base de donnes physique

Typologie des utilisateurs et des basesLes diffrentes catgories dutilisateurs En pratique il existe 5 catgories dutilisateurs, qui utilisent diffrents outils en fonction de leur profil et du SGBD cibl. Ceci est rsum dans le tableau suivant :

Type dutilisateur

profil

outil

ex Oracle

exemple MySQL

Utilisateur final

non informaticien

application client serveur ou web, ou progiciel, ou appli bureautique, outil daide la

Excel, appli maison, Oarcle application , B.O

appli web

5

COURS DBA ORACLE 10g

dcision client QBE (Query by Example) Bloc note, environnement de dveloppement , Atelier de dveloppement lapplication elle mme, via un accs privilgi langage SQL, console dadmin texte, console graphique, console web

utilisateur final volu

non informaticien clair

MS QUery

PHPMyAdmi n

Dveloppeur

Technicien ou ingnieur

TOAD, designer, webdb

textpad

Administrateu r application

Utilisateur final hirarchiquemen t privilgi

NA

NA

DBA

Technicien ou ingnieur

sqlplus, OEM CS ou web, TOAD,

PhpMyAdmin

Outre le moteur du SGBD lui mme, les diffrents fournisseurs proposent toute une suite de logiciels connexes permettant ces interactions, qui reprsente une part non ngligeable de leur activit. Les diffrentes catgories de base de donnes La base de donnes, linstar dun programme classique sinscrit dans un cycle de vie, et diffrentes occurrences de la base permettent de coller aux diffrentes phases du projet. On distingue principalement : * la phase de conception, qui produira le modle conceptuel et le modle logique de la base

6

COURS DBA ORACLE 10g * la phase de dveloppement, qui verra la cration et lvolution de la base de dveloppement (Base n1) * les tests, avec une base de test ou de pr production (Base n2) qui permettra outre de tester les programmes de manire approfondie, de tester la monte en charge et les performances en terme de volume de donnes, et de concurrence daccs * la phase de production / exploitation et de maintenance, avec une base de production (Base n3), initialise avec des donnes relles et dimensionne de manire adquate Le DBA sera frquemment amen transfrer des donnes dune base une autre : * de la base de dveloppement la base de Test, pour effectuer les dits tests. Un ensemble de donnes cohrentes (jeu dessai) est alors ncessaire, ce qui nest pas toujours facile obtenir vu la complexit croissante des applications et peut ncessiter des outils spcifiques dextraction de donnes * de la base de test la base de production, pour la mise en exploitation relle * de la base de production vers la base de test ou de dveloppement, pour tre sr davoir des donnes cohrentes et pertinentes (puisque relles). Ce dernier transfert de donnes est VIVEMENT dconseill, dabord parce quil manipule des volumes de donnes inutiles (la totalit des donnes relles) et ensuite car il offre dimportantes failles de scurit, les systmes de test et de dveloppement tant par dfinition moins protgs que les systmes en production Note : le passage de la base de test la base de production, ncessite de rinitialiser la base, avec les scripts SQL originaux (cration et chargement initial). Le passage au serveur rel peut savrer dlicat et contraignant (environnement matriel et logiciel diffrent).

CHAPITRE 2 -Outils utilesLogiciels utilesPour pouvoir faire les exercices, et pratiquer minima ladministration Oracle, il vous faudra installer le logiciel Oracle 10g, et crer une base par dfaut. Attention!7

COURS DBA ORACLE 10g Avant dinstaller un de ces logiciels sur votre poste, lisez trs attentivement le dbut de la doc dinstallation et notamment les prrequis matriels et logiciels. Il vous faudra suivant le cas 1GO sur disque et de 512MO 1GO de mmoire pour que le logiciel sinstalle et fonctionne. Oracle Database 10g Express Une version light ET GRATUITE dOracle pour Linux et Windows. Totalement fonctionnelle et assez peu gourmande en ressources. Donnes limites 4GO ! Sinstalle facilement, Idale pour dmarrer. Toutes les infos sur Oracle Database 10g Express et le logiciel tlcharger, sont disponibles ici : http://www.oracle.com/technology/products/database/xe/index.html Oracle Database 10gR2 Enterprise Edition La version professionnelle standard du serveur de donnes version 10gR2. Toutes les infos (et le tlchargement) sont ici : http://www.oracle.com/technology/products/database/oracle10g/index.html Oracle SQL developper v 1.2.1 Un outil de dveloppement graphique, gratuit. Il vous permet de faire du SQL, du PL/SQL, de naviguer dans la base de donnes et de produire des rapports personnaliss. Toutes les infos concernant ce produit, et le logiciel tlcharger, sont disponibles ici : http://www.oracle.com/technology/products/database/sql_developer/index.html

CHAPITRE 3 -Le 'D.B.A' ?Un Administrateur de bases de donnes ? D.B.A. = Data Base Administrator = Administrateur de bases de donnes. Il est responsable du bon fonctionnement des bases de donnes de lentreprise (bases de dveloppement, test et production).Les tches du DBA :8

COURS DBA ORACLE 10g * Installer le logiciel, faire les mises jour (patchs, changement de version du noyau mais aussi des autres produits), * Crer les bases de donnes physiques et grer lespace physique, * Grer les utilisateurs et leurs droits daccs, * Valider les schmas de donnes (cohrence, non redondance, optimisation) * crer les objets du schma : tables, index, vues, * Assurer la scurit de la base (sauvegarde, restauration, confidentialit daccs), * surveiller le systme, grer les ressources et optimiser les performances, * Faire les transferts de donnes de et vers dautres systmes, * contacter le support techniqueou Google Son travail peut tre assimil celui dun responsable systme, Oracle pouvant tre peru comme un sous systme dexploitation. Les utilisateurs dune base Oracle : * le dba lui mme * le dveloppeur dapplication * ladministrateur dapplication Lutilisateur final (normal ou infocentre / web) Les interlocuteurs du DBA : * les dveloppeurs * les administrateurs systme (unix/linux, windows, etc.) * le support technique Oracle * le support technique interne * ladministrateur scurit (sil existe) et plus rarement les utilisateurs Les privilges DBA : Un DBA pour pouvoir travailler doit possder un certain niveau de privilges9

COURS DBA ORACLE 10g * au niveau OS * au niveau de la base de donnes Ils seront dtaills dans un autre chapitre

CHAPITRE 4 -InstallationEnvironnement systme Oracle minimalAu minimum et ce quel que soit le systme dexploitation, on doit positionner le rpertoire de rfrence dOracle : ORACLE HOME DIRECTORY et le nom ou lidentificateur de linstance sur laquelle on veut travailler : SID ORACLE. Ceci est donn par 2 variables denvironnement : ORACLE_HOME et ORACLE_SID Note : Linstallation du logiciel se fait par dfaut dans un rpertoire normalis compatible avec larchitecture flexible dOracle (ORACLE FLEXIBLE ARCHITECTURE ou OFA) Sous windows : disque:\Oracle\product\\db_n Variables denvironnement systme Unix / Linux Oracle Pour vrifier les variables positionnes dans lenvironnement courant : $> env|grep ORA Pour positionner les variables denvironnement utiles : $> export ORACLE_HOME = /oracle $> export ORACLE_SID = TEST $> $ORACLE_HOME/bin/sqlplus scott/tiger Remarque : EXPORT est obligatoire si lon veut que ces variables soient aussi accessibles aux process fils du process courant, ce qui peut tre utile quand on lance une commande SHELL comme sqlplus puisque cela dclencheun process fils ! Variables denvironnement systme Windows / Oracle Lors de linstallation dOracle 10g ou 11g, la base de registre Windows est normalement mise jour et permet de se connecter la base par dfaut sans prciser de variables denvironnement.10

COURS DBA ORACLE 10g Les variables de configuration dOracle sont visibles par regedit dans la cl : HKEY_LOCAL_MACHINE / SOFTWARE / ORACLE / KEY_ On peut ventuellement positionner des variables le temps dune session : ayant la valeur de la home directory dOracle choisie lors de linstall C:>SET ORACLE_HOME = /oracle C:> SET export ORACLE_SID = TEST C:> $ORACLE_HOME/bin/sqlplus scott/tiger Note : la base de registre est normalement mise jour linstallation dOracle 10g et permet de se connecter la base par dfaut sans prciser ces variables denvironnement. Attention ! Certains outils Oracle comme emctl par exemple ont parfois besoin davoir le ORACLE_SID dfini dans lenvironnement en plus dtre dfini dans le registre dans la sous cl Oracle Rappel sur les variables denvironnement WINDOWS : Il y a les variables User connues uniquement du user courant, et les variables systmes connues de tous les utilisateurs. Les variables USER sont initialises ou consultes * automatiquement au dmarrage de ) Windows (Windows rcupre les valeurs dfinies dans la base de registre dans la cl : HKEY_CURRENT_USER / Environment * manuellement en utilisant les proprits du poste de travail (clic droit sur poste de travail / Proprits /Avances / Variables denvironnement Les variables systme peuvent tre initialises (ou consultes) de diffrentes manires * automatiquement au dmarrage de Windows (Windows rcupre les valeurs dfinies dans la base de registre dans la cl : HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Control / SessionManager / Environment * lors de linstallation de logiciels qui utilisent alors les fonctions de lAPI Windows * manuellement en utilisant les proprits du poste de travail (clic droit sur poste de travail / Proprits /Avances / Variables denvironnement

11

COURS DBA ORACLE 10g Que ce soit travers la base de registre ou via les proprits du poste de travail, les modifications sont prennes ( ie aprs un reboot) Par contre les variables qui seraient dfinies dans une fentre de commande par une commande SET (SET ORACLE_HOME=c: \oracle , par exemple ) ne durent pas au dela de la session. Autres variables utiles * le chemin dexcution (PATH) Pour plus de confort, on tendra la variable PATH courante pour accder directement aux excutables dOracle, qui se trouvent dans le sous rpertoire BIN de la HOME DIRECTORY dOracle, sans spcifier de chemin absolu. Sous Unix : $> export PATH=$PATH:$ORACLE_HOME/bin Sous Windows : C:> PATH = %PATH%;%ORACLE_HOME%BIN *lidentificateur de terminal X (DISPLAY) Sous Unix / Linux, cette variable est ncessaire pour pouvoir utiliser des outils graphiques. Linstalleur dOracle ou la console dadministration en sont des exemples vitaux! $> export DISPLAY = @IP_terminal:0.0 Note : en cas de problme vrifier / positionner les autorisations daccs au serveur X (commande xhost) et pour les distributions rcentes de Linux, vrifier que le serveur X est en mode listen !! Fichier denvironnement Unix / Linux Sous Unix, le script $ORACLE_HOME/bin/oranenv permet de positionner lenvironnement de manire semi-automatique. Il suffit de renseigner la variable ORACLE_SID et le reste est mis en place par le script. Par dfaut une valeur de ORACLE_SID est demande par le script, mme si une valeur courante est dj dfinie, sauf la la variable ORAENV_ASK est positionne NO. Autres fichiers / excutables utiles

nom

nom unix

nom windows

fonction

12

COURS DBA ORACLE 10g

SQL+

sqlplus

sqlplusw.exe sqlplus.exe oracle.exe oradim.exe

Interprteur SQL/PL standard

noyau oracle oradim

oracle

le sgbd lui mme cration dinstance le gestionnaire de serveur Oracle Net export de donnes de base a base import de donnes de base a base import de fichiers texte test de configuration Oracle Net affectation de lenvironnement gestionnaire de fichier dauthentification description des messages derreurs dmarrage de la base arrt de la base utilitaire de cration semiautomatique

Oracle Net

lsnrctl

LSNRCTL.EXE

export import loader tnsping oraenv

exp imp sqlldr tnsping oraenv

exp.exe imp.exe sqlldr.exe tnsping.exe

orapwd

orapwd

orapwd.exe

ora error startup shutdown assistant creation

oerr dbstart dbshut

dbca

dbca.bat

Installation Oracle 10gToutes les documentations officielles concernant Oracle 10g sont disponibles sur Oracle Technical Netwoirk (OTN) ici :http://www.oracle.com/pls/db102/homepage13

COURS DBA ORACLE 10gLessentiel de linstallation dOracle 10g pour Windows XP est disponible ici dans le Oracle 10g Quick installation guide for windows (format PDF) Lessentiel de linstallation dOracle 10g pour Linux est disponible ici dans le Oracle 10g Quick installation guide for windows (format PDF) Une Installation russie dOracle tient en 1 phrase: - Vrifier et respecter strictement les pr-requis matriels (disque temporaire, disque dinstallation, place pour la base crer) et logiciels (compatibilit de lOS, , librairies dynamiques et packages obligatoires). Il est donc trs important par exemple de vrifier la matrice de compatibilit fournie par Oracle, pour votre Linux et la 10g. A priori la version recommande est un advanced Application Server de Redhat. Installer sous debian, Mandrake ou FEDORA est en pratique possible mais peut savrer dlicat et ncessite une bonne matrise de Linux.

CHAPITRE 5-Outils d'administrationConsole Enterprise Manager (em)Oracle 10g est livr avec une console dadministration graphique : Oracle Enterprise Manager (OEM ou EM), accessible depuis un client lger, PC ou poste avec navigateur et TCP/IP. Le port dcoute par dfaut est 5500, ou 1158 suivant les version On peut vrifier cette information dans ORACLE_HOME/install/portlist.ini exemple dURL : http://localhost:5500/em Note : La base et le serveur Oracle Net (mme en local!) doivent tre dmarrs, avant de lancer la console. Note : lorsque la base ou le serveur Oracle Net nest pas dmarre on obtient un cran gnral dinformation dOEM, qui indique la non disponibilit de la base, mais pas de fentre de login OEM est attach une base particulire. On dit quelle fonctionne en STANDALONE, la diffrence de consoles centralises multi-bases comme Oracle Server Manager ou la GRID console. OEM utilise cependant un rfrentiel dans la base, travers 2 schmas SYSMAN et DBSNMP.

14

COURS DBA ORACLE 10g

Exemple de page daccueil de la console GRID Gestion en mode commande (Unix ou Windows) La commande emctl permet de grer la console. Elle est de la forme emctl dbconsole option = start dmarre la console = stop larrte = statusdonne son statut exemple sous Windows C:\\ORACLE10G\\BIN>emctl status dbconsole15

COURS DBA ORACLE 10gOracle Enterprise Manager 10g Database Control Release 10.1.0.2.0 Copyright (c) 1996, 2004 Oracle Corporation. All rights reserved. http://DAREDEVIL:5500/em/console/aboutApplication Oracle Enterprise Manager 10g is running. Logs are generated in directory C:\\oracleproduct10.1.0Db_1\\DAREDEVIL_ORCL\\sysman/log Gestion via les services Windows Sous Windows le service sappelle OracleDBConsole et correspond lexcutable nmssvc.exe. On peut grer ce service avec licne service du groupe Outils dadministration ou bien avec la commande NET : net start OracleOraDb10g_home1TNSListener net start OracleServiceORCL net start OracleDBConsoleorcl Note : sous XP notamment la gestion via les services peut savrer plus dlicate. On prfra plutt le mode commande

SQL pour le DBAUn certain nombre de commandes SQLPlus, voire quelques SELECT sont trs pratiques pour le travail quotidien du DBA. Ils peuvent tre lancs sous SQLPlus, ISQLPLus , ou pour les SELECT sous nimporte quel Outil client et ce quelle que soit la plate forme. SQL> consulter les tables du DBA SQL> SELECT * FROM DBA_% SQL> rechercher des informations dans le dictionnaire SQL> SELECT * FROM DICT WHERE TABLE_NAME LIKE % SQL> connatre les colonnes dune table SQL> DESCRIBE nom_table SQL> envoyer les resultats dun SELECT dans un fichier SQL> SPOOL nom_fic | OFF SQL> formater laffichage des champs LONG (DBA_VIEWS par exemple) SQL> SET LONGWIDTH n SQL> formater laffichage dune colonne tronque SQL> COL nom_col FOR An SQL> executer un script SQL ou PLSQL SQL> @nom_script_sql SQL> modifier les paramtres de la session courante SQL> ALTER SESSION SET SQL> et notammentprendre lidentit dun utilisateur SQL> ALTER SESSION SET CURRENT_SCHEMA = nom_schema SQL> vrifier les erreurs dun script ou dune procdure stocke SQL> SHOW ERRORS16

COURS DBA ORACLE 10gou SQL> SELECT * FROM USER_ERRORS SQL> vrifier le USER courant SQL> SHOW USER SQL> voir les paramtres de la base SQL> SHOW PARAMETER nom_parametre SQL> modifier les paramtres dynamiques de la base SQL> ALTER SYSTEM SET param = valeur SQL> ou ltat de la base SQL> ALTER DATABASE Lorsque le DBA veut automatiser des scripts, et les rendre dynamiques par rapport au rfrentiel il peut utiliser du SQL qui gnre du SQL (META SQL)

lOutil iSQL*PlusSQL et PL/SQL Oracle 10g propose deux langages (plus ou moins) standards pour manipuler les donnes de la base : SQL et PLSQL SQL (structured Query Language) est LE langage standard et donc normalis dinterrogation et de mise jour de tous les SGBDRs. Plus prcisment il permet de crer / modifier des structures de donnes (LDD), mais aussi de consulter / interroger, modifier, supprimer les donnes contenues dans ces structures (LMD). PL/SQL (Procedural language) PL/SQL est un langage qui intgre SQL et permet de programmer de manire procdurale. Il est spcifique Oracle. Pour SQL Server il existe par exemple un quivallent : TRANSAC SQL Globalement, avec PL/SQL on aura notre disposition un vrai langage de programmation structur : - gestion de variables, et typage avanc, - structures conditionnelles (IF / THEN / ELSE), - structures itratives (WHILE, FOR, LOOP), - gestion derreurs sophistique (EXCEPTION), PL/SQL est certes moins intuitif mais est plus puissant que le SQL. Ces 2 langages sont minemment complmentaires. Note : le code PL/SQL peut tre stock (et compil) dans la base de donnes sous forme de fonction, procdure, package ou trigger. Les interprteurs (PL)SQL dOracle Pour pouvoir utiliser ces langages, les DBAs mais aussi les dveloppeurs ont besoin dun outil client spcial : linterprteur. Cet interprteur permet : - dexcuter interactivement des ordres SQL et PL/SQL, - dexcuter des scripts SQL et PL/SQL - de personnaliser lenvironnement et formater les rsultats

17

COURS DBA ORACLE 10gSQL*Plus est linterprteur le plus simple. Il existe en mode commande sous Unix/Linus ou MSDOS, et en mode semi-graphique sous Windows. exemples de commandes : $> sqlplus SYSTEM/XYZ $> sqlplus SYSTEM/XYZ@ma_base_distante $> sqlplus /nolog $QL> connect SYS/XYZ AS SYSDBA sous Windows : Menu Dmarrer, Programmes, Orahome10g_db1/ Dveloppement dapplication / SQLPlus iSQL*Plus est le (grand) frre de SQL*Plus. Il est utilisable par un client lger, avec donc un simple navigateur sans besoin daucun environnement Oracle client. Outre le formatage automatique des sorties au format HTML, iSQL*Plus prsente le gros avantage de proposer un historique des commandes Il est dmarr sur un serveur local ou distant, et accessible en http. Le port TCP/IP standard dcoute est le 5560. exemples de commande de contrle lancement Windows : BINisqlplussvc.exe -start arrt Windows : BINisqlplussvc.exe -stop utilitaire Windows (appelle le prcdent) : BINisqlplusctl.bat URL daccs : http://mon_serveur:5560/isqlplus Rappel des ports utiliss par les outils Voir ORACLE_HOME/install/portlist.ini Par dfaut : Numro de port HTTP iSQL*Plus =5560 Port HTTP de la console Enterprise Manager (orcl) = 1158 Port du Listenet TCP/IP : 1521

CHAPITRE 6 -Cration de baseAssistant de cration dbcaUn assistant de cration de base de donnes est fourni avec Oracle 10g. Celui ci est lanc automatiquement, si on le souhaite lors de linstallation du logiciel. Cet utilitaire se trouve dans ORACLE_HOME/bin.18

COURS DBA ORACLE 10gPour le lancer : - sous Windows : Menu Dmarrer, Programmes , Oracle-OraDb10g_home1 , Configuration and Migration Tool - sous Unix / Linux : $> dbca& (Attention, un environnement Xwindows oprationnel est ncessaire) A chaque tape de la cration, Oracle propose des valeurs de paramtres par dfaut, et il est possible de court-circuiter tous les crans qui suivent en cliquant sur Terminer. Les modles Les modles de BDs ou templates, servent crer, dupliquer, voire cloner facilement des bases de donnes physiques.. Oracle fournit 3 templates prdfinis qui satisfont la plupart des cas dutilisation des BDs en entreprise. Templates pour : - des entrepts de donnes (datawarehouse), - des bases standards, - le transactionnel. Il est bien sr possible de plus de dfinir et personnaliser son propre modle. Concrtement les modles sont des fichiers XML, dextension dbc localiss dans le rpertoire ORACLE_HOME/assistants/dbca/templa. Ci-aprs un exemple dextrait de fichier pour une base standard : General_Purpose.dbc Ils contiennent essentiellement des valeurs pour : - les options de la BD, - les paramtres dinitialisation, - les attributs dallocation de fichiers et de tablespaces. Note : les templates peuvent galement contenir les fichiers de donnes et redolog de la base, dans un format compress (.dfj) ou non (.dfb) Principales options de cration Outre les templates, dbca permet de faire un certain nombre de choix importants : - le type dadministration : locale (database control) ou centralise (grid control) - le type de stockage : via le gestionnaire de fichier OS (file system) ou gr automatiquement par une instance spcifique Oracle (Automatic Storage Management / ASM) - le type de restauration : Flash Recovery ou via des archives de journaux - le jeu de caractre utilis pour le stockage des donnes

CHAPITRE 7 -DBAs et privilgesDBAs et privilges dexploitationsCertains administrateurs : les oprateurs et techniciens dexploitation, ou exploitants pour faire court, nont pas forcment besoin dun niveau de privilge DBA.19

COURS DBA ORACLE 10gLes oprations concernes sont par exemple : * les dmarrages / arrts, * les sauvegardes / restaurations, * la planification et lexcution de batch Oracle fournit 2 niveaux de privilges, qui peuvent tre assimils des niveaux de connexion, qui satisfont ces besoins : les privilges dexploitation SYSDBA et SYSOPER. Comme tout accs privilgi il sacquiert via un processus didentification / authentification. Authentification locale au niveau du systme dexploitation Cest une forme dauthentification externe, en ce sens que ce nest pas Oracle qui contrle la connexion grce son rfrentiel interne. On se connecte directement (via telnet ou ssh par exemple) au systme qui hberge le serveur de donnes, puis la base locale, sans plus faire intervenir le rseau. Ce type de connexion originale ne ncessite pas didentifiant ni de mot de passe Oracle, mais dtre un utilisateur privilgi au niveau O.S. Note : un utilisateur quelconque, non privilgi de la base, peut aussi tre dfini avec une authentification externe, et se connecter localement avec une commande du type : sqlplus / On peut dire que dans ce cas la scurit est dporte au niveau O.S. et quOracle accorde sa confiance aux mcanismes didentification / authentification de ce dernier. exemples de connexion avec le client SQL standard : connexion normale $sqlplus scott/tiger connexion avec authentification externe $sqlplus / as sysdba $sqlplus / as sysoper Pour obtenir un privilge dexploitation il suffit dappartenir au groupe utilisateur correspondant au niveau systme :

privilege gpe unix groupe windows SYSDBA oper ORA_OPER

dba

ORA_DBA SYSOPER

Ces groupes sont crs lors de linstallation, et un administrateur systme en hrite automatiquement Note : Le CONNECT INTERNAL des versions prcdentes est dfinitivement obsolte et a t remplac par le CONNECT SYS AS SYSDBA. Paralllement il nest plus possible de se connecter SYS tout court sans prciser AS SYSDBA. Authentification distante au niveau du systme dexploitation Elle prsente les mmes caractristiques que prcdemment sauf que la base est situe sur une machine distante de la connexion systme courante.20

COURS DBA ORACLE 10gLa syntaxe de connexion devient donc : $ sqlplus /@nom_base_distante AS SYSDBA (ou SYSOPER) Un paramtre dinitialisation de la base : REMOTE_OS_AUTJENTICATION=TRUE autorise cette fonctionnalit. Note importante : il est vivement conseill pour des raisons de scurit dinvalider cette possibilit. Authentification via fichier de mots de passe Dans ce cas de figure, les privilges seront contrls partir dun fichier de mot de passe crypts local. exemple de cration du fichier : $ ORAPWD FILE=monfic PASSWORD=monpasse ENTRIES=100 avec PASSWORD : le mot de passe de SYS ENTRIES : le nb mas dutilisateurs rfrencables dans le fichier. On peut ensuite crer un utilisateur TOTO avec mot de passe TUTU et que le DBA lui donne le privilge oracle (et non pas systme cette fois) ncessaire : SYSDBA ou SYSOPER : $> sqlplus / AS SYSDBA SQL> CREATE USER TOTO IDENTIFIED BY TUTU; SQL> GRANT CREATE SESSION TO TOTO (quil ait le droit de se connecter quand mme) $ GRANT SYSDBA TO TOTO (et lui donner le privilge dexploitation qui va bien) Note : le paramtre dinitialisation REMOTE_LOGIN_PASSWORDFILE doit tre EXCLUSIVE (cest le dfaut) pour pouvoir utiliser et modifier le password file

DBAs et privilges OracleUn utilisateur Oracle (dclar au sein de la base, distinguer de lutilisateur au niveau OS) peut tre DBA. Il a tous les privilges systme AU SEIN DE LA BASE, et le droit de les transmettre (ADMIN OPTION) Grace quoi, il peut essentiellement : * consulter et mettre jour (SELECT, UPDATE, INSERT, DELETE) toutes les donnes utilisateur de la base * crer, modifier des structures de donnes utilisateur (CREATE, ALTER, DROP) nimporte ou (ANY TABLESPACE) * grer des utilisateurs et des droits (CREATE/DROP USER, GRANT, REVOKE) * consulter la totalit du dictionnaire * excuter des ordres dadministration purs (CREATE DATABASE, DATAFILE, TABLESPACE) Il y a 2 utilisateurs privilgis prdfinis, SYS et SYSTEM (dont les mots de passe sont dfinis la cration de la base ou par ORAPWD) Ils sont tous les 2 DBA, mais SYS est plus privilgi en ce sens quil est propritaire des tables et des vues du dictionnaire. Il existe un ensemble de privilges (ROLE) prdfinis nomms DBA qui donne les privilges ncessaires un DBA.21

COURS DBA ORACLE 10gAprs avoir cr un utilisateur normal il suffit de lui donner ce rle pour en faire un DBA : SQL> GRANT DBA TO Note : Il existe un autre rle prdfini, parmi quelques dizaines, qui est galement intressant cest le rle SELECT_CATALOG_ROLE. Il est souvent utilis par des progiciels ou applicatifs utilisant Oracle pour rcuprer des mta-donnes. Pour plus dinfos sur les droits, rles et privilges voir les chapitres correspondants.

DBAs et privilges systmeLa fonction de DBA, ncessite des privilges au niveau Systme dexploitation : - pour linstallation, - la maintenance, - la gestion et lexcution de batchs, de scripts (SQL ou shell), - les sauvegardes / restauration Sur Unix / Linux : Il existe un user Unix nomm oracle et un groupe associ nomm dba. Tous les fichiers Oracle, appartiennent lutilisateur Oracle. On peut (doit ?) crer autant dutilisateur Unix que de DBAs dans lentreprise ; dba1, dba2, appartenant au groupe dba.Ceci permet dviter les recouvrements et davoir une meilleure traabilit. On vitera de travailler connect en tant quutilisateur oracle pour viter toute erreur de manipulation des fichiers Oracle. Note : les programmes et processus, qui constituent le cur dOracle, sexecutent en tant quoracle, et ont consquemment les droits ncessaires pour crire dans les fichiers de donnes, journaux, archives, etc. Le DBA et le super utilisateur root : lors de linstallation, il est ncessaire dcrire dans certains rpertoires protgs du systme (/etc par exemple) ou dexcuter certaines taches privilgies. Cependant linstallation se fait bien en tant quOracle, et linstalleur demande simplement le privilge root pendant la priode ncessaire ces oprations. Il excute 2 scripts autonomes root.sh et rootpre.sh, en tant que root. Il retourne ensuite en mode normal. En production les no de ports TCP/IP utiliss par Oracle 10g sont tous > 1024, et ne ncessitent donc pas de privilges particuliers. Sur Windows : Le principe est plus simple. Linstall se fait en gnral en tant quadministrateur systme.

CHAPITRE 8 -Dmarrage/arrt baseFichier dinitialisation

22

COURS DBA ORACLE 10gLors de son dmarrage, une instance Oracle lit ses paramtres dans un fichier, dit de dmarrage ou dinitialisation. Ce fichier peut tre de 2 types : - un init.ora, fichier texte simple en lecture seule - un sp file, fichier de paramtres serveur, binaire, en lecture / criture. Le fichier INIT.ORA Il est ditable avec un diteur de texte standard. Les modifications faites en son sein sont prises en compte lors du redmarrage de la base. Son contenu est de la forme suivante : # commentaire # exemple de fichier init.ora # = =(,,) ou # exemple de init.ora rfrenant simplement un spfile : # SPFILE=spfile.ora Les noms et emplacements standards de ce fichier INIT.ORA sont les suivants : sur Unix/Linux $ORACLE_HOME/dbs/init$ORACLE_SID.ora sur Windows %ORACLE_HOME%\\database\\init%PRACLE8SID%.ora Note : il existe un fichier init.ora dexemples (sample init.ora file) abondamment comments sur chaque plate-forme installe. Il se trouve sur Unix/Linux dans $ORACLE_HOME/dbs/ sur Windows dans %ORACLE_HOME%\\admin\\samplepfile Le fichier SPFILE Le fichier spfile, est aussi un fichier externe localis sur le serveur de donnes, qui contient les paramtres. Ceux ci sont persistants, cest a dire quon peut les modifier nimporte quel moment, et que ces changements resteront prennes au del du re dmarrage de la base. Ceci se fait avec la commande ALTER SYSTEM. Exemple : SQL> ALTER SYSTEM SET DB_FILES=500 SCOPE = SPFILE; On peut crer un SPFILE ex nihilo avec lassistant de cration de base de donnes dbca ou partir dun init.ora existant avec la commande CREATE SPFILE. exemple : SQL> CREATE SPFILE = FROM PFILE =

23

COURS DBA ORACLE 10gLes noms et emplacements standards de ce fichier SPFILE sont les suivants : sur Unix/Linux $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora sur Windows %ORACLE_HOME%databasespfile%ORACLE_SID%.ora Pour savoir quel SPFILE est effectivement utilis on peut faire sous SQL+ : SQL> SHOW PARAMETER SPFILE NAME TYPE VALUE

spfile

string

F:ORACLEPRODUCT10.2.0DB_2 DBSSPFILEORCL.ORA

Paramtres dinstance et de sessionLes paramtres dinitialisation Les ressources utilses par une base, essentiellement ressources mmoires, buffers, processus et fichiers sont paramtrables, et permettent dajuster son fonctionnement, voire de faire de loptimisation (tuning). Certains paramtres ont des valeurs libres (dans un domaine de valeurs, bien sr), dautres plus restrictifs sont dpendants des systmes dexploitation, ou drivs dautres paramtres. Lors de son dmarrage, une instance Oracle lit ses paramtres dans un fichier, dit de dmarrage ou dinitialisation. La totalit des paramtres dinitialisation est dcrite dans la documentation Oracle Oracle 10gR2 rfrence (attention PDF de 30MO!). Note : augmenter les ressources alloues la base en augmentant les valeurs de certains Paramtres est une bonne idejusqu un certain point. La mmoire ne peut pas,on sen doute, tre entirement dvolue la SGA Quelle que soit la base il est obligatoire de spcifier explicitement au strict minimum 2 paramtres : DB_NAME : le nom de la base de donnes CONTROL_FILES : la liste des fichiers de contrle utiliss Les autres paramtres les plus frquemment utiliss sont les suivants (S:statique, M:modifiable, D: driv dun autre paramtre)

COMPATIBLE

S

Compatibilit arrire avec les versions prcdentes (>= 9.2.0) Nom de domaine, qui associ au DB_NAME donne un nom de base uniqueNom de domaine,24

DB_DOMAIN

S

COURS DBA ORACLE 10g

qui associ au DB_NAME donne un nom de base unique Rpertoire de destination de la zone de FLASH recovery

DB_RECOVERY_FILE_DEST

M

LOG_ARCHIVE_DEST_n

M Rpertoire des fichiers REDO LOGS archivs Langue utilise (fonction de NLS_LANG dans lenvironnement Unix ou windows) le territoire (France par ex). Impacte les dates, et la monnaie

NLS_LANGUAGE

D

NLS_TERRITORY

M

OPEN_CURSORS

M nb max de cursor ouvrable par une application si 0, dimensionnement auto de la PGA, pour les proccess utilisateur server nb max de process connects Oracle (background et user) = 1,1 * PROCESSES si 0 auto dimensionnement de la SGA 0 si serveur ddi, n = nb de serveurs partags lancs au startup instance emplacement du SP File Manual | Auto, par defaut Manual indique quon utilise des Rollback segments

PGA_AGGREGATE_TARGET

M

PROCESSES

S

SESSIONS SGA_TARGET

D D

SHARED_SERVER

M

SP_FILE

S

UNDO_MANAGEMENT

S

25

COURS DBA ORACLE 10gParamtres statiques et dynamiques Certains paramtres peuvent tre modifis en temps rel, ils sont dits dynamiques, dautres seront pris en compte au prochain redmarrage de la base, ils sont dits statiques. Les paramtres dynamiques peuvent tre modifis pour la dure de la session,, pour la dure de linstance ou de manire permanente avec la commande ALTER SESSION ou ALTER SYSTEM. Voici les syntaxes : ALTER SESSION SET = ALTER SYSTEM SET = [SCOPE = MEMORY | SPFILE | BOTH] [DEFERRED] [COMMENT = ''] exemples SQL> ALTER SESSION SET NLS_LANGUAGE=FRENCH;

Informations sur les paramtres On peut utiliser les commandes SQL*Plus SHOW : SQL> SHOW PARAMETER

active_instance_count aq_tm_processes archive_lag_target asm_diskgroups asm_diskstring asm_power_limit

integer integer integer string string integer 1 F:ORACLEPRODUCT10.2.0ADMIN ORCLADUMP FALSE NONE partial26

0 0

audit_file_dest

string

audit_sys_operations audit_trail background_core_dump

boolean string string

COURS DBA ORACLE 10g

background_dump_dest

string

F:ORACLEPRODUCT10.2.0ADMIN ORCLBDUMP FALSE

backup_tape_io_slaves boolean

ou en filtrant avec un mot cl : SQL> SHOW PARAMETER AUDIT

audit_file_dest

string

F:ORACLEPRODUCT10.2.0ADMIN ORCLADUMP FALSE NONE

audit_sys_operations boolean audit_trail string

ou utiliser des vues virtuelles du dictionnaire : V$PARAMETER : les paramtres en cours dutilisation (de la session donc) V$PARAMETER2 : les mmes, mais mieux prsents V$SPPARAMETER : les paramtres du SPFILE (valable au (re)dmarrage de linstance) V$SYSTEM_PARAMETER : paramtres de linstance en cours en mmoire SQL> select a.name, a.value courante, sp.value sp_file, mem.value memoire from v$parameter a, v$spparameter sp, v$system_parameter mem where a.name=sp.name and mem.name=a.name and a.name = open_cursorsNAME COURANTE SP_FILE MEMOIRE

open_cursors

1100

1100

1100

SQL> alter system set open_cursors=1200; on modifie la valeur courante de linstance, ce qui a un impact sur la session mais ne sera plus valable au redemarrage de la base (spfile non modifi)NAME COURANTE SP_FILE MEMOIRE

open_cursors

1200

1100

1200

27

COURS DBA ORACLE 10gSQL> infos sur parametres, par defaut ou non ? SQL> SELECT NAME , VALUE, ISDEFAULT, DESCRIPTION FROM V$PARAMETER

NAMEtracefile_identifier

DESCRIPTIONtrace VALUE ISDEFAULTTRUE file custom identifier lock name space used for generating lock names for standby/clone database user processes user and system sessions maintain internal timing statistics internal os statistic gathering interval in seconds

lock_name_space

TRUE

processes

150

FALSE

sessions

170

TRUE

timed_statistics

TRUE

TRUE

timed_os_statistics

0

TRUE

SQL> combine de parametres spcifis dans le SPFILE ? SQL> SELECT count(*) FROM V$SPPARAMETER WHERE ISSPECIFIED IS TRUE COUNT(*) 23

Dmarrage dune baseEtapes pour dmarrer une base :- se connecter au serveur (niveau OS) - positionner le ORACLE_SID - lancer SQL+ sans se connecter (on se connecte quoi si la base nest pas dmarre ??28

COURS DBA ORACLE 10g$> sqlplus /nolog - saffecter les privilges SYSDBA SQL> connect /as sysdba - lancer la commande de dmarrage ou de modification adquate : SQL> STARTUP ou SQL> ALTER DATABASE Attention !!!! Sous Windows pour se connecter une base Idle (non dmarre) le Service associ doit obligatoirement tre dmarr (sans linstance bien sr ici) Dans le cas contraire, on a une erreur ERROR: ORA-12560: TNS : erreur dadaptateur de protocole exemple Unix / Linux $ sqlplus /nolog SQL> connect toto as sysdba Enter password: Connected to an idle instance. SQL> SQL> show user USER is SYS SQL> SQL> startup ORACLE instance started. Total System Global Area 285212672 bytes Fixed Size 1218992 bytes Variable Size 239076944 bytes Database Buffers 41943040 bytes Redo Buffers 2973696 bytes Base de donnees montee. Base de donnees ouverte. SQL>

La base dans tous ses tatsUne base peut se trouver dans diffrents tats, ou niveau de disponibilit qui correspondent gnralement des modes de dmarrage : - non monte (NOMOUNT) : linstance seule est dmarre. On en peut dclencher que des pseudo connexions de type SYSDBA ou SYSOPER Les oprations sont assez limites. Surtout utile (et pour cause) lors de la cration de la base. - monte (MOUNT) : linstance est lance, la base nautorise pas de transactions, ni les connexions utilisateurs normales, mais des oprations dexploitations portant gnralement sur les fichiers - ouverte (OPEN) : cest ltat classique, de la base (comme on laime) disponible tous les utilisateurs - en veille (QUIESCED) : cest un tat particulier, qui permet au DBA de travailler29

COURS DBA ORACLE 10gtranquillement, sans transactions concurrentes, mais sans avoir redmarrer la base pour la passer en accs restreint. Dans ce mode, les transactions actives sont momentanment suspendues, jusqua lveil de la base.

Les options de dmarrage :PFILE = : permet de spcifier un fichier dinitialisation autre que le dfaut, SPFILE = : permet de spcifier un fichier SPFILE autre que le dfaut, FORCE : permet de forcer un dmarrage quel que soit ltat de la base, en forant un arrt brutal puis un startup RESTRICT : dmarre la base en accs restreint seulement pour les DABS. Aucune autre connexion nest accepte. Diffre du mode veille qui autorise dautres utilisateurs, mais les faits hiberner. READ : en lecture seule (CQFD) pas dupdate, delete, insert, Quelques Exemples doption de dmarrage : # un dmarrage (trs) progressif en 3 temps : SQL> STARTUP NOMOUNT PFILE=mon_fic.ora; SQL> ALTER DATABASE MOUNT; SQL> ALTER DATABASE OPEN; # un dmarrage en comit restreint SQL> STARTUP RESTRICT Dmarrage automatique Il est bien sr utile de pouvoir dmarrer automatiquement la base lors du dmarrage (ou du reboot intempestif de la machine)

Dmarrage de la base sous WindowsSous Windows le + simple est dutiliser le gestionnaire de services du panneau de configuration pour dmarrer le service correspondant la base dsire. Le service a pour nom gnrique : OracleService Dmarrer le service dmarre normalement linstance galement mais ceci dpend en fait dun paramtre de la base de registre : Name: ORA_ORCL_AUTOSTART Type: REG_EXPAND_SZ De mme pour larrt on peut dissocier service et instance : Name: ORA_ORCL_SHUTDOWN Type: REG_EXPAND_SZ Data: FALSE Remarque : en gnral le serveur Oracle est accd via Oracle*Net en client-serveur, dans ce cas ne pas oublier de dmarrer galement le service TNSLISTENER correspondant au serveur Oracle Net.

30

COURS DBA ORACLE 10gAlternativement on peut crire un script de dmarrage (.BAT) faisant appel lutilitaire de gestion dinstance dOracle : ORADIM exemple C:\> ORADIM -STARTUP -SID ma_base dmarre uniquement linstance mais pas le service C:\> oradim -startup -sid -starttype srvc,inst dmarre le service et linstance

Dmarrage par script sous UnixOracle fournit un script shell pour le dmarrage automatique lors de la procdure de boot du systme : $ORACLE_HOME/bin/dbstart Ce script sappuie sur le fichier /etc/oratab normalement cr automatiquement linstallation (avec cration de base) ou manuellement. /etc/oratab liste les bases prsentes sur la machine, et prcise si elles doivent tre dmarres ou non. Ce fichier texte contient le ou les nom(s) de base, le ORACLE_HOME correspondant et loption de dmarrage : Y pour oui, N pour non. Une ligne a donc la forme suivante : |*::Y|N le caractre * veut dire ici toutes les bases exemple de fichier oratab gnr # /etc/oratab # # This file is used by ORACLE utilities. It is created by root.sh # and updated by the Database Configuration Assistant when creating a database. # A colon, :, is used as the field terminator. A new line terminates # the entry. Lines beginning with a pound sign, #, are comments. # Entries are of the form: $ORACLE_SID:$ORACLE_HOME:: # # The first and second fields are the system identifier and home # directory of the database respectively. The third filed indicates # to the dbstart utility that the database should , Y, or should not, # N, be brought up at system boot time. # # Multiple entries with the same $ORACLE_SID are not allowed. # TEST:/oracle/10gDB2:N # *:/oracle/10gDB2:N Note : Ce script ne doit pas tre excut interactivement.

31

COURS DBA ORACLE 10g

Dmarrage du listenerMme remarque que prcdemment : comme en gnral le serveur Oracle est accd via Oracle*Net en client-serveur, ne pas oublier de dmarrer galement le process serveur du LISTENER Oracle Net. Soit par la commande : $> lsnrctl start ou soit en positionnant le paramtre ORACLE_HOME_LISTNER= $ORACLE_HOME avant lappel de dbstart (dans ce cas dbstart dmarre les bases spcifies dans /etc/oratab ET le listener) Ou dernire possibilit $dbstart $ORACLE_HOME # le premier paramtre pass au script sert a renseigner ORACLE_HOME_LISTNER.

Dmarrage automatique sous linux / UnixOracle (et le listener sil nest pas protg par un mot de passe) peuvent tre dmarrs automatiquement comme un service. Limplantation des fichiers et les run level utils au boot dpendent des distributions. Oracle fournit un script gnrique qui fonctionne pour les principales plateformes : AIX, HP-UX, Linux. Voici les principales tapes de configuration : 1. se positionner dans le rpertoire dinitialisation qui va bien

Platform

Initialization File Directory

AIX

/etc /etc/init.d /sbin/init.d

Linux and Solaris

HP-UX

2. crer un fichier /etc/oraclectl comme suit avec les bonnes valeurs de ORACLE_HOME et de compte propritaire oracle 3. # les 2 commentaires 'chkconfig' et 'description' suivants sont OBLIGATOIRES 4. # on fournit liste_run_level priorite_start priorite_stop, ici 2,3,5 et 80 , 20 5. # chkconfig: 235 80 20 6. # description: ajout de service auto pour start/stop oracle#!/bin/bash 7. ORACLE_OWNER="oracle" 8. ORACLE_HOME="/oracle/db11a"32

COURS DBA ORACLE 10g9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. case "$1" in start) echo -n $"Starting Oracle DB:" su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" echo "OK" ;; stop) echo -n $"Stopping Oracle DB:" su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME" echo "OK" ;; *) echo $"Usage: $0 {start|stop}" esac

22. changer le groupe (dba en gnral) et les permissions du fichier 23. $> sudo chgrp dba oraclectl $> sudo chmod 750 oraclectl

24. tester le script a la main $> ./oraclectl start 25. ajouter le service oraclectl Le moyen le plus simple pour ce faire plutt que de bidouiller les rc0.d , rc1.d, rc2.d et autres liens symboliques est dutiliser la commande chkconfig qui va bien (cf paramtres mlis en commentaires en dbut du script prcdent $> sudo chkconfig --add oraclectl # ou sans utiliser les commentaires du script (on prcise explicitement les levels : $> chkconfig --level 235 oraclectl on $> #verifier :$> chkconfig -l oraclectl oraclectl 0:off 1:off 2:on 3:on 4:off 5:on 6:off $> # Verifier si ncessaire le runlevel courant $> runlevel N2

CHAPITRE 9 -architecture physiqueInstance et processusInstance ? Rappel : Une instance est caractrise par son identificateur : SID, gnralement une variable ORACLE_SID positionne dans lenvironnement.33

COURS DBA ORACLE 10gUne instance active en mmoire ce sont : - des programmes de fond, services ou processus, qui assurent la maintenance du serveur de donnes et les entres / sorties fichiers - des process server (ddis ou non un utilisateur) - une zone globale partage : la SGA, qui contient essentiellement du cache de buffers - des zones mmoires ddies aux utilisateurs : les PGAs (Private Global Area)

Schma de larchitecture gnrale en mmoire La SGA La SGA est essentiellement un cache mmoire qui contient des infos partages de la base. Voir larticle concernant les zones mmoires

Les process de fond Ils permettent de parallliser et dsynchroniser les accs multi-utilisateur la base. Nous allons lister les principaux : DBWn Database Writer Ecrit les donnes modifies, du cache de donnes de la SGA vers les fichiers de donnes. On peut en avoir plusieurs (max 20) suivant la valeur du paramtre DB_WRITER_PROCESSES LGWR Log Writer Ecrit les mises jour, du cache de LOG de la SGA vers les ou le fichier REDOLOG, suivant quon utilise des LOGs multiplexs ou non. CKPT Checkpoint Signale loccurrence dun point de reprise (flush de tous les buffers de donnes), DBWR PMON Process Monitor Libre les ressources et nettoie le cache en cas dchec dun process utilisateur SMON System Monitor Surveille les process de linstance et assure les restaurations dinstance

34

COURS DBA ORACLE 10gRECO Recoverer Gre les transactions distribues (commit 2 phases) et optionnellement : ARCn Archiver sauvegarde le REDOLOG qui vient dtre termin Dnnn Dispatcher Distribue les accs utilisateurs, vers les serveurs partags, en architecture multiplexe (Shared Server) Snnn Shared Server Process utilisateurs partag, en architecture multiplexe CJQn Coordinateur de jobs batch Jnnn Process fils ddis aux Jobs QMNn - Queue monitor gestionnaire de file dattente, pour loption Oracle Advanced QUeuing Pnnn Esclave dexcution Parallle Excution des requtes parallles. Le nb max de process est donn par : PARALLEL_MAX_SERVERS LCKn Lock monitor verrouillage des ressources utilises par plusieurs instances LMS Global cache service Gestion des ressources inter-instances en architecture cluster (RAC) Note : sous Unix/Linux ces process correspondent des process Unix, qui appartiennent lutilisateur Oracle et sexcutent de manire dconnecte (background). On peut facilement en avoir la liste avec la commande suivante : $> ps -ef |grep oracle

Sous Windows ils correspondent des services35

COURS DBA ORACLE 10g

Zones mmoireLa SGA (System Global Area) est une zone mmoire partage par tous les utilisateurs de la base, et utilise comme cache par le code Oracle pour stocker des infos partages. Elle est alloue au dmarrage de linstance et libre larrt de la base. Sa taille et ses modalits dutilisation, sont pilotes par des paramtres dinitialisation de la base. Elle contient : des donnes (lues ou crites dans le fichier de donnes) des donnes modifies journaliser des instructions SQL des meta-donnes (contenu du dictionnaire) des programmes stocks (PLSQL ou java)

Les fichiers de donnes, mais aussi les redo logs ont par exemple une zone dantmmoire spcifique en SGA : le (DATA) BUFFER CACHE et le LOG BUFFER CACHE. Des informations rsumes sur la SGA courante sont disponibles dans la vue V$SGA. Les composant de la SGA Des informations sur la taille et lutilisation des diffrents composants de la SGA sont disponibles dans la vue V$SGAINFO du dictionnaire.

36

COURS DBA ORACLE 10g

Modes de gestion de taille de la SGA Il existe deux modes de gestion de taille de la SGA, la gestion manuelle et la gestion automatique. * dans le mode manuel, cest le DBA qui analyse le fonctionnement de la base et dtermine quelle valeur affecter chacun des paramtres de taille des composants. * dans le mode automatique, cest Oracle qui calcule et ajuste automatiquement, en fonction de rgles et de rsultats statistiques, les tailles des diffrents composant de la SGA et consquemment sa taille globale. Pour passer en mode automatique le paramtre SGA_TARGET doit tre positionn une valeur diffrente de 0, et les autres paramtres ajustables automatiquement mis 0 ou une valeur minimale. Il est possible la taille cible de la SGA, grce la vue V$SGA_TARGET_SIZE ou en calculant la taille rellement utilis linstant T : SQL SELECT SUM(value) FROM v$SGA - SELECT current_size FROM V$SGA_DYNAMIC_FREE_MEMORY Paramtrage des principaux composants de la SGA Le tableau suivant montre les diffrentes zones de la SGA et les paramtres dinitialisation associs. COMPOSANT SGA PARAMETRE AJUSTABLE BUT Large pool LARGE_POOL_SIZE O Shared pool SHARED_POOL_SIZE O Java pool JAVA_POOL_SIZE O Cache de donnes DB_CACHE-SIZE (1) O Cache de redolog DB_LOG_BUFFER N Cache personalis DB_(n)K_CACHE_SIZE N

37

COURS DBA ORACLE 10g

CHAPITRE A -Oracle NetOracle NetPour que la communication puisse stablir entre un programme client et un serveur de donnes Oracle, il faut effectuer une configuration minimale. Les fichiers de configuration cot client et/ou serveur se trouvent dans le rpertoire ORACLE_HOME/network/admin Ils peuvent tre en dernier ressort dits la main (fichiers texte) mais on utilisera prfrablement les Outils Enterprise Manager ou Net Manager Le programme client doit notamment pouvoir identifier le serveur de donnes Oracle sur le rseau. Il utilise pour ce faire une rsolution de nom de serveur. Les mthodes de rsolution de nom Avec Oracle 10g, il existe 4 modes de nommage : * local : on utilise un fichier de configuration situ sur le poste client (et donc sur chaque poste client!), baptis TNSNAMES.ORA * via un annuaire : on utilise un serveur dannuaire compatible LDAP : Oracle Internet Directory par exemple * facile (easy ou EZ connect) : bas uniquement sur TCP/IP (exceptionnellement pas de couche spcifique Oracle Net ncessaire cot clientcest pour cela que cest facile) On utilise ds lors une chane de connexion explicite, qui devra prciser le serveur (machine) cible, et ventuellement le port dcoute du logiciel serveur Oracle Net, et un nom de service de donnes. Exemple : CONNECT X/Y@serveur_Z:1521/ma_base note : le port 1521 est le port par dfaut du listener Oracle Net. * externe : on utilise un service de nom externe, non Oracle mais compatible avec ce dernier (NIS, DCE) Utilitaires de configuration Graphiques : Oracle Enterprise Manager et Oracle Net Manager (client lourd) Pour accder lutilitaire de configuration, partir de la console EM, cliquer sur Processus dcoute ou listener sur la page daccueil, puis cliquer sur le lien Administration des services rseaux. Vous pouvez alors : configurer le LISTENER configurer une rsolution de nom locale (tnsnames.ora) configurer une rsolution de nom centralis par un annuaire (OID/LDAP) grer les emplacements de fichier de config du serveur

38

COURS DBA ORACLE 10glignes de commande Oracle net Listener Si le PATH et ORACLE_HOME sont correctement positionns sur Unix / Linux, il suffit de taper pour dmarrage : $> lsnrctl start arrt : $> lsnrctl stop statut : $> lsnrctl status Remarque : sur Windows il suffit dutiliser loutil de gestion des services, pour le service oracle listener Fichier de configuration client : TNSNAMES.ORA # tnsnames.ora Network Configuration File: # C:oracleproduct10.1.0Db_1networkadmintnsnames.ora # Generated by Oracle configuration tools. # lors de la cration de la base par dfaut ORCL ORCL = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = DAREDEVIL)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl) ) ) Fichier de configuration serveur : LISTENER.ORA # listener.ora Network Configuration # File: C:oracleproduct10.1.0Db_1NETWORKADMINlistener.ora # avec ajout dun Service NGORCL SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = NGORCL) (ORACLE_HOME = C:oracleproduct10.1.0Db_1) (SID_NAME = ORCL) ) ) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = DAREDEVIL)(PORT = 1521)) ) )

CHAPITRE B -Objets d'un schmaDonnes et Indexs

39

COURS DBA ORACLE 10gLes Tables Les tables sont des segments physiques. Elles contiennent les donnes utilisateur. Elles sont composes de colonnes types. Elles prsentent des contraintes dintgrite (unique, cl primaire, cl trangre, check). Dcrites dans le dictionnaire dans USER_TABLES, ALL_TABLES et DBA_TABLES. exemple SQL> CREATE TABLE salaires ( no_emp NUMBER , salaire NUMBER) TABLESPACE USERS STORAGE (INITIAL 50K NEXT 50K MINEXTENTS 1 MAXEXTENTS 25 PCTINCREASE 0) SQL> describe salaires Name Null? Type - NO_EMP NUMBER SALAIRE NUMBER on peut vrifier les caractristiques de la table dans le dictionnaire : SQL> select TABLE_NAME, TABLESPACE_NAME, INITIAL_EXTENT, NEXT_EXTENT, BLOCKS from user_tables where TABLE_NAME=SALAIRES TABLE_NAME TABLESPACE_NAME INITIAL_EXTENT NEXT_EXTENT ------------------------------------- ----------- -----SALAIRES USERS 53248 53248 BLOCKS

Il peut tre judicieux comme ici de prciser la clause STORAGE au niveau de chaque table plutt quau niveau du tablespace, les volumes pouvant tre trs diffrents dune table lautre. SQL> CREATE TABLE mini_emp (empno NUMBER CONSTRAINT pk_emp PRIMARY KEY, ename VARCHAR2(10) CONSTRAINT upper_ename CHECK (ename = UPPER(ename)), hiredate DATE DEFAULT SYSDATE, deptno NUMBER(2) CONSTRAINT fk_deptno REFERENCES scott.dept(deptno) ) on voit ici un certain nombre de contraintes dintgrit qui faciliteront les dveloppements Les clusters Les clusters sont des segments spciaux qui contiennent plusieurs tables fusionnes, suivant en gnral une colonne de jointure. On peut les voir comme des jointures physiques. rem : un certain nombre de tables du dictionnaire sont organises en cluster. Voir dba_clusters Les indexs Ce sont des acclrateurs, externes aux tables. Peuvent tre crs / dtruits tout moment. Se remplissent dynamiquement au fur et mesure des mises jour de la table indexe. Organiss en B-TREE. Description dans dba_indexes.40

COURS DBA ORACLE 10gOn peut crer autant dindex quon veut sur une table (mais il ne faut pas en abuser) Remarque : un index nest efficace que si la colonne indexe est utilise dans la clause WHERE dun SELECT !! SQL> create [unique] index i1 on t1(col1) Remarque : un index peut ne pas tre unique. Une cl primaire dans une table est reprsente sous forme dindex unique par Oracle. Toutes les informations concernant les tables (description, paramtres de stockage, contraintes, index, ) peuvent tre visualises dans la console : Onglet Administration, rubrique Schema, Table / Visualiser Table

Vues, synonymes, liens, et squencesAucun de ces objet nest un segment. Cest dire quils ne consomment pas de blocs dans les fichiers de la base. Ils sont simplement dfinis dans le dictionnaire de donnes. Les vues Une vue est une fentre sur une table. Elle ne contient pas de donnes. Stocke dans le DD sous forme de select nomm. La mise jour dune vue est en fait la mise jour de la table A TRAVERS la vue. Il ny a pas de duplication de donnes. Une vue peut porter sur plusieurs tables, ventuellement distantes ! Les vues sont dcrites dans la vue dba_views du dictionnaire de donnes. create view emp_10 as select empno numero, ename nom where deptno = 10 Lune des colonnes de dba_views est de type LONG. Si on veut visualiser la totalit des informations sous SQL*Plus, utiliser la commande SET LONG 2000 par exemple pour ne pas tronquer laffichage ! Il existe des vues paramtres qui peuvent rendre de grands services pour restreindre certains type daccs Si on veut restreindre laccs certaines priodes horaires par exemple : CREATE VIEW emp_ouvrable AS SELECT * FROM EMP WHERE TO_CHAR(SYSDATE,HH) BETWEEN 08 AND 17 en dehors de la priode 8H - 17H le predicat est faux et la vue ne renvoie aucune donnes ! Si on veut restreindre laccs a certains postes de travail : CREATE VIEW EMP_RESTREINTE AS SELECT * FROM EMP WHERE USERENV(TERMINAL) IN (PC1, PC3)41

COURS DBA ORACLE 10gSeuls les postes clients dont lidentification rseau est PC1 ou PC3 seront autoriss ! Les Synonymes Un synonyme est un nom logique (un alias) rfrenant un objet dun schma. Un synonyme peut tre priv (visible seulement dans le schma du propritaire) ou public (visibles par tous). Syntaxe : SQL> create synonym nom_syn for [propr.]objet SQL> create public synonym nom_syn for [propr.]objet Remarque: il faut possder le privilge CREATE PUBLIC SYNONYM ou tre DBA pour crer ou dtruire un synonyme public. Un synonyme public doit tre unique dans la base. Le fait que le synonyme soit public ne veut pas dire que lobjet point est accessible par tout le monde, il faut en plus donner des droits si ncessaire! exemple : SQL> CONNECT SCOTT/TIGER SQL> GRANT SELECT ON EMP TO DUPONT SQL> CONNECT DUPONT/JEAN SQL> CREATE SYNONYM EMP FOR SCOTT.EMP SQL> SELECT * FROM EMP Les liens de base de donnes (database links) Les database links sont des rfrences des comptes utilisateurs distants. Ceci permet au sein dune mme session SQL daccder diffrents objets de bases rparties sur le rseau. On peut par exemple dfinir un database link compta_bordeaux qui rfrence le schma compta qui se trouve sur la base distante localise sur le serveur de bordeaux. Ensuite on pourra accder une table ou vue distante via ce database link. Une description des database links se trouve dans la vue USER_DB_LINKS du dictionnaire. exemple SQL> CREATE DATABASE LINK compta_bordeaux CONNECT TO compta IDENTIFIED BY xyz USING la_base_de_bordeaux ; SQL> SELECT * FROM balance@compta_bordeaux ; on peut le rendre transparent grace aux synonymes SQL> CREATE SYNONYM balance FOR balance@compta_bordeaux ; SQL> SELECT * FROM balance ; Les squences Une squence est un compteur programmable stock en mmoire par Oracle et utilisable de manire partag. Il est en gnral utilis pour fournir des no de cl denregistrements. Pour crer une squence :42

COURS DBA ORACLE 10gSQL> create sequence nom_seq start with no_debut increment by saut maxvalue valeur_max cycle|nocycle cache|nocache Pour utiliser une squence : la valeur courante de la squence est donne par nom_seq.currval et la suivante par nom_seq.nextval. Exemple SQL> create sequence seq_no_cli start with 1000 increment by 100; SQL> insert into clients (no, nom) values (seq_no_cli.nextval, Martin); Pour vrifier rapidement la valeur suivre : select seq_no_cli.nexval from dual

Programmes stocksLes programmes stocks (procdures, fonctions ou packages) sont des programmes cods en PL/SQL, nomms, et stocks dans un schma de la base. Ncessite le privilge Create procedure ou create any procedure suivant quon est dans son propre schma ou dans un autre schma. Il existe des outils comme TOAD (de chez Quest Software) ou SQL*developper (Oracle) qui simplifient la vie du dveloppeur et du DBA pour la gestion de ces objets. Ces programmes stocks doivent tre valides. Dans certains cas notamment quant les objets rfrencs (tables, vues,etc) dans les programmes ont t modifis, les procdures peuvent devenir invalides. Aprs rsolution du problme, les programmes doivent tre recompils : SQL> ALTER PROCEDURE | PACKAGE | FUNCTION COMPILE

ProcduresExemple de procdure de crdit dun compte (qui prend en entre le no du compte et le montant crditer) SQL> create or replace procedure bidon is begin null; end; SQL> CREATE PROCEDURE credit (no IN NUMBER, montant IN NUMBER) AS BEGIN UPDATE compte SET solde = solde + montant WHERE no_compte= no; END; Pour excuter une procdure :43

COURS DBA ORACLE 10gSQL> execute nom_procedure (ses_parametres); ou SQL> BEGIN nom_proc (ses_parametres) END; / Attention ! pour voir le rsultat dune procdure lcran, il fuat que la sortie cran soit valide, avant de lancer son excution (sinon on ne voit rien!!!) : SQL> SET SERVEROUTPUT ON

FonctionsUne fonction est une procdure qui retourne une (ou des) valeur(s). SQL> CREATE FUNCTION lit_solde (no IN NUMBER) RETURN NUMBER IS solde NUMBER (11,2); BEGIN SELECT balance INTO solde FROM compte WHERE no_compte = no; RETURN (solde); END; no est un paramtre dentre et solde la valeur du solde du compte fournie en sortie

PackagesUn package est un ensemble encapsul de procdures et ou de fonctions, ainsi que de donnes dpendant fonctionnellement. Il est constitu de 2 parties : la spcification qui dclare les objets publics du package et le corps (body) qui dfinit ces objets. Pour crer ces 2 entits on utilisera respectivement les ordres : create package et create package body

TriggersUn trigger est un morceau de code PL/SQL, stock dans la base, dclench lors de loccurrence dun vnement particulier. Il permet notamment de synchroniser des oprations entre plusieurs tables. La plupart du temps les triggers sont dclenchs par la modification du contenu dune table. La liste des vnements dclencheurs apparat ci-aprs : Type dordre ordre dclencheur : DELETE, INSERT, UPDATE, CREATE, ALTER, DROP, SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN exemple trigger dclench lors dune insertion ou dune modification de la table client SQL> CREATE OR REPLACE TRIGGER aff_discount BEFORE INSERT OR UPDATE ON clients44

COURS DBA ORACLE 10gFOR EACH ROW WHEN (new.no_cli > 0) DECLARE evol_discount number; BEGIN evol_discount := :new.discount - :old.discount; DBMS_OUTPUT.PUT_LINE( evolution : || evol_discount); END; / FOR EACH ROW signale quune modification de 4 lignes par un seul UPDATE dclenche 4 fois le trigger. Si on ne souhaite quun seul dclenchement, on omet simplement la clause FOR EACH ROW.

CHAPITRE C -Meta donnesLes meta donnesDfinition et accs au dictionnaire Dune manire gnrale il est utile de connatre un minimum du contexte des donnes que lon souhaite consulter ou mettre jour : la liste de mes tables, les noms et types des colonnes dune de mes tables, les tables accessibles, etc. Ces donnes qui concernent les donnes, sont appeles mta-donnes (ou META DATA). Suivant les bases de donnes, on peut y avoir accs soit via une interface graphique, soit via des commandes spcifiques simples, ou + simplement encore via des SELECT si les mta donnes sont stockes dans des tables relationnelles.

Pour se faire une ide on a sur http://zqlzoo.net un aperu de laccs aux mta donnes des principaux SGBDs du march. Le dictionnaire de donnes (DD) est le rfrentiel unique qui dcrit tous les objets physiques et logiques dune base de donnes Oracle. Il est accd implicitement par le noyau Oracle et explicitement par les utilisateurs DBA ou non. Par exemple lorsque lon cre une table le noyau insre automatiquement une ligne descriptive dans la table des tables. Le dictionnaire est organis en tables et en vues, ce qui implique que son interrogation peut se faire en SQL ! Remarque : il est interdit un utilisateur mme DBA dcrire explicitement dans le dictionnaire. Contenu du dictionnaire Le dictionnaire est compos de tables appartenant SYS, et dont le nom se termine en gnral par un $ (SYS.TAB$ la table des tables, SYS.TS$ la table des tablespaces , etc.) . Pour des raisons de confort et de scurit, on naccde pratiquement jamais ces tables en direct, on passe par lintermdiaire de vues plus lisibles. Les vues les plus couramment utilises sont des vues statiques. Elles dcrivent les : tablespaces, fichiers physiques, tables, contraintes, clusters, vues, index, synonymes, procdures, fonctions, packages, triggers, utilisateurs, droits daccs, rles, profils, audits, etc Il existe galement des vues dynamiques, concernant essentiellement les ressources systme en cours dutilisation, les ressources Oracle en cours dutilisation, les sessions connectes, les verrous, etc. Cest ce quon appelle les vues et tables virtuelles. Toutes les tables et vues du dictionnaire appartiennent SYS. Elles sont consultables suivant le profil de lutilisateur.45

COURS DBA ORACLE 10gLes vues statiques Il existe 3 catgories de vues (reconnaissables par leur prfixe) : USER_XXX : dcrit les objets appartenant lutilisateur connect ALL_XXX : dcrit les objets accessibles lutilisateur connect DBA_XXX : dcrit tous les objets (vues autorises aux DBAs seulement) Chaque XXX est en gnral remplac par un nom (en anglais) significatif. Ainsi USER_TABLES est la vue de toutes MES tables, DBA_SYNONYMS est la vue de TOUS les synonymes du systme. Une (mta) description du dictionnaire est donne par la vue DICT.

CHAPITRE D -Gestion du stockageTablespaces et fichiersDe lutilit des tablespaces Un tablespace ou espace disque logique, est une partition logique de la base contenant un ou plusieurs fichiers. Un fichier appartient 1 et 1 seul tablespace. Par dfaut un tablespace la cration est ON LINE et donc accessible, il peut tre mis OFFLINE (et les fichiers quil contient par consquent) pour en interdire laccs ou pour certaines oprations de maintenance Il existe toujours deux tablespace baptiss SYSTEM et SYSAUX . - SYSTEM : contient le dictionnaire de donnes et segment dannulation SYSTEM - SYSAUX : contient les informations ncessaires aux composants et outils supplmentaires et traditionnellement on crera galement - TEMP : pour les donnes swappes sur disque lors dopration de tri ou de fusion trop volumineuses en mmoire - UNDO : pour les segments dannulation, qui stockent les images avant, lors des ROLLBACKS Outre ces tablespaces systme qui servent en quelque sorte la cuisine interne dOracle, il faudra bien tout de mme stocker quelques donnes (et indexs) Ici plusieurs stratgies sont possibles : - sparation des indexs et des datas, - sparation des diffrents domaines fonctionnels Note : Il serait possible galement de stocker les datas, les index dans ces SYSTEM ou SYSAUX. Ceci est vivement dconseill, car on aurait ainsi une base minimale peu structure. Les tablespaces sont donc utiles pour rpartir les donnes, les index, mais aussi les segments dannulations et les espaces temporaires sur plusieurs espaces logiques et disques. Ils permettent : - performance (rpartitions des accs disques),46

COURS DBA ORACLE 10g- souplesse (sparation fonctionnelle ou mtier, meilleure granularit des sauvegardes), - scurit (sparation des infos systmes des donnes utilisateurs) SQL de base pour la gestion des TBS SQL> CREATE TABLESPACE SQL> DROP TABLESPACE SQL> ALTER TABLESPACE exemples SQL> CREATE TABLESPACE COMPTA DATAFILE E:orantdatabaseTESTcompta1TEST.ora SIZE 100M; SQL> ALTER TABLESPACE COMPTA OFFLINE; SQL> ALTER TABLESPACE COMPTA ADD DATAFILE E:orantdatabaseTESTcompta2TEST.ora SIZE 100M; SQL> DROP TABLESPACE COMPTA INCLUDING CONTENTS AND DATAFILE; SQL> ALTER TABLESPACE CHARGEMENT_BATCH NOLOGGING; SQL> ALTER TABLESPACE INFOCENTRE READ ONLY; Description des tablespaces et fichiers de la base courante dans les vues DBA_TABLESPACES, DBA_DATA_FILES, DBA_FREE_SPACE du dictionnaire. SQL> SELECT TABLESPACE_NAME Nom TBS, CONTENTS Type de contenu, STATUS EN ligne?, LOGGING Journalise?, BIGFILE FROM DBA_TABLESPACES; Nom TBS Type de contenu EN ligne? Journalise? BIGFILE SYSTEM PERMANENT ONLINE LOGGING NO UNDOTBS1 UNDO ONLINE LOGGING NO SYSAUX PERMANENT ONLINE LOGGING NO TEMP TEMPORARY ONLINE NOLOGGING NO USERS PERMANENT ONLINE LOGGING NO EXAMPLE PERMANENT ONLINE LOGGING NO 6 rows selected. Tablespaces et fichiers Un tablespace contient AU MOINS un fichier. Celui-ci est cr lors de la cration du tablespace, de manire automatique par Oracle, en fonction des paramtres donns par la commande CREATE ou ALTER tablespace (emplacement du fichier, nom, taille, et mode dextension). Note : Lors de la suppression du tablespace (DROP TABLESPACE) les fichiers correspondant ne sont PAS SUPPRIMES par Oracle par dfaut. Utilisez la clause AND DATAFILE exemples SQL> Nom Tbs Nom Fic. Taille en MO AUTOEXTENSILE USERS C:ORACLEPRODUCT10.1.0ORADATAORCLUSERS01.DBF 5 YES SYSAUX C:ORACLEPRODUCT10.1.0ORADATAORCLSYSAUX01.DBF 230 YES UNDOTBS1 C:ORACLEPRODUCT10.1.0ORADATAORCLUNDOTBS01.DBF 30 YES47

COURS DBA ORACLE 10gSYSTEM C:ORACLEPRODUCT10.1.0ORADATAORCLSYSTEM01.DBF 440 YES EXAMPLE C:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF 150 NO EXAMPLE C:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE012.DBF 10 NO Extension et gestion despace des tablespaces et des fichiers La taille dun tablespace est la taille de son (ses) fichier(s) dorigine. Pour augmenter la taille dun tablespace, il y a 2 solutions : * Ajouter un fichier au tablespace, qui sera chain au premier (ALTER TABLESPACE toto ADD DATAFILE) * mettre le fichier du tablespace en AUTO extension (ALTER DATABASE DATAFILE toto.dbf AUTOEXTEND ON) Une table (et tout segment en gnral) , peut staler sur plusieurs fichiers. Ainsi le fait quune table sature un tablespace nest pas bloquant il suffit daugmenter la taille du tablespace. autoextension des fichiers ATTENTION : la clause AUTOEXTEND spcifie la taille dextension du fichier dun tablespace. La clause STORAGE INITIAL, NEXT, MINEXTENTS spcifie la taille dextension dUN SEGMENT du tablespace par exemple une table. Ces 2 paramtres sont totalement indpendants. La preuve en est quune table (un segment de donnes) est forcment en allocation dynamique alors quun fichier peut avoir une taille fixe (AUTOEXTEND OFF) Note : Le changement de mode AUTOEXTEND se fait avec la commande ALTER DATABASE pour les SMALLFILE et ALTER TABLESPACE pour les BIGFILE exemples SQL> passage en AUTO extension dun fichier de tablespace existant SQL> ALTER DATABASE DATAFILE E:orantdatabaseTESTUsr1TEST.ora AUTOEXTEND ON; SQL> ALTER DATABASE DATAFILE C:ORACLEPRODUCT10.1.0ORADATAORCLEXAMPLE01.DBF AUTOEXTEND OFF SQL> ajout dun ficheir auto extensible jusqua 100 MO SQL> ALTER TABLESPACE toto ADD DATAFILE E:orantdatabaseTESTTEST.ora SIZE 10M AUTOEXTEND ON NEXT 5M MAXSIZE 100M; extension des segments * clause LOCAL : Tablespaces grs localement (Locally managed tablespaces) Anciennement les tablespaces taient grs au niveau du dictionnaire de donnes, la gestion de lespace physique (allocation / libration de blocs) se fait dsormais dans lentte du fichier(s) du tablespace. Une table binaire dallocation (bitmap) y est maintenue. Cest le fonctionnement par dfaut (sauf pour le tablespace SYSTEM) Avantages : * pas de contention en mise jour au niveau du dictionnaire * et consquemment pas dutilisation de Rollback segment pour ces transactions * pas de soucis de gestion de lespace (calcul dun storage adquat) * coalesce automatique (fusion des espaces libres contigus pour optimiser lespace libre) Evidemment la clause DEFAULT STORAGE est invalide pour les tablespaces grs localement.

48

COURS DBA ORACLE 10g* Clause AUTOALLOCATE Cest Oracle qui gre ! * Clause UNIFORM Les extents ont tous la mme taille, par dfaut 1MO, sinon elle est prcise par le paramtre SIZE * clause STORAGE Les rgles et les statistiques dallocations sont gres au niveau du dictionnaire. Pour plus dinformations voir le chapitre sur les segments et extents changement des paramtres dun tablespace existant ALTER TABLESPACE SYSTEM DEFAULT STORAGE ( INITIAL 100K NEXT 100K MINEXTENTS 1 MAXEXTENTS 300 PCTINCREASE 1); Quelques exemples de syntaxe SQL> CREATE TABLESPACE COMPTA DATAFILE E:orantdatabaseTESTcompta1TEST.ora SIZE 100M EXTENT MANAGEMENT LOCAL AUTOALLOCATE; SQL> CREATE TABLESPACE COMPTA DATAFILE E:orantdatabaseTESTcompta1TEST.ora SIZE 100M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 500K; SQL> CREATE TABLESPACE COMPTA DATAFILE E:orantdatabaseTESTcompta1TEST.ora SIZE 100M EXTENT MANAGEMENT DICTIONARY;

Segments, extents et blocsSegments Un segment est compos dextents. Un extent est compos de blocs contigus dont la taille dpend de lOS. Le segment stend dynamiquement au sein du tablespace (ventuellement sur plusieurs fichiers donc).

Il existe plusieurs types de segments : - segment de donnes = table49

COURS DBA ORACLE 10g- segment dindex = index - segment dannulation = rollback segment, qui stocke limage avant modification des donnes - segment temporaire, utilis en interne par Oracle, si la zone mmoire de tri est insuffisante Remarque : seuls les objets physiques peuvent tre des segments. Ainsi une vue ou un synonyme nest pas un segment On peut forcer les segments de donnes et dindex simplanter dans un tablespace particulier : - explicitement la cration du segment - implicitement en affectant un tablespace par dfaut lutilisateur qui va crer le segment. SQL> create table credit (n number, ) tablespace TBS_COMPTA; ou bien SQL> create user Appli_comptable default tablespace COMPTA; SQL> create table credit (n number, ); Description dans la vue dba_segments du dictionnaire. Principe dallocation des tablespaces Allocation des Tablespaces standards Lallocation obit des rgles dfinies par une clause STORAGE. Oracle applique dabord la clause STORAGE du segment (dfinie explicitement dans un create table par exemple), sinon il utilise la clause du tablespace (dfinie explicitement lors du create tablespace), sinon il utilise les valeurs par dfaut (implicites) du tablespace. Au dpart, lors de la cration du segment (table, index ou autre) Oracle alloue MINEXTENTS extents de taille INITIAL. Ensuite, lorsque le segment se remplit, quand le(s) premier(s) extent(s) est (sont) plein(s), il alloue un extent de taille NEXT. Ensuite il augmente la taille des extents dun pourcentage fix par PCTINCREASE. La limite est dfinie par MAXEXTENTS. SQL> create table credit (n number,) storage ( initial 10K next 10K pctincrease 50 maxextents 100) ; voici ce que donne le segment aprs cration, puis 2 allocations supplmentaires : Voir dba_extents dans le dictionnaire. Allocation des Tablespaces grs localement Il y a deux types dallocation pour ces tablespaces : * SYSTEM : le DBA prcise la taille de lextent INITIAL puis Oracle dtermine au mieux la taille des extents suivants (minimum 64K) * UNIFORM : tous les extents auront la mme taille, prcise par le DBA, ou la taille par dfaut : 1MO

50

COURS DBA ORACLE 10gLa gestion de lespace libre Lorsquun tablespace est cr (et le fichier minimum associ) Il est pratiquement vide hormis lentte du fichier. Lespace libre (FREE SPACE) diminue au fur et mesure de la creation ou de laugmentation des segments dans ce tablespace et se fragmente lors de la libration de blocs (DELETE, TRUNCATE, etc). Une carte des trous est donne dans DBA_FREE_SPACE. Cette table possde une ligne par trou et la colonne BYTES donne la taille de chaque trou en octets. Pour avoir lespace libre total dun tablespace il faudra donc sommer tous les espaces libres de tous les fichiers du tablespace. SELECT SUM(BYTES)/1024 Taille en KO FROM DBA_FREE_SPACE WHERE TABLESPACE_NAME= TBS_TOTO Pour rcuprer lespace libre dun segment, on peut utiliser TRUNCATE table_toto DROP STORAGE ou ALTER TABLE table_toto DEALLOCATE UNUSED Lespace libre est dfragment de temps en temps par Oracle. En clair les espaces libres contigus sont fusionns (COALESCED). Voir DBA_FREE_SPACE_COALESCED dans le dictionnaire. On peut faire un COALESCE manuel : ALTER TABLESPACE toto COALESCE

Tablespaces spciauxIl existe diffrents types de tablespaces spciaux Tablespaces en lecture seule (READ ONLY tablespaces) Ces tablespaces sont utiliss (on sen serait dout) en lecture seule. Ils permettent de stocker des donnes statiques (ou variant trs peu souvent, ventuellement sur des CDROMS, et ne rentrent pas en ligne de compte dans les sauvegardes / restaurations. Pour modifier les donnes dun Tablespace READ ONLY il est videmment obligatoire de modifier pralablement son statut. SQL> ALTER TABLESPACE toto READ ONLY; SQL> ALTER TABLESPACE toto READ WRITE; Tablespaces temporaires (temporary tablespaces) Ces tablespaces apparus avec la 9i remplacent les segments temporaires placs prcdemment dans des tablespaces standards. On peut (et doit) crer un tablespace temporaire par dfaut autre que SYSTEM, o seront stockes toutes les donnes temporaires (utilises lors des tris, cration dindex, jointures, etc). Ils sont dfinis lors de la cration de la base : SQL> CREATE DATABASE ma_base DEFAULT TEMPORARY TABLESPACE mon_temp;51

COURS DBA ORACLE 10gou a posteriori : SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tempts2; En plus de ce tablespace temporaire par dfaut, chaque utilisateur peut se voir assigner un tablespace temporaire particulier SQL> CREATE TEMPORARY TABLESPACE mon_temp TEMPFILE /oracle/data/temp01.dbf SIZE 20M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M SQL> CREATE USER toto IDENTIFIED BY tutu DEFAULT TABLESPACE data QUOTA 100M ON data TEMPORARY TABLESPACE temp_ts Voir les vues dynamiques V$TEMP_EXTENT_MAP et V$TEMP_SPACE_HEADER pour des infos prcises sur lutilisation en temps rel de ces tablespaces. Tablespace dannulation (undo tablespaces) Les UNDO tablespaces sont exclusivement rservs au stockage de segments dimages avant modification des donnes pour des annulations ventuelles (ROLLBACK). Dans les versions prcdentes dOracle, ces structures nexistaient pas et on utilisait des ROLLBACK SEGMENTS implantables dans nimporte quel tablespace. Oracle peut dsormais fonctionner avec des UNDO tablespaces (gestion Automatique, prconise) ou avec des rollback segments (gestion manuelle) Paramtres de lINIT.ORA associs UNDO MANAGEMENT AUTO | MANUAL utiliser les UNDO tbs ou les rollback segments UNDO TABLESPACE nom tablespace prcise le tablespace dUNDO utiliser par la base UNDO_SUPPRESS_ERRORS TRUE | FALSE vite les erreurs lorsque lon tente dutiliser explicitement les Rollback Segments (ALTER ROLLBACK, SET TRANSACTION USE ROLLBACK) alors que la base utilise des UNDO tbs SQL > CREATE UNDO TABLESPACE undo_1 Ou ds la cration de la base SQL> CREATE DATABASE test UNDO TABLESPACE undo_1 DATAFILE /tmp/undo1.dbf SIZE 10M AUTOEXTEND ON Tablespaces BIGFILE Ces tablespaces comme leur nom le laisse supposer sont rservs aux bases trs volumineuses. Ils contiennent un fichier UNIQUE dont la taille peut atteindre jusqu 4 milliards de blocs, soit pour un bloc minimum de 2KO, une taille respectable de 8TO! Le type de tablespace par dfaut SMALLFILE ou BIGFILE peut tre spcifi pour toute la base la cration ou par une commande ALTER DATABASE

52

COURS DBA ORACLE 10gSQL> CREATE BIGFILE TABLESPACE gulliver DATAFILE /oracle/data/gulliver1.dbf SIZE 100GO; Note : si toutes les donnes sont sur un seul disque on aura tout intrt ce que ce dernier soit stripp

CHAPITRE E -Droits d'accsAccs aux objetsImplicitement le crateur dun objet (TABLE, VUE, INDEX, etc.) est son propritaire, et possde tous les droits dessus : consultation, mises jour, mais aussi suppression complte. GRANT et REVOKE permettent respectivement de donner ou de supprimer les droits explicites daccs en lecture ou mise jour un utilisateur particulier, pour un objet particulier. Cest en gnral le propritaire de lobjet qui peut donner des droits daccs un autre utilisateur. exemples: SQL> GRANT SELECT ON TAB_CLIENTS TO MARTIN SQL> GRANT UPDATE, INSERT ON TAB_CLIENTS TO DUPONT Un utilisateur non propritaire peut donner des droits sur un objet ne lui appartenant pas : le DBA bien sr, mais aussi un utilisateur qui a reu des droits et le droit de transfrer ce droit (GRANT OPTION) exemple : SQL> connect DBA1/DBA1 SQL> GRANT SELECT ON scott.emp TO martin; SQL> GRANT SELECT, UPDATE, INSERT ON scott.emp TO dupont WITH GRANT OPTION; SQL> CONNECT dupont/dupont SQL> GRANT UPDATE ON scott.emp TO martin; Note : GRANT OPTION est utiliser avec parcimonie Le type de privilge dpend videmment de lobjet sur lequel il sapplique. Ceci est rsum dans le tableau suivant : TABLE VUE VUE MAT. ALTER X DELETE X EXECUTE INDEX X INSERT X REFERENCES (1) X SELECT X UPDATE X ON COMMIT REFRESH X QUERY REWRITE X SEQUENCE X X X X X X X X X X X PROCEDURE X

53

COURS DBA ORACLE 10g(1) possibilit de crer une cl trangre sur la table Une erreur trs rpandue consiste rfrencer un objet (dont on nest pas proprtaire), sur lequel on a des droits et quon oublie de prfixer SQL> SELECT * from EMP donne Table or view doesnt exists !!! alors que SELECT * FROM SCOTT.EMP donne un rsultat !!!!

Les rlesIl nexiste pas de notion de groupe dutilisateur sous Oracle, mais la notion de rle, qui permet de nommer un groupe de privilges. On peut affecter un rle un ou n utilisateurs, voir un rle. Rles prdfinis Il existe un certain nombre de rles prdfinis, fournis avec Oracle 10g. Voici une liste de ces rles avec les privilges systme quils offrent : CONNECT : Se connecter ! quivalent du privilge systme CREATE SESSION Attention !!! en version 10gR1 et antrieures, ce rle donnait beaucoup + de privilges, savoir : ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK, CREATE SEQUENCE, CREATE SESSION, CREATE SYNONYM, CREATE TABLE, CREATE VIEW RESOURCE : crer des donnes avec des quotas sur tous les tablespaces -> CREATE CLUSTER, CREATE INDEXTYPE, CREATE OPERATOR, CREATE PROCEDURE, CREATE SEQUENCE, CREATE TABLE, CREATE TRIGGER, CREATE TYPE DBA : Tous les privilges systme avec ADMIN OPTION EXP_FULL_DATABASE : export complet ou incrmental -> SELECT ANY TABLE, BACKUP ANY TABLE, EXECUTE ANY PROCEDURE, EXECUTE ANY TYPE, ADMINISTER RESOURCE MANAGER, and INSERT, DELETE, and UPDATE on the tables SYS.INCVID, SYS.INCFIL, and SYS.INCEXP. Also the following roles: EXECUTE_CATALOG_ROLE and SELECT_CATALOG_ROLE. IMP_FULL_DATABASE : import full + tous les privilges systme + role DELETE_CATALOG_ROLE : droit DELETE sur la table SYS.AUD$

54

COURS DBA ORACLE 10gEXECUTE_CATALOG_ROLE : privilge EXECUTE sur les objets du dictionnaire + HS_ADMIN_ROLE. SELECT_CATALOG_ROLE : accs en consultation au dictionnaire + HS_ADMIN_ROLE. RECOVERY_CATALOG_OWNER : privilges pour le propritaire du catalogue de restauration -> CREATE SESSION, ALTER SESSION, CREATE SYNONYM, CREATE VIEW, CREATE DATABASE LINK, CREATE TABLE, CREATE CLUSTER, CREATE SEQUENCE, CREATE TRIGGER, and CREATE PROCEDURE HS_ADMIN_ROLE protection des accs (SELECT et EXECUTE) au rfrentiel HS (Heterogeneous Services) data dictionary tables (grants SELECT) and packages AQ_ADMINISTRATOR_ROLE privilges dadministration de l Advance Queuing. Notamment : ENQUEUE ANY QUEUE, DEQUEUE ANY QUEUE, et MANAGE ANY QUEUE + SELECT sur les tables AQ + EXECUTE sur les packages AQ. Rles applicatifs Des rles dfinis pour les applicatifs, en fonction des besoins et minima ! Ainsi on peut crer un rle qui donne des droits de consultation sur les tables dun schma : creation du role SQL> create role cons