Module DBA Oracle

47
Université CAD de Dakar Page Département Maths-Informatique Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007 1 Université Cheikh Anta Diop Faculté des Sciences et Techniques Département de Mathématiques-Informatique COURS DE DBA ORACLE DU Dr. MBAYE SENE Maîtrise Informatique 2006/2007

Transcript of Module DBA Oracle

Page 1: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

1

Université Cheikh Anta Diop Faculté des Sciences et Techniques

Département de Mathématiques-Informatique

COURS DE DBA ORACLE

DU Dr. MBAYE SENE

Maîtrise Informatique

2006/2007

Page 2: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

2

TABLE DES MATIERES

Première Partie : Généralités, architecture et Tuni ng

I Architecture du système Oracle (physique et log ique) I.1 Les fichiers de la base I.1.1 Fichiers base I.1.2 Fichiers Redo log I.1.3 Fichiers de contrôle I.2 Mémoire centrale I.2.1 Zone des exécutables I.2.2 La SGA (System Global Area) I.2.3 PGA (Programm Global Area) I.2.4 Zones des ordres SQL I.3 Principaux process Oracle I.3.1 Le process DBWR I.3.2 Le process LGWR I.3.3 Le process SMON I.3.4 Le process PMON I.3.5 Le process ARCH I.3.6 Les autres processus I.4 Architecture OFA (Optimal Flexible Architect ure) I.4.1 Définitions et objectifs I.4.2 Avantages et caractéristiquesd I.4.3 Configuration recommandée I.5 Nouveautés de la version 9i/10g par rapport à la 8i TP : Constituants de la base II Optimisation sous Oracle II.1 Optimisation au niveau conceptuel II.1.1 Indexation sous Oracle II.1.2 Choix des clusters II.1.3 Redondance calculée II.1.4 Partitionnement des tables II.1.5 Choix des paramètres de stockage TP : Indexation II.2 Optimisation des programmes d’application II.2.1 Règles de l’optimiseur II.2.2 Ordonnancement par restructurations algébriques II.3 Tuning d’une base de données (Voir partie administration)

Deuxième partie

I. Création/démarrage d’une base de donnée I.1 Préparation du fichier d’initialisation

I.2 Création d’une base de données (mode graphique et/ou mode manuel) I.3. Démarrage/Arrêt d’une base

Page 3: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

3

I.4 Ajout, suppression ou modification des fichiers de la base AtelierINIT II Gestion des utilisateurs II.1 Création II.2 Modification II.3 Suppression Atelier 1 III Contrôle des accès III.1 Gestion des privilèges systèmes III.2 Gestion des privilèges objets III.3 Audit de contrôle d’accès - Audit système - Audit des propriétaires d ‘objets Atelier 2 IV Administration réseau IV.1 Les fichiers de configurations IV.2 Configuration de SQL*NET IV.3 Accès à une base distante Atelier 3 V Tuning d’une base Oracle (Avancé)

V.1 Les outils de mesures : les vues V.2 Tuning de la mémoire cache - Optimisation du dictionnaire cache - Optimisation des buffers de la SGA V3.3 Tuning des E/S disque VI Sauvegarde, restauration de la base (avancé)

VI.1 Le mode archivage VI.2 Sauvegarde avec l’OS VI.3 Sauvegarde avec l’outil EXPORT VI.4 Restauration de la base - En mode archivelog - En mode noarchivelog VI.5 Réorganisation d’une base VII Gestion des objets dans une base répartie (av ancé) VII.1 Concept de database link, accès à des objets distants VII.2 Quelques techniques de répartition - Méthodes des copies - Méthode des partionnements VII.3 Réplication par cliché VII.3 Réplication par trigger VIII Quelques outils d’Oracle (Avancé)

IX.1 SQL*Loader IX.2 Oracle Network manager IX.3 Oracle Enterprise Manager

Page 4: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

4

Introduction : Présentation du système Oracle

On distingue deux composantes dans un système d’information : les données et les

traitements. Les données sont représentées par une base de données et les

traitements par un ensemble d’applications informatiques et par des procédures

manuelles. Un système de gestion de base de données (SGBD) a pour vocation de

donner la possibilité de créer une base de données et de l’entretenir d’une part, et de

développer des applications pour l’exploiter d’autre part. C’est un outil permettant

d’insérer, de modifier et de rechercher efficacement des données spécifiques dans une

grande masse d’informations partagées par les usagers.

Une base de données Oracle comprend deux types d’informations: le dictionnaire de

données et les données. Le dictionnaire de données est un ensemble de tables qui

décrivent la base ; les données sont de deux types : les données des utilisateurs

(essentiellement les tables et les index) et les données nécessaires au fonctionnement

d’Oracle (exemple les segments de rollback).

Le noyau d’Oracle réalise les fonctionnalités requises chez un SGBD, permettant ainsi

d’assurer le fonctionnement normal d’une base de données (stockage des données et

gestion de l’espace disque, gestion du dictionnaire de données, recherche et

modification des données, sécurité des données ainsi que leur intégrité et leur

confidentialités et enfin gestion de la concurrence d’accès).

I Architecture d’Oracle

Une base de données Oracle est un ensemble de fichiers sur disque ayant chacun une

structure et une vocation particulière.

Sous le terme d’architecture, il faut distinguer deux parties :

- l’architecture physique : elle est constituée d’un ensemble de fichiers qui

contiennent l’ensemble des données de la base : données de gestions de la base

et données des utilisateurs. L’architecture physique d’une base Oracle comprend

les fichiers de données, les fichiers de reprise et les fichiers de contrôle.

- L’architecture logique : elle comprend les tablespaces, les segments, les

extensions, les blocs et les objets de schéma. Ces derniers comprennt les tables,

les vues, les index, les procedures, les clusters, les fonctions, les triggers etc…

Rappel :

- Bloc : c’est le niveau logique le plus bas, il est composé d’un certain nombre

d’octets.

Page 5: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

5

- Extension : c’est le niveau intermédiaire, il est constitué d’un certain nombre de

blocs consécutifs alloués simultanément à un objet de schéma.

- Segment : c’est le niveau supérieur, il est constitué d’un ensemble d’extensions

allouées au même objet schéma.

Il ne faut pas confondre une base de données Oracle et une instance Oracle qui est un

ensemble de 5 principaux process (dont un optionnel) et une zone de la mémoire

centrale appelée SGA (voir plus loin). Une instance travaille sur une et une seule base

de données. La figure Fig1 illustre une architecture générale d’une instance.

Fig1 : Architecture générale d’une instance Oracle

I.1 Fichiers de la base

Les fichiers de la base sont de trois types : les fichiers base (database files), les fichiers

de journalisation (redo log files) et les fichiers de contrôle (control files)

I.1.1 Fichiers base

Les fichiers base contiennent essentiellement deux types d’in formations : les données

des utilisateurs et du dictionnaire de données (DD) et les données de travail. Les

premières constitent le cœur de la base de données et consistent en des tables et des

index, les dernières elles sont nécessaires pour qu’Oracle puisse fonctionner.

Les fichiers base sont regroupés en unités logiques appelées tablespace .

Fichier redo logarchivés

User1 Usern DBWR LGWR SMON PMON ARCH

Premier fichier base

Deuxième fichier base

Premier fichier redo

log

1er fichiercontrol

2iemefichiercontrol

Deuxième fichier redo

log

SGA: Partie de la mémoire centrale réservée à l'instance

Page 6: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

6

Une table d’utilisateur ou du DD occupe un certain nombre de blocs oracle. Les blocs

pris par une table forment ce qu’on appelle un segment de données ; un index occupe

un segment d’index.

Les segments de travail représentent une partie des blocs des fichiers base ; il y a 4

types de segments de travail : les rollback segments, les segments temporaires, les

segments différés et les segments du démarrage.

Les rollback segments sont utilés pour la réalisation du concept de transaction : les

blocs de données ou d’index qui sont en cours de modification sont copiés avec leurs

anciennes valeurs (l’image avant) dans un rollback segment. Si la transaction de

modification se termine normalement, ces blocs d’image avant ne sont pas utiles. Par

contre si la transaction est annulée ou anormalement arrêtée, ces blocs seront utilisés

pour restituer l’état de la base de données avant le début de la transaction.

Les segments temporaires (temporary segments) sont utilisés par Oracle pour les

requêtes SQL qui ne peuvent pas être réalisées en mémoire ; ces segments sont pris

soit dans le tablespace système soit dans les tablespaces des utilisateurs.

Les rollbacks segments différés (Differed Rollback segments) sont utilisées par Oracle

pour ranger des blocs « image avant » d’un tablespace lorsque celui-ci est mis hors

service (Offline), et par la même occasion, l’espace qu’ils occupaient est libéré.

Le segment de Bootstrap (cache segment) est un segment de moins de 50 blocs qui

est créé par Oracle pour ses propres besoins, lors de la création de la base.

I.1.2 Fichiers Redo log

Ce sont des fichiers de journanlisation des modifications successives, ils sont au moins

au nombre de 2. Ils contiennent tous les changements d’état de la base de données et

sont utiles pour la restauration d’une base suite à un incident de l’instance ou du disque.

Cette restauration consiste en une ré-application du contenu des fichiers redo log sur la

base.

Tablesapce TS2

FigTS: Les tablesapces

Tablespace "SYSTEM" Tablespace TS1

Dic.Don.

Rollback segment

"SYSTEM"

Seg. temporaire

Rollback segment"RS"

Table T1Table T2

Rollback seg.RS1

Table T3Table T4

Rollback seg.RS2

Index T1sur Table T1

Table T3

Page 7: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

7

I.1.3 Fichiers de contrôle

Ce sont de petits fichiers qui contiennent essentiellement : les noms des fichiers base et

redo log, le nom de la base, la date de création de la base et des informations sur l’état

de cohérence de la base (les checkpoints). Une base doit avoir au moins un fichier de

contrôle ; les autres ne sont qu’une copie conforme du premier et existent dans un but

de sécurité.

I.2 Mémoire centrale

Lorsqu’une base de données Oracle est en activité, il y a quatre types de zone mémoire

utilisées :

I.2.1 Zone des exécutables

Cette zone mémoire contient l’exécutable du noyau et des outils Oracle en cours

d’utilisation, et des applications des utilisateurs. La taille de cette zone mémoire dépend

du système d’exploitation et de la version d’Oracle. Ces exécutables peuvent être

partagés par plusieurs instances à la fois sur une même machine.

I.2.2 La SGA (System Global Area)

C’est la zone mémoire réservée à l’instance; elle est allouée au démarrage et contient

les informations d’une et une seule instance Oracle. Sa taille ne change pas durant

l’exploitation, et dépend des valeurs de certains paramètres du fichier de démarrage

INIT.ORA. Cette zone est libérée à l’arrêt de l’instance. Plus la taille du SGA est grande,

plus Oracle va travailler en mémoire et moins il va accéder au disque. Les types

d’informations contenues dans la SGA sont: des blocs de données et d’index des

utilisateurs, des blocs du dictionnaire de données, des enregistrements redo log etc.

La SGA est constituée de quatre principales parties :

• Fixed size : c’est une petite zone réservée pour le système, sa taille est

pratiquement non paramétrable.

• Variable size : elle correspond essentiellement au Dictionnaire de Données ; sa

taille dépend des paramètres commençant par DC_.

• Database buffer : c’est la taille de la zone des buffers de données et de rollback,

elle est fonction du paramètre db_block_buffers.

• Redo buffer : c’est la taille de la zone des enregsitrements redo log ; elle est

fonction du paramètre log_buffer.

Pour ontenir ces composants, il suffit de lancer la commande show sga sous le

compte system ou la requête select * from v$sga.

I.2.3 PGA (Programm Global Area)

Page 8: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

8

Une zone est affectée à chaque process connecté à la base, le process peut être un

process Oracle ou utilisateur. Cette zone dont la taille dépend du système d’exploitation

contient des informations sur l’état du process et sur son activité.

I.2.4 Zones des ordres SQL

Chaque ordre SQL est stocké sous une forme particulière dans une zone mémoire

appelée curseur, elle contient essentiellement le texte de l’ordre et le schéma d’accès. Il

faut noter que cette zone est en dehors de la PGA de l’utilisateur et de la SGA.

I.3 Principaux processus Oracle

Les lectures de la base vers la SGA sont assurées par les processus d’arrière plan ou

utilisateurs.

I.3.1 Le process DBWR

Il est responsable de l’écriture des blocs de la SGA vers la base, et plus précisément

vers les fichiers de la base. Pour réduire au maximun les entrées/sorties disques, ce

process est asynchrone dans la mesure où il n’écrit pas systématiquement dans la base

suite à un ordre modifiant l’état de la base (exemple suite à un ordre SQL update): il

retarde au plus l’écriture sur disque.

I.3.2 Le process LGWR

Il travaille conjointement avec le DBWR. Il écrit dans le fichier redo log pour tracer toute

activité de mise à jour de la base de données.

Cette écriture a lieu dans deux cas :

a) quand la SGA est pleine

b) quand on atteint un point de contrôle (checkpoint) : un checkpoint est est atteint

quand le fichier redo log courant est plein ou quand la valeur du paramètre

log_checkpoint_interval est atteint ; ce paramètre détermine le nombre de blocs

oracle qui doit être atteint pour écrire les enregistrements de la SGA vers les

fichiers base.

I.3.3 Le process SMON

Il a pour tâche principale la restauration de la cohérence d’une base à son démarrage.

Au lancement de la base, le rôle de SMON consiste à vérifier si l’instance s’était arrêtée

normalement la dernière fois; auquel cas il n’a rien à faire. Sinon il restaure la base en

récupérant dans le fichier redo log les modifications qui ont été terminées (par un

Commit ou Rollback) et que Oracle n’avait pas encore écrites dans la base avant l’arrêt

anormal. Ce process intervient également pour faire le ménage suite à la désactivation

et à la réactivation d’une partie de la base de données (tablespace offline puis online).

Page 9: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

9

I.3.4 Le process PMON

Il intervient lorsqu’un process utilisateur a un problème ou lorsqu’il est anormalement

terminé. Cette intervention consiste à libérer les ressources occupées par le process

utilisateur et à supprimer ce dernier de la liste des process utilisateurs de l’instance.

I.3.5 Le process ARCH

Il est optionnel et a pour rôle d’archiver les versions successives des fichiers redo log.

Ces archives pourront être utilisées pour restaurer la base de données en cas de perte

de fichiers base.

I.3.6 D’autres processus d’arrière plan

D’autres processus background pourraient être actifs dépendant des options

d’installations prises :

• CKPT (the checkpoint process) : il est responsable de la MAJ des entêtes des

fichiers base lors d’un checkpoint,

• Snnn (the Shared Server Process) : Avec une configuration MTS (Multi-Threaded

Server), un ou plusieurs processus servers sont créés avec les noms S001 ,

S002, S003 etc… Ces processus permettent à plusieurs processus utilisateurs de

se connecter à l’instance, ce qui permet de redure l’overload tout en augmentant

le nombre d’utilisateurs supportés.

• Dnnn (the Dispatcher process) : Avec une configuration MTS,un ou plusieurs

processus dispatcher D001 , D002, D003 etc… sont créés ; ils reçoivent les

demandes de requêtes du LISTENER et les redirigent vers le processus server

partagé le moins chargé. Le nombre de processus dispatcher est donné par le

paramètre MTS_MAX_DISPATCHERS .

• RECO (the Recoverer process) : il est utilisé dans une architecture distribuée

.transactionnelle ; il permet de recouvrir aux pannes rencontrées dans les

transactions distribuées en se connectant sur les bass distantes impliquées dans

la transaction distribuée et en en supprimant les lignes résultant d’une transaction

« douteuses ».

• LCKn (the Lock process) : Plusieurs processus de vérouillages (LCK0, LCK2…)

sont utilisés avec l’option Parralel server pour offrir des possibilités de vérouillage

inter-instance.

• Pnnn (the Parralel Query process): ils sont responsables de l’éxécution des

requêtes SQL dans les cas suivants : requêtes parralèles, création parralèle

Page 10: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

10

d’index, chargement parralèl de données etc…Leur nombre minimal est spécifié

par le paramètre PARRALEL_MAX_SERVERS

I.4 Architecture OFA (Optimal Flexible Architecture ) I.4.1 Définition et objectifs

Oracle Optimal Flexible Architecture (meilleure architecture évolutive), est un ensemble

de convention de nommage et de répartition de fichiers sur les différents disques dur du

serveur. OFA peut être défini comme un ensemble de bonnes habitudes à prendre pour

la création d'une base. Il n’est pas pas indispensable à la création d'une base mais

Oracle recommande son utilisation si vous prévoyez une augmentation du nombre

d'utilisateurs ou encore si vous souhaitez mettre en place d'autres bases de données

dans votre environnement.

Son objectif est de prévenir tout un ensemble de problèmes qui pourraient survenir en

cas d’utilisation de plusieurs versions d'Oracle, plusieurs bases de données, ou des

bases de données à fort taux d'utilisation. La norme OFA a été réalisée afin d'offrir des

avantages non négligeables, notamment dans les cas suivants :

• Facilité de maintenance des bases de données à travers une organisation de

fichiers standardisée

• Fiabilité grâce à des données réparties sur plusieurs disques

• Performance accrue par des réductions de conflits d'entrée/sortie sur les disques

Oracle Universal Installer sépare les fichiers exécutables des fichiers de base de

données. Cette opération prend tout son sens lorsque vous souhaitez mettre à jour votre

version d'Oracle : vous voulez tout mettre à jour sans que votre base de données soit

altérée. C'est nettement plus simple lorsque les exécutables sont séparés de votre base.

I.4.2 Avantages et caractéristiques d'une base compatible OFA

Une base OFA apporte plusieurs avantages :

• Facilité d'administration de la base de données et meilleure gestion de

l'évolutivité : le système de fichier est organisé de manière à simplifier la

recherche de fichiers de données spécifiques. Il permet en outre d'ajouter

simplement des fichiers de données au fur et à mesure que la base prend de

l'ampleur

Page 11: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

11

• Moins de "bouchons" aux entrées/sorties du disque grâce à la séparation des

fichiers binaires, des fichiers de données, des fichiers temporaires (fichiers

utilisés pour les opérations de tri)

• Davantage de garanties face aux problèmes de disques : en répartissant les

fichiers sur plusieurs disques, on minimise autant que possible la perte de

données en cas de problèmes

• Plusieurs version d'Oracle peuvent s'exécuter en même temps : cela peut par

exemple permettre au DBA de tester les fonctionnalités d'une nouvelle version

avant de l'appliquer aux bases de données

Quelques avantages de OFA sont :

• Indépendance des sous-répertoires :les opérations sur un fichier d'une certaine

catégorie ne sont pas répercutées sur un fichier d'une autre catégorie

• Convention de nommage pour les fichiers de données : on peut ainsi identifier les

fichiers plus facilement

• Séparation des différents types de tablespace pour obtenir les avantages d'I/O,

mais aussi réduire la fragmentation

I.4.5 Configuration recommandée (exemple sous L INUX)

Afin de satisfaire les objectifs, Oracle recommande une architecture en 4 disques

Les fichiers de contrôle doivent être copiés sur au moins deux disques afin que la base

puisse quand même démarrer si un des disques est corrompu. Les fichiers présentant

Page 12: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

12

des caractéristiques d'utilisation différentes doivent être placés dans des tablespaces

différents.

Au cas où vous ne disposeriez que de trois disques, Oracle recommande la

configuration suivante :

HD1 Système d'exploitation + Répertoire Racine

HD2 Code de l'application + copie des fichiers de contrôle + copie des fichiers redo +

copie des fichiers de données

HD3 Copie du fichier de contrôle + fichiers redo + fichiers de données Enfin, le DBA se repérera plus facilement au sein des nombreux fichiers possibles en

adoptant la convention de nommage OFA. Comme plusieurs fichiers peuvent exister, un

numéro est rajouté avant l'extension. Par exemple les fichiers de contrôle s'appelleront

control01.ctl, control02.ctl ...

Fichier Nommage

CONTROL01.CTL fichier de contrôle

OEMREP01.DBF fichier de données du tablespace Oracle Enterprise Manager

REPository

SYSTEM01.DBF tablespace système

RBS01.DBF tablespace du RollBack Segment

INDX01.DBF fichier de données du tablespace d'index

TEMP01.DBF fichier de données d'un tablespace temporaire

USERS01.DBF fichier de données d'un tablespace utilisateur

REDO01.LOG fichier redo du groupe 1, membre 1

I.5 Les nouveautés des nouvelles versions par rappo rt à Oracle8i

Par souci de compatibilité avec les versions précédentes, peu de caractéristiques

techniques disparaissent : seuls des ajouts sont effectués ; d’où l’apparition d’une

nouvelle version d’Oracle : Oracle9i.

C’est presque l’intégrité de la gestion interne d’oracle qui a été améliorée avec cette

nouvelle version. Parmi ces nouveautés nous pouvons citer :

Page 13: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

13

I.5.1 Nouveau mode de gestion des tablespa ces

Pour simplifier et améliorer les performances d’accès aux tablespaces, deux modes de

gestion existent : le mode LOCAL et le mode DICTIONNARY.

Le nouveau mode LOCAL stocke tous les aspects d’allocation de segment à l’intérieur

de chaque tablespaces et les informations sont codées au format bipmat dans chaque

en-tête de tablespaces.

L’ancien mode DICTIONNARY centralise l’allocation d’espace dans le dictionnaire de

données de chaque base.

I.5.2 Allocation automatique des segments de stockage

Le mode LOCAL apporte de nombreuses options d’allocations des espaces disque. Les

fastidieuses clauses STORAGE disparaissent au profit d’options comme

AUTOALLOCATE

I.5.3 Les tablespaces temporaires

Oracle effectue de nombreux tris, à la demande des utilisateurs ou pour son

fonctionnement interne. Ils sont principalement effectués dans une zone de tri en

mémoire. Si cette zone s’avère trop petite, un espace disque est réservé à cet effet :

c’est le tablespace temporaire ou TEMPORARY TABLESPACE.

I.5.4 Les tablespaces UNDO ou d’annulatio n

Un tablespace de type Undo est un nouveau tablespace hébergeant les segments

d’annulation, destiné à remplacer les rollbacks segments. C’est dans cet espace

qu’Oracle gère les données en attente de validation ou d’annulation. L’utilisation d’un

tablespace UNDO est beaucoup plus simple que celle de rollbacks segments.

I.5.5 La période de rétention d’un tablespace UNDO

Le flashback Query permet d’interroger les données dans l’état où elles étaient plusieurs

heures auparavant. Pour cela on indique au tablespace UNDO une durée de rétention

des informations. Il est aussi possible d’interroger les données de la base de données

telles qu’elles étaient plusieurs heures auparavant.

Page 14: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

14

I.5.6 Réorganisation des objets base ouver te

De nombreux objets peuvent être cependant réorganisés, base ouverte, utilisateur

connecté. La réorganisation en ligne des tables, index et tablespaces augmente ainsi la

disponibilité des bases. Des assistants permettent d’automatiser ces actions.

I.5.7 Extension automatique d’un fichier de données

Auparavant, l’un des problèmes les plus difficiles à résoudre pour les administrateurs,

Oracle était la gestion de la taille des tablespace. Oracle permet l’augmentation

automatique de la taille des fichiers pour tous les types de tablespaces, qu’il soit en

mode gestion local ou dictionnaire.

I.5.8 Les tablespaces transportables

Cette caractéristique permet de transférer un tablespace d’une base de données

Oracle9i vers une autre base de données9i. Les utilisateurs sont multiples : déplacer

l’ensemble des données d’une application d’une base à une autre, créer rapidement un

environnement de test identique à celui de production, transférer les tablespaces d’une

base de production vers une base infocentre 1.

I.5.9 Une base peut comporter plusieurs DB_BLOCK_SI ZE

Une base de données est toujours créée avec un DB_BLOCK_SIZE unique pour le

tablespace SYSTEM. Comme les tablespaces transportables peuvent parvenir de bases

configurées avec des DB_BLOCK_SIZE différents, Oracle accepte maintenant des

tablespaces possédant une valeur différente de celle définie pour son tablespace

SYSTEM. L’utilisation des tablespaces transportables est limitée entre bases Oracle9i.

I.5.10 L’exportation des fichiers redo-log s :le Log Miner

Oracle propose un outil d’analyse du contenu des fichiers redo-logs d’une base : le Log

Miner. Cet utilitaire utilise de manière séquentielle l’ensemble des opérations réalisées

sur une base. L’avantage de Log Miner est que rien ne doit être prévu a priori, tout est

analysé a posteriori.

I.5.11 La gestion automatique des fichiers par Oracle

La gestion des fichiers proposée par Oracle offre de multiples options pour en faciliter

l’administration : accroissement automatique de leur taille, gestion interne, etc.

Page 15: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

15

Oracle9i permet aussi la gestion de l’ensemble des fichiers composant la base, y

compris leurs création, suppression, nom, etc. Les paramètres d’initialisation

DB_CREATE_FILE_DEST et DB_CREATE_ONLINE_LOG_DEST_n gèrent la création :

- des fichiers liés aux tablespaces

- des fichiers redo-logs

- des fichiers de contrôle.

I.5.12 La suppression automatique des fichiers

L’ordre DROP TABLESPACE possède maintenant une option permettant de supprimer

les fichiers liés au tablespace en même temps que l’ordre ALTER DATABASE

TEMPFILE effectue la même opération pour les fichiers liés aux tablespaces de tri.

I.5.13 Gestion des fichiers d’initialisation

Historiquement, toutes les versions d’Oracle ont utilisé un simple fichier texte pour y

conserver les paramètres d’initialisation. Avec Oracle9i, ces valeurs peuvent maintenant

être gérées automatiquement dans un fichier binaire persistant.

I.5.14 Valeurs dynamiques du fichier d’ini tialisation

De plus en plus de paramètres d’initialisation sont modifiables dynamiquement, ce qui

signifie que leur modification est immédiatement prise en compte, sans nécessiter l’arrêt

puis le démarrage de la base.

I.5.15 Contrôle dynamique de la mémoire SGA

Les paramètres d’initialisation qui dimensionnent l’allocation mémoire d’une instance

sont dynamiques. Le paramètre dynamique DB_CACHE_SIZE remplace l’ancien

DB_BLOCK_BUFFER qui était statique.

I.5.16 Nouvelle syntaxe pour démarrer une instance

Une nouvelle syntaxe est utilisée pour créer, démarrer et arrêter une instance. Elle

s’effectue à partir de SQL*Plus qui devient l’interface privilégiée de la création d’une

base.

• sqlplus /nolog

• connect system/manager as sysdba

• startup pfile=c:\repertoire\init.ora

Page 16: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

16

I.5.17 Disparition du CONNECT INSTERNAL

Il n’est plus possible d’utiliser un CONNECT INTERNAL pour une base. Les privilèges

SYSOPER et SYSDBA qui existent de puis plusieurs versions le remplacent

• sqlplus / nolog

• connect system/manager as SYSDBA

• startup pfile =/u01/app/oracle/admin/test/scripts /init.ora

I.5.18 Utilisation d’un fichier mot de pas se

Pour démarrer une base de données en mode client serveur ou à partir d’oracle

Entreprise Manager, Oracle recommande l’utilisation d’un fichier mot de passe. Il

autorise les utilisateurs possédant les privilèges SYSOPER et SYSDBA à administrer

une base à distance.

I.5.19 Modification du moteur Java et XML d’oracle

Le moteur Jserveur à la base Oracle a été revu et de très nombreuses possibilités

concernant Java et Xml sont apparues.

I.5.20 Nouvelle version D’oracle9i Portal

Oracle Portal est le successeur d’Oracle WebDB. Il apporte de nombreuses possibilités

supplémentaires.

I.5.21 Les outils et assistants

Pour exploiter les nouvelles possibilités d’Oracle, de nombreux assistants sont apparus.

Ils facilitent les actions de configuration et d’administration.

I.5.22 Créer une base Oracle9i

Le logiciel DBCA (Oracle Database Configuration Assistant) offre une interface

graphique conviviale pour guider. Cet utilitaire réclamé par tous les administrateurs

Oracle depuis des années est disponible depuis Oracle8. Il s’avère très bien conçu et sa

dernière version prend en compte toutes les nouveautés apportées par Oracle9i.

I.5.23 Paramétrer Oracle Net :

Oracle Net correspond à l’ancien SQL*Net ou Net8. L’assistant NETCA (Oracle Net

Configuration Assistant) permet de créer rapdiment une configuration client-serveur

Page 17: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

17

opérationnelle. L’assistant NETMGR (Oracle Net Manager) accède à toutes les

possibilités de paramétrage d’Oracle Net.

I.5.24 Administrer votre environnement Ora cle

Oracle Entreprise Manager, la console d’administration graphique d’Oracle a

considérablement évolué. Elle possède de nombreuses possibilités nouvelles que je

vous conseille d’exploiter.

Oracle a effectué depuis quelques années une percée remarquée dans le domaine du

groupe de travail, avec ses produits Oracle9i Server et avec Personal Oracle9i sur les

postes personnels.

Des versions d’évaluation des produits regroupant l’ensemble des fonctionnalités sont

diffusées gratuitement par l’éditeur sur CD-ROM ou téléchargeables sur le Web. Ces

logiciels ne contiennent pas de clé de cryptage ni de « bombe à retardement »

permettant de les verrouiller à l’issue de la période légale d’essai, ce qui permet de

convertir simplement la licence de prêt en licence achetée. Cette tendance, loin d’être

une action commerciale ponctuelle, est d’évidence l’orientation future de la diffusion de

masse des logiciels. Il faut occuper le terrain par l’installation d’une version de prêt, de

sorte qu’un concurrent ne puisse venir occuper cette place.

II Tuning d’une base de données

NB : Les parties A et B doivent être traitées dans le cours de BD A. Optimisation au niveau conceptuel A.1 Indexation sous Oracle A.2 Choix des clusters A.3 Redondance calculée A.4 Partitionnement des tables A.5 Choix des paramètres de stockage TP : Indexation B. Optimisation des programmes d’application B.1 Règles de l’optimiseur B.2 Ordonnancement par restructurations algébriques La notion de tuning couvre les techniques permettant de mettre au point les interactions

entre la machine et la base de données, afin d’optimiser au mieux les performances en

terme de temps de réponse. Le tuning intervient dans deux phases du cycle de vie d’un

Page 18: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

18

système d’information : dans la phase de réalisation et de test et dans la phase de

production sous forme de maintenance.

Dans les deux phases, le tuning consiste à :

- analyser l’environnement des utilisateurs : nombre maximum et moyen d’utilisateurs

connectés simultanément, leur type d’activité, leur fréquence de connexion ;

- analyser la nature des applications : le type de transaction (en interrogation et/ou

mise à jour…), les volumes de données manipulés ;

- réaliser des observations et des statistiques sur l’activité de la base ;

- régler la base en exploitant au maximum les ressources matérielles à disposition :

mémoire cache et disque.

II.1 Les outils de mesures : les vues

L’idéal serait que toutes les requêtes puissent s’exécuter en mémoire sans accès au

disque. Or la taille de la mémoire est limitée, et les accès disque sont nécessaires. Le

tuning de la mémoire consiste donc à réduire au mieux les accès disques.

Si un accès disque est nécessaire, il doit se faire au moindre coût : pas d’attente et pas

de « navigation » sur le disque .

Les statistiques sur l’activité de la base sont stockées dans des tables d’information

virtuelles, ; elles sont alimentées par le noyau d’Oracle et commencent par X$.

On peut accéder à des vues contenant les mêmes informations que ces tables ; ces

vues sont décomposées en deux groupes : les vues contenant des informations en

temps réel sur les utilisateurs connectés, les verrous posées, etc… :

- v$process : process connectés

- v$rollname : nom des rollback segments en utilisation

- v$session : les sessions d’utilisateurs

- v$lock : les verrous posés

Et les vues contenant des statistiques cumulées depuis le début du démarrage de

l’instance :

- v$rowcache : statistiques sur le dictionnaire de données cache,

- v$rollstat : statistiques sur l’activité des rollback segments,

- v$filestat : statistiques sur E/S des fichiers base

- v$waitstat : statistiques sur la contention mémoire (les attentes)

- v$sysstat : statistiques cumulées pour toutes les sessions

- v$sesstat : statistiques sur chaque session utilisateur

Page 19: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

19

II.2 Tuning de la mémoire cache

II.2.1 Optimisation du dictionnaire cache

Le dictionnaire cache est une partie du dictionnaire de données qui est en mémoire et

dont la taille est déterminée par les paramètres de INIT.ORA commençant par DC_ Lors

d’un ordre SQL, si une définition n’est pas en mémoire (cache miss), Oracle génère des

ordres SQL qui vont chercher la définition manquante dans la base de données

(recursives calls).

Pour examiner la valeur cumulée des recursive calls, visualisez v$rowcache.

Select parameter, gets, getmisses, count, usage from v$rowcache ;

II.2.2 Optimisation des buffers de la SGA

On rappelle que la SGA est une zone en mémoire qui est allouée à une instance Oracle

à son démarrage. La SGA contient deux types de buffers : les buffers de données et de

rollback, et les buffers de redo log.

•••• Buffers de données et de Rollback

Le paramètre DB_BLOCK_BUFFERS détermine la taille de la zone de ces buffers. Plus

cette zone est grande, plus petite est la probabilité d’accéder au disque suite à un ordre

SQL.

•••• Buffers de Redo log

La zone de ces buffers est une zone tampon qui contient des enregistrements qui seront

écrits dans le fichier redo log courant. Pour diminuer les contentions sur cette zone, on

peut augmenter cette zone en augmentant le paramètre LOG_BUFFER de INIT.ORA.

•••• Optimisation de la mémoire pour les opérations de tri

Oracle trie les données pour réaliser les ordres SQL qui utilisent :

- les clauses ORDER BY, GROUP BY

- la clause DISTINCT, la jointure

- la création d’index (sauf lorsque la colonne indexée est déjà triée et qu’on utilise

NOSORT), et

- les opérateurs UNION, INTERSECT et MINUS.

Oracle réalise l’opération de tri dans une zone mémoire allouée au process qui a

demandé le tri lorsque le volume de données à trier est faible. Avec un grand volume de

données, cette zone peut s ‘avérer trop petite, auquel cas Oracle utilise le segment

temporaire sur disque pour stocker les résultats intermédiaires de tri, ce qui génère un

surplus d’E/S.

Page 20: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

20

Pour augmenter la taille de cette zone en mémoire, l’administrateur peut modifier le

paramètre SORT_AREA_SIZE .

Cette modification peut être envisagée lorsque :

- on utilise fréquemment le tri dans les applications ;

- on est certain qu’il y a un surplus d’E/S (on peut le vérifier avec la vue v$sysstat)

- on est certain que la zone agrandie tienne en mémoire.

II.3 Tuning des E/S disque

Les actions de tuning des E/S comprennent :

- répartir au maximum les données et les index sur tous les disques disponibles ;

l’idéal serait que chaque tablespace soit sur un disque à part afin d’éviter la

contention disque.

- Séparer les données d’une table de ses index au niveau des disques : ceci réduit

aussi la contention et « parallélise » les accès disque pour une requête accédant aux

tables et aux index ;

- Compacter les blocs de données et d’index en réduisant les blocs chaînés : choisir

pour cela les valeurs adaptées pour les paramètres PCTFREE et PCTUSED lors de

la création d’objets de la base ;

- Compacter l’étendue des objets en réduisant leur fragmentation sur plusieurs

extensions : choisir pour cela les valeurs adaptées pour les paramètres INITIAL,

NEXT et PCTINCREASE

Annexe1

Paramètres de stockage

INITIAL : spécifie la taille en octets de la première extension de l’objet, cette extension sera

réservée automatiquement pour l’objet à sa création. Assurez vous que l’extension initiale peut

contenir tout l’objet pour éviter sa fragmentation sur plusieurs extensions.

NEXT : spécifie la taille en octets de la deuxième extension d’un objet (en dehors de la

première). Ce paramètre n’est pris en compte que lorsque PCTINCREASE est égal à zéro.

MINEXTENTS : spécifie le nombre minimal d’extensions qui sont allouées à l’objet à sa création

(y compris l’extension initiale). Il ne peut pas être modifié pour un objet déjà créé. (Valeur par

défaut = 1)

MAXEXTENTS : spécifie le nombre maximal d’extensions qui seront allouées à un objet à sa

création (y compris l’extension initiale). (Valeur par défaut = 255)

PCTINCREASE : est un pourcentage (P) qui permet de calculer la taille (TN) en octets d’une

nouvelle extension par rapport à la taille de la dernière extension créée (TD).

Page 21: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

21

Formule de calcul : TN=TD + TP x TD

(Valeur par défaut = 50%)

PCTFREE : spécifie le pourcentage à réserver en tant que zone de débordement dans l’espace

utile du bloc. (Valeur par défaut 10%)

PCTUSED : spécifie le pourcentage de la place utilisée par les lignes du bloc au dessous duquel

un bloc peut de nouveau être utilisé pour insérer de nouvelles lignes.

(Valeur par défaut = 40%) .

INITRANS, MAXTRANS : nombre minimum et maximum de transactions en concurrence sur

l’objet.

Page 22: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

22

TP1 sous Oracle

I Constituants de la base et paramètres de la SGA A. Fichiers de la base/rollback segment

- Afficher les fichiers base (v$datafile), les fichiers redo log (v$logfile) et les fichiers de

contrôle (v$controlfile)

- afficher les noms des rollback segment et leur statut (dba_rollback_segs)

- afficher la liste des tablespaces et des fichiers associés (dba_data_files,

dba_tablespaces)

I. Rq : Décrire les tables concernées pour choisir les colonnes à afficher

B. Afficher les valeurs des paramètres de la SGA

A partir de la vue v$sga , ou à partir de show , visualiser les paramètres de la SGA.

II Redirection des résultats dans des fichiers

A. Lister les rollback segments et leur statut et stocker le résultat dans un fichier

rollback.txt

B. On veut nettoyer une base en détruisant toutes les tables exceptées celles

appartenant à

SYS et à SYSTEM. Ecrire une requête SQL générant ce script (le script s’appellera

drobtab.sql)

C. Afficher toutes les variables d’environnement, le résultat est stocké dans le fichier

var.txt.

III. Plan d’exécution des requêtes SQL a) Créer une table audit_sql permettant d’enregistrer les plans d’exécution fournis par

EXPLAIN PLAN

b) Créer une requête permettant d’exploiter le contenu de la table audit_sql

c) Utiliser EXPLAIN PLAN pour obtenir le plan d’exécution de la requête donnée en b)

IV Example d’un fichier INIT.ORA

Les paramètres d’initialisation sont spécifiés dans un fichier (INIT.ORA généralement) ;

Page 23: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

23

Ce fichier peut se trouver dans divers endroits suivant les plates-formes sur lesquelles

vous avez votre système Oracle.

Système d’exploitation Localisation

Unix $ORACLE_HOME/dbs

Windows NT \orant\dbs

Windows 95/98 (Personal Oracle) \orawin95\dbs

# -------Installation/Database Size------

# SMALL MEDIUM LARGE

# Block 2K 4500K 6800K 17000K

# Size 4K 5500K 8800K 21000K

#

# replace DEFAULT with your database name

db_name =FSTM

db_files = 80 # SMALL

# db_files = 400 # MEDIUM

# db_files = 1000 # LARGE

db_file_multiblock_read_count = 8 # SMALL

# db_file_multiblock_read_count = 16 # MEDIUM

# db_file_multiblock_read_count = 32 # LARGE

db_block_buffers = 100 # SMALL

# db_block_buffers = 550 # MEDIUM

# db_block_buffers = 3200 # LARGE

shared_pool_size = 3500000 # SMALL

# shared_pool_size = 5000000 # MEDIUM

# shared_pool_size = 9000000 # LARGE

log_checkpoint_interval = 10000

processes = 50 # SMALL

# processes = 100 # MEDIUM

# processes = 200 # LARGE

parallel_max_servers = 5 # SMALL

# parallel_max_servers = 4 x (number of CPUs) # MEDIUM

# parallel_max_servers = 4 x (number of CPUs) # LARGE

Page 24: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

24

log_buffer = 8192 # SMALL

# log_buffer = 32768 # MEDIUM

# log_buffer = 163840 # LARGE

sequence_cache_entries = 10 # SMALL

# sequence_cache_entries = 30 # MEDIUM

# sequence_cache_entries = 100 # LARGE

sequence_cache_hash_buckets = 10 # SMALL

# sequence_cache_hash_buckets = 23 # MEDIUM

# sequence_cache_hash_buckets = 89 # LARGE

audit_trail = true # if you want auditing

timed_statistics = true # if you want timed statistics

max_dump_file_size = 10240 # limit trace file size to 5 Meg each

# Uncommenting the line below will cause automatic archiving if archiving has

# been enabled using ALTER DATABASE ARCHIVELOG.

# log_archive_start = true

# log_archive_dest = disk$rdbms:[oracle.archive]

# log_archive_format = "T%TS%S.ARC"

# If using private rollback segments, place lines of the following

# form in each of your instance-specific init.ora files:

# rollback_segments = (name1, name2)

# If using public rollback segments, define how many

# rollback segments each instance will pick up, using the formula

# of rollback segments = transactions / transactions_per_rollback_segment

# In this example each instance will grab 40/10 = 4:

transactions = 40

II. transactions_per_rollback_segment = 10

# Global Naming -- enforce that a dblink has same name as the db it connects to

III. global_names = TRUE

# Edit and uncomment the following line to provide the suffix that will be

# appended to the db_name parameter (separated with a dot) and stored as the

# global database name when a database is created. If your site uses

# Internet Domain names for e-mail, then the part of your e-mail address after

Page 25: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

25

# the '@' is a good candidate for this parameter value.

# db_domain = us.acme.com # global database name is db_name.db_domain

# define parallel server (multi-instance) parameters

#ifile = ora_system:initps.ora

# define two control files by default

control_files = (ora_control1, ora_control2)

# Uncomment the following line if you wish to enable the Oracle Trace product

# to trace server activity. This enables scheduling of server collections

# from the Oracle Enterprise Manager Console.

# Also, if the oracle_trace_collection_name parameter is non-null,

# every session will write to the named collection, as well as enabling you

# to schedule future collections from the console.

IV. oracle_trace_enable = TRUE

__________________________________________________________________ Correction TP2 I Constituants de la base et paramètres de la SGA

A. Fichiers de la base/rollback segment Fichiers base (v$datafile) • SQL> select name, status, enabled from v$datafile; fichier redo log (v$logfile) • SQL> select * from v$logfile; fichier de contrôle • select member from v$controlfile; afficher les noms des rollback segment et leur status (dba_rollback_segs) • SVRMGR> select segment_name, owner, status from dba_rollback_segs; SEGMENT_NAME OWNER STATUS ------------------------------ --------- ---------------- SYSTEM SYS ONLINE R01 SYS ONLINE R02 SYS ONLINE R03 SYS ONLINE R04 SYS ONLINE 5 rows selected.

afficher la liste des tablespaces et des fichiers associés (dba_data_files,

dba_tablespaces)

Page 26: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

26

• SQL> select t.tablespace_name tablespace,

2> f.file_name fichier

3> from dba_tablespaces t,

4> dba_data_files f

5> where f.tablespace_name=t.tablespace_name;

B Paramètres de la SGA

A partir de la vue v$sga , visualiser les paramètres de la base

• SVRMGR> show sga

Ou • SQL> select * from v$sga; II Redirection des résultats dans des fichiers Rollback segments dans rollback.txt

• SQL> spool rollback.txt

• SVRMGR> select segment_name, owner, status from dba_rollback_segs; • SQL> spool off

B. Nettoyage de la base

• SQL> set heading off

• SQL> spool droptab.sql

• SQL> select 'drop table ' || owner || '.' || table_name || '/'

from dba_tables where owner not in ('SYS','SYSTEM');

• SQL> spool off

C. Variables dans var.txt

• SQL> spool var.txt

• SQL> Show all

• SQL> spool off

III Plan d’exécution des requêtes SQL a) Création de la table contenant le plan d’exécuti on

(tabaudit.sql )

CREATE TABLE audit_sql( statement_id char(30), timestamp date, remarks char(80), operation char(30), options char(30),

Page 27: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

27

object_node char(30), object_owner char(30), object_name char(30), object_instance number, object_type char(30), search_columns number, id number, parent_id number, position number, other long ); b) Exemple de requête dont le plan est stocké dans la table audit_sql (explreq.sql ) EXPLAIN PLAN SET STATEMENT_ID='1' INTO audit_sql FOR SELECT TABLESPACE_NAME, USERNAME, BYTES, MAX_BYTES FROM dba_ts_quotas WHERE USERNAME in ('MASTER1','MAITRISE2', 'LICPRO1', 'MOUSSA') ORDER BY USERNAME;

c) affichage de certaines colonnes décrivant le pla n (myaudit.sql )

SET ECHO OFF SET VER OFF spool resultat.txt prompt EXAMEN DES PLANS D'EXECUTION DES REQUETES prompt TP Maîtrise Infomartique prompt ****************** prompt prompt Entrer la reference de la requete analysee: accept val prompt "->" col op heading operation format a23 col objn heading "table|/index" format a25 col obi heading "nu.|objet" format 99990 col id format 99 col pid heading p_id format 9990 col p heading ordre format 99990 SELECT operation ||' '|| options op ,object_name ||' '|| object_type objn ,object_instance obi ,id ,parent_id ,position p FROM audit_sql WHERE statement_id='&val' ORDER BY id; V. spool off

Page 28: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

28

Remarque : - On peut aussi regrouper le b) et le c) dans un même script

- Consulter le fichier resultat.txt

Page 29: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

29

DEUXIEME PARTIE

I. Création/démarrage d’une base de donnée

La préparation d’un fichier d’initialisation (en général initNOMBASE.ORA) est

nécessaire pour créer une base sous Oracle. Ce fichier contient tous les paramètres

ainsi que leurs valeurs (nom de la base, nom de l’instance, la liste des fichiers de

contrôle, le nom du domaine etc…)

I.1 Création d’une base de donné

Pour créer une base, il faut deux étapes :

- installer le logiciel Oracle

- Créer la base avec la commande create database.

Syntaxe de la commande create databse:

create database NomBaseDeDonnees

[controlfile reuse] (lors d’une suppreesion suivie d’une création d’une

BD)

[logfile fichier1 [,fichier2]…] (définit les fichiers de reprise « rdo log file)

[datafiles fichierA [,fichierB]…] (définit les fichiers bases)

[maxlogfiles valeur] (le nombre maximum de fichiers de reprise)

[maxdatafiles valeur] (le nombre max de fichiers de données)

[maxinstances valeur] (le nombre max d’instances pouvant accéder simultanément à la

base)

[archivelog | noarchivelog] (positionne le fonctionnement en mode archivage| non

archivage)

Exemple de fichier complet (sous 8i)

REM *Script de création d'une base de donnees spool c:\orant\oradata\DB1\logInstall.log connect internal startup nomount pfile=c:\orant\database\initDB1.ora REM * create databse "DB1" maxinstances 2 maxlogfiles 32 maxdatafiles 1000 datafile 'c:\orant\oradata\DB1\system01..dbf' size 1024K logfile 'c:\orant\oradat\DB1\log01.log ' size 512K, 'c:\orant\oradat\DB1\log02.log ' size 512K, 'c:\orant\oradat\DB1\log03.log ' size 512K;

Page 30: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

30

REM * Dictionnaire de donnees @c:\orant\....\admin\catalog.sql REM * Procedural components @c:\orant\....\admin\catproc.sql create rollback segment SYSROLL tablespace system storage (initial 25K next 25K minextents 2 maxextents 99); alter rollback segment SYSROLL online; create tablespace ROLLBACK datafile 'c:\orant\oradata\DB1\rbs01.dbf' size 10M default sorage ( initial 200K next 200K pctincrease 0 minextents 2 ); create rollback segment RBS01 tablespace ROLLBACK storage (initial 500K next 500K minextents 2); create rollback segment RBS02 tablespace ROLLBACK storage (initial 500K next 500K minextents 2); create rollback segment RBS03 tablespace ROLLBACK storage (initial 500K next 500K minextents 2); alter rollback segment RBS01 online; alter rollback segment RBS02 online; alter rollback segment RBS03 online; alter rollback segment SYSROLL offline; create tablespace TEMP datafile 'c:\orant\oradata\DB1\temp01.dbf' size 10M default sorage ( initial 100K next 100K maxextents UNLIMITED pctincrease 0 ); create tablespace TOOLS datafile 'c:\orant\oradata\DB1\tools01.dbf' size 10M default sorage ( initial 50K next 50K maxextents UNLIMITED pctincrease 0 ); create tablespace DATA datafile 'c:\orant\oradata\DB1\data01.dbf' size 10M default sorage (

Page 31: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

31

initial 300K next 300K maxextents UNLIMITED pctincrease 0 ); alter user sys temporary tablespace TEMP; alter user system default tablespace TOOLS temporary tablespace TEMP; REM Oracle supplied scripts @c:\orant\....\admin\catexp.sql @c:\orant\....\admin\dbmspool.sql @c:\orant\....\admin\prvtpool.plb REM * vues du DBA connect system/manager @c:\orant\....\admin\catdbsyn.sql spool off exit

I.2. Démarrage de la base

La mise en œuvre d’une base de données s’effectue en 3 étapes par utilisation des

commande STARTUP et ALTER DATABASE sous DBA.

1. démarrer l’instance (initialisation de l’environnement de la BD en allouant les

ressources) : la base est dans l’état démarré non montée (NOMOUNT).

Exemple : SQLDBA> STARTUP NOMOUNT

2. le démarrage de la base qui consiste à associer une base à l’instance créée à

l’étape 1. La base est accessible en mode INTERNAL par les utilisateurs qui ont les

privilèges d’administration. Et qui peuvent effectuer des opérations de maintenance

telles que renommer les fichiers de la base ou gérer les fichiers de reprise.

Exemple : SQLDBA> CONNECT INTERNAL

SQLDBA> ALTER DATABASE nom_base MOUNT

3. Ouverture de la base pour rendre ses données accessibles aux utilisateurs. La base

est à l’état ouvert OPEN.

Exemple : SQLDBA> ALTER DATABASE nom_base OPEN

I.3 Arrêt de la base

La fermeture s’effectue en trois étapes :

1. Déconnexion des utilisateurs de la base

2. Détachement de la base de l’instance

3. Arrêt de l’instance

Pour arrêter une base utiliser l’ordre :

SHUTDOWN [option]

Page 32: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

32

Où option peut prendre les valeurs :

- NORMAL : aucune nouvelle connexion permise, terminaison normale des

transactions et arrêt lorsque le dernier utilisateur se déconnecte

- IMMEDIATE : arrêt immédiat sans attente de la fin des transactions en cours, qui

sont alors avortées.

- ABORT : arrêt immédiat sans détachement de la base ni déconnexion préalable des

utilisateurs. C’est un mode de fermeture rapide mais nécessitant une reprise lors du

redémarrage de la base

Exercice : Créer la base de donnée s COMDB suivant :

I.4 Ajout de fichiers, de tablespaces dans la ba se

I.4.1 Ajout d’un fichier de contrôle

Pour ajouter un fichier de contrôle (par exemple CONTROLE04.CTL), il faut suivre la

procédure suivante :

• arrêter l’instance

• copier avec l’OS un fichier de contrôle existant et le renommant sous le nom de

CONTROLE04.CTL

Page 33: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

33

• ajouter dans le paramètre control_files du fihier d’initialisation ce nouveau fichier de

contrôle puis enregistrer.

• Démarrer la base avec startup .

I.4.2 Ajout d’un fichier log

Pour ajouter un fichier de log (par exemple log4.ORA), on suit les étapes suivantes :

• arrêter l’instance

• démarrer la base en mode mount

• lancer la commande

alter database add logfile member ‘Chemin_complet_du_fichier\log4.ora’ to groupe Numero_groupe

• Vérifier l’état du fichier ajouté avec select * from v$logfile

• Rendre la base ouverte

• Lancer autant de fois que c’est nécessaire l’ordre alter system switch logfile

• Vérifier encore l’état du fichier log ajouté.

I.4.3 Ajout d’un fichier base dans un tablespa ce

Pour ajouter un fichier base (par exemple user05.ora) il suffit de lancer l’ordre

alter tablespace Nom_tablespace add datafile ‘Chemin_complet\user05.ora’ size taille_init K|M

I.4.4 Ajout d’un tablespace

Pour ajouter un tablespace (par exemple DEV) il suffit de lancer la commande :

create tablespace DEV

datafile ‘Chemin_complet\Nom_fichier’ size taille_init

default storage (initial valeur K|M

next valeur K|M

pctincrease valeur

minextents valeur

maxextents valeur|unlimited)

II Gestion des utilisateurs

II.1 Création

Pour créer un utilisateur, on utilise la commande suivante suivante :

CREATE USER nom_utilisateur

IDENTIFIED BY mot_de_passe

[DEFAULT TABLESPACE nom_tablespace]

[TEMPORARY TABLESPACE nom_tablespace]

[QUOTA [nombre | UNLIMITED] ON nom_tablespace] (limitation ou non d’espace)

Page 34: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

34

[PASSWORD EXPIRE] (demande le changement du mot de passe)

[ACCOUNT {LOCK | UNLOCK}] (Compte bloqué | non bloqué)

II.2 Modification

Pour modifier un utilisateur, utilisez

ALTER USER nom_utilisateur

IDENTIFIED BY mot_de_passe

[DEFAULT TABLESPACE nom_tablespace]

[TEMPORARY TABLESPACE nom_tablespace]

[PASSWORD EXPIRE] (demande le changement du mot de passe)

[ACCOUNT {LOCK | UNLOCK}] (Compte bloqué | non bloqué)

II.3 Suppression

La suppression d’un utilisateur s’effectue par l’ordre :

DROP USER schéma [CASCADE]

Sans l’option CASCADE, l’utilisateur n’est pas supprimé s’il possède des objets.

Atelier 1

1. Créer un utilisateur toto (avec comme mot de passe toto ) sans le rattacher à un

tablespace et vérifier par la table dba_users si l’utilisateur toto existe bien.

2. A quel tablespace le système associe l’utilisateur toto (examiner la vue dba_users)

3. Lister l’ensemble des tablespaces et choisir users comme tablespace par défaut et

temp comme tablespace temporaire.

4. L’utilisateur toto peut se connecter, créer ses tables ? Si oui essayer de vous

connecter sous toto et créer une table T (nom char(20)) sinon dites pourquoi.

5. Le nouveau mot de passe de toto est maitrise , faites la modification.

III Contrôle des accès

Ce contrôle comporte plusieurs niveaux :

- Gestion des accès à la base de données

- Gestion des accès aux données de la base

- Limitation des ressources accessibles aux utilisateurs

- Attribution d’accès par défaut

Page 35: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

35

L’accès à la base s’effectue par l’intermédiaire de la notion d’utilisateur (compte oracle) ;

chaque USER est défini par son nom, son mot de passe, un ensemble de privilèges et

profil. A la création de la base, deux utilisateurs sont créés : SYSTEM (qui permet de

créer les autres USER) et SYS qui est propriétaire de la majorité des tables du

dictionnaire ainsi que des vues crées sur ces tables.

Un privilège est le droit attribué à un utilisateur d’exécuter un ensemble particulier

d’ordres SQL ou d’accéder à certains objets de la base; il peut être au niveau système

(autorisation d’effectuer une action particulière) ou au niveau objet (autorisation donnée

par le créateur de l’objet à un autre utilisateur). Il faut noter que le privilège peut être

attribué soit directement à un utilisateur soit à un rôle. Un rôle est un groupement de

privilèges qui peut être attribué

Cinq rôles sont définis dans Oracle8 :

- CONNECT : l’utilisateur peut se connecter à la base de données et manipuler les

objets de la base pour lesquels ils ont préalablement eu un droit de manipulation

(lecture, modification, insertion, suppression)

- RESOURCE : l’utilisateur peut créer ses propres tables, index, procédures,

fonctions et déclencheurs.

- DBA : l’utilisateur possède tous les privilèges système nécessaires à l’administrateur

de la base de données

- EXP_FULL_DATABASE : l’utilisateur peut exporter la base de données

- IMPORT_FULL_DATABASE : l’utilisateur peut importer la base de données

III.1 Gestion des privilèges systèmes

A Création GRANT {Privilège niveau système | rôle}[,Privilège niveau système |rôle}]…

TO {nom utilisateur | rôle | PUBLIC}[,nom utilisateur | rôle | PUBLIC]…

[WITH ADMIN OPTION] (autorise la transmission du privilège)

PUBLIC désigne tous les utilisateurs.

B. Suppression

REVOKE {Privilège niveau système | rôle}[,Privilège niveau système |rôle}]…

FROM {nom utilisateur | rôle | PUBLIC}[,nom utilisateur | rôle | PUBLIC]…

Page 36: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

36

C. Quelques privilèges systèmes

- ALTER ANY TABLE

- ALTER DATABASE

- ALTER SESSION

- DROP ANY TABLE

- SELECT ANY TABLE

- DELETE ANY TABLE

- LOCK ANY TABLE

- CREATE ANY SYNONYM

- ALTER TABLESPACE

III.2 Gestion des privilèges objets

A Création GRANT Privilège niveau objet[,Privilège niveau objet ]…

ON [schéma.]objet

TO {nom utilisateur | rôle | PUBLIC}[,{nom utilisateur | rôle | PUBLIC]….

[WITH GRANT OPTION] (autorise la transmission du privilège)

où objet peut être une table, une vue, une séquence, une procédure, une fonction, un

package, une librairie, un type

B. Suppression

REVOKE Privilège niveau objet[,Privilège niveau objet] | ALL PRIVILEGES}

ON objet

FROM {nom utilisateur | rôle | PUBLIC}[,nom utilisateur | rôle | PUBLIC]…

[CASCADE CONSTRAINTS] (utilisables avec references)

[FORCE] (utilisable avec EXECUTE pour les objets ayant des dépendances sur des

tables)

C. Quelques privilèges objets

- SELECT [(col,...)]

- INSERT

- UPDATE [(col,...)]

- DELETE

- EXECUTE (droit d’exécuter une procédure, une fonction ou package)

Page 37: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

37

- ALTER

- READ

- ALL (tous les droits)

Remarque:

La confidentialité est la vocation première d’une vue ; ainsi pour empêcher à un

utilisateur de consulter des colonnes ou des lignes d’une table, le moyen le plus simple

est de créer des vues contenant ces colonnes ou lignes.

Soit la table T(col1, col2, col3, col4) et l’utilisateur U auquel on veut indire l’accès aux

colonnes col3 et col4 :

- CREATE VIEW VUE_T AS SELECT col1, col2

FROM T;

- GRANT SELECT ON VUE_T TO U;

III.3 Audit de contrôle d’accès

Il peut s’avérer intéressant d’observer l’activité de la base en un laps de temps par

exemple pour quantifier le nombre de connexions à la base et leur type. L’administrateur

pourrait être intéressé de savoir le nombre d’utilisateurs connectés durant une période

donnée, les tables accédées, les terminaux à partir desquels il y a eu tentatives de

connexions. Ce type d’observation, dit AUDIT, consiste à garder dans le dictionnaire de

données une trace de certaines actions sur la base ; son intérêt se reflète à trois

niveaux :

- étudier la charge de travail,

- renforcer la sécurité,

- établir des statistiques

On distingue deux types d’audit :

- les audits dits systèmes effectués par le DBA,

- les audits effectués par les propriètaires d’objets

A. Audit système

Il ne peut être lancé que par le DBA :

- les connexions et déconnexions à/de la base (AUDIT CONNECT) sont contenus

dans la vue DBA_AUDIT_CONNECT

Page 38: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

38

- les ordres GRANT, REVOKE, AUDIT, NOAUDIT etc. (AUDIT DBA) sont visibles

dans la vue DBA_AUDIT_DBA ,

- les références à des objets non existants (AUDIT NOT EXISTS) ont leur résultats

dans la vue DBA_AUDIT_EXISTS

- les ordres de création, de suppression et de modification de tables, de tablespace,

de Rollback segments, etc… (AUDIT RESSOURCE) ont leurs résultats dans la vue

DBA_AUDIT_RESSOURCE .

Ces vues contiennent essentiellement la date de l’action, le nom de l’utilisateur, le type

de l’action, le résultat de l’action (succées ou échec), le nom de l’objet créé (ordre de

création ) etc. L’arrêt d’un audit s’effectue par la commande NOAUDIT.

Exemples :

- AUDIT CONNECT WHENEVER SUCCESFULL permet de tracer toutes les

connexions et déconnexions réussies

- AUDIT NOT EXISTS permt de tracer les ordres SQL faisant référebnce à des objets

non existants.

- NO AUDIT ALL arrête toutes les traces d’audit.

- AUDIT CREATE TABLE BY maitriseX: audite tous les ordres create table lancés

par l’utilisateur maitriseX

- AUDIT USER ; Audit tous les ordres CREATE USER, ALTER USER ou DROP

USER lancés par n’importe quel utilisateur

B. Audit des propriétaires d ‘objets

Un utilisateur peut auditer toutes les actions effectuées sur ses tables. Il peut examiner

les actions de lecture, de MAJ, d’indexage etc en scrutant la vue USER_AUDIT_TRAIL .

Pour déclencher l’audit, il doit lancer :

AUDIT option1, option2,….ON table1, table2,…

Les options peuvent être : ALTER, INSERT, SELECT, UPDATE, DELETE, LOCK,

AUDIT, GRANT etc.

Exemples :

- AUDIT SELECT, INSERT ON Client BY ACCESS: trace tous les ordres SELECT

et INSERT sur la table Client

- AUDIT ALL ON DEFAULT BY ACCESS : trace toutes les opérations sur toutes les

tables qui seront créées

Page 39: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

39

- NOAUDIT ALL ON DEFAULT : Les tables qui seront créées ne seront pas ausitées ;

cet ordre ne concerne pas les tables déjà auditées.

- Pour arrêter les audits sur des tables en cours d’audit (par exemple Commande,

Produit), il faut lancer NOAUDIT ALL ON Commande, Produit .

Atelier 2

1. On suppose que vous avez deux comptes oracles sur votre machine : maitraisex et

toto . En vous connectant sous maitrisex , accordez le droit de SELECT à toto sur la

table Client , le droit de DELETE sur la table Commande avec possibilité de

transmission et le droit de INSERT sur la table Produit .

2. Examiner les vues DBA_USERS et DBA_TAB_GRANTS

3. Lister le profil des utilisateurs en utilisant la vue DBA_USERS

4. Lister les privilèges sur vos tables en utilisant la vue DBA_TAB_GRANTS

IV Administration réseau

IV.1 Les fichiers de configuration

Tous ces fichiers configurent la partie réseau d'Oracle (SQL*Net ou Net8 pour Oracle8).

Ces fichiers doivent être créés sur le serveur dans le répertoire

$ORACLE_HOME/network/admin (sous Linux)

1) tnsnames.ora

Le fichier TNSNAMES.ORA identifie les services disponibles depuis la machine. Dans

notre cas, nous décrirons toutes les bases de données que le serveur a monté. Pour

chaque base de données sur votre serveur, ajouter une section comme ci-dessous:

orcl.world = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = <NOM LOGIQUE DU SERVEUR ICI ou ADRESSE IP> ) (Port = 1521) ) (ADDRESS = (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = <NOM LOGIQUE DU SERVEUR ICI ou ADRESSE IP> > ) (Port = 1526) ) ) (CONNECT_DATA = (SID = ORCL)

Page 40: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

40

) )

2) Le fichier listener.ora

Ce fichier contient la description des services auxquels d'autres machines sont

autorisées à se connecter et toutes les configurations nécessaires pour l'écouteur du

serveur.

Il contient les sections pour le nom de l'écouteur, son adresse, les bases de données

desservies par l'écouteur et les paramètres de configuration.

Voici un exemple:

# Nom de l'écouteur et les adresses a écouter LISTENER = ( ADDRESS_LIST = (ADDRESS = (PROTOCOL=tcp) (HOST=<INSERT HOST>) (PORT=1521) (COMMUNITY=UK_SUP_TCPIP) ) (ADDRESS = (PROTOCOL=ipc) (KEY=700) (COMMUNITY=UK_SUP_TCPIP) ) ) # Liste des services désservis par l'écouteur SID_LIST_LISTENER= (SID_LIST= (SID_DESC= (SID_NAME=orcl) (ORACLE_HOME=/home/oracle/7.3.3.0.0) ) ) # Début des paramètres de configuration TRACE_LEVEL_LISTENER=OFF TRACE_FILE_LISTENER = "listener" LOG_FILE_LISTENER = "listener" CONNECT_TIMEOUT_LISTENER = 10 STOP_LISTENER = YES DBA_GROUP = dba

3) Le fichier sqlnet.ora

Le fichier sqlnet.ora contient la configuration pour le noeud du réseau. Ceci est

indépendant du nombre de bases de données ou du nombre d'écouteurs. La chose la

plus importante dans ce fichier est la variable de configuration Timeout des Connexions

Mortes.

Page 41: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

41

Le timeout des connexions mortes vérifie chaque processus entrant à la base de

données et assure que le côté client répond toujours. Si le client (de tout type) ne

répond pas, le processus en tâche de fond du serveur Oracle sera tué.

Ceci est très utile si vous avez plusieurs clients qui accèdent à la base de données,

surtout pendant la phase de développement où ces clients ne réussiront certainement

pas à sortir proprement de la base de données Oracle.

Voici une copie de mon fichier sqlnet.ora pour vous servir d'exemple:

TRACE_LEVEL_CLIENT = OFF

sqlnet.expire_time = 30 # le nombre de secondes entre les vérifications des clients.

names.default_domain = world

name.default_zone = world

IV.2 Lancer et Arrêter les Ecouteurs .

Maintenant que la configuration des écouteurs et de SQL*Net est finie, nous pouvons

essayer de connecter la base de données en utilisant la partie réseau. (Avant nous

utilisions l'accès direct à la base de données, alors qu'ici nous simulons une connexion

depuis une machine cliente distante en environnement Linux:

$ lsnrctl (exemple sous Unix) LSNRCTL for SCO System V/386: Version 2.3.3.0.0 - Production on 23-FEB-98 20:38:25 Copyright (c) Oracle Corporation 1994. All rights reserved. Welcome to LSNRCTL, type "help" for information. LSNRCTL> start Starting /home/oracle/7.3.3.0.0/bin/tnslsnr: please wait... TNSLSNR for SCO System V/386: Version 2.3.3.0.0 - Production System parameter file is /home/oracle/7.3.3.0.0/network/admin/listener.ora Log messages written to /home/oracle/7.3.3.0.0/network/log/listener.log Listening on: (ADDRESS=(PROTOCOL=tcp)(DEV=6)(HOST=192.168.1.1)(PORT=1521)) Listening on: (ADDRESS=(PROTOCOL=ipc)(DEV=10)(KEY=700)) Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=magic.com)(PORT=1521)(COMMUNITY=UK_SUP_TCPIP)) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for SCO System V/386: Version 2.3.3.0.0 - Production Start Date 23-FEB-98 20:38:50 Uptime 0 days 0 hr. 0 min. 0 sec

Page 42: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

42

Trace Level off Security OFF SNMP ON Listener Parameter File /home/oracle/7.3.3.0.0/network/admin/listener.ora Listener Log File /home/oracle/7.3.3.0.0/network/log/listener.log Services Summary... orcl has 1 service handler(s) The command completed successfully LSNRCTL> exit

Pour arrêter les écouteurs:

$ lsnrctl LSNRCTL for SCO System V/386: Version 2.3.3.0.0 - Production on 23-FEB-98 20:43:20 Copyright (c) Oracle Corporation 1994. All rights reserved. Welcome to LSNRCTL, type "help" for information. LSNRCTL> stop Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=magic.com)(PORT=1521)(COMMUNITY=UK_SUP_TCPIP)) The command completed successfully LSNRCTL> exit

Si vous avez une configuration DNS qui ne retourne pas l'adresse IP pour le nom

logique specifié, le lancement et l'arrêt de l'écouteur prendront donc in certain temps. (2-

3 mins. dépendant de la variable timeout du DNS). Si c'est le cas , ne vous inquiétez

pas. Soyez patient.

IV.3 Accès à la base de données via ODBC

Le midleware ODBC est utilisée par plusieurs logiciels tiers sous Windows pour accéder

à une base Oracle (Application développée en C, Ms Word, Ms Excel etc).

V Gestion des objets dans une base répartie

V.1 Concept de database link

1) Syntaxe de create database link:

CREATE PUBLIC DATABSE LINK NomDB _Link -

CONNECT TO USER -

IDENTIFIED BY PASSWD –

USING ‘string’

2) Syntaxe de create synonym

CREATE SYNONYM Nom_synonym FOR NomTable@NomDB_LINK;

Page 43: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

43

L’utilisateur peut lancer une requête SQL sans donner la référence complète de la

table.

TP1 : Configuration de NET8

1. Configuration de l’accès distant avec SQL NET EASY CONFIGURATION

2. Connexion sur une base distante, 2 méthodes

- lancer : SQL login/passwd@Base_distante

- lancer SQL sans argument et remplir convenablement les champs présentés

V.2 Méthodes des copies

TP2 : COPY entre deux bases distantes

1. Connectez vous sur la base distante fstm et faites quelques insertions de tuples

dans les tables créées?

2. Connectez vous sur la base distante fst et copiez la totalité de la table client dans

fst en utilisant la méthode de COPY.

3. Rappel de la syntaxe de copy

COPY FROM user1/passwd2@Base_distante –

TO user2/passw2@Base_distante2 –

REPLACE | CREATE | APPEND NomTable –

USING Requête_SQL;

4. On veut créer des fragments sur la base fst en utilisant le partitionnement vertical de

la table client (provenant de la base fstm ) comme suit :

Client_fg1 (numcl , nomcl)

Client_fg_2(numcl, adressecl, pays) ;

Utilisez COPY pour le faire

5 L’utilisateur master1p1 veut créer un fragment ayant pour schéma

Client_fg1 (numcl , nomcl, age)

V.3 Réplication par cliché

Dans une base de données répartie, il se peut que pour des raisons diverses (rupture

de ligne de communication, panne d’un site etc.) des données soient momentanément

inaccessibles aux utilisateurs. Afin de ne pas gêner les éventuels utilisateurs, il vous est

possible de répliquer les données d'une base en créant un cliché (SNPASHOT).

Cette technique permet :

Page 44: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

44

- de créer sur une base répartie un cliché d’une table complète ou partielle d’une

base maître ou même un cliché du résultat d’une requête complexe effectuée sur

le site maître.

- d’utiliser en lecture ou en écriture le cliché

- de créer une copie comme une requête simple si elle est basée sur une seule

table ou complexe si elle fait intervenir plusieurs tables.

- de définir une fréquence de rafraîchissement des données

- de définir le mode de rafraîchissement : compléter le cliché, remplacer le cliché

ou propager uniquement les modifications.

Les snapshot ne sont pas mis à jour régulièrement, mais à des intervalles précis

nommés asynchronous replication. Ces instants sont précisés par le paramètre NEXT

de la commande CREATE SNAP SHOT (dans l'exemple, tout les jours).

Syntaxe de création :

CREATE SNAPSHOT NomCliche

REFRESH

FAST | COMPLETE | FORCE

START WITH date1

NEXT date2

[parameter de stockage]

[FOR UPDATE] AS Requête;

Avec:

FAST : mode de rafraîchissement rapide des lignes modifiées uniquement sur la base

distante ; ce mode utilise un journal de cliché.

COMPLETE : mode rafraîchissement complet qui re-exécute la requête du

snapshot (pas de journal)

FORCE : effectue un rafraîchissement rapide si possible, sinon effectue un

rafraîchissement complet ; c’est l’option par défaut.

START WITH : définit la date de premier rafraîchissement (par défaut de l’exécution de

l’ordre)

NEXT : définit l’intervalle entre deux rafraîchissements ; il s’agit d’une expression de

type date.

Paramètre de stockage : Voir paramètres de stockage de l’ordre de création des

tables ;

Requête : définition du snapshot sous forme de requête SQL.

Page 45: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

45

FOR UPDATE : Pour un cliché modifiable

Pour modifier le snapshot c’est ALTER SNAPSHOT NomCliche …. ; pour supprimer

DROP SNAPSHOT NomCliche

Exemple :

CREATE SNAPSHOT Cliche_Client

REFRESH COMPLETE

START WITH sysdate

NEXT SYSDATE+1

AS select * from Client@Lien_BD;

TP3 : Les clichés sous Oracle

1. Se connecter sur la base FST et créer le cliché (Client_snap ) de la table client qui

se trouve sur la base FSTM

2. Faire une mise à jour de la table client sur FSTM

3. Vérifier sur FST si les modifications sont répercutées

4. Reprendre les étapes 1, 2 et 3 mais pour la table commande de FSTM, vous créerez

ici un cliché modifiable.

5. A partir de FST, créer une vue Article_v de la table article de FSTM. Faire des mises

à jour sur article sur FSTM et vérifier si la vue reflète les mises à jour.

Annexe 2: Script SQL de création de table

Base de données exemple

Client (numcl number, nomcl char(20), adressecl char(80), pays char(40)) ;

Article (refart char(10), designation char(40), prix number(8,2)) ;

Depot(nomdepot char(40), nbremagasin number) ;

Stock (numstock number, refart char(10), nomdepot, char(40), qtestock number (9,3)) ;

Commande (numcom number, datecom date, numcl number) ;

Ligne_com(numLC number, numcom, number, refart char(10), qtecom number(9,3)) ;

Script de création des tables

----- Maîtrise et Licence Pro ----

-------------------------------

- TP Oracle (M. SENE) _

Page 46: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

46

-------------------------------

-----Revision creation de table ----

drop table ligne_com;

drop table stock;

drop table depot;

drop table commande;

drop table article;

drop table client;

CREATE TABLE client

(

numcl NUMBER,

nomcl CHAR(20),

adressecl CHAR(80),

pays CHAR(40),

CONSTRAINT PK_numcl PRIMARY KEY (numcl)

);

CREATE TABLE commande

(

numcom NUMBER,

datecom DATE,

numcl NUMBER,

CONSTRAINT PK_numcom PRIMARY KEY (numcom),

CONSTRAINT FK_numcl FOREIGN KEY (numcl) REFERENCES client (numcl)

);

CREATE TABLE article

(

refart CHAR(10),

designation CHAR(40),

prix NUMBER(8,2),

CONSTRAINT PK_refart PRIMARY KEY (refart)

);

CREATE TABLE depot

(

nomdepot CHAR(40),

nombremagasin NUMBER,

CONSTRAINT PK_nomdepot PRIMARY KEY (nomdepot)

);

Page 47: Module DBA Oracle

Université CAD de Dakar Page Département Maths-Informatique

Cours DBA Oracle Dr Mbaye SENE Maîtrise Informatique 2006/2007

47

CREATE TABLE ligne_com

(

numLC NUMBER,

numcom NUMBER,

refart CHAR(10),

qtecom NUMBER(9,3),

CONSTRAINT PK_numLC PRIMARY KEY (numLC),

CONSTRAINT FK_numcom FOREIGN KEY (numcom) REFERENCES commande (numcom),

CONSTRAINT FK_refartLC FOREIGN KEY (refart) REFERENCES article (refart)

);

CREATE TABLE stock

(

numstock NUMBER,

refart CHAR(10),

nomdepot CHAR(40),

qtestock NUMBER(9,3),

CONSTRAINT PK_numstock PRIMARY KEY (numstock),

CONSTRAINT FK_refart FOREIGN KEY (refart) REFERENCES article (refart),

CONSTRAINT FK_nomdepot FOREIGN KEY (nomdepot) REFERENCES depot (nomdepot)

);