Département Génie Informatique. LO51 : Administration des bases de données Oracle 10G. Ateliers



Documents pareils
Oracle : Administration

Partie 0 : Gestion des tablespace et des utilisateurs... 3

TP Contraintes - Triggers

Gestion des utilisateurs et de leurs droits

Oracle 11g - Dataguard

Notion de base de données

Auto-évaluation Oracle: cours de base

Bases de Données Avancées

Module 25 : Correction des exercices

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

INSIA SIGL Bases de données ARCHITECTURE ORACLE

Le Langage SQL version Oracle

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Création d'une nouvelle base de données

Cours Bases de données 2ème année IUT

TP11 - Administration/Tuning

3. La SGA ou System global Area

et Groupe Eyrolles, 2006, ISBN :

Module n 2 CREER UNE BASE DE DONNEES 1Z0-001

Le Langage De Description De Données(LDD)

Oracle 10g Administration +

Bases de Données relationnelles et leurs systèmes de Gestion

Secteur Tertiaire Informatique Filière étude - développement. Accueil. Apprentissage. Période en entreprise. Evaluation.

Du 10 Fév. au 14 Mars 2014

//////////////////////////////////////////////////////////////////// Administration bases de données

Chapitre III Architecture de Base de Données Oracle

1. Qu'est qu'un tablespace?

STATISTICA Version 12 : Instructions d'installation

Devoir Data WareHouse

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

et Groupe Eyrolles, 2006, ISBN :

PREPARATION AU PTI SGBD

TP Administration Oracle

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Guide d'installation et de configuration de Pervasive.SQL 7 dans un environnement réseau Microsoft Windows NT

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Oracle Developer Suite 10g. Guide de l installation. Vista & Seven

Tutorial Terminal Server sous

CHAPITRE 4 POLITIQUES DE CONTRÔLES DES ACCÈS SOUS ORACLE ADMINISTRATION ET TUNING DE BASES DE DONNÉES 10/05/2015 RESPONSABLE DR K.

Administration des Bases de Données Oracle

SQL Server Installation Center et SQL Server Management Studio

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Installation des moteurs SQL Pour Micro-SESAME

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques

INSTALLATION Advantage Database Server

Symantec Backup Exec Remote Media Agent for Linux Servers

Nœud Suisse du Projet International GBIF (Global Biodiversity Information Facility)

Administration de Base de Données Notes de cours

COMPOSANTS DE L ARCHITECTURE D UN SGBD. Chapitre 1

Bases de données et sites WEB

Administration des bases de données sous Oracle. 10g. Fabien De Marchi, Jean-Marc Petit. Université de Lyon. November 22, /96

contact@nqicorp.com - Web :

Présentation du SC101

COMPRENDRE LES DIFFERENTS TYPES DE CONNEXION LORS DE LA

INSIA Bases de données ORACLE Installation SQL*Plus SQL-Developer

420-PK6-SL Banques de données Avancées UTILISATEURS

Cours Bases de données 2ème année IUT

TUTORIEL D INSTALLATION D ORACLE ET DE SQL DEVELOPPER TUTORIEL D INSTALLATION D ORACLE...1 ET DE SQL DEVELOPPER...1

FileMaker Server 14. Guide de démarrage

Administration des bases de données. Jean-Yves Antoine

Procédure serveur : gestion des environnements X3 et bases de données ORACLE

MODE OPERATOIRE CORIM PROGRESS / SECTION MEI. Exploitation Informatique

Administration d'une base de données

Introduction aux SGBDR

Master Exploration Informatique des données DataWareHouse

Oracle Database 11g: Administration Workshop I Release 2

I/ Présentation. On considère une BD CIRQUE dont le schema conceptuel : PERSONNEL _CIRQUE (NOM, ROLE) ;

Oracle 11g Optimisez vos bases de données en production (ressources matérielles, stockage, mémoire, requêtes)

Installation FollowMe Q server

CREATION WEB DYNAMIQUE

Système Normalisé de Gestion des Bibliothèques -SYNGEB : version Réseau-

Le langage SQL (première partie) c Olivier Caron

Département Informatique de l Institut Universitaire de Technologie de l Université Bordeaux 1 Bases de Données Oracle : administration (cours)

Modélisation et Gestion des bases de données avec mysql workbench

Département Génie Informatique

Raccordement desmachines Windows 7 à SCRIBE

Administration des bases de données relationnelles Part I

Notes de cours : bases de données distribuées et repliquées

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Bases de données relationnelles

Démarrer et quitter... 13

Tutorial sur SQL Server 2000

Configurer la supervision pour une base MS SQL Server Viadéis Services

Procédure d installation :

CYCLE CERTIFIANT ADMINISTRATEUR BASES DE DONNÉES

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

1. Présentation du TP

Formateurs : Jackie DAÖN Franck DUBOIS Médiapôle de Guyancourt

Installation du client

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

Accès au Serveur de PAIE «SPV» par INTERNET Paramétrage du poste de travail «Windows»

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données

Oracle Learning Library Tutoriel Database 12c Installer le logiciel Oracle Database et créer une Database

Création et Gestion des tables

FILE MANAGEMENT. TABLESPACES TEMPORAIRES Temporaire par défaut autre que system

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Transcription:

Table des matières Page 1 Table des matières Département Génie Informatique LO51 : Administration des bases de données Oracle 10G 1. Virtualisation... 2 2. Architecture technique... 6 3. Installation Oracle client... 9 4. Installation du serveur... 11 5. Création base... 13 6. Instance... 17 7. Structure physique... 24 8. Structure logique... 29 9. Sécurité... 34 10. Tables et Contraintes... 39 11. Index, Séquences, Synonymes... 45 12. Transactions & Verrous... 47 13. Sauvegarde logique par Export... 55 14. Restauration logique par Import... 57 15. Sauvegarde logique par Datapump... 62 16. Restauration logique par Datapump... 65 17. Sauvegarde physique... 72 18. Restauration physique... 82 19. Requêtes pour le DBA... 92 Ateliers Rédacteur : Christian FISCHER 31 Mai 2008

Virtualisation Page 2 Virtualisation Page 3 1. VIRTUALISATION Schéma de principe des machines virtuelles Le numéro de machine virtuelle est déterminée par votre groupe de TP Groupe de mardi de 8h à 10h : Client Groupe 1 Groupe de vendredi de 8h à 10h : Client Groupe 2 Groupe de samedi de 8h à 10h : Client Groupe 3 Groupe de samedi de 10h à 12h : Client Groupe 4 Groupe de jeudi de 8h à 10h : Client Groupe 5 Groupe de jeudi de 10h à 11h : Client Groupe 6 Exemple du contenu du répertoire de la machine virtuelle du groupe 1 Le démarrage de la machine virtuelle s effectue à partir du programme Microsoft Virtual PC. Les machines virtuelles sont stockées dans le répertoire :

Virtualisation Page 4 Virtualisation Page 5 Ecran d accueil Pour ouvrir une session cliquer sur AltGr + Suppr Utiliser le compte LO51 et mot de passe LO51 (en majuscule) Pour démarrer la machine virtuellle Serveur Oracle, cliquer sur Démarrer. Le serveur Oracle est installé sur un système d exploitation Windows 2003 Server. Pour démarrer votre machine virtuelle, cliquer sur le fichier de paramètres Windows XP (fichier de 13ko). Cette seconde machine fonctionne sous Windows XP Pro.

Installation Oracle Client et Oracle Net Page 6 Installation Oracle Client et Oracle Net Page 7 2. ARCHITECTURE TECHNIQUE A Démarrage des machines virtuelles 1. Démarrage du serveur-oracle 1.1. Vérification de la configuration réseau à l aide d une fenêtre de commande Identification du nom de la machine : hostname Identification de l adresse IP de la machine : ipconfig ou ipconfig /all Test de l adresse IP de la machine : ping nomserveur et ping adresse_ip B Vérification du démarrage de l instance sur le serveur Oracle 1. Création d un raccourci de SQL*PLUS pour Windows Si le raccourci n existe pas sur le bureau 1.1. A l aide de l explorateur Windows, accéder au répertoire c:\oracle\product\10.2.0\serveur\bin. Sélectionner le fichier sqlplusw.exe, puis envoyer un raccourci sur le bureau Ajouter l option /nolog sur le raccourci. 1.2. Vérification des produits Oracle Installés Parcours des répertoires Consultation des groupes de programmes installés Consultation des services 2. Démarrage du serveur client de votre groupe 1.1. Vérification de la configuration réseau Identification du nom de la machine : Identification de l adresse IP de la machine : Test de l adresse IP de la machine : 1.2. Vérification des produits Oracle Installés (aucun logiciel Oracle disponible à ce stade) 3. Test de la connectivité réseau entre les deux machines Ce test doit être réalisé avec l adresse IP et le nom de la machine Ping du serveur-oracle vers le client 1.2. Vérification de la configuration du groupe Windows ORA_DBA et de l appartenance de l utilisateur LO51 a ce groupe Accéder au panneau de configuration, puis Gestion de l ordinateur. Consulter le dossier «Utilisateurs et Groupes locaux», puis ouvrir le dossier Groupes et vérifier la présence du groupe ORA_DBA. Ping du client vers le serveur-oracle 2. Démarrage manuel de l instance Démarrage de SQL*PLUS en mode nolog à l aide du raccourci 2.1. Si le groupe ORA_DBA existe et comporte l utilisateur LO51 SQL> startup 2.2. Si le groupe ORA_DBA n existe pas SQL> connect sys/manager as sysdba SQL> startup

Installation Oracle Client et Oracle Net Page 8 Installation Oracle Client et Oracle Net Page 9 3. Test de connexion sur le serveur-oracle A l aide du raccourci de SQL*Plus 1. Connexion en mode IPC à la base de données avec SQL*Plus : nom utilisateur SYSTEM, mode de passe MANAGER (pas de service réseau) SQL> connect system/manager 2. Connexion en mode réseau : nom utilisateur SYSTEM, mode de passe MANAGER et service réseau PROD SQL> connect system/manager@prod Le caractère @ est obtenu par : CTRL + ALT + @ en cas de problème lors de la seconde connexion 4. Vérification du fonctionnement du Listener Sur le serveur Oracle, dans une fenêtre de commande, exécuter les commandes suivantes ; C:>LSNRCTL C:>LSNRCTL> status Noter les services de base de données associés au listener PROD doit apparaître dans la liste 3. INSTALLATION ORACLE CLIENT A Installation d Oracle 10G Client 1. Installation du client Oracle 10G à partir du partage réseau 1.1. Démarrer le programme d'installation (setup.exe) Répertoire d installation : c:\oracle\product\10.2.0\client 1.2. Choix des options de l'installation Type d'installation : personnalisée Répertoire d'installation : valeur par défaut ou personnalisée Composants à installer : SQL*PLUS, Oracle Net, Client Java et Entreprise Manager 10G Java Console Vérification des pré-requis techniques pour les produits : vérifier le statut Succès Résumé : vérifier le nombre de nouveaux produits à installer (50) Copie des logiciels sur le disque (environ 5 à 10 minutes) 2. Assistant de configuration Oracle Net Ne pas exécuter la configuration standard Méthodes de résolution de noms : Ajouter Easy Connect Création du nom de service réseau : Service de base de données : prod Protocole : TCP Nom de serveur : server-oracle (ou adresse IP) Port : 1521 Test : OUI Nom de service : prod_server-oracle Quitter le programme d'installation Oracle Client 3. Vérification de l'installation 3.1. Vérification du groupe de programme Oracle Oracle Client10G avec la présence des programmes SQL*PLUS, des assistants NET et d'oem10g 3.2. Vérification des fichiers dans le répertoire d'installation et consultation de l'arborescence OFA 3.3. Consultation des fichiers sqlnet.ora et tnsnames.ora 3.4. Création d'un raccourci de SQL*PLUS sur le bureau. Ajouter le paramètre /nolog à la suite de l'exécutable sqlplusw.exe

Installation Oracle Client et Oracle Net Page 10 B Test de la configuration réseau d'oracle 1. Test du réseau avec l'utilitaire ping. Exécuter les commandes ci-dessous dans une fenêtre de commande en remplaçant les paramètres selon votre configuration personnelle : c:>ipconfig /all c:>ping adresse_ip_posteclient c:>ping nom_posteclient c:>ping adresse_ip_posteserveur c:>ping nom_posteserveur 2. Test du nom de service réseau avec Tnsping c> tnsping prod_server-oracle c> tnsping prod c> tnsping adresse_ip_posteserveur:1521 3. Test de la connexion avec SQL*Plus SQL> connect system/manager@prod_server-oracle SQL> connect system/manager SQL> connect system/manager@ adresse_ip_posteserveur:1521 4. Enregistrement du nom de service réseau dans OEM 10G Java Console Enregistrer le nom de service réseau dans l'arborescence de la Console Connectez-vous au serveur à l'aide du compte System/manager en mode normal Parcourer l'arborescence pour prendre connaissance des paramètres du serveur. Installation et Création de la base de données Page 11 4. INSTALLATION DU SERVEUR A Installation d Oracle 10G Serveur sur le serveur virtuel Gx (Phase 1 : Installation du logiciels) 1. Installation d Oracle Database 10G à partir du cédérom ou d'un partage réseau 1.1. Démarrer le programme d'installation (setup.exe) Répertoire d installation : c:\oracle\product\10.2.0\serveur 1.2. Choix des options de l'installation Mode d installation : Avancée (ne pas utiliser l installation de base par défaut) Type d'installation : Personnalisée Répertoire d'installation : valeur par défaut ou personnalisée sur disque D Composants à installer : Oracle 10G Database, Oracle 10G Database Control, les options de la version Entreprise Editions (sauf Label Securities, COM,.NET et Data Mining), Net Listener, Isql*Plus et tous les autres produits (Interfaces de programmation, Windows, ) Vérification des pré-requis techniques pour les produits : vérifier le statut Succès Création de la base de données : OUI Résumé : vérifier le nombre de nouveaux produits à installer (plus de 100 ) Copie des logiciels sur le disque

Installation et Création de la base de données Page 12 2. Configuration d Oracle Net 2.1. Utilisation de l assistant de configuration Oracle Net Serveur (si nécessaire démarrer l assistant de configuration Net). Ne pas exécuter la configuration standard Création d un processus d écoute : nommé LISTENER avec les valeurs par défaut. Méthodes de résolution de noms : Ajouter Easy Connect Création du nom de service réseau : Service de base de données : prod Protocole : TCP Nom de serveur : client (ou adresse IP) Port : 1521 Test : OUI : (Le test du service réseau échouera car la base de données n a pas encore été créée). Nom de service : prod_gx (x = votre numéro de groupe) Quitter l assistant de configuration Oracle Net. Installation et Création de la base de données Page 13 5. CREATION BASE A Installation d Oracle 10G Serveur sur le serveur virtuel Gx (Phase 2 : Création de la base de données) 1. Assistant de configuration de la base de données Modèle de base de données : Base de données personnalisée Nom de la base de données et de l instance : PROD Configuration avec OEM : oui + options par défaut pour la notification Mot de passe : Manager pour tous les comptes Système de stockage : système de fichiers Emplacement des fichiers : sélectionner la seconde option «Utiliser un emplacement commun pour tous les fichiers» avec le répertoire c:\oracle\oradata Consulter la définition des variables d emplacement : clic sur le bouton Options de récupération : valeur par défaut Composants de bases de données : sélectionner uniquement Oracle OLAP Composants de base de données standard : JVM et XMLDB Scripts personnalisés : aucun Paramètres d initialisation : consulter les différents onglets et conservés les valeurs proposées Stockage de base de données : modifier la taille des fichiers de journalisation à 10Mo. Consulter et conserver les autres valeurs par défaut Options de création : Créer la base de données et Générer les fichiers de scripts Confirmation : vérifier la liste des options sélectionnées Pendant les différentes phases de création de la base de données, vous pouvez consulter le répertoire de stockage des données et vérifier la création des fichiers.

Installation et Création de la base de données Page 14 Installation et Création de la base de données Page 15 2. Test d Oracle Net Utilisation de l utilitaire lsnrctl (dans une fenêtre de commande) Afficher le statut du processus listener créé, puis arrêter et redémarrer le listener. Vérifier l enregistrement dynamique de l instance. 3. Vérification de l'installation 3.1. Vérification du groupe de programme Oracle avec la présence des programmes installés 3.2. Vérification des fichiers dans le répertoire d'installation et consultation de l'arborescence Oracle Flexible Architecture 3.3. Consultation des fichiers listener.ora, sqlnet.ora et tnsnames.ora B Pour la base PROD afficher les informations suivantes en utilisant la commande SHOW PARAMETER dans SQL*Plus: 1. Démarrer SQL*Plus en mode /nolog (création d un raccourci sur le bureau de l exécutable SQLPLUSW.EXE et l ajout du paramètre /nolog) 2. Connectez-vous en SYSDBA Ou SQL> connect /@prod_gx as sysdba (x = votre numéro de groupe) 3. A l aide la commande SHOW PARAMETER vérifier la valeur des paramètres suivants : DB_NAME USER_DUMP_DEST BACKGROUND_DUMP_DEST CONTROL_FILES DB_BLOCK_SIZE SGA SGA_MAX_SIZE SGA_TARGET C Interrogation du dictionnaire de données 1. En utilisant la vue V$NLS_PARAMETERS afficher le jeu de caractères utilisé lors de la création de la base de données. SQL> 2. A l aide d une requête SQL interrogeant la vue du dictionnaire V$SGA afficher les informations relatives à la SGA. SQL>

Installation et Création de la base de données Page 16 D Création des scripts d une seconde base de données nommée TEST avec l Assistant Configuration de base de données (dbca) 1. Utiliser les spécifications suivantes pour générer les scripts de création de la base TEST à partir de l assistant de base de données. Pour les informations non personnalisées utilisez les valeurs par défaut ou optez pour les mêmes choix que pour la première base de données. Nom de la base de données : TEST Nom de l'instance : TEST Nom du fichier d'initialisation : inittest.ora (valeur par défaut) Répertoire de localisation de tous les fichiers : c:\oracle\oradata Nom des fichiers de contrôle : ctrl1test.ctrl et ctlr2test.ctl Nom du fichier de données : syst1test.dbf (taille de 250 Mo) Nom des fichiers redo log : rdo1test.log, rdo2test.log (taille de 10 Mo) Jeu de caractères : WE8ISO8859P1 Pour les tablespaces les tailles seront les suivantes : SYSAUX : 200Mo, UNDOTBS1 : 256Mo, TEMP : 100 Mo, USERS = 50Mo Les noms de fichiers et les options de stockage seront les valeurs par défaut. Gestion de l instance Page 17 6. INSTANCE A Arrêt et démarrage d une instance 1. Connecter vous sur une instance inactive avec le privilège SYSDBA SQL> shutdown immediate ; Démarrer l instance et monter la base de données SQL> startup mount ; 2. Interrogation des vues accessibles sur une base de données montée et non ouverte 2.1. Quel contenu obtenez-vous en consultant V$SGA? Quelle est la mémoire utilisée par votre serveur? 2.2. Quel contenu obtenez-vous en consultant V$PARAMETER? Existe-t-il une autre méthode pour afficher ces paramètres? 2. Visualiser les scripts générés. 2.3. Pouvez-vous consulter les vues DBA_TABLES et DBA_USERS? Justifier votre réponse. 3. Ne pas exécuter les scripts de création de la base données TEST. 3. Ouvrir la base de données SQL>alter database open ; Consulter les vues DBA_TABLES et DBA_USERS SQL> select user_id, username from dba_users ; SQL> select table_name from dba_tables where owner = SCOTT ; SQL> select table_name from dba_tables where owner = HR ; 4. Création de l application gestion des employés dans le schéma SCOTT. A partir de SQL*Plus, exécuter le script suivant : SQL> @C:\oracle\product\10.2.0\serveur\RDBMS\ADMIN\scott.sql SQL> show user Vérifier : SCOTT SQL> select * from tab; Liste des tables : EMP, DEPT, BONUS et SALGRADE

Gestion de l instance Page 18 Gestion de l instance Page 19 B Création et utilisation d un fichier d initialisation au format texte (pfile) 1. Création du fichier d initialisation en mode texte (pfile) SQL> create pfile= C:\ORACLE\admin\prod\pfile\initprod.ora from spfile; Vérifier la présence du fichier dans le répertoire : C:\ORACLE\admin\prod\pfile Exemple de contenu : 4. En modifiant la taille du bloc de données dans le fichier d initialisation, essayer de démarrer votre serveur. db_block_size = 2048 SQL> shutdown immediate ; SQL>startup pfile= C:\ORACLE\admin\prod\pfile\initprod.ora Est-ce possible? Annuler cette dernière modification. Ouvrir les deux fichiers avec le bloc notes. Vérifier la mise en forme du fichier. Fichier Texte : 2. A l aide du bloc notes, modifier le contenu du fichier pfile mise en forme avec le bloc notes en modifiant ou ajoutant les paramètres suivants : processes = 100 shared_pool_size = 80000000 db_cache_size = 30000000 log_buffer = 600000 log_checkpoint_interval = 10000 db_files = 50 Renommer le fichier initprod.ora en initprod_serveur.ora Renommer le fichier modifié en initprod.ora 3. Arrêter, puis redémarrer votre serveur en utilisant ce nouveau fichier initialisation Connectez-vous sur une instance inactive avec le privilège SYSDBA SQL>connect / as sysdba SQL> shutdown immediate ; Démarrer l instance et ouvrir la base de données SQL>startup pfile= C:\ORACLE\admin\prod\pfile\initprod.ora 4. En modifiant le nom de la base de données dans le fichier d initialisation, essayer de démarrer votre serveur : Dbname=prod8i SQL> shutdown immediate ; SQL>startup pfile= C:\ORACLE\admin\prod\pfile\initprod.ora Est-ce possible? Annuler cette dernière modification.

Gestion de l instance Page 20 Gestion de l instance Page 21 C Démarrage de l instance et ouverture de la base en mode restreint (restrict) 1. A partir de SQL*Plus /nolog, connectez-vous en administrateur de la base de données, puis exécutez les instructions suivantes. SQL> shutdown immediate; SQL> startup restrict ; 2. Ouvrir une seconde session en démarrant SQL*Plus en mode nolog. Essayez-de vous connecter avec le compte SCOTT. Quel message s affiche? Essayez-de vous connecter avec le compte SYSTEM. SQL> connect system/manager Que constatez-vous? 3. Modification du mode d accès restreint vers le mode standard. Dans la première session exécutez les instructions suivantes : SQL> alter system disable restricted session ; 4. Basculez dans la seconde session SQL*Plus et tester la connexion avec le compte SCOTT Que constatez-vous? 5. Basculez dans la première session SQL*Plus et réactiver le mode restreint. SQL> alter system enable restricted session ; 6. Dans la session de SCOTT, interroger les tables EMP et DEPT. SQL> select * from dept ; SQL> select * from emp ; Ces instructions fonctionnent-elles? Tentez une nouvelle connexion? Que constatez-vous? D Modification des paramètres dynamiques 1. A partir de SQL*Plus /nolog, connectez-vous en administrateur de la base de données, puis exécutez les instructions suivantes. SQL> shutdown immediate; SQL> startup; 2. Consultation de valeur actuelle des paramètres National Language Support SQL> show parameter nls_date NAME TYPE VALUE ------------------------------------ ----------- ---------- nls_date_format string nls_date_language string SQL> select sysdate from dual ; SYSDATE -------- 05/10/05 3. Modification de la valeur courante pour la durée de la session. SQL> alter session set nls_date_format = DD Month YYYY ; SQL> select sysdate from dual ; SYSDATE ----------------- 05 Octobre 2005 4. Modification de la valeur courante pour l instance. SQL> alter system set nls_date_format = DD DAY Month YYYY ; Que constatez-vous? Tester la commande suivante : SQ> alter system set nls_date_format = 'DD DAY Month YYYY' scope = spfile; Testez les instructions suivantes : SQL> show parameter sort_area_size NAME TYPE VALUE ------------------------------------ ----------- ----------- sort_area_size integer 65536 SQL> alter system set sort_area_size = 100000 deferred ; Vérifier la prise en compte du nouveau paramètre dans la session courante, dans une nouvelle session. Résultat dans la nouvelle session : SQL> show parameter sort_area_size NAME TYPE VALUE ------------------------------- ----------- ----------- sort_area_size integer 100000

Gestion de l instance Page 22 Gestion de l instance Page 23 5. Création d une trace utilisateur Définition des droits de modification des paramètres de session SQL> grant alter session to scott; Autorisation de privilèges (GRANT) acceptée. Activation de la trace SQL> alter session set sql_trace = true ; SQL> select * from dept; SQL> select * from emp; Desactivation de la trace SQL> alter session set sql_trace = false ; Consultation du fichier de trace généré (extrait) ===================== PARSING IN CURSOR #1 len=17 dep=0 uid=54 oct=3 lid=54 tim=3255451488 hv=1745700775 ad='208e7b4c' select * from emp END OF STMT PARSE #1:c=93750,e=175870,p=6,cr=503,cu=0,mis=1,r=0,dep=0,og=1,tim=3255451483 EXEC #1:c=0,e=25,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,tim=3255451607 FETCH #1:c=0,e=13610,p=6,cr=7,cu=0,mis=0,r=1,dep=0,og=1,tim=3255465287 FETCH #1:c=0,e=53,p=0,cr=1,cu=0,mis=0,r=13,dep=0,og=1,tim=3255466168 STAT #1 id=1 cnt=14 pid=0 pos=1 obj=51151 op='table ACCESS FULL EMP (cr=8 pr=6 pw=0 time=13594 us)' E Démarrage de l instance et ouverture de la base en lecture seule (read only) 1. A partir de SQL*Plus /nolog, connectez-vous en administrateur de la base de données, puis exécutez les instructions suivantes. SQL> shutdown immediate; SQL> startup open read only ; 2. Vérification du mode d ouverture SQL> select OPEN_MODE from v$database ; Résultat : 3. Connexion avec SCOTT et test de mise à jour des données? Ouvrir une seconde session en démarrant SQL*Plus en mode nolog. SQL> update dept set dname = Dept INFO ; Que constatez-vous? F Automatisation de la procédure de démarrage et d arrêt de l instance et de l ouverture de la base de données PROD Créer un répertoire scripts sur votre disque C ou D (selon la configuration de votre serveur), pour stocker les fichiers de commande. A partir des scripts d exemple de votre cours : 1. Ecrire une procédure à partir d un fichier de commande, prod_start.cmd qui effectue démarrage de votre instance et ouvre la base de données. 2. Ecrire une procédure à partir d un fichier de commande, prod_stop.cmd qui effectue une fermeture de la base de données et un arrêt de l instance. 3. Ecrire une procédure à partir d un fichier de commande, prod_restart.cmd qui arrête l instance, la rédémarre et ouvre la base de données. Cette dernière procédure devra utiliser l utilitaire ORADIM pour accéder aux services. Tester vos procédures

Gestion de la structure physique et logique Page 24 Gestion de la structure physique et logique Page 25 7. STRUCTURE PHYSIQUE B Gestion des fichiers de données A Identifier la structure physique de la base de données Rédiger les instructions Sql associées aux requêtes suivantes. Si nécessaire afficher la structure des vues du dictionnaire avec la commande DESC nomvue. Connectez-vous en administrateur pour tester les requêtes. 1. Liste des fichiers physiques de données permanents DBA_DATA_FILES (numéro et nom du fichier, nom du tablespace et taille du fichier en octets) composant votre base de données. Cette liste sera ordonnée par tablespace et par taille. SQL> 2. Liste des fichiers de contrôle V$CONTROLFILE et des fichiers de journalisation V$LOGFILE de votre base de données. Cette liste comportera le nom du fichier et le type du fichier (contrôle ou reprise). SQL> 3. Ecrire une requête, permettant d afficher les noms de tous les fichiers physiques d une base de données. Interroger les vues dba_data_files, dba_temp_files, v$logfile et v$controlfile. SQL> 1. Afficher la liste des fichiers données de la base de données en cours d utilisation Identifier le nombre et la localisation des fichiers existants. SQL> col name format A50 SQL> select name, status, bytes from v$datafile ; Identifier le nombre de membre par groupe et la taille en octets SQL> select group#, members, bytes from v$log ; 2. Ajout d un fichier de données au tablespace USERS 2.1. Afficher le nombre maximal de fichiers base de données gérés par l instance (de paramètre influe sur la mémoire) SQL> show parameter db_files NAME TYPE VALUE ------------------------------------ ----------- ----- db_files integer 200 2.2 Ajout d un fichier de données SQL> alter tablespace USERS add datafile 'C:\ORACLE\ORADATA\PROD\USERS02.DBF' size 10M autoextend on next 10M maxsize 100M; Vérifier la présence du fichier et son tablespace de rattachement SQL> col file_name format A50 SQL> select file_name,tablespace_name,status from dba_data_files; 3. Suppression d un fichier de données vide SQL> alter tablespace USERS drop datafile 'C:\ORACLE\ORADATA\PROD\USERS02.DBF'; Vérifier la suppression du fichier dans la structure et sur le disque. 4. Modification de la taille d un fichier de données temporaire SQL> select name, status, bytes from v$tempfile ; Augmentation de 220 Mo à 300Mo SQL> ALTER DATABASE TEMPFILE 'C:\ORACLE\ ORADATA\PROD\TEMP01.DBF' RESIZE 300M; Vérifier la nouvelle taille. Diminution à 250Mo SQL> ALTER DATABASE TEMPFILE C:\ORACLE\ ORADATA\PROD\TEMP01.DBF' RESIZE 250M;

Gestion de la structure physique et logique Page 26 Gestion de la structure physique et logique Page 27 C Multiplexage des fichiers de journalisation D Gestion des fichiers de contrôles 1. Afficher la liste des fichiers de journalisation de la base de données en cours d utilisation Identifier le nombre et la localisation des fichiers existants. SQL> col member format A50 SQL> select group#, status, member from v$logfile ; Identifier le nombre de membre par groupe et la taille en octets SQL> select group#, members, bytes from v$log ; 2. Ajout d un second membre dans chaque groupe de fichiers. SQL> ALTER DATABASE ADD LOGFILE MEMBER C:\ORACLE\ORADATA\PROD\REDO13.LOG' TO GROUP 3, C:\ORACLE\ORADATA\PROD\REDO12.LOG' TO GROUP 2, C:\ORACLE\ORADATA\PROD\REDO11.LOG' TO GROUP 1 ; Identifier le nombre et la localisation des nouveaux fichiers existants. SQL> select group#, status, member from v$logfile ; GROUP# STATUS MEMBER ---------- ------- -------------------------------------------------- 3 C:\ORACLE\ORADATA\PROD\REDO03.LOG 2 STALE C:\ORACLE\ORADATA\PROD\REDO02.LOG 1 STALE C:\ORACLE\ORADATA\PROD\REDO01.LOG 3 INVALID C:\ORACLE\ORADATA\PROD\REDO13.LOG 2 INVALID C:\ORACLE\ORADATA\PROD\REDO12.LOG 1 INVALID C:\ORACLE\ORADATA\PROD\REDO11.LOG 6 ligne(s) sélectionnée(s). 3. Réinitialisation des fichiers membres par un changement de fichier de journalisation. SQL> alter system switch logfile ; Vérifier la mise à jour du numéro de séquence SQL> select group#, sequence# from v$log; Vérifier le statut des fichiers de journalisation SQL> select group#, status, member from v$logfile ; Réitirer la séquence d instruction pour chaque groupe. SQL> alter system switch logfile ; SQL> select group#, status, member from v$logfile ; Plus aucun fichier ne doit rester en statut invalide. 1. Afficher la liste des fichiers de contrôle de la base de données en cours d utilisation SQL> select NAME from v$controlfile ; Identifier le nombre et la localisation des fichiers de contrôle existants. 2. Ajout d un quatrième fichier de contrôle 2.1. Création d un fichier d initialisation en mode texte SQL> create pfile= C:\ORACLE\admin\prod\pfile\initprod.ora from spfile; Vérifier la présence du fichier dans le répertoire : C:\ORACLE\admin\prod\pfile 2.2. Arrêt de la base de données SQL> shutdown immediate 2.3. Modification du paramètre control_files dans le fichier d initialisation créé. *.control_files= C:\ORACLEoradata\prod\control01.ctl', C:\ORACLE\ oradata\prod\control02.ctl', C:\ORACLE\ oradata\prod\control03.ctl', C:\ORACLE\oradata\prod\control04.ctl' 2.4. Copier le fichier control01.ctl dans le répertoire des fichiers de contrôle et renommer le fichier control04.ctl 3. Test de l ajout SQL> startup pfile= C:\ORACLE\admin\prod\pfile\initprod.ora SQL> select NAME from v$controlfile ; Vérifier la présence du fichier ajouté dans la liste C:\ORACLE\ORADATA\PROD\CONTROL04.CTL 4. Récréation du fichier spfile si le fichier de paramètres en mode texte est valide. SQL> create spfile from pfile= C:\ORACLE\admin\prod\pfile\initprod.ora ;

Gestion de la structure physique et logique Page 28 Gestion de la structure physique et logique Page 29 E Vérification de la structure physique avec DBVERIFY 8. STRUCTURE LOGIQUE 1. Arrêter la base de données SQL> shutdown immediate ; 2. DBVerify d un fichier de données 2.1. Ouvrir une fenêtre de commandes (ou fenêtre MS/DOS) Positionner la variable NLS_LANG pour l affichage des accents. C:\set nls_lang=french_france.we8pc850 2.2. Démarrer l utilitaire dbv avec les paramètres suivants (compléter le chemin du fichier ) : dbv file= C:\ORACLE\...\users01.dbf Vérifier l existence de blocs corrompus 2.3 Tester l utilisation du paramètre feedback=100 dbv file= C:\ORACLE\...\users01.dbf feedback=100 3. DBVerify sur un segment de données : SCOTT.DEPT Si nécessaire, utiliser SQL*Plus pour exécuter le contenu du script scott.sql pour créer le compte et les tables associées. 3.1. Ouvrir la base de données SQL> startup ; 3.2. Identifier le numéro du segment SCOTT.DEPT SQL> grant select on sys_user_segs to scott; SQL> select tablespace_id, header_file, header_block from SYS.SYS_USER_SEGS where segment_name='dept'; Noter le numéro de segment : ts.fichier.bloc = 3.3. Utilisation de DBVerify dans une fenêtre de commande : (remplacer dans la commande suivante : x.y.z par le numéro du segment). C:\>dbv userid=scott/tiger segment_id=x.y.z Vérifier l existence de blocs corrompus A Identifier la structure logique de la base de données Rédiger les instructions Sql associées aux requêtes suivantes. Si nécessaire afficher la structure des vues du dictionnaire avec la commande DESC nomvue. Connectez-vous en administrateur pour tester les requêtes. 1. Liste des tablespace DBA_TABLESPACES de votre base de données (tablespace_name, contents et status) SQL> 2. En utilisant la vue DBA_FREE_SPACE, afficher la place totale libre dans chaque tablespace (nom du tablespace et place totale libre exprimée en octets). SQL> 3. Affichage du lien entre la structure physique et la structure logique à l aide de la vue DBA_DATA_FILES (nom du fichier et nom du tablespace) SQL>

Gestion de la structure physique et logique Page 30 Gestion de la structure physique et logique Page 31 B Modification du statut des tablespaces 1. Désactivation des tablespaces permanents en mode normal SQL> select tablespace_name, status from dba_tablespaces where contents= PERMANENT ; SQL> alter tablespace USERS offline normal ; Vérification de la désactivation SQL> select tablespace_name, status from dba_tablespaces where contents= PERMANENT ; TABLESPACE_NAME STATUS --------------- --------- SYSTEM ONLINE SYSAUX ONLINE USERS OFFLINE EXAMPLE ONLINE 2. Mise en service d un tablespace désactivé SQL> alter tablespace USERS online ; Vérification de la mise en service SQL> select tablespace_name, status from dba_tablespaces where contents= PERMANENT ; 3. Désactivation des tablespaces «systèmes» Tester les instructions suivantes : SQL> alter tablespace SYSTEM offline normal ; SQL> alter tablespace SYSAUX offline normal ; SQL> alter tablespace TEMP offline normal ; Réactiver les tablespaces que vous venez de mettre hors service SQL> SQL> Vérifier la mise en service de tous les tablespaces permanents SQL> select tablespace_name, status from dba_tablespaces where contents= PERMANENT ; 4. Renommer le tablespace USERS SQL> alter tablespace USERS rename to TS_UTI ; Définissez ce nouveau tablespace comme tablespace par défaut SQL> alter database default tablespace TS_UTI ; Annuler le renommage SQL> alter tablespace TS_UTI rename to USERS; C Création et modification de tablespaces Sur votre base de données vous devez créer les tablespaces suivants 1. Rédiger les instructions SQL de création des tablespaces. Tous ces tablespaces sont autoexensibles et le mode de gestion des extensions sera local avec une gestion automatique des segments. La taille maximale de chaque fichier sera limitée à 100M. nom tablespace nom du fichier localisation taille Extension AIR_DATA Air_d1.dbf oradata/prod 10Mo 1M AIR_IND Air_i1.dbf oradata/prod 5Mo 500K SQL> SQL>

Gestion de la structure physique et logique Page 32 Gestion de la structure physique et logique Page 33 2. Créer les tablespaces avec une interface graphique A partir de la console OEM Console du client, connectez-vous à votre serveur (PROD) avec le compte SYSTEM, puis accédér au dossier Stockage. Si nécessaire ajouter votre base de données dans l arboresecence et créer le service réseau Oracle Net pour accéder à votre serveur. Exemple de connexion sur le serveur PROD203 ou à partir de OEM Database Control du serveur Récupérer les instructions SQL générées (Afficher le code SQL puis copier coller dans le bloc notes) nom tablespace nom du fichier localisation taille GESCOM_DATA gescom_d1.dbf oradata/prod 10Mo GESCOM_IND gescom_d2.dbf oradata/prod 5Mo 3. Rédiger l instruction SQL permettant d ajouter un second fichier au tablespace AIR_DATA : nom du fichier air_d2.dbf, taille de 5M, extension de 500K. SQL> D Contenu du tablespace SYSAUX 1. Affichage du contenu de SYSAUX SQL> col occupant_name format a50 SQL> select occupant_name, space_usage_kbytes from v$sysaux_occupants ; Résultat partiel OCCUPANT_NAME SPACE_USAGE_KBYTES -------------------------------------------------- ------------------ LOGMNR 6080 LOGSTDBY 896 STREAMS 512 XDB 49664 AO 21248 XSOQHIST 21248 XSAMD 15936 2. Déterminer comment migrer des objets de SYSAUX vers un autre tablespace. SQL> col occupant_name format a25 SQL> col move_procedure format a35 SQL> select occupant_name, move_procedure from v$sysaux_occupants; Résultat partiel OCCUPANT_NAME MOVE_PROCEDURE ------------------------- -------------------------------- LOGMNR SYS.DBMS_LOGMNR_D.SET_TABLESPACE LOGSTDBY SYS.DBMS_LOGSTDBY.SET_TABLESPACE STREAMS XDB XDB.DBMS_XDB.MOVEXDB_TABLESPACE AO DBMS_AW.MOVE_AWMETA XSOQHIST DBMS_XSOQ.OlapiMoveProc XSAMD DBMS_AMD.Move_OLAP_Catalog SM/AWR Par défaut toutes les tables du Logminer sont créées dans le tablespace SYSAUX. La procédure SET_TABLESPACE permet de déplacer les objets vers un autre tablespace. 3. Déplacement des objets de LOGMNR vers le tablespace USERS SQL> execute dbms_logmnr_d.set_tablespace( USERS ) ; Vérification de la place occupée en exécutant la requête SQL> select occupant_name, space_usage_kbytes from v$sysaux_occupants ; Résultat partiel OCCUPANT_NAME SPACE_USAGE_KBYTES ------------------------- ------------------ LOGMNR 0.

Gestion des Utilisateurs Page 34 Gestion des Utilisateurs Page 35 9. SECURITE A La gestion des comptes utilisateurs 1. Créer les utilisateurs en respectant les informations suivantes : nom utilisateur tablespace par défaut tablespace temporaire ADMIN SYSAUX TEMP DEVEL USERS TEMP UTIL USERS TEMP AIR AIR_DATA TEMP GESCOM GESCOM_DATA TEMP Le mot de passe est identique au nom d'utilisateur. 2. Fournir la requête Sql permettant de vérifier que les utilisateurs ont bien été créés avec leur assignation aux bons tablespaces (vue DBA_USERS). SQL> 3. A partir de SQL ou de Sécurité Manager, modifier les quotas des utilisateurs créés précédemment en utilisant les informations suivantes (pour tous les autres tablespaces conservez la valeur par défaut affichée dans Sécurité Manager): nom utilisateur quotas à assigner sur le tablespace ADMIN illimité SYSAUX 5M USERS DEVEL 2M USERS aucun SYSTEM UTIL illimité UNDOTBS1 et TEMP AIR illimité AIR_DATA et AIR_IND GESCOM illimité GESCOM_DATA et GESCOM_IND 4. Fournir la requête Sql permettant de vérifier que les utilisateurs ont bien été modifiés avec les bons quotas (DBA_TS_QUOTAS) SQL> 5. La connexion sous les comptes que vous avez créés est-elle possible? Justifiez votre réponse. B Attribution de privilèges systèmes et objets Sur la base de données PROD, vous devez définir les privilèges pour les utilisateurs créés précédemment. Pour chaque question ci-dessous, vous fournirez les instructions Sql relatives aux opérations demandées et vous indiquerez à partir de quel compte vous devez exécuter ces instructions Sql. 1. Donner la possibilité aux utilisateurs ADMIN, DEVEL, UTIL, AIR de se connecter à la base. SQL> connect system/manager SQL> Grant connect to ADMIN, DEVEL, UTIL, AIR ; 2. Donner la possibilité aux utilisateurs DEVEL, AIR de créer des tables, des vues, des synonymes. SQL> connect system/manager SQL> Grant resource to DEVEL, AIR ; 3. Dans le compte AIR, exécuter le script SQL permettant de créer les tables PILOTE, AVION et VOL et leurs index associés. SQL> connect air/air Le script crebase_air.sql correspond au modèle relationnel de l atelier Création de tables (rédiger ce script pour réaliser cet atelier) SQL> @d:\script\crebase_air.sql 4. Dans quels tablespaces ont été créées les tables? SQL> select table_name, tablespace_name from user_tables ; Dans quels tablespaces ont été créés les index? SQL> select index_name, tablespace_name from user_indexes ; 5. Donner à l'utilisateur UTIL la possibilité de consulter les tables PILOTE et AVION. SQL> connect air/air SQL> grant select on pilote to util ; SQL> grant select on avion to util ; 6. Donner à l'utilisateur UTIL la possibilité de supprimer et d'insérer des enregistrements de la table AVION. SQL> connect air/air SQL> grant delete, insert on avion to util ; 7. Donner à l'utilisateur UTIL la possibilité de mettre à jour uniquement l'adresse (colonne ADRESSE) de la table PILOTE. SQL> connect air/air SQL> grant update (adresse) on pilote to util ;

Gestion des Utilisateurs Page 36 Gestion des Utilisateurs Page 37 8. Vérifier l attribution des privilèges. SQL> connect util/util SQL> select * from all_objects where owner = AIR ; SQL> select * from air.pilote ; SQL> select * from air.avion; SQL> select * from air.vol; SQL> insert into air.avion values(23, Airbus A340, 360, Mulhouse,sysdate); SQL> delete from air.avion where numavion=23; SQL> update air.pilote set adresse= Belfort where numpilote=1; SQL> update air.pilote set nompilote= Dupont where numpilote=1; Pour chaque instruction SQL ci-dessus, justifier son exécution ou interdiction. 9. Vérifier, à partir des vues du dictionnaire, la liste des privilèges de l'utilisateur UTIL (vues USER_TAB_PRIVS et USER_COL_PRIVS). Visualiser ces privilèges dans Sécurité Manager ou OEM Database Control C AUDIT 1. Activation de l audit 1.1 Création d un nouveau fichier d initialisation texte nommé init_audit.ora par copie d un fichier existant 1.2. Ajouter le paramètre : audit_trail=true 1.3. Arrêt de l instance SQL> shutdown immediate 1.4. Redémarrage de l instance avec le fichier créé SQL> startup pfile =d:\ \pfile\init_audit.ora 2. Mise en place de l audit de connexion/déconnexion SQL> Audit session whenever successful ; SQL> Audit session whenever not successful ; 3. Tests de connexion et déconnexion dans une nouvelle session SQL*Plus 2 4. Consultation des vues d Audit. SQL> col username format a15 SQL> col userhost format a20 SQL> col dateconnexion format a20 SQL> col action_name format A20 SQL> select username,userhost,to_char(timestamp,'yymmdd HH24:MI:SS') dateconnexion,action_name from dba_audit_trail order by dateconnexion ; 5. Mise en place de l audit sur les objets du compte SCOTT SQL> Audit insert, update, delete on scott.dept by access ; SQL> Audit select on scott.dept by session ; 6. Tests d accès après l'ouverture d une nouvelle session SQL*Plus SQL> update dept set dname= Test SQL> select * from dept; SQL> rollback ;

Gestion des Utilisateurs Page 38 Gestion des Tables & Contraintes Page 39 7. Consultation des vues d Audit. SQL> col obj_name format A15 SQL> set linesize 100 select username,userhost,to_char(timestamp,'yymmdd HH24:MI:SS') dateconnexion,obj_name,action_name from dba_audit_object order by dateconnexion ; 8. Consultation des options d'audit activées SQL> select * from dba_stmt_audit_opts ; SQL> select * from dba_obj_audit_opts; 9. Désactivation de l'audit Annuler les différents audits positionnés sur votre base de données. SQL> noaudit 10. TABLES ET CONTRAINTES A partir de la base de données de la compagnie aérienne, on vous demande de rédiger les requêtes ci-dessous, puis de les tester avec Sql*Plus. Création de tables A 1. A partir du modèle relationnel suivant, rédiger le script SQL (fichier crebase_air.sql) de création des tables (uniquement avec les constraintes null ou not null). Numpilote Nompilote Adresse DateCreation DateDerMaj CV Pilote NUMBER(4) VARCHAR2(20) VARCHAR2(50) DATE TIMESTAMP CLOB Modèle Physique de Données Modèle : Compagnie Aérienne Package : Diagramme : COMPAGNIE_AERIENNE Auteur : Fischer Date : 21/08/2003 Version : 1 not null not null null not null not null null Numavion Nomavion Capacité Localisation DateMiseService Avion NUMBER(6) VARCHAR2(20) NUMBER(3) VARCHAR2(35) DATE not null not null not null null null Arrêter et redémarrer l'instance en utilisant le fichier paramètres serveur. effectue utilise Numvol Numavion Numpilote Villedep Villearr Heuredep Heurearr Vol CHAR(6) NUMBER(6) NUMBER(4) VARCHAR2(35) VARCHAR2(35) CHAR(5) CHAR(5) not null not null not null not null not null null null Exécuter votre script. Vérifier la création de vos tables. SQL> select * from tab ; SQL> select object_name, object_type from obj ; SQL> desc pilote 2. Compléter votre script en rajoutant les instructions de suppression des tables. Compléter votre script en ajoutant les ordres de création des contraintes d'intégrité de type PRIMARY KEY. Le tablespace des index est : AIR_IND Rexécuter la totalité du script 3. Vérification de la creation des objets. SQL> select * from tab; SQL> select object_name, object_type from obj ; SQL> select index_name, index_type from ind ;

Gestion des Tables & Contraintes Page 40 Gestion des Tables & Contraintes Page 41 4. Compléter votre script en ajoutant les ordres de création des contraintes d'intégrité de type FOREIGN KEY. Exécuter le script. Vérification la création des contraintes de type Primary et Foreign Key SQL> select constraint_name, constraint_type from user_constraints where constraint_type in ('P','R') 5. Modifier votre script en ajoutant les contraintes suivantes : La ville de localisation par défaut est : 'Paris' Les capacités doivent appartenir à la liste suivante : 140, 180, 200, 250, 300, 320, 360, 380, 450, 460. Reexécuter le script 6. Vérifier la création des objets 7. Exécution du script d insertion des données : insbase.sql B Modification de tables 1. Dans la table Vol, on accepte des lignes pour lesquelles le numéro de pilote peut prendre la valeur Null. SQL> ALTER TABLE Vérifier la prise en compte de votre modification en insérant un nouveau Vol. SQL> insert into vol values ('IT0056',NULL,1,'Marseille','Milan','09:20','10:35'); 2. Ajouter la colonne DateNaissance de type Date dans la table Pilote SQL> ALTER TABLE ADD 3. Modifier la largeur de colonne Localisation : augmenter cette colonne de 10 caractères. SQL> ALTER TABLE MODIFY 4. Supprimer la colonne DateNaissance dans la table Pilote : utilisez d abord le marquage de colonne, vérifier la structure modifiée, puis supprimer définitivement la colonne. SQL> ALTER TABLE DROP COLUMN

Gestion des Tables & Contraintes Page 42 Gestion des Tables & Contraintes Page 43 C Tables temporaires et IOT 1. Créer la table temporaire VOLPIL# à l aide d une requête SQL. Cette table doit contenir le numéro de vol, le nom du pilote, la ville de départ et d arrivée des pilotes résidant à Paris. Les données sont supprimées après la validation de la transaction. 2. Créer la table temporaire VOLPIL## à l aide d une requête SQL. Cette table doit contenir le numéro de vol, la ville d arrivée et l heure d arrivée des pilotes ne résidant pas à Paris. Les données sont conservées jusqu à la fin de la session. 3. Tester le remplissage des tables temporaires à partir de deux sessions différentes. 4. Exécuter la requête SQL permettant de vérifier le type de la table. SQL> select table_name, tablespace_name, temporary from user_tables; 4. Comparaison des tables régulières et des tables organisées en index 4.1. Créer la table relationnelle «régulière» COMPETENT. Cette table comprend deux colonnes : NUMPILOTE de type NUMBER(4) et NUMTYP de type CHAR(4). La clé primaire PK_COMPETENT est composée des deux colonnes. L index sera créé dans le tablespace AIR_IND. 4.2. Créer la table organisée en index COMPETENT_IOT. Cette table comprend deux colonnes : NUMPILOTE de type NUMBER(4) et NUMTYP de type CHAR(4). La clé primaire PK_COMPETENT_IOT est composée des deux colonnes. Le tablespace de la table organisée en index sera AIR_DATA 4.3. Vérifier la création des segments à l aide des deux requêtes ci-dessous : col segment_name format A20 col tablespace_name forma A20 select segment_name, segment_type, tablespace_name from user_segments where segment_name like '%COMPETENT%'; col object_name format a20 select object_name, object_type from obj where object_name like '%COMPETENT%'; D Validation et réorganisation 1. Exécuter la commande Analyze pour vérifier la validité des blocs de toutes vos tables et index associés. SQL> ANALYZE Calculer les statistiques pour toutes vos tables. SQL> ANALYZE SQL> SQL> Consulter les informations collectées à partir de la USER_TABLES. SQL> select From user_tables ; 2. Effectuer l analyse des statistiques en utilisant le package DBMS_STATS à partir du compte SYSTEM pour les schémas AIR et SCOTT. Pour identifier les procédures à utiliser dans ce package, exécuter la commande : SQL> connect system/manager SQL>DESC DBMS_STATS Effectuer une analyse par estimation à partir de la console OEM. 3. Déplacer la table PILOTE du tablespace AIR_DATA vers le tablespace USERS. 3.1. Requête de consultation : SQL> SELECTrowid, pilote.* from pilote; 3.2. Déplacement de la table avec l'utilisation de la clause MOVE SQL> ALTER TABLE 3.3. Quelle est la conséquence sur les index de cette table?q Tester la consultation de toutes les lignes de la table PILOTE, puis afficher les informations du pilote numéro 1. SQL> SQL> Constat : 3.4. Reconstruire l index PK_PILOTE, puis consulter le pilote numéro 1 SQL> ALTER INDEX SQL> SELECT * from pilote where numpilote=1 3.5. Afficher la nouvelle valeur des ROWID SQL> SELECT rowid, pilote.* from pilote;

Gestion des Tables & Contraintes Page 44 4. Réorganiser et déplacer la table PILOTE du tablespace USERS vers AIR_DATA. Le scénario est identique à l'exercice précédent, mais le déplacement nécessite l'utilisation d'une clause de stockage pour la réorganisation. SQL> ALTER TABLE MOVE STORAGE (initial 256 K) Gestion des Tables & Contraintes Page 45 11. INDEX, SEQUENCES, SYNONYMES A partir de la base de données de la compagnie aérienne, on vous demande de rédiger les requêtes ci-dessous, puis de les tester avec Sql*Plus. A Index 1. Afficher la liste des index existants à partir de la vue USER_INDEXES ou IND (nom d index, type et uniqueness) 2. Créer deux index secondaires : le premier sur le numéro de pilote et le second sur le numéro d avion de la table vol (tous les index doivent être créés dans le tablespace AIR_IND). 3. Création d un index bitmap sur la localisation dans la table avion (fonction accessible avec l option décisionnelle). 4. Re-création d un index d arbre binaire inversé sur le numéro de pilote dans la table vol. B Séquences 1. Création d'une séquence seq_pilote, pour l'attribution du numéro de pilote. Tenez compte des données déjà présentes dans la table. Insérer un nouveau pilote en utilisant la séquence. 2. Afficher la liste des séquences (vue SEQ ou USER_SEQUENCES)

Gestion des Tables & Contraintes Page 46 C Synonymes 1. Création d'un synonyme pour AIR.Pilote par SCOTT. 1.1. Se connecter sous le compte de Scott 1.2. Créer le synonyme et tester l accès au synonyme. 1.3. Se connecter sur AIR et accorder le droit de consultation à l utilisateur SCOTT. 1.4. Se connecter sous Scott et retester l accès au synonyme. 2. Création d'un synonyme Public pour la table AIR.VOL à partir du compte SYSTEM/MANAGER. 3. Afficher la liste des synonymes (vue SYN ou USER_SYNONYMS) Sauvegarde et restauration logique Page 47 12. TRANSACTIONS & VERROUS A Gestion des exclusions mutuelles «deadlocks» 1. Ouvrir une première session en vous connectant avec Sql*Plus sous le compte SCOTT Exécutez l instruction SQL suivante : SQL> update dept set dname= DSI-DBA where deptno=40 ; 2. Ouvrir une deuxième session en vous connectant avec Sql*Plus sous le compte SCOTT Exécutez l instruction SQL suivante : SQL> update emp set ename= Fischer where empno=7900 ; 3. Ouvrir une troisième sesssion sous le compte SYSTEM, visualiser les verrous positionnés en exécutant la requête suivante : SQL> connect system/manager SQL> select * from v$lock ; 4. Dans la session 1, exécutez l instruction SQL suivante : SQL> update emp set ename= Fischer C. where empno=7900 ; 5. Dans la session 2, exécutez l instruction SQL suivante : SQL> update dept set dname= DSI-NET where deptno=40 ; 5. Que constatez-vous dans la session 1? Une erreur a été détectée : ORA-00060: Détection d'interblocage pendant l'attente d'une ressource. L erreur ORA-00060 indique qu Oracle a détecté que les deux sessions s atendent mutuellement. Il a donc annulé le dernier ordre pour éviter de créer une situation de Deadlock. 6. Dans la troisième sesssion visualiser les verrous positionnés en exécutant la requête suivante : SQL> select * from v$lock ; 7. Libérer tous vos verrous en annulant les transactions en cours dans la session 1 SQL> Rollback ;

Sauvegarde et restauration logique Page 48 Sauvegarde et restauration logique Page 49 B Concurrence d accès et verrouillage 1. Ouvrir une première session en vous connectant avec Sql*Plus sous le compte SCOTT Exécutez l instruction SQL suivante : SQL> update dept set dname= DSI-DBA where deptno=10 ; 2. Ouvrir une deuxième session en vous connectant avec Sql*Plus sous le compte SCOTT Exécutez l instruction SQL suivante : SQL> select * from dept ; Que constatez-vous? Les mises à jour ne bloquent pas les lectures et inversement. Les mises à jour non validées par la session 1 ne sont pas visibles par la session 2 (lecture cohérente) 3. Dans la seconde session, exécutez l instruction SQL suivante : SQL> update dept set dname= DSI-NET where deptno=20 ; Que constatez-vous? Le verrouillage se faisant au niveau de la ligne les deux transactions ne sont pas concurrentes. Valider la transaction en cours SQL> Commit ; 4. Dans la seconde session, exécutez l instruction SQL suivante : SQL> update dept set dname= DSI-DBA Oracle where deptno=10 ; Que constatez-vous? Les deux transactions sont concurrentes. La seconde session se met en attente 5. Dans la première session, valider la transaction en cours : SQL> Commit ; Que constatez-vous dans la seconde? Le commit ayant libéré le verrou sur la ligne, la seconde transaction pose un verrou et effectue la mise à jour. Annuler la transaction dans la seconde session : SQL> Rollback ; 6. Dans la première session exécutez l instruction SQL suivante : SQL> select * from dept where deptno=10 for update of loc; 7. Dans la seconde session, exécutez l instruction SQL suivante : SQL> update dept set dname= DSI-DBA Oracle where deptno=10 ; Que constatez-vous? Les deux transactions sont concurrentes (mise à jour de la même ligne). La seconde session se met en attente de la libération de verrou. 8. Dans les deux sessions annuler les transactions en cours : SQL> Rollback ; 9. Dans la première session exécutez l instruction SQL suivante : SQL> select * from dept where deptno=10 for update of loc; 10. Dans la seconde session, exécutez l instruction SQL suivante : SQL> lock table dept in exclusive mode nowait ; Que constatez-vous? Une ERREUR Oracle est générée : ORA-00054: Ressource occupée et acquisition avec NOWAIT (pas d'attente) spécifiée. Les deux transactions sont concurrentes (incompatibilité de verrou). La seconde session ne se met pas en attente de la libération de verrou à cause de l option NOWAIT. 11. Dans les deux sessions annuler les transactions en cours : SQL> Rollback ;

Sauvegarde et restauration logique Page 50 C Sur la base de données TEST, vous devez surveiller la charge transactionnelle de votre base et en particulier détecter et annuler les verrous bloquants. Quelles sont les instructions valides pour valider une transaction? Validate transaction Validate work Terminate transaction Terminate work Commit transaction Commit work Quelles sont les instructions valides pour annuler une transaction? Abort transaction Abort work Rollback transaction Rollback work Delete transaction Delete work Contexte applicatif 1 : Vous disposez de deux transactions qui effectuent les opérations suivantes sur votre base de données. Transaction 1 : Elle effectue une sélection sur la table des clients, des commandes et détails de commandes Transaction 2 : Elle met à jour la table des produits, consulte la table des fournisseurs et des détails de commandes. Les deux transactions sont-elles concurrentes? Jamais Toujours Parfois Quels sont les verrous posés par Oracle? Clients : Aucun Verrou sur la table Verrou sur les lignes accédées Cdes : Aucun Verrou sur la table Verrou sur les lignes accédées Dcdes : Aucun Verrou sur la table Verrou sur les lignes accédées Prod : Aucun Verrou sur la table Verrou sur les lignes accédées Four : Aucun Verrou sur la table Verrou sur les lignes accédées Sauvegarde et restauration logique Page 51 Contexte applicatif 2 : Vous disposez de deux transactions qui effectuent les opérations suivantes sur votre base de données. Transaction 1 : Elle effectue une sélection sur la table des clients, des commandes et détails de commandes Transaction 2 : Elle met à jour la table des clients, des commandes et détails de commandes. Les deux transactions sont-elles concurrentes? Jamais Toujours Parfois Quels sont les verrous posés par Oracle? Clients : Aucun Verrou sur la table Verrou sur les lignes accédées Cdes : Aucun Verrou sur la table Verrou sur les lignes accédées Dcdes : Aucun Verrou sur la table Verrou sur les lignes accédées Contexte applicatif 3 : Vous disposez de deux transactions qui effectuent les opérations suivantes sur votre base de données. Transaction 1 : Elle met à jour la table des clients, des commandes et détails de commandes Transaction 2 : Elle met à jour la table des clients, des commandes et détails de commandes. Les deux transactions sont-elles concurrentes? Jamais Toujours Parfois Quels sont les verrous posés par Oracle? Clients : Aucun Verrou sur la table Verrou sur les lignes accédées Cdes : Aucun Verrou sur la table Verrou sur les lignes accédées Dcdes : Aucun Verrou sur la table Verrou sur les lignes accédées Quelle est l'instruction valide qui permet de poser un verrou pour protéger la table des clients contre toutes les opérations de mise à jour? lock table client row exclusive mode lock table client in row exclusive mode nowait lock table client exclusive mode lock table client in exclusive mode nowait lock table client row share mode lock table client in row share mode nowait

Sauvegarde et restauration logique Page 52 Sauvegarde et restauration logique Page 53 D Sur la base de données PROD, vous devez surveiller la charge transactionnelle de votre base et en particulier détecter et annuler les verrous bloquants concernant votre application bancaire. Quelle est l'instruction qui permet de garantir la lecture consistante des données pendant une transaction? set consistent transaction set read only transaction set read transaction set transaction only read set transaction consistent set transaction read only Contexte applicatif 1 : Vous disposez de deux transactions qui effectuent les opérations suivantes sur votre base de données. Transaction 1 : Elle effectue une sélection sur la table des comptes, des opérations et des types d'opérations Transaction 2 : Elle met à jour la table des opérations et des comptes et consulte la table des clients et types d'opérations Les deux transactions sont-elles concurrentes? Jamais Toujours Parfois Quels sont les verrous posés par Oracle? Table des Comptes : Aucun Verrou sur la table Verrou sur les lignes accédées Table des Opérations : Aucun Verrou sur la table Verrou sur les lignes accédées Table des Type_opération : Aucun Verrou sur la table Verrou sur les lignes accédées Table des Clients : Aucun Verrou sur la table Verrou sur les lignes accédées Contexte applicatif 2 : Vous disposez de deux transactions qui effectuent les opérations suivantes sur votre base de données. Transaction 1 : Elle effectue une mise à jour sur la table des comptes et une consultation des tables types d'opérations et des opérations Transaction 2 : Elle effectue une mise à jour sur la table des opérations et des comptes et consulte la table des clients et type d'opérations Les deux transactions sont-elles concurrentes? Jamais Toujours Parfois Quels sont les verrous posés par Oracle? Table des Comptes : Aucun Verrou sur la table Verrou sur les lignes accédées Table des Opérations : Aucun Verrou sur la table Verrou sur les lignes accédées Table des Type_opération : Aucun Verrou sur la table Verrou sur les lignes accédées Table des Clients : Aucun Verrou sur la table Verrou sur les lignes accédées Contexte applicatif 3 : Vous disposez de deux transactions qui effectuent les opérations suivantes sur votre base de données. Transaction 1 : Elle met à jour la table des opérations et des comptes et consulte la table des clients et types d'opérations Transaction 2 : Elle met à jour la table des opérations et des comptes et consulte la table des clients et types d'opérations Les deux transactions sont-elles concurrentes? Jamais Toujours Parfois Quels sont les verrous posés par Oracle? Table des Comptes : Aucun Verrou sur la table Verrou sur les lignes accédées Table des Opérations : Aucun Verrou sur la table Verrou sur les lignes accédées Table des Type_opération : Aucun Verrou sur la table Verrou sur les lignes accédées Table des Clients : Aucun Verrou sur la table Verrou sur les lignes accédées

Sauvegarde et restauration logique Page 54 E Gestion des tablespaces d'annulation Sur la base de données en cours d utilisation, vous devez réaliser les opérations suivantes : 1. Ouvrir une session en vous connectant avec Sql*Plus sous le compte SYSTEM Exécutez l instruction SQL suivante : SQL> SELECT segment_name, owner, tablespace_name, status FROM dba_undo_extents; SQL> SELECT segment_name, owner, tablespace_name, status FROM dba_rollback_segs; 2. Rédiger l ordre SQL de création d un second tablespace d annulation nommé UNDOTBS2 associé au fichier UNDOTBS02.DBF d une taille de 256M. Ce fichier sera a croissance automatique avec une taille limitée à 1Go. Sauvegarde et restauration logique Page 55 13. SAUVEGARDE LOGIQUE PAR EXPORT A Mise en œuvre de l utilitaire d export classique Les fichiers de paramètres et les résultats seront stockés dans le répertoire d:\backup\export (si nécessaire créer les répertoires) 1. Export en mode Utilisateur 1.1 A l'aide d'un éditeur de texte, créer le fichier de paramètres permettant d exporter tous les objets (structure + lignes) de l utilisateur SCOTT identifié par TIGER. Le nom du fichier de paramètres sera : expa1.par Le nom du ficher d export sera : expsco01.dmp Le nom du fichier de rapport sera : expsco01.log Les données doivent être exportées Les statistiques ne doivent pas être exportées La taille du buffer sera de 100000 Exemple de fichier de paramètres expa1.par USERID=scott/tiger File= d:\backup\export\expsco01.dmp Log= d:\backup\export\expsco01.log Rows=Y Statistics=None Buffer=100000 1.2. Ouvrir une fenêtre de commande pour exécuter l'export à l'aide du fichier de paramètres créé. Cd d:\backup\export exp parfile=d:\backup\export\expa1.par 2. Export en mode Table 2.1. A l'aide d'un éditeur de texte, créer le fichier de paramètres permettant d exporter uniquement les tables DEPT et EMP de l utilisateur SCOTT. Le nom du fichier de paramètres sera : expa2.par Le nom du ficher d export sera : expsco02.dmp Le nom du fichier de rapport sera : expsco02.log Les tables : EMP et DEPT (doivent être exportées) Les données doivent être exportées Les statistiques ne doivent pas être exportées La taille du buffer sera de 100000 2.2. Ouvrir une fenêtre de commande pour exécuter l'export à l'aide du fichier de paramètres créé. Cd d:\backup\export exp parfile=d:\backup\export\expa2.par

Sauvegarde et restauration logique Page 56 Sauvegarde et restauration logique Page 57 3. Export en mode Query 3.1. A l'aide d'un éditeur de texte, créer le fichier de paramètres permettant d exporter uniquement d exporter uniquement les lignes du département numéro 10 de la table EMP de l utilisateur SCOTT. Le nom du fichier de paramètres sera : expa3.par Le nom du ficher d export sera : expsco03.dmp Le nom du fichier de rapport sera : expsco03.log Les tables : EMP La clause de définition de la requête : QUERY="where deptno = 10" Les données doivent être exportées Les statistiques ne doivent pas être exportées La taille du buffer sera de 100000 3.2. Ouvrir une fenêtre de commande pour exécuter l'export à l'aide du fichier de paramètres créé. Cd d:\backup\export exp parfile=d:\backup\export\expa3.par 4. Export complet de la base de données Rédiger la commande permettant d effectuer un export complet à partir du compte SYSTEM. Le fichier d export sera nommé : expfull.dmp 4.1. A l'aide d'un éditeur de texte, créer le fichier de paramètres permettant d exporter uniquement d exporter la base complète à partir du compte SYSTEM. Le nom du fichier de paramètres sera : expa4.par Le nom du ficher d export sera : expfull.dmp Le nom du fichier de rapport sera : expfull.log Les statistiques ne doivent pas être exportées La taille du buffer sera de 100000 4.2. Ouvrir une fenêtre de commande pour exécuter l'export à l'aide du fichier de paramètres créé. Cd d:\backup\export exp parfile=d:\backup\export\expa4.par 5. Exports de l'application AIR 5.1. Rédiger la procédure permettant d'exporter la totalité des données du compte AIR. 5.2. Exporter les données de la table VOL et PILOTE pour les numéros de pilote < 5 5.3. Exporter tous les vols dont la ville de départ ou d'arrivée est Paris. 14. RESTAURATION LOGIQUE PAR IMPORT A Sur votre base de données vous devez réaliser les imports suivants à l aide de l utilitaire d import en mode ligne. 1.1. LISTER LE CONTENU DU FICHIER D EXPORT EXPSCO01.DMP Exemple de fichier de paramètres : impb1a.par USERID=scott/tiger File= d:\backup\export\expsco01.dmp Log= d:\backup\export\impsco01.log Show=Y Dans la fenêtre de commande exécuter l import avec la commande : Cd d:\backup\export imp parfile=d:\backup\export\impb1a.par 1.2. Importer le fichier expsco01.dmp avec l option Ignore=N. Quel constat faites-vous? Exemple de fichier de paramètres : impb1b.par USERID=scott/tiger File= d:\backup\export\expsco01.dmp Log= d:\backup\export\impsco01.log Rows=Y Ignore=N Buffer=100000 Dans la fenêtre de commande exécuter l import avec la commande : Cd d:\backup\export imp parfile=d :\backup\export\impb1b.par

Sauvegarde et restauration logique Page 58 Sauvegarde et restauration logique Page 59 2. Importation en mode table 1. A partir de SQL*Plus, supprimer les tables DEPT et EMP dans le compte SCOTT SQL> drop table dept cascade constraints ; SQL> drop table emp; 2. Importation des tables supprimées à partir du fichier expsco02.dmp Exemple de fichier de paramètres impb2.par USERID=scott/tiger File= d:\backup\export\expsco01.dmp Log= d:\backup\export\impsco02.log Tables=dept, emp Rows=Y Ignore=Y Buffer=100000 Dans la fenêtre de commande exécuter l'import avec la commande : imp parfile=d:\backup\export\impb2.par 3. Transfert de tables entre schémas Importer la table DEPT du compte SCOTT vers le compte AIR. Exemple de fichier de paramètres impb3.par USERID=system/manager File= d:\backup\export\expsco01.dmp Log= d:\backup\export\impair03.log Fromuser=scott Touser=air Tables=dept Rows=Y Ignore=N Buffer=100000 Dans la fenêtre de commande exécuter l'import avec la commande : Cd d:\backup\export imp parfile=d:\backup\export\impb3.par Vérifier la présence de la table DEPT dans le compte AIR SQL> connect air/air SQL> select * from dept; SQL> drop table dept; 4. Importation complète de la base de données A partir du compte SYSTEM/MANAGER, effectuer la simulation d'une importation complète en générant les commandes SQL permettant de récupérer les instructions de Création des comptes utilisateurs. Exemple de fichier de paramètres impb4.par USERID=system/manager File= d:\backup\export\expfull.dmp Log= d:\backup\export\impfull_create_user.sql Show=y Ignore=y Buffer=100000 Dans la fenêtre de commande exécuter l'import avec la commande : Cd d:\backup\export imp parfile=d:\backup\export\impb4.par Consulter le fichier sql D:\backup\export\impfull_create_user.sql généré

Sauvegarde et restauration logique Page 60 Sauvegarde et restauration logique Page 61 B Réorganisation optimale d'une application avec un export et une importation des données. 1. Afficher le contenu du fichier d'export des données réalisé à partir du schéma AIR. Le nom du ficher d export est : expair_reorg.dmp Le nom du fichier de paramètres sera : expair_reorgc1.par Le nom du fichier de rapport sera : expair_reorgc1.log Dans quels tablespaces seront créés les objets lors de l'importation? 2. Importation avec l'utilisation de la clause INDEXFILE Rédiger la commande d import permettant de créer le fichier de création des tables et des index de l utilisateur AIR. Exemple de fichier de paramètres impc1.par USERID=air/air File= d:\backup\export\expair.dmp Log= d:\backup\export\impair01.log Indexfile= d:\backup\export\air_create_tables_index.sql Buffer=100000 3. Récupération et modification des scripts de création des tables 3.1. A partir du fichier d:\backup\export\air_create_tables_index.sql, créer un nouveau fichier nommé d:\backup\export\air_create_tables ne contenant que les intructions SQL de création de tables (create table ). Supprimer les commentaires (mot clé REM)par la commande Edition/Remplacer. 3.2. Suppression des anciennes tables SQL> connect air/air SQL> drop table vol; SQL> drop table pilote; SQL> drop table avion; Vidage de la corbeille SQL> purge recyclebin ; 3.3. Exécution du script de création des tables SQL> show user SQL> @ d:\backup\export\air_create_tables.sql SQL> select * from tab; 4. Importation des données uniquement Exemple de fichier de paramètres impc1_data.par USERID=air/air File= d:\backup\export\expair.dmp Log= d:\backup\export\impair02.log Buffer=100000 Rows=Y Ignore=Y Indexes=N Constraints=N Grants=N Dans la fenêtre de commande exécuter l'import avec la commande : Cd d:\backup\export imp parfile=d:\backup\export\impc1_data.par 5. Création des contraintes à partir du script SQL A partir du fichier D:\backup\export\air_create_tables_index.sql, créer un nouveau fichier nommé D:\backup\export\air_create_constraint ne contenant que les intructions SQL de modification de tables (alter table ). Supprimer les commentaires (mot clé REM)par la commande Edition/Remplacer. Dans le fichier, modifier le tablespace des index de clé primairre en remplaçant le tablespace AIR_DATA par AIR_IND Exécution du script de création des contraintes SQL> connect air/air SQL> @ d:\backup\export\air_create_constraint.sql 6. Création des index à partir du script SQL A partir du fichier d:\backup\export\air_create_tables_index.sql, créer un nouveau fichier nommé d:\backup\export\air_create_index ne contenant que les intructions SQL de création d'index (create index ). Ne conservez que les index secondaires. Dans le fichier, modifier le tablespace des index en remplaçant le tablespace AIR_DATA par AIR_IND Exécution du script de création des index SQL> connect air/air SQL> @ D:\backup\export\air_create_index.sql 7. Comparaison du placement des objets et de la place occupée. Place occupée SQL> select segment_type, sum(bytes) from user_segments group by segment_type; Localisation des objets SQL> select segment_name, tablespace_name From user_segments ;

Sauvegarde et restauration logique Page 62 Sauvegarde et restauration logique Page 63 15. SAUVEGARDE LOGIQUE PAR DATAPUMP A Mise en œuvre de l utilitaire Data Pump Export Les fichiers de paramètres et les résultats seront stockés dans le répertoire d:\backup\datapump(si nécessaire créer les répertoires) 1. Création du répertoire de sauvegarde logique SQL> connect system/manager SQL> create directory export_dp as 'd:\backup\datapump'; SQL> grant read, write on directory export_dp to scott,air ; 2. Export en mode Utilisateur 2.1 A l'aide d'un éditeur de texte, créer le fichier de paramètres permettant d exporter tous les objets (structure + lignes) de l utilisateur SCOTT identifié par TIGER. Le nom du fichier de paramètres sera : expdpa1.par Le nom du ficher d export sera : edpsco01.dmp Le nom du fichier de rapport sera : edpsco01.log Les données doivent être exportées Exemple de fichier de paramètres USERID=scott/tiger Directory=export_dp dumpfile= edpsco01.dmp Logfile= edpsco01.log Content=all 2.2. Ouvrir une fenêtre de commande pour exécuter l'export à l'aide du fichier de paramètres créé. Cd d:\backup\datapump C:\expdp parfile=d:\backup\datapump\expdpa1.par 3. Export en mode Table (INCLUDE) 3.1. A l'aide d'un éditeur de texte, créer le fichier de paramètres permettant d exporter uniquement les tables DEPT et EMP de l utilisateur SCOTT. Le nom du fichier de paramètres sera : expdpa2.par Le nom du ficher d export sera : edpsco02.dmp Le nom du fichier de rapport sera : edpsco02.log Les tables EMP et DEPT doivent être exportées : INCLUDE=TABLE:"IN ('EMP', 'DEPT')" Les données doivent être exportées 3.2. Ouvrir une fenêtre de commande pour exécuter l'export à l'aide du fichier de paramètres créé. Cd d:\backup\datapump C:\expdp parfile=d:\backup\datapump\expdpa2.par 4. Export en mode requête (QUERY) 4.1. A l'aide d'un éditeur de texte, créer le fichier de paramètres permettant d exporter uniquement d exporter uniquement les lignes du département numéro 10 de la table EMP de l utilisateur SCOTT. Le nom du fichier de paramètres sera : expdpa3.par Le nom du ficher d export sera : edpsco03.dmp Le nom du fichier de rapport sera : edpsco03.log Les tables : EMP et DEPT La requête : QUERY="where deptno = 10" Les données doivent être exportées 4.2. Ouvrir une fenêtre de commande pour exécuter l'export à l'aide du fichier de paramètres créé. Cd d:\backup\datapump C:\expdp parfile=d:\backup\datapump\expdpa3.par

Sauvegarde et restauration logique Page 64 Sauvegarde et restauration logique Page 65 5. Export complet de la base de données (FULL) Rédiger la commande permettant d effectuer un export complet à partir du compte SYSTEM. 5.1 Estimation de la taille de l'export complet Exemple de fichier de paramètres expdpa4_estimate.par userid=system/manager directory=export_dp dumpfile=edpfull.dmp logfile=idpfull.log full=y estimate_only=y 5.2. Ouvrir une fenêtre de commande pour exécuter la commande suivante : Cd d:\backup\datapump C:\expdp parfile=d:\backup\datapump\expdpa4_estimate.par Quelle est la taille estimée de l'export complet? résultat variable 5.3. Modifier le fichier de paramètres. Le nom du fichier de paramètres sera : expdpa4.par Le nom du ficher d export sera : edpfull.dmp Le nom du fichier de rapport sera : edpfull.log Le nom de la tâche (job_name) sera : export_complet 5.4. Ouvrir une fenêtre de commande pour exécuter l'export à l'aide du fichier de paramètres créé. Cd d:\backup\datapump C:\expdp parfile=d:\backup\datapump\expdpa4.par 16. RESTAURATION LOGIQUE PAR DATAPUMP A Les fichiers de paramètres et les résultats seront stockés dans le répertoire d:\backup\export 1. Importation en mode Schéma 1.1 A l'aide d'un éditeur, créer le fichier de paramètres permettant dimporter tous les objets (structure + lignes) de l utilisateur SCOTT. Le nom du fichier de paramètres sera : impdpa1.par Le répertoire de sauvegarde sera : export_dp Le nom du ficher d export sera : edpsco01.dmp Le nom du fichier de rapport sera : idpsco01.log Le contenu complet du schéma sera importé Exemple de fichier de paramètres impdpa1.par userid=scott/tiger directory=export_dp dumpfile=edpsco01.dmp logfile=idpsco01.log content=all 1.2. Ouvrir une fenêtre de commande pour exécuter l'import datapump. Cd d:\backup\datapump impdp parfile=d:\backup\datapump\impdpa1.par Consulter le fichier de journalisation généré 1.3. Utilisation du paramètre TABLE_EXISTS_ACTION Modifier le fichier de paramètres en ajoutant le paramètre TABLE_EXISTS_ACTION valorisé à REPLACE, puis TRUNCATE. Quel est le problème lié à l'utilisation de l'option TRUNCATE? 2. Importation en mode Table 2.1 A l'aide d'un éditeur, créer le fichier de paramètres permettant dimporter tous les objets (structure + lignes) de l utilisateur SCOTT. Le nom du fichier de paramètres sera : impdpa2.par Le répertoire de sauvegarde sera : export_dp Le nom du ficher d export sera : edpsco01.dmp Le nom du fichier de rapport sera : idpsco01.log Seules les tables DEPT et EMP seront importées. 2.2.. Ouvrir une fenêtre de commande pour exécuter l'import datapump. Cd d:\backup\datapump impdp parfile=d:\backup\datapump\impdpa2.par Consulter de contenu du fichier de rapport. Que constatez-vous?

Sauvegarde et restauration logique Page 66 Sauvegarde et restauration logique Page 67 2.3. A partir de SQL*Plus, supprimer les tables DEPT et EMP dans le compte SCOTT SQL> drop table dept cascade constraints ; SQL> drop table emp; SQL> purge recyclebin ; 2.4. Reexécuter la procédure d'importation. impdp parfile=d:\backup\datapump\impdpa2.par Consulter de contenu du fichier de rapport. Que constatez-vous? 2.5 Quelle autre solution est envisageable? 3. Importation complète de la base de données 3.1. Création du fichier de paramètres pour l'importation complète Le nom du fichier de paramètres sera : impdpa3.par L'utilisateur : SYSTEM/MANAGER Le répertoire de sauvegarde sera : export_dp Le nom du ficher d export sera : edpfull.dmp Le nom du fichier de rapport sera : idpfull.log Le mode d'importation complet 3.2.. Ouvrir une fenêtre de commande pour exécuter l'import datapump. Cd d:\backup\datapump impdp parfile=d:\backup\datapump\impdpa3.par Consulter le fichier de rapport généré. 3.3. Génération du script SQL associé à l'importation complète Ajouter le paramètre SQLFILE=create_full.sql Réexécuter l'importation Consulter le fichier sql généré. B Déplacement d'objets avec Data Pump Import 1. Création du compte d'importation A partir de SQL*Plus, connectez-vous avec le compte SYSTEM SQL> connect system/manager SQL> create user gcom identified by gcom default tablespace users ; SQL> grant connect, resource to gcom ; Test de connexion sur le compte gcom SQL> connect gcom/gcom 2. Importer des données dans un autre schéma (REMAP_SCHEMA) 2.1 A l'aide d'un éditeur, créer le fichier de paramètres permettant d importer tous les objets (structure + lignes) de l utilisateur SCOTT dans le nouveau compte GCOM. Le nom du fichier de paramètres sera : impdpb1.par Le répertoire de sauvegarde sera : export_dp Le nom du ficher d export sera : edpsco01.dmp Le nom du fichier de rapport sera : idpsco04.log Le contenu complet du schéma sera exporté 2.2. Ouvrir une fenêtre de commande pour exécuter l'import à l'aide du fichier de paramètres créé. Cd d:\backup\datapump impdp parfile=d:\backup\export\impdpb1.par 3. Vérification du contenu importé dans GCOM SQL> connect gcom/gcom SQL> select * from tab; SQL> select * from dept ; SQL> col segment_name format A30 SQL> select segment_name, tablespace_name From user_segments; 4. Déplacement d'objets dans un autre tablespace (REMAP_TABLESPACE) Déplacer les objets de SCOTT vers le tablespace GCOM_DATA 4.1. Modifier le fichier de paramètres en ajoutant les options suivantes : Remap_tablespace=users:gcom_data Table_exists_action=replace 4.2. Tester l'importation et consulter le fichier de rapport impdp parfile=d:\backup\export\impdpb1.par

Sauvegarde et restauration logique Page 68 Sauvegarde et restauration logique Page 69 4.3 Création du tablespace GCOM_DATA SQL> connect system/manager SQL> create tablespace gcom_data Datafile C:\ORACLE\oradata\prod\gcom_d1.dbf size 5M; 4.4. Tester l'importation et consulter le fichier de rapport impdp parfile=d:\backup\export\impdpb1.par 4.5 Vérifier le déplacement des objets SQL> connect gcom/gcom SQL> col segment_name format A30 SQL> select segment_name, tablespace_name From user_segments; C Comparaison des performances Exp et Data Pump Export 1. Création de la table EMPLOYES avec 1 million de lignes SQL> create table employes as select emp.*, dept.dname from emp,dept; SQL> insert into employes select * from employes; SQL> / SQL> SQL> commit; 2. Exporter des données avec l'utilitaire EXP 2.1. Création du fichier de paramètres expc1.par pour l'exportation 2.2. Ouvrir une fenêtre de commande pour exécuter l'exportation exp parfile=d:\backup\export\expc1.par 3. Exporter des données avec l'utilitaire EXPDP 3.1. Création du fichier de paramètres expdpc1.par pour l'exportation 3.2. Ouvrir une fenêtre de commande pour exécuter l'exportation exp parfile=d:\backup\export\expdpc1.par 4. Comparaison des performances des deux procédures Durée de l'export classique : Durée de l'export datapump : Conclusion :

Sauvegarde et restauration logique Page 70 Sauvegarde et restauration logique Page 71 D Comparaison des performances Imp et Data Pump Import 1. Vidage des données la table EMPLOYES SQL> truncate table employes ; 2. Importer des données avec l'utilitaire IMP 2.1. Création du fichier de paramètres impd1.par pour l'importation 2.2. Ouvrir une fenêtre de commande pour exécuter l'importation imp parfile=d:\backup\export\impd1.par Notez la durée de l'importation 3. Vidage des données la table EMPLOYES SQL> truncate table employes ; 4. Importer des données avec l'utilitaire IMPDP 3.1. Création du fichier de paramètres impdpc1.par pour l'importation 3.2. Ouvrir une fenêtre de commande pour exécuter l'importation impdp parfile=d:\backup\export\impdpd1.par Notez la durée de l'importation 4. Comparaison des performances des deux procédures Durée de l'import classique : Durée de l'import datapump : Conclusion : E Sur la base de données PROD, vous devez mettre en place un dispositif de sauvegarde et de restauration de votre application bancaire. Contexte d'exploitation 1 : Votre base de données est en exploitation de 1h00 du matin à 24h00 le soir. Le temps de sauvegarde à votre disposition est de 55 minutes. Votre serveur est équipé d'un lecteur de cassette 8mn d'une capacité de 10go. Le volume total de votre base de données est de 8Go. Parmi les sauvegardes proposées ci-dessous lesquelles sont adaptées? Sauvegarde physique à froid une fois par nuit à 0h00. Sauvegarde physique à froid tous les soirs à 22h00. Sauvegarde physique à chaud une fois par nuit à 0h00. Sauvegarde physique à chaud tous les soirs à 22h00. Sauvegarde logique, par un export complet, une fois par nuit à 0h00. Sauvegarde logique, par un export complet, une fois par nuit à 3h00. Quel est le niveau de risque (volume des données perdues) de votre solution? Contexte d'exploitation 2 : Votre base de données est en exploitation continue 7 jours sur 7 et 24 heures sur 24. Votre serveur est équipé d'un lecteur de cassette 8mn d'une capacité de 10Go. Le volume total de votre base de données est de 15go. Le processus d'archivage de la base de données est activé. L'activité de la base de données est réduite pendant la nuit entre 1h et 3 heures du matin. Parmi les sauvegardes proposées ci-dessous lesquelles sont adaptées? Sauvegarde physique à froid une fois par nuit. Sauvegarde physique à froid une fois par week-end. Sauvegarde physique à chaud une fois par nuit. Sauvegarde physique à chaud une fois par week-end. Sauvegarde logique, par un export complet le dimanche soir et un export incrémental chaque nuit de la semaine. Sauvegarde logique, par un export complet, tous les matins à 6h00 et tous les soirs à 20h00. Quel est le niveau de risque (volume des données perdues) de votre solution?

Sauvegarde et restauration physique Page 72 Sauvegarde et restauration physique Page 73 17. SAUVEGARDE PHYSIQUE A Automatisation de la procédure de sauvegarde physique de la base de données PROD 1. Ecrire une procédure à partir d un fichier de commande, prod_backup.cmd qui effectue une sauvegarde physique complète de la base de données. Les étapes principales sont : 1. Arrêt du serveur (Utilisation de la procédure prod_stop.cmd) 2. Copie de tous les fichiers de bases de données et de paramétrage dans un répertoire de sauvegarde (Création de la procédure prod_copie.cmd) 3. Redémarrage du serveur (Utilisation de la procédure prod_start.cmd) Création du répertoire backup sur le disque D 2. Ajouter un nouveau tablespace GESCOM possédant un fichier GESCOM01.DBF de 5Mo et un fichier GESCOM02.DBF de 5Mo à votre base de données. 3. Création d un script SQL (prod_copie.sql) qui génère les commandes de la liste des fichiers à sauvegarder set echo off set pagesize 0 set heading off set feedback off col file_name format a50 spool d:\scripts\prod_copie.cmd select 'cd d:\backup' from dual; select 'mkdir d:\backup\sav' to_char(sysdate,'yymmddhh24') from dual; select 'copy ' file_name ' d:\backup\sav' to_char(sysdate,'yymmddhh24') from dba_data_files union select 'copy ' member ' d:\backup\sav' to_char(sysdate,'yymmddhh24') from v$logfile union select 'copy ' name ' d:\backup\sav' to_char(sysdate,'yymmddhh24') from v$controlfile ; select exit; from dual; spool off set pagesize 24 set heading on set feedback on set echo on exit 4. Intégration de la sauvegarde dynamique dans le script prod_backup.cmd Les étapes principales sont : 1. Exécution du script SQL prod_copie.sql de génération du fichier de commande prod_copie.cmd 2. Arrêt du serveur (exécution de la procédure prod_stop.cmd) 3. Copie de tous les fichiers de bases de données et de paramétrage dans un répertoire de sauvegarde (exécution de la procédure prod_copie.cmd) 4. Redémarrage du serveur (exécution de la procédure prod_start.cmd) Script prod_backup.cmd sqlplus system/manager@prod @d:\scripts\prod_copie.sql start /w d:\scripts\prod_stop.cmd start /w d:\scripts\prod_copie.cmd start /w d:\scripts\prod_start.cmd 5. Création d une tâche planifiée Planifier une tâche pour exécuter la sauvegarde physique de la base complète en utilisant le script prod_backup.cmd. 6. Modification du script prod_copie.sql en ajoutant la vue dba_temp_files. select 'copy ' file_name ' d:\backup\sav' to_char(sysdate,'yymmddhh24') from dba_data_files union select 'copy ' file_name ' d:\backup\sav' to_char(sysdate,'yymmddhh24') from dba_temp_files union.

Sauvegarde et restauration physique Page 74 Sauvegarde et restauration physique Page 75 B Sauvegarde physique complète sur une base fermée 1. Connecter vous à l instance PROD avec le privilège SYSDBA et vérifier l ouverture de la base de données SQL>connect / as sysdba SQL>select open_mode from v$database; Vérifier que la valeur est : READ WRITE 2. Effectuer une sauvegarde à froid dans le répertoire de sauvegarde à l aide de la procédure : d:\scripts\prod_backup.cmd Noter le nom du répertoire de sauvegarde. 3. Ouvrir une session avec Sql*Plus sous le compte SCOTT/TIGER. (si nécessaire exécuter le script scott.sql pour créer le compte et les tables associées). Exécuter le script d insertion de données dans la table DEPT SQL> insert into dept values (50, INFO, Belfort ) ; SQL> insert into dept values (60, COMPTA, Lyon ) ; SQL> commit; 4. Arrêt du serveur et simulation de la perte de fichiers de données SQL>connect / as sysdba SQL>shutdown immediate A partir d une fenêtre de commande ou de l explorateur, renommer les fichiers gescom01.dbf et gescom02.dbf en.old C:\ORACLE\oradata\prod> rename users01.dbf users01.old 5. Redémarrer l instance et tentative d ouverture de la base de données SQL>connect / as sysdba SQL>startup Quel constat pouvez-vous faire? Impossible de démarrer la base de données à cause des fichiers manquants. 6. Restaurer complètement la base de données à partir de la dernière sauvegarde réalisée. d:> copy des fichiers sauvegardés depuis le dernier répertoire de sauvegarde ou utilisation de l explorateur pour effectuer la copie Redémarrer l instance : SQL>startup Vérifier le contenu de la table DEPT. Quel constat pouvez-vous faire? Les insertions effectuées ont été perdues. C Mise en place de l archivage 1. Connecter vous avec Server Manager avec le privilège SYSDBA SQL>connect / as sysdba 2. Afficher les paramètres LOG_ARCHIVE_DEST, LOG_ARCHIVE_START, LOG_ARCHIVE_FORMAT et noter leurs valeurs : SQL>show parameter archive NOM TYPE VALEUR ----------------------------------- ------- ----------- log_archive_buffers entier 4 log_archive_buffer_size entier 127 log_archive_dest chaîne %RDBMS80%\ log_archive_duplex_dest chaîne log_archive_format chaîne ARC%s.%t log_archive_min_succeed_dest entier 1 log_archive_start booléen FALSE 3. Afficher le statut du mode d archivage de la base de données en exécutant la commande : SQL>Archive log list Mode journal de base de données NOARCHIVELOG Archivage automatique DISABLED Destination d'archive %RDBMS%\ Plus ancienne séquence de journal en ligne 4082 séquence de journal courant 4083 4. Arrêt de l instance, démarrage de l instance et monter la base de données SQL>shutdown immediate SQL>startup mount ; 5. Modifier le statut de base pour activer le mode d archivage de la base de données en utilisant la commande Alter Database. SQL> alter database archivelog ; 6. Ouvrir la base de données : SQL> alter database open ; Afficher l état de l archivage avec Archive log list : Mode journal de base de données ARCHIVELOG Archivage automatique DISABLED Destination d'archive %RDBMS%\ Plus ancienne séquence de journal en ligne 4082 séquence de journal courant 4083 7. Démarrer le processus d archivage en mode commande SQL>Archive log start ; Vérifier son activation : SQL>Archive log list ;

Sauvegarde et restauration physique Page 76 8. Ajouter les paramètres d archivage dans le fichier d initialisation texte pour activer le processus d archivage automatiquement au démarrage de l instance : Format du fichier de reprise : <PROD>_%s.arc Répertoire de destination : $ORACLE_HOME\oradata\prod\archive Exemple : ########################################## # archivage automatique ########################################## log_archive_start=true log_archive_format=prod_%s.arc log_archive_dest_1= location=c:\oracle\oradata\prod\archive Exécuter les commandes : SQL> shutdown immediate ; SQL> create spfile from pfile= C:\ORACLE\admin\prod\pfile\init.ora' ; SQL> startup ; SQL> show parameter archive ; 9. Exécuter la commande : SQL>alter system switch logfile ; Vérifier la valeur du paramètre LOG_ARCHIVE_DEST et consulter la présence d un fichier de reprise archivé dans le répertoire correspondant à ce paramètre. Quel est le format du fichier? L ancien format est toujours en vigueur. Il faut redémarrer l instance pour la prise en compte des nouvelles valeurs. Exemple du nouveau format : PROD_00192.arc 10. Arrêter l archivage automatique en exécutant la commande : SQL>alter system archive log stop ; Vérifier l arrêt de l archivage automatique. 11. De manière à boucler sur tous les fichiers de reprises, exécuter plusieurs fois la commande suivante : SQL>alter system switch logfile ; Que va-t-il se produire et pourquoi? Le serveur va se mettre en attente (la session en cours reste bloquée) jusqu à l archivage du fichier de reprise courant. Ce dernier ne sera pas écrasé avant d être archivé. 12. Ouvrez une seconde session et connectez-vous avec le privilège SYSDBA SQL>connect / as sysdba 13. Activer l archivage automatique en exécutant la commande : SQL>alter system archive log start ; Vérifier l activation de l archivage automatique. SQL>archive log list ; 14. Passer à la première session. Que s est-il produit et pourquoi? La session a été libérée et le travail peut se poursuivre normalement. Sauvegarde et restauration physique Page 77 D Archivage automatique et sauvegarde physique complète 1. Arrêter l instance PROD et rédémarrer l instance avec l ouverture de la base de données d:\scripts\prod_stop.cmd d:\scripts\prod_start.cmd 2. Connecter vous sur une base ouverte avec le privilège SYSDBA et vérifier l activation de l archivage SQL>connect / as sysdba SQL>archive log list ; Pour générer un fichier de reprise archivé, exécuter les instructions suivantes : SQL>alter system switch logfile ; SQL>alter system switch logfile ; SQL>alter system switch logfile ; Consulter, avec l explorateur, le répertoire d archive : C:\ORACLE\oradata\prod\archive. Vérifier l avancement du numéro de séquence des fichiers de reprise SQL>archive log list ; 3. Effectuer une sauvegarde à froid dans le répertoire de sauvegarde à l aide de la procédure : d:\scripts\prod_backup.cmd Noter le nom du répertoire de sauvegarde. 4. Ouvrir une session avec Sql*Plus sous le compte SCOTT/TIGER. (si nécessaire exécuter le script scott.sql pour créer le compte et les tables associées). Exécuter le script de consultation de données dans la table DEPT SQL> select * from dept ; Exécuter le script d insertion de données dans la table DEPT SQL> insert into dept values (50, INFO, Belfort ) ; SQL> insert into dept values (60, COMPTA, Lyon ) ; SQL> commit; 5. Effectuer une sauvegarde à froid dans le répertoire de sauvegarde à l aide de la procédure : d:\scripts\prod_backup.cmd Noter le nom du répertoire de sauvegarde. Vérifier le contenu de répertoire de sauvegarde.

Sauvegarde et restauration physique Page 78 Sauvegarde et restauration physique Page 79 E Sauvegarde physique d un tablespace sur une base ouverte 1. Démarrer votre base de données et vérifier que le mode archivage est activé et démarré. SQL>connect / as sysdba SQL>startup - - si nécessaire SQL>archive log list ; 2. Connectez-vous avec Sql*Plus avec le compte System. SQL> connect system/manager 3. Procéder à la sauvegarde du fichier physique du tablespace USERS SQL> alter tablespace USERS begin backup; 4. Consulter le statut du fichier concerné en consultant les vues V$backup et v$datafile SQL> select * from v$backup ; SQL> select file#, name from v$datafile_header ; Quel fichier est concerné par la sauvegarde du tablespace USERS? 5. Effectuer une sauvegarde physique du fichier de données avec une commande de copie de fichier de votre système d exploitation dans le répertoire d:\ backup\sav_exoe (créer le sous-répertoire sav_exoe) c :> copy des fichiers ou utilisation de l explorateur 6. Ouvrir une deuxième session sous le compte SCOTT/TIGER. Consulter les tables EMP et DEPT. SQL> select * from emp ; SQL> select * from dept ; Insérer un nouveau DEPT. SQL> insert into dept values (70, Finance, Strasbourg ) ; SQL> commit ; Quel constat pouvez-vous faire? Les tables sont accessibles en consultation et mise à jour. 7. Indiquer la fin de la sauvegarde du fichier physique du tablespace USERS SQL> connect system/manager SQL> alter tablespace USERS end backup ; F Sauvegardes du fichier de contrôle 1. Connectez-vous avec Sql*Plus avec le compte d'administrateur SQL> connect system/manager 2. Exécuter la commande alter database pour sauvegarder votre fichier de contrôle dans un fichier de trace. SQL> Alter database backup controlfile to trace ; 3. Identifier le fichier de trace généré en exécutant la requête suivante : SQL> select SPID from v$process p, v$session s where p.addr=s.paddr and s.username like 'SYSTEM%' and s.program = 'sqlplusw.exe'; Ou à partir d'oem Console ou Database Control, consultez la colonne ID de processus dans la liste des sessions. La valeur affichée correspond au numéro du fichier de trace généré dans le répertoire C:\ORACLE\admin\prod\udump 4. A partir du système d exploitation rechercher le fichier de trace dont le nom de fichier est : prod_ora_<spid>.trc 5. Effectuer une copie du fichier de trace dans le répertoire de sauvegarde d:\backup\sav_exof (créer le sous-répertoire sav_exof) $ cp ou copy nom du fichier trace Utiliser un éditeur puis supprimer tous les commentaires. Vous disposez maintenant d un script permettant de recréer un fichier de contrôle. 6. Effectuer une copie physique d un fichier de contrôle dans le même répertoire de sauvegarde. Exécuter la commande suivante : SQL> Alter database backup controlfile to d:\backup\sav_exof\control01_prod.ctl ;

Sauvegarde et restauration physique Page 80 Sauvegarde et restauration physique Page 81 G Les mécanismes de sauvegarde Quels sont les deux modes de fonctionnement d Oracle? Quel mode offre la plus grande sécurité? Quelle est la procédure pour activer l archivage? Lorsque l archivage n est pas activé que se passe-t-il lorsqu un fichier de reprise est plein? En mode archivage manuel, que se passe-t-il lorsqu un fichier de reprise est plein? Quels sont les types de fichiers à sauvegarder lorsque l archivage n est pas activé? Quel est le processus qui permet de sauvegarder les fichiers de données sans arrêter le serveur (fonctionnement 24/24 et 7jours/7)? Est-il possible de faire une copie physique des blocs de données contenant uniquement les lignes d une table? Quel est l utilitaire qui permet de vérifier la cohérence d un fichier de données? H Sur la base de données TEST, vous devez procéder mettre en place un dispositif de sauvegarde et de restauration. Contexte d'exploitation 1 : Votre base de données est en exploitation de 7h00 du matin à 19h00 le soir. Le temps de sauvegarde à votre disposition est de 45 minutes. Votre serveur est équipé d'un lecteur de cassette 8mn. Le volume total de votre base de données est de 800Mo. Parmi les sauvegardes proposées ci-dessous lesquelles sont adaptées? Sauvegarde physique à froid une fois par nuit. Sauvegarde physique à froid tous les matins à 6h00 et tous les soirs à 20h00. Sauvegarde physique à chaud une fois par nuit. Sauvegarde physique à chaud, tous les matins à 6h00 et tous les soirs à 20h00. Sauvegarde logique, par un export complet, une fois par nuit. Sauvegarde logique, par un export complet, tous les matins à 6h00 et tous les soirs à 20h00. Quel est le niveau de risque (volume des données perdues) de votre solution? Contexte d'exploitation 2 : Votre base de données est en exploitation continue du lundi matin 7h00 du matin au samedi matin à 12h00. Pendant le week-end vous disposez d'un temps de sauvegarde de 8 heures. Votre serveur est équipé d'un lecteur de cassette 8mn. Le volume total de votre base de données est de 10go. Le processus d'archivage de la base de données est activé. L'activité de la base de données est réduite pendant la nuit entre 1h et 3 heures du matin. Parmi les sauvegardes proposées ci-dessous lesquelles sont adaptées? Sauvegarde physique à froid une fois par nuit. Sauvegarde physique à froid tous les matins à 6h00 et tous les soirs à 20h00. Sauvegarde physique à froid une fois par week-end. Sauvegarde physique à chaud une fois par nuit. Sauvegarde physique à chaud tous les matins à 6h00. Sauvegarde logique, par un export complet le dimanche soir et un export incrémental chaque nuit de la semaine. Sauvegarde logique, par un export complet, tous les matins à 6h00 et tous les soirs à 20h00. Quel est le niveau de risque (volume des données perdues) de votre solution?

Sauvegarde et restauration physique Page 82 Sauvegarde et restauration physique Page 83 18. RESTAURATION PHYSIQUE A Simulation de la perte d'un fichier de données et Restauration en mode archivage sur une base fermée 1. Connectez-vous sur une base ouverte avec le compte d administration, puis consulter la vue V$Database pour identifier le mode d archivage de la base de données. SQL>connect / as sysdba; SQL>Select name, log_mode, open_mode from v$database ; Vérifier l activation automatique du processus d archivage et identifier le numéro du fichier de reprise courant. SQL>Archive log list ; 2. Effectuer une sauvegarde à froid dans le répertoire de sauvegarde à l aide de la procédure : d:\scripts\prod_backup.cmd Noter le nom du répertoire de sauvegarde et vérifier le contenu de répertoire de sauvegarde. 3. Ouvrir une session avec Sql*Plus sous le compte SCOTT/TIGER. (si nécessaire exécuter le script scott.sql pour créer le compte et les tables associées). Exécuter le script de consultation de données dans la table DEPT SQL> select * from dept ; SQL> select * from emp; 4. Exécutez l instruction SQL de création de la table EMPLOYES : SQL> CREATE TABLE EMPLOYES TABLESPACE USERS AS SELECT * FROM EMP; Vérifier le contenu de la table créée. SQL> select * from employes; 5. Vérifier le stockage de la table EMPLOYES dans le tablespace indiqué en exécutant la requête ci-dessous ou en utilisant DBA*Studio. SQL> connect system/manager SQL> select tablespace_name from dba_tables where table_name = EMPLOYES ; 6. Identifier les fichiers physiques du tablespace USERS SQL> select file_name from dba_data_files where tablespace_name = USERS ; 7. Simulation de la perte d un fichier Arrêt de la l instance SQL>connect / as sysdba SQL>shutdown immediate ; Renommer le fichier users01.dbf dans le répertoire oradata\prod en users01.old 8. Redémarrer la base normallement. Que constatez-vous? SQL>connect / as sysdba SQL>startup ; Erreur Oracle : ORA-01125 cannot identify data file et ORA-01110 : data file suivi du nom du fichier. La base de données ne peut pas être ouverte car un fichier est manquant. 9. Restaurer le fichier physique du tablespace USERS en utilisant le fichier sauvegardé à l étape 2. C:> Copy du fichier users01.dbf à partir de la dernière sauvegarde dans le répertoire de données 10. Consulter la liste des fichiers à restaurer SQL>select * from v$recover_file ; Tester l ouverture de la base de données SQL> alter database open ; Ouverture impossible car le fichier doit être récupéré. 11. Restaurer la base de données en utilisant la commande Recover database. SQL> recover database ; (mode manuel avec confirmation de l application des fichiers de reprise archivés) ou SQL> recover automatic database ; (mode automatique) 12. Lorsque la base de données a été restaurée, ouvrir la base de données aux utilisateurs : SQL>alter database open ; 13. Consulter la vue DBA_TABLESPACE pour vérifier que le statut du tablespace USERS est Online. SQL>select tablespace_name, status from dba_tablespaces where tablespace_name = USERS ; Consulter le contenu de la table EMPLOYES. SQL> select * from employes ; (ou select count(*) from employes ; ) 14. Consulter la vue V$LOG et noter le numéro de séquence des fichiers de reprise. SQL>select * from v$log ; Comparer cette valeur avec celle de l étape 3. L archivage a fait progresser le numéro de séquence du fichier de reprise. Le passage au fichier suivant a été généré par l instruction Alter system Switch Log.

Sauvegarde et restauration physique Page 84 B Simulation de la perte d'un fichier de données et Restauration en mode archivage sur une base ouverte 1. Simulation de la perte d un fichier 1.1. Arrêt de la l instance SQL>connect / as sysdba SQL>shutdown immediate ; 1.2 Renommer le fichier users01.dbf dans le répertoire oradata\prod en users01.old 2. Redémarrer l'instance et ouverture de la base. Que constatez-vous? SQL>connect / as sysdba SQL>startup ; Erreur Oracle : ORA-01125 cannot identify data file et ORA-01110 : data file suivi du nom du fichier. La base de données ne peut pas être ouverte car un fichier est manquant. 3. Mettre le fichier physique manquant Offline SQL>alter database datafile C:\ORACLE\oradata\prod\users01.dbf offline ; 4. Ouvrir la base de données aux utilisateurs : SQL>alter database open ; 5. Mettre le tablespace USERS Offline SQL>alter tablespace USERS offline immediate ; Restaurer les fichiers physiques en utilisant les fichiers sauvegardés dans le dernier répertoire de sauvegarde. C :> Copy des fichiers concernés 6. Restaurer le tablespace USERS utilisant la commande Recover tablespace. SQL>recover automatic tablespace USERS ; 7. Connecter sous le compte SCOTT/TIGER puis consulter le contenu de la table EMPLOYES. SQL> select * from employes ; Que constatez-vous? 8. Mettre le tablespace USERS Online SQL>alter tablespace USERS online ; 9. Consulter la vue DBA_TABLESPACE pour vérifier que le statut du tablespace USERS est Online. SQL>select tablespace_name, status from dba_tablespaces where tablespace_name = USERS ; 10. Connecter sous le compte SCOTT/TIGER puis consulter le contenu de la table EMPLOYES. SQL> select * from employes ; (ou select count(*) from employes ; ) Sauvegarde et restauration physique Page 85 C Démarrage d instance suite à la perte d un fichier temporaire 1. Connectez-vous sur une base ouverte avec le privilège SYSDBA SQL>connect / as sysdba 2. Identifier le nom du tablespace temporaire en exécutant la requête suivante SQL> select tablespace_name from dba_tablespaces where contents = TEMPORARY ; 3. Identifier les fichiers physiques du tablespace temporaire (remplacer nomtstemp par la valeur du tablespace temporaire trouve à l étape 2) SQL> select file_name from dba_temp_files where tablespace_name = TEMP ; 4. Arrêter la base de données SQL>shutdown immediate ; 5. Renommer le fichier physique du tablespace temporaire c:\ rename nom du fichier physique du tablespace temporaire en modifiant le suffixe du fichier en.old 6. Connectez-vous avec le privilège SYSDBA et ouvrir la base de données SQL>connect / as sysdba SQL>startup ; La base de données peut être ouverte alors que le fichier temporaire est manquant. Consulter une vue du dictionnaire. Est-ce possible? SQL> select * from dba_temp_files ; Exécutez les instructions SQL suivantes : SQL> connect air/air SQL> select * from avion ; SQL> select * from avion, vol, pilote order by nompilote; Que constatez-vous? 7. Mettre le fichier physique du tablespace temporaire Offline SQL>connect / as sysdba SQL>alter database tempfile C:\ORACLE\oradata\prod\temp01.dbf offline ; 8. Créer un second tablespace temporaire : SQL>create temporary tablespace TEMP2 tempfile C:\ORACLE\oradata\prod\temp02.dbf size 32M ; Vérifier la création du fichier. Modifier le tablespace temporaire par défaut SQL> Alter database default temporary tablespace temp2 ;

Sauvegarde et restauration physique Page 86 Sauvegarde et restauration physique Page 87 9. Supprimer le tablespace temporaire SQL>drop tablespace TEMP including contents and datafiles ; Vérifier la suppression du fichier sur votre disque. 10. Test de l opération de tri SQL> connect air/air SQL> select count(*) from avion, vol, pilote order by nompilote; Que constatez-vous? 11. La structure physique de votre serveur a été modifiée. Quelle procédure devez-vous engager? D Restauration partielle d un tablespace suite à une erreur utilisateur Recover until time 1. Connectez-vous avec Sql*Plus sous le compte SCOTT/TIGER Exécutez les instructions SQL suivantes : SQL> insert into EMPLOYES select * from EMPLOYES ; SQL> commit; SQL> select count(*) from employes ; -- résultat : 28 lignes 2. Connectez-vous avec Sql*Plus sous le compte SYSTEM/MANAGER SQL> connect system/manager Identifier le tablespace de stockage de la table EMPLOYES en exécutant : SQL> select tablespace_name from dba_tables where table_name = EMPLOYES ; 3. Identifier les fichiers physiques du tablespace USERS SQL> select file_name from dba_data_files where tablespace_name = USERS ; 4. Noter la date et l heure du système en utilisant une commande du système d exploitation : c:\date et c:\time ( 2003-03-15:15:30:45 ) ou la commande SQL : SQL> select to_char(sysdate, YYYY-MM-DD:HH24:MI:SS ) from dual ; 5. Consulter la vue V$LOG et noter le numéro de séquence du fichier de reprise en cours d utilisation (Status=Current) SQL> select * from v$log ; 6. Connectez-vous avec Sql*Plus sous le compte SCOTT/TIGER Exécutez les instructions SQL suivantes : SQL> insert into EMPLOYES select * from EMPLOYES ; SQL> commit; SQL> select count(*) from employes ; -- résultat : 56 lignes 7. Connectez-vous avec Sql*Plus sous le compte SYSTEM/MANAGER SQL> connect system/manager Exécutez les instructions SQL suivantes : SQL> alter system switch logfile ; SQL> drop table scott.employes ; (erreur de l utilisateur) SQL> alter system switch logfile ;

Sauvegarde et restauration physique Page 88 Sauvegarde et restauration physique Page 89 8. Consultez la table des employés à l aide de la requête suivante : SQL> select * from scott.employes ; Que constatez-vous? Le message ORA-00942 nous indique que la table n existe plus. 9. Arrêter la base de données, puis monter la base de données. SQL>connect / as sysdba SQL>shutdown immediate ; SQL>startup mount ; 10. Restaurer le fichier physique endommagé en utilisant le dernier répertoire de sauvegarde D:\backup\savAAMMJJHHMI $ Copy du fichier de données concerné : Users01.dbf 11. Restaurer la base de données utilisant la commande Recover database until time en indiquant la date et l heure que vous avez notée à l étape 4. SQL>recover database until time 2003-03-15:15:30:45 ; Que constatez-vous? Un message d erreur indique que d autres fichiers doivent être restaurés. Restaurer tous les autres fichiers physiques de données (*.dbf). SQL>recover database until time 2003-03-15:15:30:45 ; 12. Ouvrir la base de données. SQL>alter database open resetlogs ; Vérifier la numérotation des fichiers de reprise SQL>archive log list ; 13. Connectez-vous avec Sql*Plus sous le compte SCOTT/TIGER SQL> select count(*) from employes ; -- résultat : 28 lignes 14. Connectez-vous avec Sql*Plus sous le compte SYSTEM/MANAGER. Consulter les vues V$LOG et V$LOG_HISTORY pour identifier les nouveaux numéros de séquence des fichiers de reprise SQL> connect system/manager SQL> select * from v$log ; SQL> select * from v$log_history ; Les numéros de séquence ont été réinitialisés à 0. Le fichier de reprise courant possède le numéro 1. A partir de l explorateur ou d une fenêtre de commande, supprimer les anciens fichiers de reprises archivés. 15. Effectuer une sauvegarde à froid dans le répertoire de sauvegarde à l aide de la procédure : D:\scripts\prod_backup.cmd Noter le nom du répertoire de sauvegarde. Vérifier le contenu de répertoire de sauvegarde. E Restauration des fichiers de reprise 1. Connectez-vous avec Sql*Plus sous le compte SYSTEM SQL> connect system/manager Consulter la vue V$LOGFILE et noter les noms des fichiers de reprise SQL> select member from v$logfile ; Consulter la vue V$LOG et répérer le fichier de reprise courant (colonne STATUS) SQL> select * from v$log ; 2. Arrêter la base de données SQL>connect / as sysdba SQL>shutdown immediate ; 3. Supprimer tous les fichiers de reprise de votre base de données c:\ delete *.log (tous les fichiers de reprise) 4. Redémarrer la base normallement. Que constatez-vous? SQL>connect / as sysdba SQL>startup ; Erreur Oracle : L instance est démarrée. La base de données ne peut pas être ouverte les fichiers de reprise n existent plus. 5. Restaurer la dernière sauvegarde des fichiers de reprise, puis recréer les différents fichiers de reprise à vide en utilisant la commande suivante : SQL>alter database clear unarchived logfile group 1 ; SQL>alter database clear unarchived logfile group 2 ; SQL>alter database clear unarchived logfile group 3 ; Que constatez-vous pour le groupe de fichier courant? 6. Vérifier la présence des fichiers de reprise sur votre disque c:\ dir nom des fichiers de reprise 7. Ouvrir la base de données aux utilisateurs : SQL>alter database open ; 8. Réinitialisation des fichiers de reprise SQL>alter system switch logfile ; SQL>alter system switch logfile ; Remarque pour les étapes 5 et 7 Pour réinitialiser le groupe courant, en cas de problème, utilisez les commandes suivantes : SQL> Recover database until cancel ; Suivi de la commande : SQL> Alter database open resetlogs;

Sauvegarde et restauration physique Page 90 Sauvegarde et restauration physique Page 91 F Démarrage d instance suite à la perte d un fichier de données ne contenant que des index 1. Connectez-vous sur une base ouverte avec le privilège SYSDBA SQL>connect / as sysdba 2. Identifier le nom du tablespace de stockage des index du compte AIR en exécutant la requête suivante SQL> select distinct tablespace_name from dba_segments where segment_type = 'INDEX' and owner='air' ; Identifier le fichier physique associé à ce tablespace. 3. Arrêter la base de données SQL>shutdown immediate ; 4. Renommer le fichier physique du tablespace d index c:\ rename nom du fichier physique en modifiant le suffixe du fichier en.old 5. Connectez-vous avec le privilège SYSDBA et ouvrir la base de données SQL>connect / as sysdba SQL>startup ; La base de données ne peut être ouverte à cause de la perte d un fichier de données. 6. Mettre le fichier physique du tablespace temporaire Offline SQL>alter database datafile C:\ORACLE\oradata\prod\air_d02.dbf offline ; 7. Ouvrir la base de données aux utilisateurs : SQL>alter database open ; 8. Supprimer les contraintes de clés primaires SQL> connect air/air SQL> alter table vol drop primary key cascade; SQL> alter table pilote drop primary key cascade; SQL> alter table avion drop primary key cascade; Supprimer le tablespace permanent des index et le fichier associé SQL> drop tablespace AIR_IND including contents and datafiles ; Vérifier la suppression du fichier de données 9. Exécutez les instructions SQL suivantes : SQL> connect air/air SQL> select * from avion ; SQL> select * from vol where numavion =1; Que constatez-vous? L accès est effectué par un parcours complet. 10. Recréer le tablespace à l aide de l instruction SQL ou d OEM SQL>CREATE TABLESPACE «AIR_IND» DATAFILE C:\ORACLE\ORADATA\PROD\AIR_D02.DBF SIZE 5M REUSE EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; 11. Recréer les index à l aide du script de création des index créé avec l import utilisant la clause indexfile SQL>@D:\scripts\create_air_ind.sql 12. Exécutez les instructions SQL suivantes : SQL> connect air/air SQL> select * from avion ; SQL> select * from avion where numavion =1; Que constatez-vous? 13. Identifier le nom du tablespace de stockage des index du compte AIR en exécutant la requête suivante SQL> select distinct tablespace_name from dba_segments where segment_type = 'INDEX' and owner='air' ;

Sauvegarde et restauration physique Page 92 Sauvegarde et restauration physique Page 93 19. REQUETES POUR LE DBA A Requêtes d administration A partir des vues du dictionnaire rédiger les requêtes SQL suivantes : 1. Afficher la taille totale de la SGA 2. Afficher la liste des paramètres du fichier d initialisation B Automatisation de la reconstruction des Index 1. Ecrire le script SQL : rebuild_index.sql Récupération du résultat par la commande spool dans le fichier prod_rebuild_index.sql 2. Exécution du script généré A partir de SQL*Plus :@prod_rebuild_index.sql A partir d'un fichier de commande : prod_rebuild_index.cmd 3. Création d'une tâche planifiée permettant de reconstruire les index chaque nuit à une heure à déterminée. 3. Afficher la liste des fichiers physiques autoextensibles 4. Afficher la taille totale des tablespaces 5. Afficher la liste des utilisateurs en indiquant le profil par défaut 6. Afficher la liste des rôles affectés aux utilisateurs