Administration pour développeurs Oracle 10g
Page 2 1 1 Pré requis à l administration: Langage SQL et PL/SQL Avoir «pratiqué» Oracle
Page 3 Produits et gamme 1 Produits Oracle Database Oracle Application Server Oracle Developer Suite Oracle Enterprise Manager Grid control Gamme Edition Personnelle Edition Standard One Edition Standard Edition Entreprise Source de téléchargement http://www.oracle.com/technology/index.html
Page 4 Principales nouveautés Simplification Evolution de la structure 1 Installation Mise à niveau Tablespace SYSAUX Tablespace bigfile «Easy connect» Conseillers Groupe de tablespace temporaires Compactage des lignes dans un segment Automatisation Automatic Storage management (ASM) Automatic Workload Repository Autodiagnostic de la base Evolution des outils Data pump Scheduler Oracle Entreprise Manager Database Control (DC) Réglage de la mémoire partagée Collection des statistiques
Page 5 2 2 Instance Mémoire Processus Base de données Contrôle Data - Journalisation Paramètres d initialisation
Page 6 La base de données - 2 Paramètres d initialisation Contrôle Data Journalisation La base de donnée possède un nom défini par le paramètre DB_NAME = ma_base Le nom complet est préfixé par le nom de domaine défini par le paramètre DB_DOMAIN = domaine.fr è Ma_base.domaine.fr
Page 7 Fichier de contrôle - 2 Contrôle Contenu binaire Maintenu à jour par Oracle Data Journalisation Décrit la base Contient Le nom de la base La date et l heure de la création L emplacement des autres fichiers de la base Le numéro de séquence en cours è Présence indispensable ; il est conseillé de maintenir plusieurs copies (multiplexage)
Page 8 Fichiers de journalisation - 2 Contrôle Data Journalisation Enregistrent les modifications Organisés en groupes (2 au minimum) Le groupe est régulièrement réutilisé Un groupe peut être multiplexé (notion de membre ; 1 au minimum!) Un «tour de roue» = switch Un groupe inactif contient les données reproduites dans la base Utilisés lors de la «récupération» d une instance ou d un média
Page 9 Fichier de données - 2 Contrôle Data Journalisation Contiennent les données des segments Regroupés en «tablespace» Bigfile : jusqu à 32 To mais n utilise qu 1 seul fichier Smallfile : tablespace traditionnel de 1 ou plusieurs fichiers 2 tablespaces au strict minimum SysAux : apparu en 10g ; s appuie sur au moins 1 fichier System : s appuie sur au moins 1 fichier Ne devraient contenir aucune donnée applicative
Page 10 Organisation du stockage Bloc : Allocation élémentaire d espace Taille {4, 8, 16, 32 Ko} - 2 Extent : Ensemble de bloc contigu d un même segment Contrôle Data Journalisation Segment : Nom générique pour un objet conteneur de données Ex : Une table, un index Data01.dbf Tablespace Data01 Segment A Extent 1 Data02.dbf Segment A Extent 2 Segment B Extent 1 Segment C Extent 1 Segment D Extent 1 Segment B Extent 2 Espace non alloué
Page 11 Système de stockage Utilisation du système de fichiers de l OS Utilisation de partition «raw device» 2 Utilisation de ASM : Nouveauté 10g Gestionnaire de volume dédié à Oracle Utilise une instance ASM Nécessite le patch 3555863 sous Windows
Page 12 Notion de schéma Désigne l ensemble des objets d un utilisateur 2 Tout utilisateur est potentiellement associé à un schéma è il n existe pas d ordre pour créer un schéma Permet une organisation logique de l ensemble des objets créés dans Oracle Nb : Les objets appartiennent à un schéma Les objets sont définis dans le dictionnaire Les segments stockent leur données dans des tablespaces
Page 13 Règles de nommage 2 30 caractères au max Doit commencer par une lettre Peut utiliser {A-Z} {a-z} {0-9} {_ $ #} Ne doit pas être un mot réservé Définir une convention de nommage Idée : commencer le nom par un code suivi de sa désignation Ex : T001_Societes T002_Contacts V001_Meilleures_ventes Utiliser des synonymes T001_Societes -> T001 T002_Contacts -> T002 V001_Meilleures_ventes -> V001
Page 14 L instance SGA PGA 2 Instance Mémoire Processus
Page 15 La PGA SGA PGA 2 Mémoire Program Global Area Mémoire non partagée allouée aux différents processus Contient : SQL work area (zone de travail) Informations de session Variables de session Informations sur le traitement des requêtes Est intégrée à la SGA dans un contexte de serveur partagé Depuis la 9i gérée automatiquement et globalement via le paramètre : PGA_AGGREGATE_TARGET è Paramètres obsolètes : è Sort_area_size, Hash_area_size, Bitmap_merge_area
Page 16 La SGA SGA PGA 2 System Global Area Mémoire partagée Eventuellement redimensionnable à chaud (depuis la 9i) Eventuellement gérée automatiquement (depuis la 10g) Contient 6 zones principales : Mémoire Shared Pool Library Cache Dictionary Cache Database Buffer Cache Redo Log Buffer Java Pool Large Pool Streams Pool
Page 17 SGA Shared Pool SGA PGA (A) Mémoire 2 Principalement composée de Library Cache : Le code ascii SQL et PL-SQL La version parsée Le version exécutable (choisie par Oracle) Le Dictionary Cache Description des objects (tables, utilisateurs, ) Description des droits Taille : Définie par le paramètre : Shared_pool_size Ordre de grandeur < Go
Page 18 SGA Database buffer Cache (A) SGA Mémoire PGA 2 Contient les blocs de données récemment utilisés des : Tables Index Annulation Montés du disque grâce aux processus serveurs Paramètres Db_cache_size : cache pour les blocs de taille standard Db_Keep_cache_size : cache de données pérennes Db_Recycle_cache_size : cache de données éphémères
Page 19 SGA Redo Log Buffer SGA PGA (M) Mémoire 2 Espace de journalisation des modifications Contient : L image avant L image après Est vidé sur disque (fichier de journalisation) très fréquemment via le processus LGWR Est paramétré par : LOG_BUFFER
Page 20 SGA Autres pools SGA Mémoire PGA 2 JAVA_POOL_SIZE (A) Zone facultative 24 Mo par défaut Utilisée avec la machine virtuelle Java LARGE_POOL_SIZE (A) Zone facultative Utilisée si Oracle est en mode «serveur partagé» STREAMS_POOL_SIZE (M) Zone facultative
Page 21 Granule et gestion automatique SGA PGA 2 Mémoire Granule = allocation unitaire de RAM pour la SGA Taille de la granule Si taille de la SGA <= 128Mo è 4 Mo Sinon è 8 Mo / Windows è 16 Mo / autres systèmes Utilisation d un nb entier de granules de manière à couvrir le besoin Permet depuis la 9i de modifier l allocation Ram sans arrêt de l instance. Gestion Dynamique = ASSM Nouveauté 10g : réparti la RAM en fonction des structures (A) Paramétrée par SGA_TARGET
Page 22 Les processus d arrière plan DBWn LGWR CKPT SMON ARCn CJQn PMON Processus d arrière plan 2 1 processus = 1 rôle précis Généralement démarrés et arrêtés avec l instance Il a une trentaine de processus possibles Si un processus est lancé en plusieurs exemplaires son nom se termine par son N
Page 23 Processus DBW DBWn LGWR CKPT SMON ARCn CJQn PMON Processus d arrière plan 2 Database Writer Descend blocs dirty dans les fichiers de donnés Blocs dirty = blocs qui ont été modifiés en RAM Peut y avoir jusqu à 20 processus Est notamment activé : S il n y a plus de blocs libres ou non-dirty en RAM Lors du checkpoint A la fermeture propre de l instance
Page 24 Processus LGWR DBWn LGWR CKPT SMON ARCn CJQn PMON Processus d arrière plan 2 Log Writer Descend le Redo_log_Buffer dans le «fichier de journalisation» courant Activé par : Commit Saturation de 1/3 du Redo_log_Buffer Préalablement à DBWn Toutes les 3s
Page 25 Processus CKPT DBWn LGWR CKPT SMON ARCn CJQn PMON Processus d arrière plan 2 Check point Inscrit un point de contrôle dans les entêtes des fichiers de données et de contrôle Activé par : Basculement de fichier journal = Switch DBWn
Page 26 Processus SMON DBWn LGWR CKPT SMON ARCn CJQn PMON Processus d arrière plan 2 System Monitor Chargé de faire la «récupération» de l instance et, dans le cas de tablespace gérés par le dictionnaire (historique), de libérer les segments temporaires et de réassembler l espace libre contigu. Activé Lors du démarrage Périodiquement pour la gestion des TS gérés par le dictionnaire
Page 27 Processus ARC DBWn LGWR CKPT SMON ARCn CJQn PMON Processus d arrière plan 2 Archiver Recopie le fichier journal quand il devient inactif N est présent que si Oracle est en mode ARCHIVELOG
Page 28 Processus CJQ DBWn LGWR CKPT SMON ARCn CJQn PMON Processus d arrière plan 2 Job Queue Lance les travaux programmés en démarrant un processus esclave (Jnnn)
Page 29 Processus PMON DBWn LGWR CKPT SMON ARCn CJQn PMON Processus d arrière plan 2 Process Monitor Chargé du nettoyage des processus utilisateurs plantés Rollback des transactions en cours Libération des ressources
Page 30 Processus Serveur 2 Ne sont pas des processus d arrière plan! Chargés de traiter les requêtes des utilisateurs et notamment de «monter» les données en RAM Oracle en serveur dédié : 1 Processus par connexion Oracle en serveur partagé : 1 Processus pour plusieurs connexion 1 connexion peut utiliser n importe lequel des processus partagés
Page 31 Le fichier de paramètres Paramètres d initialisation 2 Lu pour pouvoir démarrer l instance Décrit notamment où se situe le fichier contrôle Stocke les différents paramètres Format texte (statique) à init***.ora Format binaire (dynamique) à spfile***.ora (depuis 9i) # exemple de fichier pfile Db_name = ma_base Instance_name = domaine.fr Control_files = ("d:\control01.ctl","e:\control02.ctl") Statistics_level = typical Compatible = 10.0.0 Sga_target = 1G Pga_aggregate_target = 10M
Page 32 Résumé des composants SGA PGA 2 Instance Mémoire DBWn LGWR CKPT SMON ARCn CJQn Processus PMON Base de données Contrôle Data - Journalisation Paramètres d initialisation
Page 33 Oracle en action SGA PGA Commit; val avant ab ; val après a val avant ab ; val après a val avant ab ; val après a 2 Operation complete Mémoire DBWn LGWR CKPT SMON ARCn CJQn Processus PMON -- -- Update Commit; T1 Set col1= a ; Contrôle Data Journalisation
Page 34
Page 35 Objets physiques : Définitions Tablespace : Espace, sur disque, de stockage des données Composé d un ou plusieurs fichiers (os) 3 Segment : Objet défini dans la base comme étant conteneur Table Index Rollback segment Extent : Ensemble de blocs physiquement contigus d un segment donné Blocs : Élément unitaire de gestion de l espace (RAM ou disque) d Oracle
Page 36 Objets logiques 3 Segments Tables Relationnelles Partitionnées XML Index Btree Bitmap Organisées en cluster Organisées en Index Partitionnés (voir : tables partitionnées) Autres segments Rollback segment Deferred segment LOBsegment Objets (non segment) Vues Synonymes Séquence Fonctions / procédures / déclencheurs / Packages
Page 37 Organisation du stockage A (Table) B (Index) C (Table) D (Table) 3 Tablespace Data01 Data01.dbf Segment A Extent 1 Segment A Extent 2 Data02.dbf Segment B Extent 1 Segment C Extent 1 Segment D Extent 1 Segment B Extent 2 Espace non alloué
Page 38 Tablespaces par défaut : SYSTEM et SYSAUX Ne pas écrire dans les Tablespaces par défaut Il faut donc, soit : préciser le TS lors de la création d objet Imposer que l administrateur désigne les différents types de TS associés à chaque utilisateur 3 SYSTEM Contient le dictionnaire SYSAUX Existe depuis la version 10 Est une extension de System
Page 39 Caractéristiques d un TS Type : Permanent : pour les objets permanents Temporaire : pour les objets temporaires Rollback : pour stocker les rollback segments (RBS) (on ne peut y créer que des RBS) 3 Mode de gestion des extensions Par le dictionnaire Localement Conseil : Créer des TS gérés localement avec gestion automatique des extensions CREATE Tablespace nom Datafile Extent management local autoallocate
Page 40 DC : Espace disque logique 3
Page 41 Création de table Table permanente Create table nom (col type [null] [, col type [null]]) [Tablespace ts] 3 Table temporaire Create global temporary table nom (col type [null] [, col type [null]]) On commit [delete preserve] rows [Tablespace ts] Rq : la structure de la table est permanente, les lignes sont temporaires soit à la transaction (delete) soit à la session (preserve)
Page 42 Création de tables optimisées Description Objectif 3 Partitionnées Organisées en cluster La table est découpée en plusieurs segments physiques distincts. Les index peuvent suivre le découpage et/ou non. 2 tables se trouvent écrites dans le même bloc. Nécessite la création d un «cluster». Optimiser les temps de réponse en écourtant les «table scan». Faciliter la gestion de l espace lors des historisations Optimiser les temps de réponse lorsque les 2 tables sont intimement associées Organisées en Index Les lignes sont écrites dans les blocs en respectant l ordre Optimiser les temps de réponse lors des tri.
Page 43 Gestion des index Classification des index Index de structure Sont associés à une contrainte d unicité (index b-tree) Sont défini à la création de la base, ne sont pas remis en cause Index de performance Sont remis en cause au cours du temps 3 Type d indexation Index b-tree OLTP / OLAP Utiles si faible cardinalité et requêtes restrictives Sous types possibles : Normal À clé inversée Index bitmap OLAP Utiles si forte cardinalité Portée d un index Une colonne Plusieurs colonnes
Page 44 Index Btree Select lettre from alphabet where lettre = Q ; A @ J @ S @ A @ D @ G @ J @ M @ P@ S @ V @ Y @ 3 A @ B @ C @ D @ E @ F @ G @ H @ I @ J @ K @ L @ M @ N @ O @ P @ Q @ R @ S @ T @ U @ V @ W @ X @ Create INDEX I_lettre on alphabet(lettre); Y @ Z @ A Q W Z S X E D C R F V T G B Y H N U J I K O L M P Create table alphabet (lettre char(1)); Insert into alphabet values( A ); Insert into alphabet values( Q );
Page 45 Index Bitmap Select * from factures where type = A or finies = N ; Create bitmap INDEX I_type on factures(type); Create bitmap INDEX I_finies on factures(finies); F 1 1 1. 0 1 0. 1 1 0 A 0 0 0. 1 0 1. 0 0 1 A 0 0 0. 1 0 1. 0 0 1 3 O 1 1 1. 1 1 0. 0 1 0 N 0 0 0. 0 0 1. 1 0 1 N 0 0 0. 0 0 1. 1 0 1 A ou N 0 0 0. 1 0 1. 1 0 1 13 001,F,O 002,F,O 003,F,O 045,A,O 046,F,O 047,A,N 094,F,N 135,F,O 096,A,N
Page 46 Authentification Rôles Définition Schéma Profil Privilèges
Page 47 Modes d authentification Identification Oracle SQL> connect nom/pwd Identification par l OS Le paramètre REMOTE_OS_AUTHENT doit être à TRUE 4 SQL> connect / Mise en correspondance du nom de session OS et du nom de connexion Oracle (préfixé par OPS$) Le préfixe est géré par le paramètre OS_Authentifation_prefix Sous Windows le nom de l annuaire fait partie du nom de l utilisateur OPS$DOMAINE\UTILISATEUR OPS$MACHINE\UTILISATEUR
Page 48 Gestion des utilisateurs 4 Création CREATE USER nom IDENTIFIED [By pwd externally] [DEFAULT TABLESPACE nom_ts] [TEMPORARY TABLESPACE nom_ts] [QUOTA [UNLIMITED X [K M] ] ON nom_ts] [PROFILE nom_p] [PASSWORD EXPIRE] [ACCOUNT [LOCK UNLOCK]; Modification ALTER USER nom IDENTIFIED [By pwd externally] [DEFAULT TABLESPACE nom_ts] [TEMPORARY TABLESPACE nom_ts] [QUOTA [UNLIMITED X [K M] ] ON nom_ts] [PROFILE nom_p] [PASSWORD EXPIRE] [ACCOUNT [LOCK UNLOCK]; Suppression DROP USER nom [cascade];
Page 49 Définition de paramètres par défaut Chaque utilisateur est (normalement) associé à un TS La création d objet est implicitement faite dans ce TS La désignation du TS par défaut ne donne pas pour autant le droit d écrire Le défaut, pour tout utilisateur (au cas où on prévoit d oublier de préciser un TS par utilisateur) Alter database default tablespace nom; 4 --vérification Select property_name, property_value from database_properties Where property_name = DEFAULT_PERMANENT_TABLESPACE ;
Page 50 Informations sur les utilisateurs Dba_users 4 Username User_ID Password Account_status Lock_date Expiry_date Default_tablespace Temporary_tablespace Created Profile Initial_rsrc_consumer_group External_name Dba_ts_quotas Tablespace_name Username Bytes Max_bytes Blocks Max_blocks Dropped
Page 51 Les profils Ensemble nommé de limitations de ressources Temps CPU Nb de lectures logiques Nb de sessions simultanées par utilisateur Temps d inactivité Durée de la session Si configuration en serveur partagé : Qté de mémoire privée en SGA 4 Paramètres de sécurité Seuil de verrouillage Délais de verrouillage Durée de vie des mots de passe Durée de vie de la période de grâce Historique des mots de passe Complexité
Page 52 Créer / modifier un profil 4 [CREATE ALTER] PROFILE nom LIMIT [SESSIONS_PER_USER x UNLIMITED DEFAULT] [CPU_PER_SESSION x UNLIMITED DEFAULT] [CPU_PER_CALL x UNLIMITED DEFAULT] [CONNECT_TIME x UNLIMITED DEFAULT] [IDLE_TIME x UNLIMITED DEFAULT] [LOGICAL_READS_PER_SESSION [LOGICAL_READS_PER_CALL x UNLIMITED DEFAULT] x UNLIMITED DEFAULT] [COMPOSITE_LIMIT x UNLIMITED DEFAULT] [PRIVATE_SGA [FAILED_LOGIN_ATTEMPTS] x [K M] UNLIMITED DEFAULT] x UNLIMITED DEFAULT] [PASSWORD_LIFE_TIME] x UNLIMITED DEFAULT] [PASSWORD_REUSE_TIME] [PASSWORD_REUSE_MAX] [PASSWORD_LOCK_TIME] [PASSWORD_GRACE_TIME] x UNLIMITED DEFAULT] x UNLIMITED DEFAULT] x UNLIMITED DEFAULT] x UNLIMITED DEFAULT] [PASSWORD_VERIFY_FUNCTION function NULL DEFAULT]
Page 53 Mise en place des profils Activation de la limitation via les profils Alter system set ressource_limit = [True false] [SCOPE = [memory spfile both]] 4 Affectation lors de la création de l utilisateur CREATE USER nom [ ] [PROFILE nom_p] [ ]; Après ALTER USER nom [ ] [PROFILE nom_p] [ ]; Suppression d un profil Drop profile nom_p [cascade];
Page 54 Informations sur les profils Dba_profiles Profile Resource_name Resource_type limit 4 Dba_users Username User_ID Password Account_status Lock_date Expiry_date Default_tablespace Temporary_tablespace Created Profile Initial_rsrc_consumer_group External_name
Page 55 Gérer les droits Ordres DCL Grant Revoke 4 Privilège système Droits d exécuter un ordre SQL Si le droit porte sur un ordre indépendamment du schéma on peut préciser ANY (ex : grant create [any] table ) Grant ordre_sql to utilisateur [With admin option]; Privilège sur les objets Droits d accéder à un objet (en dehors du propriétaire) Grant privilège on objet to utilisateur [With grant option];
Page 56 Privilèges système Select any dictionary Permet d accéder aux vues DBA_ sans être DBA Nécessaire pour utiliser DC Create session Donne le droit à un utilisateur de se connecter Sysoper Droits courants de gestion (ex: startup, alter database, ) Sysdba 4 Droits de sysoper «with admin option» + create database Donnés par défaut à sys Privilège nécessaire pour certaine tâche d administration Stocké dans le fichier de mot de passe (sinon authentification OS) Informations sur l attribution des privilèges système Dba_sys_privs V$pwfile_users
Page 57 Révocation de privilèges Privilège Système Revoke [privilège all privileges] From utilisateur; Le privilège est retiré au compte indiqué Privilège Objet Revoke [privilège all privileges] on objet From utilisateur; 4 Le privilège est retiré au compte indiqué AINSI qu à tous ceux pour qui le droit à été accordé via ce compte (grantor) Nb : Un compte peut obtenir les droits via des rôles. Revoke n est pas deny.
Page 58 Notion de base Fermée Vue Proc Proc Schéma 1 Donner les privilèges sur les vues et procédures aux utilisateurs Les vues et procédures accèdent aux tables. Les utilisateurs n ont pas de privilèges sur les tables 4 Prévoir l usage de : Synonymes Déclencheurs instead of (pour certaines vues) D étudier la clause AUTHID [Current_user definer] pour certaines procédures
Page 59 Accéder aux objets des autres schémas Select * from schema.objet@dblink Schema : nom du schéma dans lequel est stocké l objets Objet : nom de l objet @dblink : nom du contexte de sécurité qui permet l accès à une autre instance 4
Page 60 VPD et FGA Fonctionnalités avancées dans la gestion des droits via le package DBMS_RLS VPD = virtual private database FGA = fine-grained access 4
Page 61 Définition de rôle Ensemble nommé de privilèges Un utilisateur peut adhérer à un ou plusieurs rôle. Un rôle peut être attribué à un autre rôle. 4 Syntaxe : Create role nom [identified by pwd identified externally using nom_package not identified] Limitations Un rôle appartient à personne Un rôle n est pas associé à un schéma Un développeur doit avoir le droit direct (pas au travers un rôle) d accès aux objets cités dans ces procédures ou vues
Page 62 Attribuer/Révoquer un rôle Grant nom_role to [utilisateur Public nom role] [with admin option]; NB : attribuer un rôle : prédéterminer les rôles possibles pour un compte activer un rôle : indiquer le ou les rôles effectifs Attribuer n est pas activer! 4 Revoke nom_role from [utilisateur Public nom role];
Page 63 Activation/Désactivation d un rôle On ne peut activer que des rôles attribués par défaut : Alter user utilisateur default role [nom_role[,nom_role] all [except nom_role] none]; en cours de session 4 Set role [nom_role[,nom_role] all [except nom_role] none];
Page 64 Rôles prédéfinis Oracle propose un très grand nombre de rôles prédéfinis Ne pas donner plus de droits que voulu Etudier l opportunité d utiliser les rôles prédéfinis par rapport à créer les siens 4 Informations sur les privilèges accordés par rôle prédéterminé : Documentation Oracle Dba_sys_privs : privilèges système Session_privs System_privilege_map Dba_tab_privs : privilèges objets Dba_col_privs Table_privilege_map Dba_roles : liste des roles Dba_appliccation_roles Dba_role_privs Role_sys_privs Role_tab_privs Role_role_privs Session_roles
Page 65 Superviser les utilisateurs Liste des utilisateurs connectés V$session Liste des opérations en cours de plus de 6s V$session_longops Déconnecter un utilisateur Alter system kill session sid, serial# ; 4 Alter system disconnect session sid, serial# [immediate post_transaction];
Page 66 La concurrence d accès
Page 67 Transaction Définitions : Ensemble d écritures indissociables (atomiques) Est finie par l ordre COMMIT ou ROLLBACK L ensemble des écritures sont rendues permanentes ou sont ignorées Une transaction commence dès qu une autre fini ; pas d ordre/marque de début de transaction 5 Fonctionnement Durant une transaction les informations sont écrites dans les blocs Les verrous empêchent l accès aux autres transactions à ces verrous Les demandes de lecture sont dirigées vers les rollback segments (RBS) Les demandes d écritures sont mises en attente Lors de la fin de transaction COMMIT : les verrous sont levés ; les données sont disponibles pour tous ROLLBACK : les images avant sont recopiées depuis les RBS et les verrous sont levés ; les données initiales sont disponibles Les écritures sont isolées par des verrous Les lectures sont possibles dans les RBS Début de transaction Fin de transaction
Page 68 Remarques COMMIT est implicite À chaque ordre DDL Avec l ordre Truncate table Lors d une déconnexion explicite Rollback est implicite Sur perte de connexion À la sortie d un programme précompilé (Pro*, ) Cas particulier : SAVEPOINT Permet de revenir à une marque prédéterminée de la transaction UPDATE employees SET salary = 7000 WHERE last_name = 'Banda'; SAVEPOINT banda_sal; UPDATE employees SET salary = 120000 WHERE last_name = 'Greene'; SAVEPOINT greene_sal; SELECT SUM(salary) FROM employees; ROLLBACK TO SAVEPOINT banda_sal; UPDATE employees SET salary = 12000 WHERE last_name = 'Greene'; COMMIT;
Page 69 Verrous Le verrouillage est implicite et automatique Verrous DML La transaction pose : 1 verrou partagé au niveau de la table 1 verrou exclusif sur chaque ligne modifiée Verrous DDL La contention des verrous peut être facilement observable Ordres DDL : Create ; Alter ; Drop La transaction pose 1 verrou exclusif sur l objet Ordres DCL (et exceptions) La transaction pose 1 verrou partagé La contention de ces verrous est rare du fait de la brièveté de la transaction (commit intégré) Oracle ne transforme pas un verrou ligne en verrou table (pas d escalade)
Page 70 Suivi des verrous V$_lock Addr Kaddr Sid Type Id1 Id2 Lmode Request Ctime Block Remarque : la commande lock permet de verrouiller explicitement.
Page 71 Niveaux d isolations Read committed Niveau par défaut SET TRANSACTION ISOLATION LEVEL READ COMMITTED ALTER SESSION SET ISOLATION_LEVEL READ COMMITTED; Serializable Garanti que les données lues sont les mêmes tout au long de la transaction. Aucune transaction concurrente. SET TRANSACTION ISOLATION LEVEL SERIALIZABLE ALTER SESSION SET ISOLATION_LEVEL SERIALIZABLE Lecture seule N autorise aucune écriture sur les données accédées. SET TRANSACTION READ ONLY
Page 72 Snapshot too old Les images avant sont conservées dans les RBS Les RBS sont limités en taille Les informations dans les RBS sont effacées cycliquement è il se peut que les données à lire soient effacées des RBS (car trop anciennes!) Solutions En amont : limiter la durée des transactions au strict utile ponctuer chaque ordre DML par Commit (sauf si transaction de plusieurs ordres) En aval : Augmenter la taille disponible pour les informations d annulations
Page 73 Deadlock Interblocage : plusieurs transactions ayant verrouillé des ressources attendent mutuellement la libérations des ressources des autres transactions Conséquences : Oracle tue l ordre bloquant d une transaction Une trace est écrite dans le dossier pointé par USER_DUMP_DEST Une exception est levée pour la transaction tuée (ORA-60) La transaction doit être Rollbakée et rejouée Les autres transactions se poursuivent Conseils Plus les transactions sont courtes moins le deadlock est probable Organiser les transactions pour quelle utilisent les ressources dans le même ordre 1. Relationnel (parent-enfant) 2. Alphabétique (client ; adr_facture ; adr_livraison) 3. Dans l ordre des lignes (order by) Prévoir, dans le code, la re-tentative
Page 74 Exercice Lancez 2 consoles clientes (connect scott/tiger@emm) Vérification de la cohérence Deadlock Console 1 : modifiez une ligne de la table emp Console 2 : affichez toutes les lignes de emp Console 1 : Commit; Console 2 : affichez toutes les lignes de emp Console 1 : modifiez le salaire de MARTIN Console 2 : modifiez la commission de SMITH Console 1 : modifiez le salaire de SMITH Console 2 : modifiez la commission de MARTIN
Page 75
Page 76 Outils graphiques Database control Enterprise manager Différents assistants
Page 77 Outils d import / export Nouveaux programmes : impdp et expdp Remplacent imp et exp Depuis et vers 9.2 et supérieur Utilisent le package DBMS_DATAPUMP Peut utiliser une «table externe» Imp et Exp Existent toujours
Page 78 SQL*loader Contient la source Décrit la source et la destination Journalisation Reçoit les lignes en erreur (bad) Reçoit les lignes non retenues
Page 79 Dbverify : Vérification de l intégrité physique Vérification des blocs d un fichier de données Vérification d un segment