oracle 11g - administrationdoc.callmematthi.eu/static/webarticles/oracle 11g administration.pdf ·...

477
Oracle 11g - ADMINISTRATION Erik Jourdain Support ORA-ORSYS Version 2.5

Upload: dotuyen

Post on 04-Feb-2018

267 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Oracle 11g - ADMINISTRATION

Erik JourdainSupport ORA-ORSYS

Version 2.5

Page 2: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Erik Jourdain

● DBA Oracle● Administration et Optimisation

● Linux● Debian, RedHat● Cluster et virtualisation Xen et KVM

● Langages● SQL, PL/SQL, Perl, Shell

● E-mail : [email protected]● Blog : http://www.silverlake.fr● Twitter : silverlakefr

Page 3: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Avertissement● Ce cours est conçu pour Linux● Il est facilement adaptable à Windows

● Différences minimes signalées● Attention toutefois aux noms des répertoires qui sont à adapter :

/u01/app/oracle → c:\U01\app\oracle

● Quelque soit la plate-forme les principes d'administration Oracle sont identiques.

● La version de Oracle disponible chez Orsys pour la formation est la 11.2.0.1, certains concepts utilisés sur les anciennes versions seront justes survolés.

● Le cours se fait principalement en ligne de commande.● Le Database Control ( graphique ) sera vu pour les exercices.

Page 4: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Editeur de texte

● Le cours utilise vi, mais il est possible d'utiliser l'éditeur de son choix.

● gedit se rapproche de notepad de Windows.● vi /etc/hosts ou● gedit /etc/hosts.

Page 5: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Plan du cours

● Architecture Oracle● Installation de Oracle● Oracle et le réseau, Oracle*Net● Création d'une base de données● Outils d'administration Oracle● Arrêt et démarrage d'une base Oracle● Gestion des fichiers de contrôle et de journalisation● Les tablespaces● Les utilisateurs et les droits● Les structures de stockage● Sauvegardes et restauration● Utilitaires Oracle

Page 6: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Présentation de l'architectureORACLE

Page 7: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Architecture Oracle 11g

● L'instance et les zones mémoires● La base de données et les fichiers● Principe des transactions● Les processus● Oracle et la mémoire● L'administrateur des données → DBA● Les comptes d'administration● Le dictionnaire des données

Page 8: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Serveur Oracle

● Composé de deux éléments distincts● L'instance● La base de données

● Instance● Zones mémoire● Processus

● Base de données● Ensemble de fichiers physiques

● Une instance n'ouvre qu'une seule base de données● Exception : RAC → x Instances ouvrent une base de données.● RAC : Real Application Clusters ( non vue ici )

Page 9: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principes serveur Oracle

INSTANCE

Base de données

INSTANCE1

Base de données

INSTANCEn

Oracle Stand-Alone Oracle RAC

Mémoire

Disque

n Instances Oracleminimum 2

Page 10: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster
Page 11: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

System Global AreaShared Pool

Architecture de base

Database Buffer Cache

Redo Log

Buffer

Library CacheOrdres SQLInsert, Select,

Delete, PL/SQL...

Dictionnary Cache

LGWRDBW0ServeurUtilisateurs

Fichiers dedonnées

Fichiers dejournalisation

ARC0optionnel

Fichiersd'archives

PMONDBW0DBW0 SMON

Fichier decontrôle

CKPT

INS

TAN

CE

OR

AC

LE

_SID

BA

SE

DE

D

ON

NE

ES

DB

_NA

ME

Fic

hie

r d

e

pa

ram

ètr

es

init.

ora

PGA

ResultCache

Page 12: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

L'instance

● Une zone mémoire partagée → SGA● Ensemble de processus d'arrière plan

● Distincts sous Linux● Unique ( service ) sous Windows

● Ensemble de processus serveur● Partagent une autre partie de la mémoire : la PGA● PGA : Program Global Area

● L'instance est accédée via une variable d'environnement de l'OS : ORACLE_SID

Page 13: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Notions de tablespace

● Les données Oracle sont stockées dans des fichiers physiques sur disque.

● Toutefois Oracle utilise principalement la notion de tablespace et non de fichier.

● Un tablespace est un ensemble logique contenant 1 ou x fichiers physiques.

● La manipulation des tablespaces est une des tâches principales d'administration Oracle, un chapitre plus complet sera présenté dans ce cours.

Page 14: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

DATA

Exemple de tablespace

data_01.dbf10Go

data_02.dbf20Go

data_03.dbf15Go

● Le tablespace DATA est composé de 3 fichiers physiques d'une taille de 10Go,20Go et 15Go.

● Les fichiers physiques ne sont pas obligatoirement de taille identique.

● La dimension du tablespace DATA est de 45Go

Page 15: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Base de données

● Constituée au minimum par :● 1 fichier de paramètres ( texte : pfile ou binaire : spfile ) → init.ora● 1 fichier de contrôle ( controlfile )● 2 tablespaces : system et sysaux● 2 groupes de fichiers de journalisation ( redolog )

● En complément● 1 ou plusieurs tablespaces ( datafile )● 1 ou plusieurs tablespace temporaire ( tempfile )● 1 tablespace pour les annulations ( undo )

● Une base de données est nommée par le paramètre DB_NAME

Page 16: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Catégories de bases de données

● Transactionnelles● OLTP : OnLine Transaction Processing● Forte activité de mise à jour ( insert/update ) sous forme de

petites transactions.● Un nombre d'utilisateurs concurrents plus ou moins important.● Exigence d'un temps de réponse court.

● Décisionnelles● DSS : Décision Support Systems● Forte activité d'interrogation ( select )● Gros volume de données● Mise à jour périodique → batches

Page 17: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Le fichier de paramètres

● Contient le mode de fonctionnement de l'instance et des indicateurs pour la base de données :● Son nom, DB_NAME● La taille SGA, SGA_TARGET● L'emplacement du ou des fichiers de contrôle...

● Il y a plus de 340 paramètres dans Oracle● Tous ont une valeur par défaut● La valeur précisée dans le fichier de paramètres surcharge la valeur par

défaut.● Le fichier de paramètre peut être :

● texte → pfile● binaire → spfile● Le spfile permet de modifier certains paramètres, par la commande alter system

set, sans devoir redémarrer l'instance.

Page 18: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Le fichier de contrôle

● Informations sur la base de données● Son nom● Date de création● Emplacement des autres fichiers de la BD● Numéro de séquence actuel ( SCN )● Information sur point de reprise ( checkpoint )

● Mise à jour automatique par Oracle● Il est conseillé de les multiplexer sur des axes différents,

en général 3 copies.● Le fichier de contrôle peut aussi contenir le référentiel des

sauvegardes RMAN

Page 19: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Les fichiers de journalisation

● Nommés aussi REDOLOG● Enregistrent l'ensemble des modifications de la BD. Ordres : insert,

delete et update.● Utilisés suite à un arrêt anormal ou récupération suite à la perte d'un

fichier de données → les transactions sont rejouées● Organisés en groupe, composés de membres● Minimum deux groupes de un membre

● Ecriture circulaire → informations périodiquement écrasées● Conservation possible en activant le mode ARCHIVELOG de la BD ( optionnel ).

● Utilise une zone de la SGA ( redolog buffer ) et un processus dédié ( LGWR )

● Le passage d'un groupe à l'autre est appelé switch et peut être forcé par la commande alter system switch logfile

Page 20: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principe des REDOLOGS

GROUPE1

Enr

egis

trem

ent

des

tran

sact

ions

Enr

egis

trem

ent

des

tran

sact

ions

Quand GROUPE 1est rempli → Passage

à GROUPE 2

Quand GROUPE 2est rempli → Retour

à GROUPE 1

Un cycle complet de REDOLOG provoque un effacement des transactions, pour conserverl'ensemble des transactions la base doit fonctionner en mode ARCHIVELOG

GROUPE2

Page 21: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

tablespacedata

tablespacesysaux

tablespacesystem

Les fichiers de données

● Contiennent les informations de la base● Dictionnaire des données ( system )● Statistiques sur ressources ( sysaux )● Données utilisateurs● Index

● Logiquement regroupés en tablespaces

data02.dbfdata01.dbfsysaux01.dbfsystem01.dbf

Page 22: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Organisation du stockage

● Les fichiers sont découpés en blocs Oracle● Un bloc Oracle est un multiple du bloc système● 5 tailles de blocs possibles ( 2,4,8,16 et 32Ko )● Depuis la 9i Oracle peut utiliser plusieurs tailles de blocs● La taille du bloc standard est fixé par le paramètre DB_BLOCK_SIZE et ne peut être

modifié après création de la base.● Le bloc est la plus petite unité d'entrée/sortie de Oracle.● La notion de bloc est fondamentale et se retrouve partout dans Oracle.

● Un ensemble de blocs contigus forme un extent● Un ensemble d'extent forme un segment

● 4 types de segments– table– index– annulation( undo ) → ordre ROLLBACK– temporaire → tri, clause order by, group by...

● Un segment appartient à un tablespace

Page 23: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principe du stockage

BASE DE DONNEES

TABLESPACE

SEGMENT

FICHIER PHYSIQUE

segment de table, d'index, temporaire ou d'annulation ( UNDO )

EXTENT

BLOC

Page 24: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Cycle d'un segment

● Implicitement ou explicitement créé dans un tablespace.

● Un ou plusieurs extents alloués lors de la création, sans être obligatoirement remplis.

● Allocation d'un nouvel extent lors d'un ajout au segment si tous les extents sont remplis.

● Les extents d'un segment sont dans le même tablespace mais pas obligatoirement dans le même fichier.

Page 25: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

tablespace data

Exemple de stockage

Blocs Alloués

BlocsLibres

data01.dbf data02.dbf

SEGMENT A ( extent 1 )SEGMENT A ( extent 2 )

SEGMENT B ( extent 1 )

SEGMENT A ( extent 1 )

SEGMENT C ( extent 1 )

Page 26: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Utilisation de blocs de tailles multiples

● Utile pour la fonction de tablespace transportable apparue en 8i

● Opération effectuée par DataPump ou EXP/IMP

● Prérequis → les tailles de blocs doivent être identiques entre les bases

● Il est ainsi possible d'utiliser des tablespaces avec des blocs de 16Ko dans une base ayant un bloc standard de 8ko

● Permet au sein d'une même base d'avoir des tablespaces dédiés au décisionnel → grand bloc et des tablespaces dédiés au transactionnel → petit bloc

● La gestion des blocs multiples demande un soin particulier, car il faut spécifier manuellement un tampon mémoire différent qui est inclus dans le DB_BUFFER_CACHE.

Page 27: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Système de stockage

● 2 types possibles● Système de fichiers, cas classique. Oracle préconise

l'utilisation de plusieurs disques pour répartir les entrées/sorties (I/O).

● ASM : Automatic Storage Management● Arrivé en 10g● Similaire au LVM de Linux● Répartition des I/O par Oracle en fonction des disques disponibles● Demande une instance supplémentaire spéciale ( Instance ASM )● Utilisable avec RAC

● Le mode RAW DEVICE présent dans les versions pré-11gR2 n'est plus supporté,

Page 28: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Notion de schéma

● Ensemble des objets appartenant à un utilisateur.

● Tables

● Vues

● Synonymes

● Index

● Séquences

● Programme PL/SQL

● Schéma et Utilisateur ( user ) sont souvent équivalents dans Oracle

● Un utilisateur doit posséder des privilèges spéciaux pour créer des objets.

● Seuls les tables et les index utilisent du stockage dans les tablespaces

● Les autres objets sont définis dans le dictionnaire des données.

● Il existe la commande suivante dans Oracle :

● CREATE AUTHORIZATION SCHEMA

● Cette commande est utilisée pour créer un ensemble d'objets ( tables, vues, indexs... ). L'ensemble des créations doit aboutir sinon rien n'est créé.

Page 29: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Règles de nommage

● Débute par une lettre

● Composé de lettres, de chiffres et des trois caractères spéciaux : _, $ et #.

● De 1 à 30 caractères maxi, sauf :

● Database : 8 caractères

● Database Link : 128 caractères. @ et . sont autorisés pour nommer les database links.

● Insensible à la casse, sauf avec DataPump ( bug ? )

● Doit être unique pour un même utilisateur quelque soit l'objet.

● Ne doit pas être un mot réservé Oracle.

Page 30: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

La SGA

● Zone mémoire partagée par les processus Oracle

● Allouée au démarrage de l'instance et libérée lors de son arrêt.

● Dimensionnable à chaud par les paramètres :● sga_target, ● sga_max_size

● Divisée en pool dont la gestion de certains peut être automatique ( 10g et + ) ou manuelle.

Page 31: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Pool de la SGA

● Database Buffer Cache : cache des données● Shared Pool

● Library Cache → cache des requêtes SQL● Dictionnary Cache → cache du dictionnaire des données● Result Cache → Résultats de requêtes.

● RedoLog Buffer : tampon pour les transactions sur la BD● Large Pool : utilisée pour des processus optionnels ( RMAN, configuration en serveur partagé )● Java Pool : à 0 si la machine virtuelle java de Oracle n'est pas utilisée● Stream Pool : tampon pour échange via flux stream ( fonctionnalité non maintenue post 11g )● En cas d'utilisation de blocs Oracle de tailles multiples, la SGA contient en plus un pool par taille de blocs

qui se trouvent dans le Database Buffer Cache.

System Global AreaShared Pool

Database Buffer Cache

Redo Log

Buffer

Library CacheOrdres SQLInsert, Select,

Delete, PL/SQL...

Dictionnary Cache

JAVA POOL

LARGE POOL

STREAM POOLResult Cache

Page 32: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Database Buffer Cache

● Contient les blocs de données Oracle les plus utilisés● Table● Index● Segment d'annulation

● Lu par le processus DBW0 afin d'écrire dans les fichiers de données.● Les blocs doivent être dans ce pool pour pouvoir être traités par une requête

SQL.● Dimensionné par les paramètres suivants :

● db_block_size → bloc standard● db_nK_cache_size → blocs multiples, n valant 2,4,8,16 ou 32.

● Dans certaines configurations avancées il est possible de définir deux autres zones dans ce pool● KEEP → données devant rester le plus possible en cache → db_keep_cache_size● RECYCLE → données ne devant pas rester trop longtemps dans le cache →

db_recycle_cache_size

Page 33: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Shared Pool

● Composée de deux structures● Library Cache

– Texte de l'ordre SQL– Sa version analysée– Son plan d'exécution

● Dictionnary Cache– Description des tables– Droits des utilisateurs

● Dimensionnée par le paramètre shared_pool_size● L'équilibrage Library Cache / Dictionnary Cache est assuré par

Oracle.● Son paramétrage est complexe et influe énormément sur les

performances de Oracle.

Phase de parsing

Page 34: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Library Cache

● Une requête SQL passe par 2 ou 3 phases● Analyse ( parsing )

– Syntaxiquement correcte– Sémantiquement correcte : les données existent et l'utilisateur a le droit de

les utiliser.– Déterminer le plan d'exécution ( se base sur des statistiques )

● Exécution ( execute )● Recherche ( fetch ), uniquement pour les select

● La phase d'analyse est longue et consommatrice de ressources.

● Le stockage en Library Cache permet en cas d'exécution multiple de la requête de ne pas refaire la phase d'analyse → requêtes identiques

Page 35: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Requêtes identiques

● Oracle analyse le texte d'une requête au caractère près.● Les requêtes suivantes sont toutes différentes :

● select * from client where id = 1;● select * FROM client Where id = 1;● select * from client where id = 2;

● Il importe dans une application de coder selon une norme ( majuscule/minuscule, espace... )

● Pour les valeurs variables il faut utiliser des variables bind afin d'affecter un paramètre à la requête :● select * from client where id = :v;

● La paramètre cursor_sharing=force transforme tous les littéraux en variables bindées. Cet "artifice" aide un peu Oracle.

● Il s'agit d'un axe important lors d'une démarche d'optimisation du code SQL. L'amélioration des performances peut être spectaculaire.

Page 36: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Dictionnary Cache

● Tout Oracle est dans Oracle → dictionnaire des données.

● Le dictionnaire des données stocke l'ensemble des informations de la base● Structure des tables, colonnes, type...● Droits des utilisateurs● Stockage...

● Lors de la phase d'analyse, le dictionnaire des données est sollicité pour valider sémantiquement la requête.

● Oracle cherche à maintenir la plus grosse partie, voir l'ensemble, du dictionnaire dans cette zone.

Page 37: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Result Cache

● La version 11g de Oracle introduit une zone suppémentaire.

● Cette zone est située dans la Shared Pool donc en SGA.

● Elle contient le résultat produit par une ou des requêtes précédente.

● Le Result Cache est davantage un concept programmation qu'administration.

● L'annexe de ce document présente mieux le Result Cache.

Page 38: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Redo Log Buffer

● Tampon mémoire sur toute transaction● insert● update● delete

● A chaque transaction une entrée de redo est écrite dans ce pool

● Le processus LGWR écrit dans les fichiers de journalisation ( redolog ) selon certains événements ( voir plus loin ),

● Les select n'utilisent pas beaucoup voir pas du tout ce pool,

● Dimensionné par le paramètre log_buffer

● La chaine redolog buffer, LGWR et fichiers redolog est un goulot d'étranglement au niveau de Oracle ( base OLTP) car l'ensemble des transactions passe par elle.

● Son optimisation est complexe mais fondamentale.

Page 39: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Notion de granule

● Plus petite unité d'allocation mémoire des pool de la SGA

● Sa taille dépend de la taille de la SGA● 4 Mo si la SGA est inférieure ou égale à 1Go● 8 Mo ( Windows ) ou 16 Mo ( autres OS ) si la SGA

est supérieure à 1Go

● L'allocation est toujours un multiple du granule à la valeur supérieure.

Page 40: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Les transactions

● Une transaction porte sur les ordres SQL :● insert,● update,● delete.

● L'enregistrement définitif d'une transaction doit être explicitement fait par la commande :SQL> commit;

● Il est possible d'annuler une transaction par la commande : SQL> rollback;

● Les transaction utilisent les redolog et des segments d'annulation ( anciennement rollback segment → tablespace undo ).

Page 41: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principe des transactions

TEMPS

t1 t2 t3 t4

commit;

t0

commit; rollback; commit;

t5

rollback;

Les transactions t2 et t3sont annulées

t1Les données de la basecorrespondent à t1

Les données de la basecorrespondent à t4

Après t5 pour revenir à t0, il faut utiliser le mode FLASHBACK de Oracle

Page 42: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Point de contrôle

● Un rollback ramène la base dans l'état du dernier commit.

● Il est possible de mémoriser un ou plusieurs états de la base lors d'une transaction → SAVEPOINT

● SQL> insert into compositeur values ( '25', 'Franz', 'Schubert' ) ;

● SQL> savepoint s1 ;

● SQL> insert into compositeur values ( '26', 'Joseph', 'Haydn' ) ;

● SQL> rollback to s1 ;

● SQL> commit ;

● Seule la ligne '25', 'Franz', 'Schubert' est enregistrée dans la base.

Page 43: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Processus

● Lancés au démarrage de Oracle

● Il existe environ une trentaine de processus Oracle. Leur lancement dépend de la configuration de oracle.

● Certains processus peuvent être lancés en plusieurs exemplaires, notamment DBWn, ARCn et CJQn. Le n désigne le nombre 0 pour le premier...

● Le nom des processus est normalisé sur 4 caractères ( plus pour les processus en multi-lancement ). Les processus standards sont les suivants :

● DBWn● LGWR● CKPT● SMON● PMON● CJQn● ARCn ( optionnel )

● Windows n'utilise pas des processus, mais des threads qui sont regroupés dans un service unique.

Page 44: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

DBWn

● Database Writer → DBW0● Chargé d'écrire les blocs modifiés du Database Buffer Cache dans les fichiers de

données.● Sur les systèmes multi-processeurs ayant une forte activité de mise à jour il est

conseillé d'en lancer plusieurs en parallèle ( maxi 20 )● L'écriture est déclenché par un des événements suivants :

● Un processus serveur ne trouve pas de place libre dans le Database Buffer Cache● Périodiquement pour faire avancer le point de reprise

● Un COMMIT n'écrit pas forcément dans les données dans les fichiers.● A un instant t, la situation suivante est possible :

● Un fichier ne contient pas les données commitées● Si le Database Buffer Cache est trop petit et que le commit tarde, les données non validées

peuvent être écrites dans les fichiers.

● En cas de plantage à cet instant ?● Les transactions étant dans les fichiers de journalisation, l'instance au moment du redémarrage

remet les fichiers dans un état cohérent ( processus SMON ).

Page 45: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

LGWR● Log Writer → LGWR

● Ecrit le contenu du RedoLog Buffer dans le fichier de journalisation courant.

● L'écriture est déclenchée sur un des évènements suivants :

● Une transaction est validée par un commit,

● Le RedoLog Buffer est au tiers plein,

● DBWn s'apprête à écrire des données modifiées mais non validées dans ses fichiers,

● Séquentiellement toutes les 3 secondes

● C'est l'unique action produite lors d'un commit

● L'écriture est rapide, notion de fast-commit.

● Les processus DBWn et LGWR sont de véritables "bêtes de somme", ce sont eux qui assurent la part la plus importante du travail de Oracle.

Page 46: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

CKPT

● Checkpoint → enregistre le point de reprise dans le fichier de contrôle et les fichiers de données.

● Périodiquement les blocs modifiés dans le Database Buffer Cache sont écrits dans les fichiers de données → Cohérence des numéros SCN

● Ce mécanisme définit un point de reprise dans les fichiers de journalisation → Modification la plus ancienne qui n'est pas écrite dans les fichiers de données.

● En cas d'arrêt anormal, ce point marque le début des données à utiliser pour récupérer l'instance.

● Un point de reprise peut être forcé par la commande alter system checkpoint.

Page 47: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

SMON

● System Monitor

● Chargé de récupérer l'instance après un arrêt anormal.

● Libère les segments temporaires inutilisés

● Compacte l'espace contigu disponible dans les tablespaces gérés par le dictionnaire ( déconseillé par Oracle ).

● Effectue lors de la récupération 2 actions :

● rollforward → applique aux fichiers de données les transactions validées non écrites.

● rollback → retire des fichiers de données les transactions non validées.

Page 48: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Arrêt anormal de l'instance

● En cas d'arrêt anormal la situation suivante peut être :

● Des transactions validées ne sont pas écrites dans les fichiers de données

● Les fichiers de données contiennent des transactions non validées

● Cette situation ne pose pas de problème

● Les fichiers de journalisation contiennent les informations pour refaire les transactions validées et défaire les transactions non validées.

● Cette action est automatique via le processus SMON

● Lors de la validation d'une transaction un numéro SCN est affecté par Oracle. Ce numéro est fondamental pour que le système sache ou il en est.

Page 49: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Numéro SCN● System Change Number. Horloge interne à Oracle.

● Stocké dans le fichier de contrôle.

● Unique, s'accroît dans le temps. Ne prend jamais la valeur 0 tant que la base n'est pas recréée.

● Oracle effectue une restauration uniquement par rapport au SCN

● Au démarrage de la base, le processus SMON vérifie le SCN dans toutes les entêtes des fichiers de données. Les SCN doivent être identiques à celui du fichier de contrôle.

● Le SCN joue également un rôle important pendant la lecture des blocs Oracle.

● Au début, un SCN est attribué à une transaction (SCN1), après elle lit le SCN de la dernière modification dans le bloc (SCN2), si SCN2 est supérieur à SCN1, cela signifie que le bloc à été modifié après le démarrage de la transaction.

● La requête suivante donne le SCN courantSQL> select dbms_flashback.get_system_change_number() from dual;

Page 50: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

PMON

● Process Monitor● Chargé du nettoyage lors du plantage d'un

processus utilisateur.● Annulation de la transaction → rollback● Libération des verrous et des ressources

● Peut détecter la non présence d'un utilisateur● Utilisateur connecté n'ayant pas fermé sa session● L'application utilisateur est plantée● Le réseau est coupé...

Page 51: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

CJQn

● Job Queue● Chargés d'exécuter des taches périodiques

programmées par Oracle → cron interne à Oracle.

● Le processus CJQn surveille si il y a des travaux à lancer et démarre des processus esclaves ( J000 à J999 ).

Page 52: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

ARCn

● Archiver● Ce processus est optionnel● Il permet l'archivage des fichiers de journalisation pleins

avant leur effacement● La base fonctionne en mode ARCHIVELOG● Il est fortement recommandé d'activer ce mode de

fonctionnement en production. En cas de crash, si les archivelogs sont préservés, Oracle peut reconstruire toute la base de donnée jusqu'au moment du crash.

● Inconvénient → Demande de l'espace disque pouvant être important.

Page 53: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Volume des archivelogs

● Soit des groupes de redolog de 50Mo.● Avec un switch par 1/4 heure● Volume d'archivelogs :

● En 1 heure : 200Mo ● En 1 jour : 4,8Go● En 1 semaine : 33,6Go● En 1 mois : 144Go

● Les archivelogs sont, en général, conservés uniquement entre deux sauvegardes.

Page 54: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Les processus serveurs

● Chargés de traiter les requêtes des utilisateurs

● Communiquent avec le Database Buffer Cache soit en local, soit via le réseau ( couche Oracle*Net ).

● Par défaut Oracle utilise un processus serveur par connexion utilisateur → mode serveur dédié.

● Oracle peut être configuré en serveur partagé, mode MTS, afin qu'un processus serveur puisse être utilisé par plusieurs utilisateurs différents.

● La configuration d'un serveur partagé est complexe et n'est pas couverte par ce cours. Elle ne doit être utilisée que dans des cas très spécifiques.

● Les processus serveurs utilisent une zone mémoire dédiée : la PGA

● En cas d'utilisation d'un serveur en MTS ( partagé ), une partie de la PGA est stockée dans la Large Pool de la SGA.

Page 55: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Dédié vs Partagé● Dédié est le mode de serveur par défaut d’Oracle.

● Une session utilisateur utilise un processus serveur dédié à cette session.● Le mode serveur dédié est souvent utilisé lorsque des utilisateurs adressent

directement les instances en sessions distantes ou bien lorsque des applications spécifiques adressent les instances.

● Partagé ou encore MTS (« Multi Threaded Server ») est un bon choix lorsque le nombre d’utilisateurs qui s’adressent à l’instance commence à approcher 100 sessions simultanées.● A ce moment là, le nombre de processus serveur dédié peut alourdir inutilement la

charge et la consommation mémoire.● Le mode partagé part du principe que le nombre de processus serveur est plus petit

que le nombre de sessions utilisateurs établies mais que, à un instant t, ce nombre n’est jamais atteint. On économise alors de la CPU et de la mémoire.

● Un Dispatcheur (DISPATCHER) reçoit les requêtes de tous les processus utilisateurs et se charge de les stocker dans une file d’attente de requêtes entrantes (Queue de requêtes ou « Query Queue »).

● Les processus serveurs partagés, en fonction de leur disponibilité, traitent les messages postés dans cette file d’attente et stockent les réponses dans une file d’attente de réponses (Queue de réponses ou « Response Queue »).

Page 56: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

PGA

● Program Global Area● Pour un processus serveur la PGA contient :

● Une zone de travail SQL pour certaines opérations, notamment les tris.● Des informations sur la session● Des variables de session● Des informations sur le traitement des requêtes

● La PGA allouée à l'ensemble des processus serveurs est nommée PGA agrégée.

● Depuis la 9i la PGA est gérée dynamiquement via le paramètre pga_aggregate_target.

● Ainsi la quantité de PGA affectée à chaque processus est automatiquement gérée par Oracle.

Page 57: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

La gestion de la mémoire● Pour la PGA la gestion est automatique, le mode manuel est possible

mais déconseillé.● SGA Manuelle ou Automatique● Pour la SGA la gestion manuelle permet de définir chaque pool individuellement

● Obligation pré-10g● Complexe et figée, peut ne pas convenir selon certaines période d'activité de la base

● La gestion automatique de la SGA permet de laisser Oracle définir dynamiquement les pools suivants :● Database Buffer Cache● Shared Pool● Large Pool● Java Pool● Streams Pool

● Affecter une valeur à l'un des pool alors que la SGA est en gestion automatique permet de définir une valeur minimale de ce pool.

● Seul le redolog buffer et éventuellement les zones pour taille de blocs différents du bloc standard sont à définir manuellement, ainsi que les valeurs keep et recycle.

● La gestion automatique de la SGA est conseillée et se paramètre en donnant une valeur à sga_target et à sga_max_size.

Page 58: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Répartition SGA/PGA

● Pour les bases transactionnelles ( OLTP )● SGA : 80% de la mémoire affectée à l'instance● PGA : 20 %

● Pour les bases décisionnelles ( DSS )● SGA : 30 à 50% de la mémoire affectée à l'instance● PGA : 50 à 70 %● Dans une bases décisionnelle les processus serveurs

sont plus "gourmands" ( tris importants ).

● Il s'agit d'une répartition de départ, devant être affinée.

Page 59: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple de répartition mémoire

● Soit un serveur avec 1Go de RAM et une seule instance Oracle de type transactionnelle.

● 20% pour l'OS → 200Mo● 80% pour Oracle → 800Mo

● 80% pour la SGA → 640Mo● 20% pour la PGA → 160Mo

● Pour la PGA une bonne base peut être aussi d'affecter de 5 à 10Mo par session simultanée.

● Le système présenté en exemple doit donc supporter sans problème la connexion de 16 à 32 utilisateurs en simultané.

Page 60: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

La mémoire et Oracle

● Oracle n'est pas conçu pour fonctionner entièrement en RAM.

● Augmenter la mémoire sur un serveur n'est pas la solution en cas de performance médiocre. L'effet inverse peut même se produire → Oracle passant le plus clair de son temps à gérer sa mémoire au lieu de traiter les requêtes.

● Dans 95% des cas les mauvaises performances sont plus dues à un code mal écrit ou à des plans d'exécution non optimisé ( absence d'index ou statistiques non mises à jour ), qu'à un manque de mémoire système.

● Il est très facile de diagnostiquer un problème mémoire sous Oracle ( voir plus loin ).

Page 61: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Mémoire et 11g

● La version 11g de Oracle défini un nouveau paramètre : MEMORY_TARGET

● La répartition SGA/PGA est alors automatiquement réglée par Oracle.

● Exemple :● MEMORY_TARGET=1G● Oracle gérera la répartition en fonction du besoin, il est donc dans

ce cas inutile de spécifier SGA_TARGET et PGA_AGGREGATE_TARGET.

● Ce paramètre ne fonctionne pas systématiquement.● MEMORY_TARGET est incompatible avec la gestion des

HUGE PAGES.

Page 62: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Le DBA● Administrateur de la base de données● Principales tâches

● Installer les produits● Créer, démarrer et arrêter la BD● Gérer les structures de stockage● Gestion des utilisateurs et des droits● Sauvegardes et restauration● Assurer un fonctionnement optimal de la base de données.

● Une base Oracle contient toujours 2 comptes administrateur ou DBA● sys, mot de passe par défaut : change_on_install

– sys possède le dictionnaire des données– c'est le compte utilisé pour arrêter ou démarrer la base

● system, mot de passe par défaut : manager– Possède des tables complémentaires utilisées par les outils Oracle

● Laisser pour sys et system les mots de passe par défaut revient à donner l'ensemble des droits sur la base de données à n'importe qui.

Page 63: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Identification privilégiée● Par le système d'exploitation

● L'utilisateur doit faire partie du groupe dba ou oper défini sous Linux ( ORA_DBA ou ORA_OPER sous Windows )

● L'outil d'administration est alors lancé sans nom d'utilisateur ou de mot de passe avec le privilège SYSDBA ou SYSOPER

● Exemple avec SQL*Plussqlplus /nologSQL> connect / as sysdba

● Par fichier de mot de passe● Ce fichier est créé par l'utilitaire Oracle orapwd● Il doit se trouver dans le répertoire $ORACLE_HOME/dbs pour Linux ou %ORACLE_HOME

%/database pour Windows● Il doit avoir pour nom orapwSID.ora → SID étant le nom de l'instance Oracle● Exemple pour une base nommée RED

orapwd file=$ORACLE_HOME/dbs/orapwRED.ora password=manager11● Exemple avec SQL*Plus

sqlplus /nologSQL> connect sys/manager11 as sysdba

● Bien que les 2 modes soient possibles, certaines fonctionnalités Oracle exigent une authentification par fichier de mot de passe ( démarrer une base à distance par exemple ).

sqlplus ''/as sysdba''

Page 64: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Utilisation de SYS ou SYSTEM

● L'administration courante ne demande pas d'utiliser le compte sys.

● Le compte system permet de :● Gérer les structures de stockage● Gérer les utilisateurs● Gérer les objets d'un schéma

● Le compte sys, privilège sysdba est requis pour :● Créer la base de données● Arrêter ou démarrer la base● Effectuer les opérations de récupération● Il est implicitement utilisé par RMAN pour la sauvegarde et la

restauration.

Page 65: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Le compte system

● System est un utilisateur comme un autre au niveau Oracle.

● Il dispose d'un rôle DBA.● Pour des raisons de sécurité, ce compte est

souvent verrouillé après la création de la base.

Page 66: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Autres comptes Oracle

● Lors de la création d'une base de données deux autres comptes peuvent être créés

● sysman, utilisé par le database control ( Oracle Enterprise Manager )

● sysman à pour mot de passe par défaut : change_on_install et est un compte DBA.

● dbsnmp, utilisé par un agent Oracle Entreprise Manager pour superviser une base. Ce compte est utilisé pour mettre en place le Grid Control

Page 67: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Dictionnaire des données

● Ensemble de tables contenant des informations sur les objets de la base.

● Sa mise à jour est assurée par Oracle● Les tables sont consultables par select.● Pour la plupart il s'agit en fait de vues● Les tables du dictionnaire se classent en 3 catégories

de préfixe :● user_ : tables dont l'utilisateur est propriétaire,● all_ : tables auxquelles l'utilisateur a accès,● dba_ : tables accessibles uniquement au DBA.

Page 68: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Structure du dictionnaire des données

DBA_TABLESEnsemble des tables de la base

de données. Accès réservé au DBA.

ALL_TABLESTables accessibles

par l'utilisateur. Notion de grant.

USER_TABLESTables possédées

par l'utilisateur.

Page 69: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Vues dictionnaire vs Performance

Vues dictionnaire● Préfixée par DBA_, en

général au pluriel.● Exemple :

DBA_DATA_FILES.● Visibles base ouverte.● Données généralement

en majuscules.● Statiques, non effacées

si base arrêtée.

Vues performance● Préfixée par V$, en

général au singulier.● Exemple :

V$DATABASE.● Visibles base montée.● Données généralement

en minuscules.● Dynamiques, effacées à

chaque démarrage.

Page 70: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Vues du dictionnaire les plus utiles

● DBA_TABLES : liste l'ensemble et les caractéristiques de stockage des tables de la base.

● DBA_USERS : Informations sur les utilisateurs de la base de données.

● DBA_VIEWS : Liste les vues de la base de données.

● DBA_TAB_COLUMNS : Liste les noms des colonnes et le type de données pour chaque table.

Page 71: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Vues de performance

● V$DATABASE : informations sur la base de données.

● V$SESSION : informations sur les sessions connectées.

● V$SESSION_WAIT : liste les événements d'attente par session.

● V$SQL : Requêtes SQL en cours.

Page 72: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Installation deORACLE

Page 73: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Installation

● Oracle Universal Installer● La norme OFA● Prérequis● Installation● Post-installation

Page 74: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Linux vs Windows

● L'installation sous Linux est un peu plus complexe car il faut paramétrer le noyau, créer un user Oracle, installer certains packages...

● Sous Windows, il suffit d'insérer le CD-ROM et l'installation démarre.

● Il y a toutefois un pré-requis sous Windows, l'installation se faisant souvent sous le compte Administrateur, celui-ci doit disposer du droit "Ouvrir une session en tant que tâche", sinon certaines fonctions seront inaccessibles

● Les slides suivants concernent donc uniquement Linux.

Page 75: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Information

● Sur le blog silverlake, dans la partie wiki se trouve une procédure complète et très détaillée de l'ensemble de l'installation d'une base Oracle 11g sur un serveur Centos 5.5

● Cette procédure reprend la quasi totalité des manipulations vues en cours.

● http://www.silverlake.fr/wiki● Rubrique "Installation d'un serveur Oracle 11g"

Page 76: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Installation Serveur

● Une interface graphique est indispensable. Sinon il faut utiliser le mode silence.

● Sur un serveur linux la couche X-Window suffit et il est simple de faire un export display via ssh :

● ssh -X oracle/manager11@serveuroracle● Il est possible de faire des installations silencieuses avec un

fichier de pré-configuration , un exemple est présenté plus loin.

● L'installateur de Oracle est écrit en Java et identique sur toutes les plate-formes

● Bien lire les prérequis Oracle dépendant de la plate-forme utilisée.

● L'ensemble de la documentation est disponible par l'url suivante : http://www.oracle.com/pls/db112/homepage

Page 77: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

La norme OFA

● Oracle Flexible Architecture● Ensemble de recommandations sur l'arborescence et le nommage des fichiers

du serveur.● Un des principes est de séparer le ou les produits Oracle installés des fichiers

de bases de données.● OFA permet une cohabitation facile de différentes versions de Oracle sur le

même serveur.● OUI, respecte la norme OFA● Le standard OFA se base sur 2 variables d'environnement :

● ORACLE_BASE, répertoire racine de Oracle● ORACLE_HOME, sous répertoire de ORACLE_BASE, donnant le produit Oracle utilisé.● En modifiant ORACLE_HOME il est ainsi possible d'utiliser une 9i et une 10g sur le même

serveur très simplement.

● Le texte original de la norme OFA ( 1995 ) est disponible sur l'URL suivante :http://www.lifeaftercoffee.com/downloads/oracle_ofa_whitepapaer.pdf

Page 78: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Arborescence OFA

/u01/app/oracle/

product/

11.2.0/dbhome_1

10.2.0/dbhome_1

9.2.4/dbhome_1

oradata

RED

BLUE

BLACK

$ORACLE_BASE

$ORACLE_HOME

Bin

aire

sO

racl

eF

ichi

ers

Bas

es d

edo

nnée

s

Page 79: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Installation OrsysLinux

● Au démarrage du poste, choisir Oracle Linux.● Se connecter avec le compte oracle/oracle● Le compte root n'est requis que

ponctuellement. Le mot de passe root est root ( root01 ) sur certaines plate-formes.

Page 80: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Installation d'Oracle 11

● Ne pas utiliser su, mais se déconnecter de la session root pour revenir à la fenêtre de connexion.

● Se reconnecter oracle/oracle.● Se déplacer dans le dossier d'installation :

● cd /Source_Installation/Oracle_11gR2/Oracle_11gR2● L'installateur se lance ainsi :

● ./runInstaller● Accepter l'erreur éventuelle de swap en tapant "Y" au message.

● Sous Windows, il suffit de cliquer sur "setup.exe"

● Sauf indication contraire, il suffit la plupart du temps de valider l'écran via le bouton "Suivant"

Page 81: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Décocher cette case

Page 82: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Message sur e-mail

● Ne pas tenir compte de cet avertissement et répondre « Oui »

Page 83: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Choisir cette option

Page 84: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Installer uniquement le logiciel

Page 85: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Choisir Base de données mono-instance

Page 86: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster
Page 87: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Choisir la version Entreprise

Page 88: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Licences et Editions Oracle

● Oracle propose 2 types de licences● Par utilisateur ( minimum 5 ou 25 selon les éditions )● Par processeur ( intéressant à partir de 50 utilisateurs )

● Les versions sont :● Entreprise → Toutes les fonctionnalités, pas de limitations● Standard → Certaines fonctions absentes ( partitionning, dataguard, flashback database ). Limitée à 4

processeurs.● Standard One → Limitée à deux processeurs, pas de possibilité RAC.● Il existe une version gratuite, nommée Oracle XE avec les limites suivantes :

– 1 processeur– 1Go de RAM– BD de 15Go maxi en 11g ( 4Go en 10g ).

● L'intégralité des produits Oracle, y compris la documentation, est disponible en téléchargement gratuit sur le site Oracle Technology Network.

● Ces versions ne sont toutefois pas les dernières en date.● Oracle autorise l'utilisation gratuite à des fins de formation, développement, test de ses

produits et demande l'acquisition de licence en cas de passage en production.● L'achat d'un produit Oracle donne l'accès à My Oracle Support ( ex Metalink ).● Un compte My Oracle Support est requis pour accèder aux mises à jour et correctifs.

Page 89: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Tarif Oracle novembre 2014 ( en Dollar USA )

Page 90: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster
Page 91: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster
Page 92: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster
Page 93: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster
Page 94: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Ne pas tenir compte deMessages d'erreurs éventuels.

Page 95: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster
Page 96: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster
Page 97: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Scripts de configuration

● Ouvrir une session en parallèle en tant que root et exécuter les deux scripts présentés.

Page 98: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster
Page 99: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Définition des variables d'environnement

● Editer le fichier de configuration du profil de l'utilisateur Oracle ● vi /home/oracle/.bash_profile

● Ajouter au fichier les lignes suivantes:● export ORACLE_BASE=/u01/app/oracle

● export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1

● export ORACLE_OWNER=oracle

● export NLS_LANG=FRENCH_FRANCE.UTF8

● export PATH=$PATH:$ORACLE_HOME/bin

● Sourcer le fichier● . .bash_profile

Page 100: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Test SQL*Plus

● La connexion SQL*Plus doit être opérationnelle.[oracle@lx­1­3 ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Mar. Avr. 2 15:22:58 2013

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> exit

[oracle@lx­1­3 ~]$

Page 101: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Fin spécifique Orsys

Page 102: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Installation silencieuse

● Permet de ne pas utiliser le mode graphique.

● Utile si l'unique mode de connexion au serveur est ssh.

● Demande un fichier de réponses aux questions de l'installeur OUI.

● Un exemple documenté est fourni dans le répertoire database/responses du média d'installation.

● Attention selon la version de Oracle, les options du fichier réponse varient. Celui de la 11.2.0.1 est différent de la 11.2.0.2.

● Il est possible de procéder à une installation graphique et d'enregistrer les réponses dans un fichier.

Page 103: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple de fichier réponse● Fichier /home/oracle/db.rsp

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0oracle.install.option=INSTALL_DB_SWONLYORACLE_HOSTNAME=lx­8­1UNIX_GROUP_NAME=oinstallINVENTORY_LOCATION=/u01/app/oraInventorySELECTED_LANGUAGES=en,frORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1ORACLE_BASE=/u01/app/oracleoracle.install.db.InstallEdition=EEoracle.install.db.isCustomInstall=falseoracle.install.db.DBA_GROUP=dbaoracle.install.db.OPER_GROUP=dbaDECLINE_SECURITY_UPDATES=trueSECURITY_UPDATES_VIA_MYORACLESUPPORT=false

● Lancement de l'installation● ./runInstaller -silent -ignoreSysPrereqs -ignorePrereq -responseFile

/home/oracle/db.rsp

● Les clauses -ignoreSysPrereqs et -ignorePrereq sont requises si l'installation n'est pas sur une version certifiée ( Redhat... )

● Il faut en fin d'installation exécuter les scripts $ORACLE_HOME/root.sh et $ORACLE_BASE/oraInventory/orainstRoot.sh en se connectant root.

Page 104: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Le réseau et ORACLEOracle*Net

Page 105: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Oracle * Net

● Rôle de Oracle*Net, ancien nom SQL*Net● Configuration côté serveur● Configuration côté client

Page 106: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Rôle de Oracle*NET

● Couche réseau de Oracle● Rend transparent pour les applications la localisation des bases de

données● Les fichiers de configuration Oracle*Net peuvent être pointés par la

variable d'environnement $TNS_ADMIN● Export TNS_ADMIN=$ORACLE_HOME/network/admin

réseauTCP/IP

ClientOracle

ServeurOracle

RED

sqlplus scott/tiger@red LISTENERPort 1521

Sur le serveurun processusécoute les demandesde connexion des clients

Le client doitrésoudre un nomde service

Page 107: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Configuration serveur

● Un processus, le listener, écoute le réseau sur le port 1521 d'un réseau TCP/IP

● Il est possible de configurer plusieurs processus d'écoute sur le même serveur

● Ils doivent porter un nom différent● Ils doivent écouter sur des ports distincts

● Par convention le processus d'écoute se nomme LISTENER

● Le port d'écoute 1521 est aussi une convention

● Il est possible d'utiliser un autre nom et/ou un autre port d'écoute.

● Il est conseillé de renseigner le port d'écoute dans le fichier /etc/services.

● La configuration du listener se fait dans un fichier, listener.ora, situé sous $ORACLE_HOME/network/admin.

● C'est le seul fichier à configurer, sauf si le serveur est aussi client d'un autre serveur.

● Le listener se lance par la commande lsnrctl start, s'arrête avec lsnrctl stop

● Sous Windows, il existe un service spécial pour le listener : « OracleOraDb11g_home1TNSListener » qui se démarre/s'arrête par la commande net start/stop

● La commande lsnrctl status permet de visualiser l'état du listener.

● Si le serveur comporte plusieurs versions de Oracle ( 9i, 10g, 11g... ) il faut toujours utiliser la version la plus récente du listener.

Page 108: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

LISTENER.ORA

● Configuration via deux programmes● Assistant netca● Programme netmgr

● Edition directe du fichier de configurationLISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION 

     (ADDRESS=(PROTOCOL = TCP)(HOST = lx­8­10 )(PORT = 1521))

    )

  )

Il est possible de mettre l'adresse IP ou le nom du serveur, toutefois celui-ci doit être résolu ( voir fichier /etc/hosts )

Page 109: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Assistant netca

Page 110: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Configuration du listener avec netca

● En ligne de commande taper : netca

● Dans l'assistant choisir: Configuration d'un processus d'écoute et faire Suivant

● Choisir Ajouter et faire Suivant

● Nommer le processus d'écoute LISTENER, ce qui est fait par défaut, et faire Suivant

● Choisir le protocole TCP et faire Suivant

● Dans l'écran du choix du port, valider le port standard 1521 et faire Suivant

● A la question créer un autre processus d'écoute, répondre Non et faire Suivant deux fois afin de revenir à l'écran principal et choisir Terminer.

● En ligne de commande taper : lsnrctl status pour vérifier le lancement correct du listener.

● Vérifier le contenu du fichier $ORACLE_HOME/network/admin/listener.ora

● Important : TCP n'est pas le seul protocole possible, mais le plus courant. En local sur une même machine les protocoles IPC ou BEQ sont plus performants. Il est également possible d'utiliser IPX de Novell.

Page 111: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Listener et procédures externes

● Une procédure externe est écrite dans un langage autre que le PL/SQL et pouvant être appelée à partir du PL/SQL.

● Seul les langages C et Java sont supportés nativement par Oracle.

● Sous Windows il s'agit d'un fichier .DLL, sous Linux, il s'agit d'un fichier .so

● Ces fichiers peuvent contenir une ou plusieurs procédures externes.

● La gestion des procédures externes dépasse le cadre de ce cours.

● La configuration du listener via l'assistant netca suppose l'utilisation de procédures externes en incluant dans le listener.ora cette ligne :

● (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)))

● Si la base de données ne fait pas appel à des procédures externes, Oracle recommande de supprimer cette configuration améliorant ainsi la sécurité.

Page 112: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Configuration client● La configuration d'un client demande deux choses :

● Comment résoudre les noms de service → sqlnet.ora● Configurer les différentes méthodes de résolution de nom de service →

tnsnames.ora

● Ces deux fichiers sont sous $ORACLE_HOME/network/admin● Ils se configurent via netca, netmgr ou en éditant directement les fichiers.● sqlnet.ora

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

● tnsnames.oraRED =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = lx-1-3 )(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = RED)

)

)

Page 113: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Configuration des méthodes de résolution avec netca

● En ligne de commande taper : netca

● Choisir Configuration des méthodes de résolution de noms et faire Suivant

● Passer les méthodes de la fenêtre méthodes disponibles à la fenêtre méthodes sélectionnées en utilisant l'icône de flèche choisir :

● Résolution locale de noms

● Résolution de noms Easy Connect

● Faire Suivant à deux reprises pour revenir à l'écran principal et Faire Terminer.

● Vérifier le contenu du fichier $ORACLE_HOME/network/admin/sqlnet.ora qui doit contenir la ligne suivante :NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

Page 114: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Connexion simplifiée

● Protocole easy-connect● Apparu en 10g● Ne fonctionne que sous TCP/IP● Ne demande pas de configuration du client● La méthode peut être toutefois présente dans sqlnet.ora● Exemple :

sqlplus scott/tiger@//lx-1-3/red● En cas d'utilisation d'un port différent du standard il faut

le préciser dans la commande● sqlplus scott/tiger@//lx-1-3:1522/red

Page 115: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création d'une basede données

Page 116: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création d'une base de données

● Il existe plusieurs méthodes● Manuellement● Graphiquement avec DBCA● DBCA en mode silencieux● Clonage

● Ce cours présentera chaque méthode● Il sera également présenté la création et la

gestion OMF ( Oracle Management Files )

Page 117: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Etape de création de la BD

● Dans un premier temps le modèle physique de la BD doit être conçu. Cette étape est obligatoire afin d'administrer efficacement une BD.

● Création proprement dite● Création d'une instance → définition d'un fichier de paramètres.● Création des fichiers de la base ( control files, redolog, tablespaces Oracle )● Création du dictionnaire des données● La base est à ce stade une enveloppe vide, prête à recevoir les données

applicatives.

● Création des structures de stockage ( tablespaces )

● Création du ou des schémas applicatifs ( propriétaire du schéma )

● Création des objets dans chaque schéma ( tables, index, vues...)

● Création des utilisateurs finaux ( user applicatif ) gestion des droits

● Sauvegarde

Page 118: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Fichier de paramètres

● Avant de créer une première base de données il est nécessaire de maîtriser les paramètres Oracle.

● Depuis la 9i, Oracle conseille l'utilisation d'un fichier de paramètres serveur ( spfile ). Toutefois pour créer ce fichier l'étape fichier texte ( pfile ) est indispensable.

● Il est ensuite possible de créer le spfile depuis le pfile et réciproquement.

● Le fichier de paramètre texte est placé dans le répertoire $ORACLE_BASE/admin/SID/pfile et se nomme initSID.ora. SID étant le nom de l'instance Oracle

● Il y a plus de 340 paramètres Oracle documentés. En règle générale seule une trentaine de paramètres sont à connaître.

● Il existe des paramètres non documentés, dont le nom commence par "_" → Il ne faut jamais utiliser ces paramètres sauf recommandation directe par le support Oracle.

● Le fichier de paramètre, texte ou serveur, est le premier fichier lu quand l'instance démarre.

Page 119: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principaux paramètres ...

● DB_NAME : Nom de la base de données. 8 caractères maxi, le plus souvent égal à ORACLE_SID● DB_NAME = RED

● DB_DOMAIN : Localisation logique de la base de données. Associé à DB_NAME, il permet à Oracle de construire un nom global.● DB_DOMAIN=PARIS.ORSYS.FR● → RED.PARIS.ORSYS.FR● Ce principe permet de différentier des bases ayant le même

nom sur des emplacements géographiques différents.● DB_DOMAIN peut contenir 128 caractères.

Page 120: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principaux paramètres suite ...

● COMPATIBLE : Indique un numéro de version Oracle avec laquelle la base doit être compatible. Ceci permet de tester une nouvelle version en restant compatible avec l'ancienne.

● Valeur de 10.0.0 à la version actuellement installée. Valeur par défaut : 11.0.0● CONTROL_FILES : Emplacement des fichiers de contrôles de la base. Le ou les fichiers de

contrôles permettent à l'instance Oracle après démarrage d'être montée.● Un seul est obligatoire, Oracle conseille 3 controlfiles sur des axes différents →

multiplexage.● CONTROL_FILES =

( "/u01/app/oracle/oradata/RED/control01.ctl", "/u02/app/oracle/oradata/RED/control02.ctl", "/u03/app/oracle/oradata/RED/control03.ctl" )

● DB_BLOCK_SIZE : Taille du bloc standard Oracle. Ne peut être modifié sans recréer la base. La taille est de 2, 4, 8, 16 ou 32Ko. La taille est exprimée en octets.

● DB_BLOCK_SIZE = 8192

● Les systèmes transactionnels utilisent des petits blocs 4 ou 8Ko

● Les systèmes décisionnels utilisent des blocs plus gros 16 voir 32Ko.

● Oracle peut utiliser des tablespaces avec d'autres tailles de bloc que le bloc standard.

● DB_nK_CACHE_SIZE : Taille dans le Database Buffer Cache pour les blocs de nKo. Ce paramètre n'est utile que si on souhaite utiliser des tailles autres que le bloc standard. Sa gestion est manuelle au sein de la SGA et doit donc faire l'objet de plus d'attention.

● DB_16K_CACHE_SIZE = 25M

Page 121: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principaux paramètres suite ...

● MEMORY_TARGET : Taille mémoire affectée à l'instance Oracle● Ce paramètre permet la répartition automatique entre la SGA et la PGA. Il est apparu en 11g. Attention, il y a

certaines contraintes avant de pouvoir utiliser ce paramètre ( voir doc Oracle )

● SGA_MAX_SIZE : Taille maximale de la SGA● Ce paramètre permet de définir une limite pour la SGA dont la taille est fixée par SGA_TARGET permettant

ainsi son augmentation à chaud.● SGA_MAX_SIZE = 1G

● SGA_TARGET : Taille souhaitée pour la SGA● SGA_TARGET = 640M● Cette taille peut être augmentée à chaud dans la limite de SGA_MAX_SIZE.

● Par défaut SGA_MAX_SIZE = SGA_TARGET. ● Si SGA_MAX_SIZE est supérieur à SGA_TARGET, l'OS alloue totalement la mémoire à la

valeur SGA_MAX_SIZE. ● Il reste possible de définir chaque pool de la SGA individuellement, ce qui en règle générale

n'apporte aucune valeur ajoutée.● PGA_AGGREGATE_TARGET : Quantité de mémoire alloué à la PGA. La gestion interne est

automatique en fonction des besoins de chaque processus serveur.● PGA_AGGREGATE_TARGET = 160M

Page 122: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principaux paramètres suite ...

● UNDO_MANAGEMENT : Mode de gestion souhaité pour les segments d'annulation.

● AUTO ou MANUAL

● Manual est déconseillé, il implique une gestion via les rollback segments qui est complexe. Cette méthode n'est qu'une fonction de compatibilité et obsolète. En 11g par défaut la valeur est auto.

● UNDO_MANAGEMENT = auto

● UNDO_TABLESPACE : Tablespace contenant les segments d'annulation si la gestion automatique est mise en place ( fortement conseillé ! )

● UNDO_TABLESPACE = UNDO_TBS

● NLS_LANGUAGE : Langage par défaut de l’instance, utilisé pour les messages, les noms de jour et de mois et le tri.

● Détermine aussi la valeur des paramètres NLS_DATE_LANGUAGE et NLS_SORT.

● La valeur par défaut est dérivée de la variable d’environnement NLS_LANG.

● NLS_LANGUAGE = french

Page 123: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principaux paramètres suite ...● DB_RECOVERY_FILE_DEST : Emplacement de la zone de récupération

rapide ( Flash Recovery Area ). Cette zone est la destination par défaut des sauvegardes RMAN, des archivelogs, des fichiers Flashback...● Permet une simplification des mécanismes de reprise après défaillance.● Oracle conseille de mettre cette zone sur un disque dédié.● DB_RECOVERY_FILE_DEST = /u01/app/oracle/flash_recovery_area/RED

● DB_RECOVERY_FILE_DEST_SIZE : Taille maximale de la zone de récupération rapide. Obligatoire avec le paramètre précédent.● DB_RECOVERY_FILE_DEST_SIZE = 20G● Oracle préconise une taille égale à 2,5 fois la taille totale de la base de données pour cette zone.

● OPEN_CURSORS : Détermine le nombre maximum de curseurs qui peuvent être ouverts simultanément par une session. ● Valeur par défaut : 50.● OPEN_CURSORS = 500

● PROCESSES : Nombre maximum de processus qui peuvent se connecter simultanément à l’instance. Compter un pour chaque session utilisateur simultanée, plus une quinzaine pour Oracle et 10 de plus si utilisation du database control.● PROCESSES = 200

● OPEN_CURSORS et PROCESSES sont fréquemment modifiés à posteriori Ils sont fortement liés à la logique de programmation de l'application connectée.

Page 124: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principaux paramètres suite ...

● BACKGROUND_DUMP_DEST : Répertoire de destination des traces des processus d’arrière-plan et du fichier d’alerte de l’instance.

● BACKGROUND_DUMP_DEST = /u01/app/oracle/admin/RED/bdump

● USER_DUMP_DEST : Répertoire de destination des traces des processus utilisateurs.

● USER_DUMP_DEST = /u01/app/oracle/admin/RED/udump

● DIAGNOSTIC_DEST : En 11g les 2 paramètres ci-dessus ne sont plus conservés que pour la compatibilité. Oracle défini un nouveau format ( fichiers XML ) pour les traces accessible par l'utilitaire adrci( voir plus loin ). Oracle préconise d'utiliser en fait $ORACLE_BASE pour ce paramètre, ce qui est sa valeur par défaut.

● Connaître les paramètres présentés ici suffisent la plupart du temps. Consulter la documentation Oracle pour en spécifier d'autres.

● Tous les paramètres Oracle ont une valeur par défaut si ils ne sont pas explicitement spécifiés.

Page 125: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création manuelle

● L'exemple présenté ici va créer une base de données nommée RED avec le minimum requis ● 1 fichier de contrôle,● 2 groupes de redolog...

● Certains concepts ne seront abordés que plus tard dans le cours● tablespace temporaire● tablespace undo

● Au fur et à mesure du cours, cette base sera modifiée afin de la préparer à un environnement de production.

● L'ensemble des commandes présentées peut ensuite être mis dans un script afin d'automatiser la création.

● Avertissement : bien respecter les noms et chemins des fichiers pour la logique du cours.

Page 126: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Arborescence de la base de données

● La norme OFA sera respectée.● Toutes les manipulations se font sous le compte

Linux Oracle.● Vérifier $ORACLE_BASE et $ORACLE_HOME

● echo $ORACLE_BASE → /u01/app/oracle● echo $ORACLE_HOME →

/u01/app/oracle/product/11.2.0/dbhome_1

● En ligne de commande taper :● mkdir -p /u01/app/oracle/admin/RED/pfile● mkdir -p /u01/app/oracle/oradata/RED

Page 127: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création du fichier de paramètres

● vi /u01/app/oracle/admin/RED/pfile/initRED.ora● db_name = RED● db_block_size = 8192● control_files = /u01/app/oracle/oradata/RED/control01.ctl● sga_target = 320M● pga_aggregate_target = 80M

● La taille du bloc standard est de 8ko● 400Mo de RAM sont affectés à Oracle. ● La SGA et la PGA sont définies statiquement.● La gestion automatique des segments d'annulation est

activée par défaut en 11g.

Page 128: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

init.ora et ifile

● Par défaut quand une instance démarre elle recherche son fichier de paramètres sous $ORACLE_HOME/dbs ( %ORACLE_HOME%\database pour Windows ). Or ceci ne respecte pas la norme OFA.

● Pour utiliser cette fonctionnalité mettre en place un lien symbolique vers le vrai fichier de paramètre sous $ORACLE_BASE/admin/SID/file

● Pour la base RED● cd $ORACLE_HOME/dbs● ln -s $ORACLE_BASE/admin/RED/pfile/initRED.ora initRED.ora

● Windows n'utilisant pas les liens symboliques il est possible d'utiliser la directive ifile en créant un fichier initRED.ora sous %ORACLE_HOME%\database\initRED.ora● cd %ORACLE_HOME%\database● Créer un fichier initRED.ora contenant la ligne suivante● ifile=%ORACLE_BASE%\admin\RED\pfile\initRED.ora● Il est possible d'utiliser aussi cette méthode sous Linux au lieu du lien symbolique.

Page 129: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création du fichier de mot de passe

● Ce fichier contient le mot de passe de l'utilisateur sys pour la connexion en mode sysdba.

● cd $ORACLE_HOME/dbs● orapwd file=orapwRED password=manager11● Sous windows il faut, en plus, créer un service avec oradim

ainsi :● oradim -new -sid RED -intpwd manager11 -startmode auto

-startype SRVC,INST● Ceci va également créer le fichier des mots de passe.● Voir aussi dans la base de registre les valeurs sous :

HKLM\SOFTWARE\ORACLE\KEY_Oracle_Home● La suppression d'un service se fait ainsi : oradim -delete -sid RED

Page 130: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création de l'instance

● Pour le cours charger le fichier createRED.sql ainsi

● wget http://192.168.4.224/ORA/createRED.sql● export ORACLE_SID=RED

● sqlplus /nolog

● SQL> connect / as sysdba

● SQL> startup nomount;

● SQL> create spfile from pfile;

● SQL> shutdown abort;

● SQL> startup nomount;

● SQL> start $HOME/createRED

Page 131: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Contenu du script createRED.sql

create database REDcharacter set AL32UTF8national character set AL16UTF16logfilegroup 1 '/u01/app/oracle/oradata/RED/redo01a.log' size 50M,group 2 '/u01/app/oracle/oradata/RED/redo02a.log' size 50Mdatafile '/u01/app/oracle/oradata/RED/system01.dbf' size 500M extent management localsysaux datafile '/u01/app/oracle/oradata/RED/sysaux01.dbf' size 500Mundo tablespace UNDO_TBS datafile '/u01/app/oracle/oradata/RED/undo_tbs01.dbf' size 25Mdefault temporary tablespace TEMP tempfile '/u01/app/oracle/oradata/RED/temp01.dbf' size 50M;

Page 132: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création des tables du dictionnaire

● SQL> start $ORACLE_HOME/rdbms/admin/catalog.sql

● SQL> start $ORACLE_HOME/rdbms/admin/catproc.sql

● Ces deux scripts sont assez long environ 10 minutes, le premier est le plus rapide, le second un peu plus long.

● Les messages d'erreurs sont normaux, car les scripts détruisent des objets avant de les créer et comme ils n'existent pas...

Page 133: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

User sys et system

● Donner un mot de passe à sys et system● SQL> alter user sys identified by manager11;● SQL> alter user system identified by manager11;● Le temps de création dépend de la machine, il

est sur une machine standard d'environ 15 minutes.

● A ce stade l'enveloppe de la BD est prête, il reste à configurer son accès par le réseau depuis les postes clients.

Page 134: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

PUPBLD.SQL

● Sortir par exit et se reconnecter en system/manager11 et lancer le script pupbld.sql

● sqlplus system/manager11

SQL> start $ORACLE_HOME/sqlplus/admin/pupbld.sql

SQL> exit

● Ce script créé une table, PRODUCT_USER_PROFILE, dont la présence est testée par les outils Oracle lors de la connexion d’un utilisateur. Si la table n’existe pas et que l’utilisateur n’est pas un DBA, un message d’alerte est affiché, mais la connexion est acceptée.

● La table PRODUCT_USER_PROFILE peut être utilisée pour limiter la nature des ordres SQL qu’un utilisateur peut exécuter avec les outils (par exemple, interdire l’utilisation de l’ordre UPDATE dans SQL*Plus) → Voir la doc SQL*Plus de Oracle.

Page 135: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

SPFILE ou PFILE ?

● La requête suivante permet de savoir si la base a été démarrée avec un pfile ou un spfile

● SQL> select decode(count(*), 1, 'spfile', 'pfile' ) from v$spparameter where rownum=1 and isspecified='TRUE';

Page 136: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Accès client à la base RED

● En ligne de commande lancer netca● Choisir : Configuration d'un nom de service local et faire Suivant,● Choisir Ajouter et faire Suivant● Dans le champ nom du service, mettre RED et faire Suivant● Choisir le protocole TCP et faire Suivant● Dans le champ nom d'hôte mettre l'adresse IP ou le nom du

serveur supportant la base et faire Suivant● Ne pas faire le test, il échouerait, faire Suivant● Renseigner le nom du service avec la valeur RED et faire Suivant● Répondre Non à la question de configuration d'un autre service

réseau et faire 2 fois Suivant pour revenir à l'écran principal. Sortir par Terminer.

Page 137: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Accès aux autres bases RED● La configuration précédente permet à la machine locale de se connecter à RED, pour permettre la connexion depuis un client un

réseau, il faut modifier le fichier tnsnames.ora● Il est possible d'utiliser netca pour cela mais l'édition du fichier tnsnames.ora est plus simple et plus rapide.● vi $ORACLE_HOME/network/admin/tnsnames.ora● Recopier le bloc RED et effectuer les corrections en gras

RED = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =LX-1-3)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = RED) ) )RED_LX-34-3 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = LX-34-3)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = RED) ) )

● La base RED, présente sur LX-34-3 est alors accessible ainsi sqlplus system/manager11@RED_LX-34-3 → RED_LX-34-3 est la chaine de connexion Oracle*Net

● Il est aussi possible d'utiliser la connexion easy-connect ainsi : sqlplus system/manager11@//lx-34-3:1521/red, si le port d'écoute du listener est le 1521, il est inutile de le spécifier → sqlplus system/manager11@//lx-34-3/red

Page 138: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Diagnostic Oracle*Net

● Si la connexion échoue, il faut vérifier :● Le serveur est accessible ? commande ping● La base est-elle démarrée ?

– ps -ef | grep RED● Sur le serveur le listener est-il lancé ?

– lsnrctl status● Pour tester la résolution correcte utiliser tnsping● Exemple :

tnsping red→ retourne OK si la configuration est correcte.

● Attention la commande tnsping ne vérifie pas si la base est connue du processus d'écoute.

Page 139: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Erreurs Listener et TNS les plus courantes

Image source :http://www.dba-ora.fr

Page 140: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Enregistrement statique dans le listener

● Si le listener est démarré avant la base de données, celle-ci s'enregistre automatiquement au moment de son démarrage auprès du listener.

● Si le listener est démarré après la base de données, le listener ne connait pas forcement la base à écouter.

● Il est parfois judicieux de spécifier statiquement dans la configuration du listener quelles bases il écoute.

● Cet enregistrement statique est obligatoire pour démarrer une base à distance.

● Le programme netmgr permet graphiquement de rajouter une base dans le listener.

Page 141: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Enregistrer la base RED dans le listener...

● En ligne de commande taper : netmgr● Dans l'arborescence développer Local, Processus

d'écoute et mettre en surbillance LISTENER● Dans la combo de droite, choisir Service de base

de données et Cliquer sur le bouton Ajouter une base de données

Page 142: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Enregistrer la base RED dans le listener suite.

● Renseigner les champs Nom global et SID avec la valeur RED

● En principe le répertoire d'origine ORACLE_HOME est correct.

● Faire ensuite Fichier et Enregistrer la configuration réseau puis Quitter.

Page 143: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Vérification de l'enregistrement statique de RED dans le listener

● Editer le fichier $ORACLE_HOME/network/admin/listener.ora et remarquer la présence de cette section dans la section SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = RED)

(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)

(SID_NAME = RED)

)

)

● Cette procédure est obligatoire pour démarrer une base de données depuis un poste distant.

● Bien que facultatif, il est de bonne pratique de renseigner statiquement les bases dans le listener.

● Recharger la configuration listener● lsnrctl reload

Page 144: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Enregistrer la base RED dans oratab

● Ce fichier est situé sous /etc et permet sous Linux de démarrer au boot du serveur la base de données

● Il permet aussi la cohabitation de base de données sous des versions différentes.

● vi /etc/oratab● RED:/u01/app/oracle/product/11.2.0/dbhome_1:Y

● $ORACLE_HOME● Il faut de plus sous Linux créer un script de démarrage.● Charger le script ainsi

● su - root● cd /etc/init.d/● wget http://192.168.21.24/ORA/oracle

Page 145: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Démarrer automatiquement les bases Oracle

● Sous Windows il faut configurer les services en démarrage automatique.● Sous Linux créer /etc/init.d/oracle avec les lignes suivantes :

# chkconfig: 235 80 20# description: ajout de service auto pour start/stop oracle#!/bin/bashORACLE_OWNER=oracleORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1case $1 in  start)    echo ­n "Démarrage Oracle DB:"    su ­ $ORACLE_OWNER ­c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"    touch /var/lock/subsys/oracle  ;;  stop)    echo ­n "Arrêt Oracle DB:"    su ­ $ORACLE_OWNER ­c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"    rm /var/lock/subsys/oracle  ;;  *)    echo "Usage: $0 {start|stop}"  ;;esac

● Le rendre exécutable : chmod 0755 /etc/init.d/oracle● Activer les niveaux d'exécution : chkconfig --add oracle et chkconfig oracle on ( centos ) ou

update-rc.d oracle defaults ( debian et ubuntu ).

Page 146: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

PFILE vs SPFILE

● Pour la création de la base RED nous avons utilisé un PFILE

● Pour créer le SPFILE ( en sysdba )

● SQL> create spfile from pfile="/u01/app/oracle/admin/RED/pfile/initRED.ora";

● Si le fichier se nomme initRED.ora et est situé sous $ORACLE_HOME/dbs, la commande se résume à :

● SQL> create spfile from pfile ;

● La création du SPFILE permet la modification de certains paramètres Oracle à chaud, sinon avec un PFILE il faut redémarrer la base.

● Le SPFILE est un fichier binaire, il est situé sous $ORACLE_HOME/dbs et se nomme spfileRED.ora pour la base RED.

● Il est possible de créer un PFILE depuis le SPFILE

● SQL> create pfile='$HOME/initRED.pfile.ora' from spfile;

● Important, le spfile est souvent "oublié" par les sauvegardes, il est certes facile à recréer depuis une copie texte ( si elle existe ).

● RMAN permet la sauvegarde et la restauration simple d'un spfile

Page 147: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Les paramètres Oracle

● En 11g il y a plus de 340 paramètres Tous ont une valeur par défaut.● Les paramètres indiqués dans le PFILE ou SPFILE surchargent la valeur par

défaut.● La commande show parameter depuis le SQL donne la liste de tous les

paramètres avec leur valeur.● Il est possible de filtrer sur un mot contenu dans le nom du ou des paramètres● Exemple :

● SQL> show parameter sga● lock_sga   boolean       FALSE● pre_page_sga boolean   FALSE● sga_max_size big integer   320M● target       big integer   320M

Page 148: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Modification des paramètres à chaud

● La base doit avoir été démarrée avec un spfile.● Il faut être connecté sysdba● Dans l'exemple nous allons modifier le paramètre open_cursors● La commande show parameter permet de visualiser la valeur actuelle.

● SQL> show parameter open_cursors → 50● Passer la valeur à 500

● SQL> alter system set open_cursors=500 scope=both;● SQL> show parameter open_cursors → 500

● La commande alter system parametre=valeur permet l'affectation● Il faut notifier à Oracle la notion de scope

● memory → la modification est valide jusqu'au redémarrage de l'instance● spfile → la modification sera prise en compte au redémarrage de l'instance● both → la modification est valide et le sera après redémarrage.

● En complément il est possible de spécifier l'option DEFFERED, seules les prochaines sessions qui se connecterons auront la nouvelle valeur. Cette option n'a pas de sens avec un scope à spfile et ne concerne pas tous les paramètres.

Page 149: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Gestion des paramètres d'initialisation

● Tous les paramètres ne sont pas modifiables à chaud.

● Pour certains seule la clause spfile de scope est possible● Exemple : SGA_MAX_SIZE

● Les paramètres sont modifiés au niveau global par la commande alter system set

● Ils peuvent être modifié pour une session, par la commande alter session set , dans ce cas la clause scope n'est pas précisé et seuls les paramètres modifiables à chaud peuvent être utilisés.

Page 150: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Paramètres modifiables

● La requête suivante permet de connaître les paramètres modifiables ou non au niveau système et session

● SQL> col name format a60;

● SQL> select name, issys_modifiable sys ,isses_modifiable sesfrom v$system_parameter order by name;

● La colonne issys_modifiable, niveau système, peut prendre 3 valeurs :

● IMMEDIATE → modifiable en mémoire, donc dans spfile via le scope=both

● DEFERRED → la valeur est valide en mémoire pour les futures sessions

● FALSE → modifiable uniquement dans scope=spfile

● La colonne isses_modifiable, niveau session, peut prendre 2 valeurs :

● TRUE → modifiable au niveau session

● FALSE → non modifiable au niveau session

Page 151: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Outils d'administrationORACLE

Page 152: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Outils d'administration

● SQL*Plus● Diagnostics, le référentiel ADR● Oracle Enterprise Manager Database Control● SQL Developper● La documentation Oracle

Page 153: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

SQL*Plus

● Application en mode console● Outil de base du DBA

● Saisie des ordres SQL● Lancement de scripts● Lancement de programme PL/SQL

● Connexion en local en paramétrant la variable ORACLE_SID● Connexion par le réseau en utilisant un nom de service Oracle*Net● Exemple local :

export ORACLE_SID=REDsqlplus system/manager11

● Exemple réseausqlplus system/manager11@REDsqlplus system/manager11@//192.168.4.24/red ( syntaxe easy-connect )

Page 154: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Connexion SQL*Plus en SYSDBA

● Utilisé pour créer, arrêter ou démarrer une base de données.

● export ORACLE_SID=REDsqlplus /nologSQL> connect / as sysdba → identification par OS

● Variante :

– export ORACLE_SID=REDsqlplus ''/ as sysdba''

● export ORACLE_SID=REDsqlplus sys/manager11 as sysdba → identification par fichier de mot de passe

● sqlplus sys/manager11@RED as sysdba → identification à distance, fichier de mot de passe obligatoire.

Page 155: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exécuter un script

● SQL> start script

● L'extension .sql est prise par défaut

● SQL> @script →

● variante, @ = start

● SQL> @?/rdbms/admin/utlsampl

● ? symbolise ORACLE_HOME

● Equivalent à :start /u01/app/oracle/product/11.2.0/dbhome_1/rdbms/admin/utlsampl

Page 156: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Fonctions SQL*Plus utiles● Exécuter une commande OS

● SQL> host cp fichier1.sql fichier2.sql● SQL> ! cp fichier1.sql fichier2.sql ( ne fonctionne pas sous Windows )

● Définir l'éditeur● En cas d'erreur, il est possible d'utiliser un éditeur de texte pour modifier la

commande.● On utilise la commande ed● Par défaut sous Linux c'est ed qui est choisi, pour utiliser vi il faut définir la variable

_editor ainsi :– SQL> define _editor=vi– Pour rendre ceci permanent, editer le fichier $ORACLE_HOME/sqlplus/admin/glogin.sql et y

placer la ligne ci-dessus.● Le "/" en fin de fichier via la commande ed symbolise le ";", il ne faut donc pas mettre

de ";" pour terminer une commande modifiée par ed.● Une fois la commande éditée, sa re-exécution se fait par l'ordre run au niveau SQL.

● Améliorer le prompt SQL● Rajouter dans le fichier $ORACLE_HOME/sqlplus/admin/glogin.sql la ligne suivante :

– set sqlprompt ''_user'@'_connect_identifier >''● Le prompt SQL*Plus contiendra le nom de connexion et de la base de données.

Page 157: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Rappel des commandes SQL*Plus

● La version Linux de SQL*Plus n'offre pas le rappel des commandes SQL à l'aide des touches fléchées.

● Cette fonctionnalité étant native sous Windows...● Les postes ORSYS disposent déjà de cette fonctionnalité.● Afin de disposer de cette ergonomie, il faut charger le package rlwrap● aptitude install rlwrap sur Debian/Ubuntu● Centos n'a pas de package pour rlwrap, il faut le charger à l'adresse suivante :

● wget -O rlwrap-0.24-rh.i386.rpm "http://ivan.kartik.sk/oracle/download_from.php?site_id=5"● wget http://silverlake/rlwrap-0.24-rh.i386.rpm● Il faut un package supplémentaire : yum install compat-readline43● Et l'installer : rpm -i rlwrap-0.24-rh.i386.rpm

● Il suffit alors de lancer SQL*Plus ainsi :● rlwrap sqlplus scott/tiger

● Il est possible de définir un alias ainsi :● alias sqlplus='rlwrap sqlplus'

● Il suffit de mettre cet alias dans le .bashrc pour qu'il soit permanent.● Grace à rlwrap, il sera possible de rappeler les commandes dans SQL*Plus.

Page 158: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Diagnostiquer les problèmes

● La version 11g introduit une nouvelle infrastructure pour le diagnostic des problèmes, Automatic Diagnostic Repository.

● ADR se présente sous la forme d'une arborescence de répertoires qui stocke de manière centralisée les données de diagnostic.

● Il existe 2 concepts :● Les problèmes

– Erreur Internes ORA-00600, OS ORA-07445...Chaque problème inclut un code ORA...et éventuellement des paramètres supplémentaires.

● Les incidents– Il s'agit d'une occurrence d'un problème, chaque incident porte un numéro

● Il existe un autre composant, le Health Monitor, qui supervise, à l'aide d'outils automatiquement ou manuellement, le bon état de la base.

● L'exploitation du ADR se fait en ligne de commande par l'utilitaire adrci. Il existe une interface graphique ( Support Workbrench ) dans le database control.

Page 159: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Le référentiel ADR

● Stocke tous les fichiers de traces et journaux pour l'ensemble des produits s'exécutant sur le serveur.● BD, listener...

● Défini par le paramètre DIAGNOSTIC_DEST, sa valeur par défaut est $ORACLE_BASE si cette variable est définie, sinon $ORACLE_HOME/log

● La racine de ce répertoire se nomme diag et contient un sous répertoire par produit Oracle● rdbms → BD, ce répertoire contient un sous répertoire par

instance de base de données.● tnslsnr→ listener...

Page 160: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

diag/rdbms

● Suite à la création de la base RED, sous $ORACLE_BASE/diag/rdbms/red/RED. ● red correspond au nom unique de la base de données● RED au nom de l'instance

● Les principaux répertoires sont :● Alert : Fichier d'alerte format XML● Incident : Fichiers relatifs aux incidents● Trace : Fichier de trace des processus et format texte du

fichier d'alerte ( alert.log )

● Les anciens paramètres BACKGROUND_DUMP_DEST et USER_DUMP_DEST sont dépréciés.

Page 161: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Fichiers d'alertes et de traces● Oracle maintient un fichier d’alerte dans lequel il écrit des messages

d’information ou d’erreurs sur la vie de la base de données :● Création de la base de données,● Démarrages et arrêts,● Modifications de la structure (tablespaces, fichiers de données),● Erreurs internes (ORA-00600, ORA-07445),● Erreurs de bloc corrompu (ORA-01578),● Problèmes relatifs à l’écriture ou à l’archivage des fichiers de journalisation.

● En complément, lorsqu’un processus rencontre un problème, il écrit des informations dans un fichier de trace.

● Le fichier d'alerte est disponible sous deux formats : texte et XML.● Le nom du fichier d’alerte xml est de la forme : log.xml ( sous répertoire alert )● Le nom du fichier d’alerte texte est de la forme : alert_<SID>.log ( sous répertoire trace )

● Processus d'arrière plan ( sous répertoire trace )● Le nom des fichiers de trace des processus d’arrière-plan est de la forme :

<sid>_<nom_processus>_<id_processus>.trc.● Le nom des fichiers de trace des processus serveur est de la forme :

<sid>_ora_<id_processus>.trc.

Page 162: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

ADRCI

● Automatic Diagnostic Repository Command Interpreter.

● Outil ligne de commande et interactif pour gérer les erreurs Oracle.

● Fonctionnalités● Visualiser le fichier alert.log● Gestion des problèmes et des incidents● Création de packages zippés pour envoi au support

Oracle.● Purge des fichiers de traces...

Page 163: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Un exemple de dysfonctionnement● Se connecter en sys● sqlplus sys/manager11@red as sysdba

● SQL> create user alice identified by ecila;● SQL> grant connect,resource to alice;● SQL> connect alice/ecila@red● SQL> create table t ( n number );● SQL> select object_id from user_objects;

● Noter le numéro retourné par la requête ( exemple 17322 ) et se reconnecter sys● SQL>connect sys/manager11@red as sysdba● SQL>update tab$ set cols=2 where obj#=17322;● SQL>commit;

● Cet update fausse le dictionnaire des données, à ne pas faire en production !

Page 164: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Tester le dysfonctionnement

● Dans un premier temps purger la shared_pool afin de vider le dictionnary cache● SQL> alter system flush shared_pool;

● Se reconnecter alice● SQL> connect alice/ecila@red● SQL> select * from t;

ERROR at line 1:

ORA-03113: end-of-file on communication channel

Process ID: 2236

Session ID: 29 Serial number: 9

● Sortir du SQL par exit

Page 165: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Utilisation de adrci

● Au niveau du shell, lancer adrci, puis la commande show home● adrci>show home

ADR Homes:

diag/tnslsnr/LX-1-3/listener

diag/rdbms/red/RED

● Il existe plusieurs ADR directory, relatives ici au listener ( diag/tnslsnr ) et au moteur de Oracle ( diag/rdbms ).

● L'erreur s'est produite au niveau du moteur Oracle donc rdbms. Toujours sous adrci, se positionner dans la bonne arborescence.● adrci> set home diag/rdbms/red/RED

● Visualiser la fin du fichier alert.log● adrci>show alert -tail -f

● Taper Ctrl+C pour sortir.

Page 166: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Identifier le problème

● ADR défini les concepts de problème et d'incident.

● Un incident est une occurrence d'un problème, ainsi si la même erreur se reproduit une seconde fois il n'y aura qu'un problème mais 2 incidents

● Ouvrir une seconde session et sous sqlplus en connexion alice et relancer la commande select * from t;

● A nouveau sous adrci taper la commande show problem.

● adrci>show problem

● Relever le numero du problème ( problem_id ) exemple ici : 1

Page 167: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Identifier les incidents

● adrci> show incident● Relever le numéro de l'incident, par exemple 12971.● Demander l'affichage de l'incident● adrci> show incident -mode detail -p "incident_id=12971"● Repérer le numéro du PROBLEM_ID et demander l'édition de la trace, il s'agit

du nom de fichier de la dernière ligne.● adrci>show trace

/u01/app/oracle/diag/rdbms/red/RED/incident/incdir_12971/RED_ora_2944_i12971.trc

● Ceci lance dans vi le fichier trace, il est possible de retrouver la requête SQL en recherchant le mot "current_sql"

● ***** Current SQL Statement for this session (sql_id=89km4qj1thh13) *****● select * from t● ***** current_sql_statement *****

Page 168: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Envoyer les traces au support Oracle

● Le problème généré dans cet exemple ne peut pas être facilement diagnostiqué, aussi il faut envoyer les traces au support oracle, pour cela créer un package zippé.● adrci>ips create package problem 1 correlate all

Created package 2 based on problem id 1, correlation level all● Selon le cas, le chiffre peut être différent de "1"● adrci>ips generate package 2 in "/home/oracle"● Generated package 2 in file

/home/oracle/ORA7445qc_20120606132038_COM_1.zip, mode complete● Ici aussi, selon le cas le chiffre peut être différent de "2"

● Envoyer le fichier zip à Oracle. ● Il existe sous My Oracle Support une page spéciale pour ce type

d'erruer ( ORA-00600 et ORA-07445 )

Page 169: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Purge des traces

● Avec le temps il est nécessaire de purger les traces.● La commande suivante liste l'ensemble des traces par ordre chronologique

● adrci> show tracefile -rt

● La durée de retention par défaut des traces ordinaires( switch redo log par exemple ) est de 720 heures, soit 30 jours. Pour les incidents 8760 heures soit un an● adrci>show control● SHORTP_POLICY : Traces ordinaires → 720● LONGP_POLICY : Incidents → 8760

● Ceci se paramètre par les commandes suivantes :● adrci> set control (SHORTP_POLICY = 360) → 15 jours● adrci> set control (LONGP_POLICY = 2190) → 3 mois.

● Pour purger les traces on indique le nombre de minutes, par exemple purger les traces de plus de 2 jours ( 2880 minutes )● adrci> purge -age 2880 -type trace

Page 170: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Supprimer le user alice

● Pour la suite du cours se connecter à RED en system/manager11 et supprimer le user alice.● sqlplus system/manager11@red● SQL> drop user alice cascade ;● SQL> exit ;

Page 171: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Oracle Enterprise Manager Database Control

● Outil d'administration complet accessible par un navigateur Web

● Limité à une seule base

● Administration possible de plusieurs bases par Grid Control ( licence payante )

● Le Database Control est très complet et demande du temps pour l'utiliser. Dans ce cours il ne sera que survolé et vu en complément des commandes en ligne.

● A noter, certaines fonctions graphiques demande l'installation du plugin flash.

● Dans certains environnements, le database control n'est pas configuré par sécurité.

● Particularité Windows

● Pour utiliser le database control, l'utilisateur doit être membre du groupe administrateur,

● Avoir le privilège : Ouvrir une session en tant que tache.

● Sinon certaines fonctions seront inaccessibles.

Page 172: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création du database control● En création manuelle d'une base de données, celui-ci doit être configuré séparément. ● La création dure environ 10 minutes.● Il faut spécifier un paramètre de plus dans la configuration, job_queue_processes doit être au

minimum à 1● export ORACLE_SID=RED● sqlplus /nolog● SQL> connect / as sysdba● SQL> alter system set job_queue_processes=1 scope=both;● SQL> exit ;

● En 11g, job_queue_processes est par défaut à 1000, cette manipulation est donc inutile. Ceci peut être vérifier ainsi.● SQL> show parameter job_queue_processes;

● En ligne de commande taper :● emca -repos create → création du référentiel EM● Le script pose 4 questions :

– SID → RED– Port d'écoute → 1521– Mot de passe SYS → manager11– Mot de passe SYSMAN → manager11 ( cet utilisateur va être créé )– Répondre Y pour lancer le traitement

Page 173: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Mise en place de l'interface Web du database control

● En ligne de commande taper :● emca -config dbcontrol db → configuration de l'interface web● Le script pose 8 questions

– SID → RED– Processus d'écoute → 1521– Répertoire d'origine ORACLE_HOME du processus d'écoute : accepter– Mot de passe de SYS → manager11– Mot de passe de DBSNMP → manager11 ( cet utilisateur va être créé )– Mot de passe de SYSMAN: → manager11– Adresse électronique pour les notifications (facultatif): Laisser vide – Serveur de messagerie sortant (SMTP) pour les notifications (facultatif): Laisser

vide – Répondre Y pour lancer le traitement

● Se connecter à l'URL sécurisée donnée ( https://serveur:1158/em )● La liste des ports est dans le fichier $ORACLE_HOME/install/portlist.ini

Page 174: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Démarrage du database control

● Le database control utilise un processus à part du démarrage de l'instance à l'instar du listener.

● Le database control permet de démarrer le listener et l'instance, il faut donc positionner la variable ORACLE_SID

● export ORACLE_SID=RED

● emctl start dbconsole → Le démarrage est assez lent ( plus d'une minute )

● Pointer ensuite le navigateur Web sur l'URL indiquée au démarrage.

● La commande emctl stop dbconsole arrête le database control.

● La commande emctl status dbconsole donne l'état du database control

Page 175: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Connexion au Database Control

● Se connecter en system/manager11 en mode "Normal"

● L'autre possibilité est sys/manager11 en mode "SYSDBA"

Page 176: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Vue du Database Control

Page 177: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Serveur → Tablespaces

Page 178: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Supprimer le Database Control

● Suppression des fichiers de configuration● $ORACLE_HOME/bin/emca -deconfig dbcontrol db

● Suppression du repository● $ORACLE_HOME/bin/emca -repos drop

● Les deux actions ci-dessus ensembles● $ORACLE_HOME/bin/emca -deconfig dbcontrol db -repos drop

● Suppression manuelle de fichiers● $ORACLE_HOME/hostname_sid ● $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_hostname_sid ● Adapter hostname et sid à l'environnement.

● Liens sur le sujet● http://download.oracle.com/docs/cd/E11882_01/server.112/e17120/dbcontrol005.ht

m#BEJJDHGB● http://sites.google.com/site/madrid9999/emdbcontrolreconfigure

Page 179: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

SQL Developer

● Livré en standard avec oracle 11g. Utilise VM Java.● Produit connu auparavant sous le nom de Raptor.● Orienté développement avec quelques fonctions

d'administration.● Téléchargeable gratuitement sur le site Oracle :

http://www.oracle.com/technetwork/developer-tools/sql-developer

Page 180: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Interface SQL Developer

Page 181: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Documentation Oracle

● Prérequis : maîtriser l'anglais !● Disponible en ligne via l'URL suivante :

● http://www.oracle.com/pls/db112/homepage

● La publication 2 days DBA permet une bonne approche de l'administration Oracle avec le Database Control● http://download.oracle.com/docs/cd/B19306_01/server.1

12/b14196/toc.htm

● L'achat d'un produit Oracle donne automatiquement un accès à My Oracle Support ( ex-Metalink )

Page 182: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Arrêt et démarrage d'unebase ORACLE

Page 183: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Démarrage et Arrêt d'une base

● Ces deux actions demandent le privilège sysdba● Elles sont possibles depuis SQL*Plus ou le database control● Avant d'être accessible ou stoppée, la base passe par 3 phases

distinctes :● Démarrage

– Démarrage de l'instance ( état NOMOUNT )– Montage de la base de données ( état MOUNT )– Ouverture de la base de données ( état OPEN )

● Arrêt– Fermeture de la base de données– Démontage de la base de données– Arrêt de l'instance.

● Chaque phase permet certaines actions sur la base.

Page 184: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Démarrage

● export ORACLE_SID=RED● sqlplus /nolog● SQL> connect / as sysdba● La commande startup permet le démarrage en mode open

de la base● SQL> startup● C'est le plus simple si tout est correct :

● Présence du pfile/spfile● Présence du/des fichiers de contrôle● Présence des fichiers de données et cohérence avec le fichier de

contrôle.

sqlplus sys/manager11@red as sysdba

Page 185: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Les différents modes de démarrage● SQL> startup nomount

● Lit le spfile et lance l'instance en mémoire

● SQL> startup nomount pfile="init.ora"● Lance l'instance sur un fichier texte de paramètres● Utilisé pour créer une base ou démarrer sur des valeurs autres que celles du spfile.● En cas de perte du spfile, Oracle utilise un fichier pfile par défaut afin de restaurer le spfile.● Permet aussi de recréer le spfile depuis le pfile ou de restaurer le fichier de contrôle

● SQL> startup mount● Lit le fichier de contrôle, si non présent la base reste à l'état nomount. ● Cette phase permet de modifier le comportement de la base, par exemple d'activer le mode archivelog ou

encore d'effectuer une restauration par RMAN.

● SQL> startup open ( ou startup )● Après lecture du fichier de contrôle, ouvre l'ensemble des fichiers de données● Si un fichier manque, Oracle reste en mode mount et demande une restauration.

● La commande alter database permet de passer de nomount à mount puis de mount à open, mais uniquement dans cet ordre :● SQL> startup nomount● SQL> alter database mount● SQL> alter database open

● Il n'est pas possible de passer de open à mount directement.

Page 186: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Phases de démarrageOracle

Fichierde paramètrespfile ou spfile

Allocationmémoire

(sga)

Processusarrière-plan

(dbw0,pmon, smon,ckpt...)

startup nomount

Fichiersde contrôle

alter database mount

Fichiersde données

alter database openredo-logs

startup

Page 187: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Démarrage en mode restrict

● Il est possible de démarrer la base en mode restrict● SQL> startup restrict● Seul les utilisateurs avec le privilège RESTRICTED

SESSION ( cas du DBA ) peuvent effectuer des actions

● Utile pour réorganiser le stockage, créer des index, faire un import/export ou bien charger des données par SQL*Loader sans être perturbé par les applications.

● En fin de procédure on désactive le mode restrict ainsi :● SQL> alter system disable restricted session;● La base devient alors disponible à tous.

Page 188: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Activer restricted sessionPour activer restricted session, sans redémarrer l'instance.● SQL> alter system enable restricted session ;

● Statut visible dans la vue v$instance, champ LOGINS → ALLOWED/RESTRICTED

● Les utilisateurs connectés doivent être manuellement déconnectés.● Rechercher les sessions

SET LINESIZE 100

COLUMN spid FORMAT A10

COLUMN username FORMAT A10

COLUMN program FORMAT A45

SELECT s.inst_id, s.sid, s.serial#, p.spid, s.username, s.program

FROM gv$session s, gv$process p

WHERE p.addr = s.paddr AND p.inst_id = s.inst_id

AND s.type != 'BACKGROUND';

● Supprimer une session● SQL> ALTER SYSTEM KILL SESSION 'sid,serial#';

Page 189: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Arrêt● export ORACLE_SID=RED● sqlplus /nolog● SQL> connect / as sysdba● SQL> shutdown normal ( shutdown )● Ce mode est rarement utilisé, car il suppose que tous les utilisateurs ont

fermé leur session. La base ne s'arrêtera pas sinon. ● Les autre modes sont :

● immediate → déconnecte toutes les sessions et annule les transactions en cours. Ce mode est utile pour une sauvegarde à froid en mode batch.

● transactionnal → attend la fin de toutes les transactions en cours avant la déconnexion des sessions. Les nouvelles connexions sont rejetées.

● abort → ferme brutalement la base, une récupération sera nécessaire au prochain redémarrage.

● Normal, immediate et transactionnal sont des arrêts propres de la base● Abort doit être utilisé que si aucun autre mode ne répond.

Page 190: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Autres outils de création d'une base de données

Page 191: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création d'une base avec DBCA

● DBCA est un assistant graphique de création de base.● Il se base sur des modèles de bases de données et

effectue un clonage.● Méthode rapide et simple de création● Configure la couche Oracle*Net● Permet de créer ses propres modèles● Paramètre automatiquement le database control● Demande une interface graphique. Toutefois il peut être

lancé en mode silencieux.

● En ligne de commande taper : dbca et suivre l'assistant, afin de créer une base nommée YELLOW.

Page 192: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

DBCA en mode silencieux

● Permet de rapidement mettre en place une base de données sans utiliser d'interface graphique.

● Charger le script par wget● wget http://192.168.11.24/dbcasilence.sh

● dbca -silent -createDatabase \-templateName General_Purpose.dbc \-gdbName BLUE \-sysPassword manager11 \-systemPassword manager11 \-emConfiguration NONE \-datafileDestination /u01/app/oracle/oradata \-storageType FS \-characterSet UTF8 \-memoryPercentage 20

● dbca utilise le clonage pour la création, ce qui rend l'opération très rapide.● La commande suivante permet de supprimer la base

● dbca -silent -deleteDatabase -sourceDB BLUE

Page 193: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Gestion du fichier de contrôleet des fichiers de journalisation

Page 194: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Nouvelle structure de répertoires

● Pour la suite du cours il est nécessaire de mettre en place de nouveaux répertoires● mkdir -p /u02/app/oracle/oradata/RED● mkdir -p /u03/app/oracle/oradata/RED

● Ces répertoires simuleront 2 disques supplémentaires dans le serveur.

Page 195: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Le fichier de contrôle et les redologs

● Gestion du fichier de contrôle● Multiplexage du fichier de contrôle● Gestion des fichiers de journalisation ( redologs

)● Notion de groupes et de membres● Trouver le nombre de groupes idéal et la

dimension correcte des membres.

Page 196: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Gestion des fichiers de contrôle● Le fichier de contrôle est le premier fichier lu par la base de données.

Le fichier de paramètres est lu par l'instance.● Sa mise à jour est faite par Oracle● Il contient :

● Le nom de la base de données● L'emplacement des autres fichiers● Le numéro SCN actuel...

● Il est possible de visualiser le contenu du fichier de contrôle au format texte ainsi :● sqlplus /nolog● SQL> connect / as sysdba● SQL> alter database backup controlfile to trace as '$HOME/svg_ctrl.txt';● Cette fonctionnalité est intéressante pour recréer les fichiers de contrôle en cas de perte ou

encore pour cloner une base par copie physique des fichiers de données.

● Par sécurité Oracle recommande 3 copies, multiplexage, du fichier de contrôle sur des axes différents.

● La requête suivante donne l'emplacement des fichiers de contrôle.● SQL> select name from v$controlfile;

Page 197: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Multiplexer le fichier de contrôle● La base RED ne dispose que d'un fichier de contrôle.● Il faut indiquer dans un premier temps au fichier de paramètres l'emplacement

des futurs fichiers de contrôle.● Se connecter sysdba à la base RED● SQL> alter system set control_files=

'/u01/app/oracle/oradata/RED/control01.ctl','/u02/app/oracle/oradata/RED/control02.ctl','/u03/app/oracle/oradata/RED/control03.ctl'scope=spfile;

● SQL> shutdown immediate;● SQL> host cp /u01/app/oracle/oradata/RED/control01.ctl

/u02/app/oracle/oradata/RED/control02.ctl● SQL> host cp /u01/app/oracle/oradata/RED/control01.ctl

/u03/app/oracle/oradata/RED/control03.ctl● SQL> startup● SQL> select name from v$controlfile;● Le database control ne permet pas de multiplexer les fichiers de contrôle.

Page 198: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exercice

● Simulation de la perte d'un fichier de contrôle.● Arrêter la base de données et supprimer un des fichiers de contrôle.

● sqlplus sys/manager11@red as sysdba● SQL> shutdown immediate● SQL> host rm /u02/app/oracle/oradata/RED/control02.ctl

● Tenter de redémarrer la base avec startup → erreur.● Stopper à nouveau la base avec shutdown immediate.● Recopier un fichier de contrôle valide en le renommant à

l'emplacement du fichier perdu● SQL> host cp /u01/app/oracle/oradata/RED/control01.ctl

/u02/app/oracle/oradata/RED/control02.ctl● SQL> startup

Page 199: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Gestion des fichiers de journalisation

● Les redologs enregistrent l'ensemble des transactions de la base de données.

● Les informations sont écrites de manière circulaires.

● Les redologs sont organisés en groupe et composés de membres.

● Il faut au minimum 2 groupes de 1 membre par base de données.

● La requête suivante donne l'emplacement des redologs

● SQL> col member format a60;

● SQL> select group#,member from v$logfile;

● Oracle préconise d'avoir au moins 3 groupes de 2 membres.

● La gestion des redologs doit être effectuée avec soin, l'ensemble des transactions Oracle passant par eux.

● Certaines manipulations sur les redologs obligent à redémarrer l'instance.

Page 200: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Redolog et RAID5

● Il s'agit d'un sujet ayant engendré au fil des ans tout et son contraire.

● La position de Oracle est claire → S.A.M.E !● Stripe And Mirror Everything → RAID10 ou RAID 0+1● En clair : on ne fait pas de RAID5 avec Oracle. Pourquoi ?

→ Parce que Oracle le dit !

● Pour les redologs, ne pas utiliser RAID5 semble une évidence. Les redologs sont soumis à des écritures répétées et massives, hors RAID5 doit à chaque écriture recalculer la parité.

● La gestion des fichiers avec ASM permet de s'affranchir de ces questions.

Page 201: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

GROUP 2GROUP 1

Ajouter un nouveau membre à un groupe

● L'objectif est de multiplexer les membres de chaque groupe● SQL> alter database add logfile member

'/u03/app/oracle/oradata/RED/redo01b.log' to group 1;● Effectuer la même manipulation pour le groupe 2.● Visualiser le résultat

● SQL> set linesize 150● SQL> col member format A60● SQL> select group#,member from v$logfile order by 1,2;

redo01a.log

redo01b.log

redo02a.log

redo02b.log

GROUP 2GROUP 1

redo01a.log

redo01b.log

redo02a.log

redo02b.log

redo01a.log redo02a.log

GROUP 2GROUP 1

redo01a.log redo02a.log

Page 202: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

GROUP 2GROUP 1

Ajouter un nouveau groupe● L'objectif ici est de créer un troisième groupe de

redologs.● SQL> alter database add logfile group 3

( '/u01/app/oracle/oradata/RED/redo03a.log','/u02/app/oracle/oradata/RED/redo03b.log' ) size 50M;

● SQL> select group#,member from v$logfile order by1,2;

redo01a.log

redo01b.log

redo02a.log

redo02b.log

GROUP 2GROUP 1

redo01a.log

redo01b.log

redo02a.log

redo02b.log

GROUP 2

redo02a.log

redo02b.log

GROUP 3

redo03a.log

redo03b.log

Page 203: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exercice

● Ajouter un quatrième groupe de redolog d'une taille de 50M et composé de trois membres.

● SQL> alter database add logfile ('/u01/app/oracle/oradata/RED/redo04a.log','/u02/app/oracle/oradata/RED/redo04b.log','/u03/app/oracle/oradata/RED/redo04c.log' ) size 50M;

● Il n'est pas obligatoire de nommer le groupe, par défaut Oracle affecte la dernière valeur + 1.

● Visualiser la configuration par la commande suivante :● SQL> select group#,member from v$logfile order by group#;

Page 204: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Statut des redologs

● La requête suivante permet de connaître le status des groupes.● SQL> select group#, status, members from v$log order by group#;GROUP#     STATUS           MEMBERS

­­­­­­­­­­ ­­­­­­­­­­­­­­­­ ­­­­­­­­­­

1          INACTIVE            2

2          ACTIVE                    2

3          CURRENT                   2

● CURRENT : Oracle écrit en ce moment dans ce groupe● ACTIVE : Il reste dans ce groupe des informations importantes non

écrites dans les datafiles → attente du checkpoint.● INACTIVE : Le groupe ne contient plus d'informations utiles.● UNUSED : Le groupe n'a pas encore été utilisé → création.

Page 205: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Modifier le statut des groupes de redologs.

● Pour certaines actions, le statut ne doit pas être CURRENT ou ACTIVE.

● Pour modifier le groupe courant :● SQL> alter system switch logfile;

● Pour écrire dans les datafiles les données des groupes● SQL> alter system checkpoint;

Page 206: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple

Page 207: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Supprimer un membre d'un groupe● L'exercice précédent a créé un membre de trop dans

le groupe 4.

● Le groupe doit disposer de 2 membres pour pouvoir en supprimer 1. Il faut toujours un membre valide dans un groupe.

● La suppression de tous les membres se fait en supprimant le groupe.

● La requête suivante permet de savoir si un membre est supprimable.

● SQL> select group#, status, members from v$log order by group#;

● Seuls membres des groupes dont le statut est INACTIVE ou UNUSED peuvent être supprimés.

● Afin de forcer un changement de statut par un basculement de groupe, il faut utiliser la commande alter system switch logfile suivie d'un alter system checkpoint.

● SQL> alter database drop logfile member '/u03/app/oracle/oradata/RED/redo04c.log';

● IMPORTANT : le fichier n'est pas physiquement supprimé, il faut le faire explicitement par l'OS.

Page 208: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Supprimer un groupe

● Le groupe 4 n'est pas utile, pour le supprimer son statut doit être égal à INACTIVE.

● Utiliser la commande alter system switch logfile et alter system checkpoint pour forcer un éventuel basculement.

● Il doit toujours rester au minimum 2 groupes.● SQL> alter database drop logfile group 4;● Comme pour la suppression d'un membre, les

fichiers doivent être explicitement supprimés par l'OS.

Page 209: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Déplacer un membre

● Cette opération peut s'effectuer de deux manières.● Arrêt de la base, déplacement du fichier au niveau de l'OS, modification du

fichier de contrôle et redémarrage de la base.● Création d'un nouveau membre dans le groupe et suppression de l'ancien

membre.● La seconde méthode évite l'arrêt de la base.

● Méthode arrêt de la base● SQL> shutdown immediate;● SQL> host mv '/u03/app/oracle/oradata/RED/redo01b.log'

'/u02/app/oracle/oradata/RED/redo01b.log'● SQL> startup mount;● SQL> alter database rename file '/u03/app/oracle/oradata/RED/redo01b.log'

to '/u02/app/oracle/oradata/RED/redo01b.log';● SQL> alter database open;

Page 210: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exercice

● Déplacer le membre redo02b.log sous /u02/app/oracle/oradata/RED sans arrêter la base de données.

● Il peut être nécessaire de devoir faire de nombreux appels à alter system switch logfile + alter system checkpoint et de vérifier le statut des groupes

● SQL> select group#, status, members from v$log order by group#;

● Conclusion, bien que séduisante au premier abord cette manière de faire peut demander plus de manipulations que de passer par un arrêt de base.

Page 211: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Déterminer la taille de redolog

● Il est important de contrôler la fréquence des point de reprise → fréquence de basculement des redologs.

● La requête suivante permet de visualiser cette fréquence● SQL> select sequence#,

to_char(first_time,'DD/MM/YYYY HH:MI:SS') first_timefrom v$log_history;

● Déterminer la taille du log_buffer, le nombre et la taille des redologs est un sujet complexe.

● Se baser sur les évènements d'attente types :

● redo log space →log_buffer trop petit● log file sync → log_buffer trop grand

● Oracle offre des mécanismes d'audit afin de choisir au mieux ces valeurs.

● Très important, la base de données doit avoir eu une certaine activité avant de prendre une décision.

Page 212: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Nombre et taille des redologs

● L'objectif est simple :● Utiliser des redologs de taille suffisante afin d'obtenir de 4 à 6 basculements par heure.● Utiliser un nombre suffisant de groupes pour permettre un point de reprise avant un

cycle complet → Erreur Oracle checkpoint not complete.

● Augmenter la taille des redologs en cas de basculement trop fréquent liés à une forte activité de mise à jour engendre le risque de perte de données en cas d'arrêt anormal et perte du redolog courant.

● L'erreur checkpoint not complete ( voir alert.log ) montre qu'il faut augmenter le nombre des groupes.

● Une préconisation "non officielle" dit d'être généreux avec le nombre de groupes → déterminer le nombre de groupe idéal et en ajouter 1.

● Les redologs sont en général de petits fichiers, en avoir un grand nombre n'est pas une contrainte.

● Les redologs doivent si possible avoir des disques dédiés → et proscrire le RAID5 !

Page 213: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Estimer la fréquence de basculement de redolog

● La vue v$log_history donne cette information, elle est également tracée dans l'alert.log.

● La requête suivante permet de cartographier simplement la fréquence des redolog.set linesize 150;selectto_char(first_time,'MM-DD') Jour,to_char(sum(decode(to_char(first_time,'HH24'),'00',1,0)),'999') " 00",to_char(sum(decode(to_char(first_time,'HH24'),'01',1,0)),'999') " 01",...idem pour chaque heure jusqu'à 23...to_char(sum(decode(to_char(first_time,'HH24'),'23',1,0)),'999') " 23"from v$log_history group by to_char(first_time,'MM-DD') order by 1;

● Charger le fichier carto_log.sql● wget http://192.168.4.224/ORA/carto_log.sql● Se connecter sous sqlplus et lancer le script carto_log.sql● sqlplus system/manager11@red @$HOME/carto_log.sql

Page 214: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple de cartographie redologs

Page 215: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Utilisation des switches redolog

● Le nombre de switches redolog par heure est un bon indicateur sur les périodes d'activité transactionnelle de la base.

● Il est ainsi possible de focaliser la recherche de requêtes consommatrices sur le/les créneaux horaires ( rapports AWR )

● Il est possible de forcer un switch régulier, par exemple tous les 1/4 heures ( 900 secondes ) même si le groupe n'est pas rempli.

● Le paramètre ARCHIVE_LAG_TARGET permet ceci.

● SQL> alter system set archive_lag_target = 900 scope = both;

● Ce paramètre n'influe pas sur les fréquences normales de switch.

● Il suffit d'une transaction par 1/4 d'heure pour générer un switch.

● Si aucune transaction n'est enregistrée durant 15 minutes, aucun switch n'est fait.

Page 216: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Méthode de calcul● Oracle préconise de positionner le paramètre FAST_START_MTTR_TARGET qui indique

le nombre maximum de secondes souhaité pour le redémarrage de l'instance après un arrêt anormal.

● Ceci permet à Oracle d'ajuster la fréquence des points de reprise.● Attention des points de reprise trop fréquents dégradent fortement les performances.● On utilise ensuite la vue v$instance_recovery pour superviser le temps estimé de restauration.● SQL> alter system set fast_start_mttr_target = 30 scope=both;● SQL> select estimated_mttr, optimal_logfile_size from v$instance_recovery;

ESTIMATED_MTTR OPTIMAL_LOGFILE_SIZE

­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­

            7                 369● Cette requête montre que la valeur de fast_start_mttr_target demande des redologs de plus de 350Mo, or

Oracle estime une valeur minimale de 7 pour ce paramètre.● SQL> alter system set fast_start_mttr_target = 7 scope=both;● SQL> select estimated_mttr, optimal_logfile_size from v$instance_recovery;

ESTIMATED_MTTR OPTIMAL_LOGFILE_SIZE

­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­

           7                  49● La requête montre que 50M est une bonne valeur, ce qui est logique car la base à une activité quasi nulle. La

valeur actuelle est donc bonne. ● Conseil : Positionner en production fast_start_mttr_target à 30 secondes et laisser tourner la base un temps

afin d'affiner la valeur.

Page 217: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Complément FAST_START_MTTR_TARGET

● Oracle conseille une fois la valeur fixée pour FAST_START_MTTR_TARGET de mettre les paramètres suivants à 0.● LOG_CHECKPOINT_TIMEOUT● LOG_CHECKPOINT_INTERVAL● FAST_START_IO_TARGET

● Par défaut les deux derniers le sont mais pas LOG_CHECKPOINT_TIMEOUT qui a la valeur 1800

● SQL> show parameter log_checkpoint_timeout● SQL> alter system set log_checkpoint_timeout=0

scope=both;

Page 218: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Changer la taille des redologs● Un redolog ne peut pas être redimensionné dynamiquement. Il faut

supprimer et recréer le redolog. Attention il est impossible de faire travailler la base Oracle avec moins de 2 groupes de redo-log.

● De plus le groupe doit être dans le statut "INACTIVE" pour être supprimé. Les commandes alter system switch logfile / alter system checkpoint et la consultation de la vue v$log aident dans cette démarche.

● select group#, status from v$log;● Utiliser les commandes suivantes pour forcer un switch et mettre le groupe 1 inactif

si besoin :● SQL> alter system switch logfile;● SQL> alter system checkpoint;

● Ré-intérroger la vue v$log, il faut parfois plusieurs switches de log pour rendre un groupe inactif.

● Création● SQL> alter database add logfile group 1 '/u01/app/oracle/oradata/RED/redo01a.log', size

150M;

● Suppression● SQL> alter database drop logfile group 1;

Page 219: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Les tablespaces

Page 220: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Tablespaces et fichiers de données

● Vue d'ensemble● Tablespace permanent● Tablespace temporaire● La gestion OMF● Tablespace UNDO

Page 221: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principe du tablespace

BASE DE DONNEES

TABLESPACE

SEGMENT

FICHIER PHYSIQUE

est composée de

appartient à

est divisé en

lié à

est conservé dans

contient

segment de table,d'index ou d'annulation

Page 222: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Tablespace

● Unité logique de stockage composé d'un ou de plusieurs fichiers physiques.● La majorité des opérations de stockage se font au niveau tablespace et non

au niveau fichier physique.● Les tablespaces permettent une transparence de la localisation des fichiers

physiques● Il permettent aussi de lever les limites de certains systèmes de fichiers

● En FAT16 un fichier ne peut faire plus de 2Go.● La notion de tablespace permet d'obtenir un espace de stockage de 8Go en

regroupant 4 fichiers de 2Go ou 8 de 1Go...

● Les tablespaces sont :● Permanent → stockage des données● Temporaire → gestion des tri ( clause order by, group by ), création des index, calcul

des statistiques...● Annulation ( undo ) → Introduit en 9i, il automatise et remplace avantageusement la

gestion des annulations par rollback segment

Page 223: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Tablespace permanent

● Ce type de tablespace contient les données et les index.● Par défaut une base Oracle dispose de 2 tablespaces

● SYSTEM → contient le dictionnaire des données● SYSAUX → contient le référentiel AWR utilisé notamment par le database

control.● Ces deux tablespaces ne doivent jamais contenir des données utilisateurs.● Pour stocker les données utilisateurs, il faut créer des tablespaces

supplémentaires.

● Il existe deux types de tablespace permanents● smallfile : contient de 1 à 1022 fichiers physiques avec une taille maximale de

tablespace de 2^22 blocs Oracle soit pour des blocs de 8ko : 32Go● bigfile : contient un seul fichier de données dont la taille maximale est de 2^32

blocs Oracle soit pour des blocs de 8ko : 32To● Par défaut les tablespaces sont de type smallfile.

Page 224: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Etat des tablespaces

● Deux états possibles :● online → accessible, utilisation normale.● offline → permet des opérations de maintenance, les

données sont momentanément inaccessibles● Il existe d'autres états ( begin backup, end

backup...qui seront vus lors des sauvegardes )

● Il est possible de positionner un tablespace en mode READ ONLY. Utile pour des données d'archives ne devant pas être modifées.

● Le tablespace SYSTEM ne peut être mis offline.

Page 225: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Directives sur les tablespaces● En plus de SYSTEM et SYSAUX, créer au minimum :

● un tablespace d'annulation ( undo )● un tablespace temporaire● Il est d'usage pour chaque schéma d'avoir :

– un tablespace temporaire– un tablespace pour les données– un tablespace pour les index

● Si possible mettre les fichiers physiques sur des disques différents.● Si on suit à la lettre les préconisations Oracle sur ce sujet, un serveur doit avoir

10 disques minimum !

● Les tablespaces apportent une souplesse au stockage, à la sauvegarde et au transfert entre base de données.

● RMAN par exemple peut sauvegarder un tablespace particulier et bien sur le restaurer.

● Les tablespaces transportables permettent de faire rapidement passer des données d'une base à une autre.

Page 226: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

ORACLE

SCOTTALICE

Base de données typeTablespaceSYSTEM

TablespaceSYSAUX

TablespaceUNDOTBS

TablespaceTEMP

TablespaceDATA_ALICE

TablespaceINDX_ALICE

TablespaceTEMP_ALICE

TablespaceDATA_SCOTT

TablespaceINDX_SCOTT

TablespaceTEMP_SCOTT

Page 227: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Gestion locale ou par dictionnaire des extensions dans les tablespaces

● Dans un tablespace, le stockage est organisé en segments, composés d'extensions ( extent ).

● Dans un gestion par dictionnaire,les informations sur les extensions libres et allouées sont stockées dans des tables du dictionnaire des données.

● Ce principe est aujourd'hui obsolète et déconseillé, car il dégrade les performances → le dictionnaire des données doit être interrogé pour chaque transaction.

● Il oblige à surveiller les extensions libres/allouées et à assurer manuellement la gestion → alter tablespace … coalesce.

● Il est probable que ce mode sera supprimé dans les prochaines versions.

● Dans une gestion locale, ces informations sont dans l'entête du tablespace

● Il s'agit du mode par défaut des tablespaces pour la gestion.

● Il se paramètre par la clause extent management local | dictionnary de l'ordre create tablespace.

● Utiliser des tablespaces gérés par le dictionnaire n'apporte que des contraintes et nuit aux performances.

Page 228: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Gestion des segments dans les tablespaces

● Elle peut être automatique ou manuelle● Elle est paramétrée par la clause segment management

auto | manual● Le mode manuel est déconseillé, il oblige à définir avec

précision les clauses de stockage. Ces clauses sont pour la plupart sans intérêt pour un tablespace géré localement.

● La clause storage demande un certain nombre de valeurs dont la seule vraiment utile est initial.

● Initial définie la taille initiale d'un segment . Il s'agit en fait de réserver dès la création d'un objet un certain volume d'espace afin que lors des insertions le segment tienne dans une seule extension

Page 229: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création d'un tablespace

● Ordre SQL : create tablespace

● Un tablespace porte un nom et contient au moins un fichier de données.

● sqlplus system/manager11@red

● SQL> create tablespace DATA_VENTES datafile '/u02/app/oracle/oradata/RED/data_ventes_01.dbf' size 100M;

● Cet ordre va créer un tablespace smallfile nommé DATA_VENTES, géré localement et d'une taille de 100Mo.

● D'autres options peuvent être utilisées lors de la création du tablespace notamment sur la gestion du stockage et des extensions.

● Par défaut la gestion du stockage et des extentions est automatique.

● Dans certains cas il est intéressant de changer ces options ( voir plus loin ).

Page 230: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Tablespace par défaut● Lors de la création d'un segment, table ou index, si le

tablespace n'est pas spécifié, Oracle le stocke dans le tablespace par défaut de l'utilisateur.

● Ce tablespace par défaut de l'utilisateur est mis en place par l'ordre create user ( voir plus loin ). Il peut toutefois être omis et Oracle utilise alors le tablespace par défaut de la base : SYSTEM.

● Ceci pose un problème car les données de l'utilisateur seront alors stockées dans le tablespace SYSTEM.

● Il est possible de définir un autre tablespace par défaut au niveau de la base.

● Ne pas spécifier de tablespace par défaut pour un utilisateur ou dans la création du segment n'est pas conseillé. Pour limiter ce problème, créer un tablespace par défaut de très petite taille ( 100Ko minimum ). Ainsi Oracle le satura très vite indiquant ainsi un "oubli".

● SQL> create tablespace users datafile '/u01/app/oracle/oradata/RED/users_01.dbf' size 100K;

● SQL> alter database default tablespace users;

Page 231: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Agrandir un tablespace

● Au fur et à mesure le tablespace se rempli, si la place vient à manquer, il faut agrandir le tablespace. Il existe 2 méthodes● Ajouter un fichier de données● Agrandir un fichier existant

● Ajout d'un fichier● SQL> alter tablespace DATA_VENTES add datafile

'/u01/app/oracle/oradata/RED/data_ventes_02.dbf' size 100M;● Le tablespace a maintenant une taille de 200Mo

● Agrandissement d'un fichier● SQL> alter database datafile '/u02/app/oracle/oradata/RED/data_ventes_01.dbf'

resize 200M;● Le tablespace a maintenant une taille de 300Mo.

● La requête suivante permet de voir le résultat● SQL> select tablespace_name, sum(bytes/1024/1024) "Taille en Mo" from

dba_data_files group by tablespace_name;

Page 232: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Auto-extension du tablespace

● Il est possible de définir le fichier de données du tablespace en auto-extension. Ainsi si la place vient à manquer le fichier s'agrandit de lui même.

● SQL> create tablespace PERTES_DATA datafile '/u02/app/oracle/oradata/RED/data_pertes_01.dbf' size 100M autoextend on next 100M maxsize 500M;

● Ce tablespace aura une taille initiale de 100Mo, puis s'agrandira par pas de 100Mo jusqu'à son maximum 500Mo.

● maxsize peut prendre la valeur unlimited, le fichier grandira tant que possible.

Page 233: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Renommer un tablespace

● Cette possibilité est apparue en 10g● SQL> alter tablespace PERTES_DATA rename

to DATA_PERTES;● SYSTEM et SYSAUX ne peuvent pas être

renommés● Un tablespace placé offline ne peut pas être

renommé.

Page 234: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Passer un tablespace online/offline

● Pour certaines actions le tablespace doit être mis offline.● SQL> alter tablespace DATA_PERTES offline;

● La requête suivante permet de contrôler le statut des tablespaces.● SQL> select file#,name,status from v$datafile;● Le tablespace SYSTEM ne peut être mis offline, le statut est d'ailleurs

SYSTEM.● Le statut peut aussi avoir la mention RECOVER indiquant qu'il faut

restaurer le tablespace.

● Remise online● SQL> alter tablespace DATA_PERTES online;

● Attention : le statut est conservé lors d'un arrêt, ainsi un tablespace offline le restera au prochain redémarrage.

Page 235: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Renommer ou déplacer un fichier de données

● Ces deux actions sont identiques au niveau Oracle.● Il existe deux méthodes :

● Mettre le tablespace offline, déplacer ou renommer le fichier, mettre à jour le fichier de contrôle et remettre le tablespace online.

● Arrêter la base, la relancer en mode mount, déplacer ou renommer le fichier, mettre à jour le fichier de contrôle, ouvrir la base.

● La seconde méthode est obligatoire pour une action sur le tablespace SYSTEM car il ne peut être mis offline.

Page 236: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Première méthode de déplacement/renommage

● SQL> alter tablespace DATA_PERTES offline;

● SQL> host mv '/u02/app/oracle/oradata/RED/data_pertes_01.dbf' '/u03/app/oracle/oradata/RED/data_pertes_01.dbf'

● SQL> alter tablespace DATA_PERTES rename datafile '/u02/app/oracle/oradata/RED/data_pertes_01.dbf' to '/u03/app/oracle/oradata/RED/data_pertes_01.dbf';

● SQL> alter tablespace DATA_PERTES online;

Page 237: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Seconde méthode déplacement du tablespace SYSTEM

● Attention connexion SYSDBA● SQL> shutdown immediate;● SQL> startup mount;● SQL> host mv

'/u01/app/oracle/oradata/RED/system01.dbf' '/u02/app/oracle/oradata/RED/system01.dbf'

● SQL> alter database rename file '/u01/app/oracle/oradata/RED/system01.dbf' to '/u02/app/oracle/oradata/RED/system01.dbf';

● SQL> alter database open;

Page 238: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Suppression d'un tablespace

● SQL> drop tablespace nom● Un tablespace contenant des données ne peut être

supprimé ainsi.● Les fichiers physiques ne sont pas supprimés.● La syntaxe pour supprimer le tablespace, ses données et

ses fichiers est la suivante :● SQL> drop tablespace DATA_PERTES including contents

and datafiles;● Supprimer un tablespace est irréversible.● Important : Toute action sur les tablespaces est tracée

dans l'alert.log.

Page 239: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Allocation de l'espace lors de la création d'un segment

● Oracle alloue une ou plusieurs extensions dans le tablespace.

● Quand l'espace initial est plein, Oracle alloue une nouvelle extension et ainsi de suite.

● Toutes les extensions d'un segment sont dans le même tablespace mais pas obligatoirement dans le même fichier physique.

● Lors de la suppression d'un segment les extensions sont libérées.

● Des créations / suppressions trop fréquentes induisent une fragmentation du tablespace.

Page 240: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Gestion du stockage dans les tablespaces

● La gestion des extensions peut être :● Automatique → autoallocate, mode par défaut. Oracle

détermine la taille des extensions.● Uniforme → uniform size nK/M. Dans ce type de gestion

toutes les extensions ont la même taille de nK ou nM ( la valeur par défaut est de 1M )

● La gestion du stockage dans le tablespace est défini par la clause segment space management qui peut être● manual● auto

Page 241: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Spécifier le mode de gestion d'un tablespace

● Via la clause extent management de l'ordre create tablespace.● L'option dictionnary est déconseillée● En cas de gestion locale ( extent management local ), il faut

spécifier le mode de gestion des extension :● autoallocate● uniform size valeur

● Le mode par défaut est autoallocate.● La gestion des extensions uniform permet d'éliminer presque

totalement la fragmentation du tablespace. L'espace peut toutefois être mal réservé.

● La gestion uniform des extentions est le mode par défaut des tablespace temporaires.

Page 242: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Spécifier le stockage d'un segment

● Via la clause storage de l'ordre create tablespace.

● Cette clause est vitale si le tablespace est géré par le dictionnaire, ce qui est déconseillé par Oracle.

● Dans le cas d'une gestion locale du tablespace seule l'option initial de la clause storage est importante. Elle est toutefois plus souvent employée lors de la création du segment ( create table, create index ).

Page 243: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Spécifier le stockage d'un segment

● Via la clause storage de l'ordre create tablespace.

● Cette clause est vitale si le tablespace est géré par le dictionnaire, ce qui est déconseillé par Oracle.

● Dans le cas d'une gestion locale du tablespace seule l'option initial de la clause storage est importante. Elle est toutefois plus souvent employée lors de la création du segment ( create table, create index ).

Page 244: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Tablespace temporaire

● Lors d'une requête demandant un tri, Oracle tente de faire celui-ci en PGA.● Si le tri ne tient pas en mémoire, Oracle stocke les résultats intermédiaires

sur disque, dans un tablespace temporaire.● Les requêtes concernées sont :

● select ...order by● select ...group by● select distinct...● Requête ensembliste : union, intersect, minus● create index● calcul des statistiques optimiseur● Jointure sort merge join ou tri fusion● Les tables temporaires.

● Lors de la création de l'instance, il est conseillé de définir un tablespace temporaire par défaut, sinon le tablespace SYSTEM est utilisé.

Page 245: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création d'un tablespace temporaire

● La syntaxe ressemble à celle des tablespaces permanent, toutefois Oracle n'utilise pas un datafile, mais un tempfile.

● SQL> create temporary tablespace TMP tempfile '/u02/app/oracle/oradata/RED/tmp_01.dbf' size 2G;

● La création est rapide, car le fichier n'est pas vraiment créé. Il grandira en fonction des besoins jusqu'à sa taille maxi, ici 2Go.

● Un tablespace temporaire est toujours créé avec des extensions uniform d'une taille par défaut de 1M.

● Le tablespace temporaire utilise toujours des blocs standards.

Page 246: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exercice

● Pour la suite du cours ● Créer un tablespace permanent DATA_ALICE de 20Mo● Créer un tablespace temporaire TEMP_ALICE de 5Mo● SQL> create tablespace DATA_ALICE datafile

'/u01/app/oracle/oradata/RED/data_alice_01.dbf' size 20M;

● SQL> create temporary tablespace TEMP_ALICE tempfile '/u01/app/oracle/oradata/RED/temp_alice_01.dbf' size 5M;

Page 247: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Tablespace temporaire par défaut

● Un tablespace temporaire pour être utilisé doit être affecté à un utilisateur. Ce point sera vu lors de la gestion des utilisateurs.

● Il est conseillé de définir un tablespace temporaire par défaut pour l'ensemble de la base, car sinon le tablespace SYSTEM est utilisé et c'est très mauvais pour les performances.

● Lors de la création de la base RED, fut mis en place un tablespace temporaire par défaut.

● Il est possible de changer le tablespace par défaut ainsi:

● SQL> alter database default temporary tablespace TMP;

● Cette fonction est pratique pour déplacer le tablespace temporaire sur un autre disque, bien qu'il soit possible d'utiliser la même technique que pour le tablespace SYSTEM ( pas de notion oline/offline sur un tablespace temporaire ).

Page 248: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Espace alloué au tablespace temporaire

● Contrairement aux tablespaces permanents, l'espace disque pour un tablespace temporaire n'est pas véritablement créé. Ainsi il est possible que la taille souhaitée ne puisse pas être obtenue.

● Pour éviter ce phénomène, le plus simple est de réserver, à sa création, l'espace souhaité pour le tablespace temporaire.

● Dans un premier temps, créer un tablespace ordinaire● SQL> create tablespace TEMPO datafile

'/u02/app/oracle/oradata/RED/tempo_01.dbf' size 2G;● Cette action réserve un fichier de 2G, puis supprimer le tablespace ainsi :● SQL> drop tablespace TEMPO;● Enfin créer le tablespace temporaire définitif en réutilisant le fichier créé

précédement● SQL> create temporary tablespace TEMPO tempfile

'/u02/app/oracle/oradata/RED/tempo_01.dbf' size 2G reuse;● Ainsi aucun risque de manquer d'espace pour le tablespace temporaire.

Page 249: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Trouver les informations sur les tablespaces.

● Il existe plusieurs vues dans le dictionnaire des données donnant ces informations.● DBA_TABLESPACES● DBA_DATA_FILES → tablespaces permanents● DBA_TEMP_FILES → tablespaces temporaires● SQL> select tablespace_name, file_name, (bytes/1024/1024) "Taille en Mo"

from dba_data_files order by tablespace_name,file_name;TABLESPACE_NAME                FILE_NAME                                     Taille en Mo

­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­

DATA_RED                    /u02/app/oracle/oradata/RED/DATA_RED_01.dbf                2500

DATA_RED                   /u02/app/oracle/oradata/RED/DATA_RED_02.dbf                2500

DATA_STATS                 /u02/app/oracle/oradata/RED/DATA_STATS_01.dbf             4000

DATA_STATS                 /u02/app/oracle/oradata/RED/DATA_STATS_02.dbf             2500

DATA_STATS                 /u02/app/oracle/oradata/RED/DATA_STATS_03.dbf             1500

IDX_STATS                 /u03/app/oracle/oradata/RED/IDX_STATS_01.dbf             4000

IDX_STATS                 /u03/app/oracle/oradata/RED/IDX_STATS_02.dbf             3000

IDX_STATS                 /u03/app/oracle/oradata/RED/IDX_STATS_03.dbf             3000

SYSAUX                 /u01/app/oracle/oradata/RED/sysaux01.dbf               500

SYSTEM                 /u01/app/oracle/oradata/RED/system01.dbf               500

UNDO_TBS                    /u01/app/oracle/oradata/RED/undo_tbs01.dbf               50

Page 250: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Gestion OMF

● Oracle Management Files

● Permet une gestion plus facile des fichiers et des tablespaces.

● On défini un emplacement où seront stockés les fichiers

● La gestion des noms de fichiers et leur dimensionnement est automatique

● Un tablespace est créé ainsi :

● SQL> create tablespace DATA;

● Le tablespace DATA aura une taille de 100Mo et s'agrandira par pas de 10Mo jusqu'aux limites physiques.

● OMF permet donc de s'affranchir de l'administration des fichiers de données.

● OMF est utile pour créer rapidement une base à des fins de tests ou de développement. Utile aussi pour une application stand-alone utilisant une base Oracle.

● OMF est très souvent utilisé en conjonction avec ASM.

Page 251: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Modification de RED pour utiliser OMF

● Se connecter root et créer un nouveau répertoire.● su - root● mkdir -p /u04/app/oracle/oradata● chown -R oracle:oinstall /u04● exit

● Se connecter à RED en system● SQL> alter system set db_create_file_dest = '/u04/app/oracle/oradata'

scope= both;

● Créer un tablespace DATA● SQL> create tablespace DATA;

● Le fichier se trouve sous /u04/app/oracle/oradata/RED/datafile.

Page 252: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création avec OMF

● Cette méthode montre le principe de création d'une base en OMF

● La base de données sera nommée GREEN.● Préparation des répertoires

● mkdir -p /u04/app/oracle/admin/GREEN/pfile● mkdir -p /u04/app/oracle/oradata/GREEN

Page 253: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Fichier de paramètres OMF● Placer ce fichier sous /u01/app/oracle/admin/GREEN/pfile et le

nommer initGREEN.ora

db_name = GREEN

db_block_size = 8192

control_files =/u04/app/oracle/oradata/GREEN/control1.ctl

db_create_file_dest = /u04/app/oracle/oradata

db_create_online_log_dest_1 = /u04/app/oracle/oradata

sga_target = 640M

pga_aggregate_target = 160M● Il y a en OMF une directive pour les datafiles et une autre pour les

groupes de redologs.● Sous windows il faut créer un service avec oradim ainsi :

● oradim -new -sid GREEN -intpwd manager11 -startmode manual

Page 254: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Fichier de mot de passe OMF

● Le fichier des mots de passe est sous %ORACLE_HOME%\database sous windows et $ORACLE_HOME/dbs sous linux ( orapwGREEN.ora ).

● Se positionner sous ce répertoire.● cd $ORACLE_HOME/dbs● orapwd file=orapwGREEN.ora password=manager11

Page 255: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création de l'instance OMF

● export ORACLE_SID=GREEN● sqlplus /nolog● SQL> connect / as sysdba● SQL> startup nomount pfile='/u01/app/oracle/admin/GREEN/pfile/initGREEN.ora';● SQL> create spfile from

pfile='/u01/app/oracle/admin/GREEN/pfile/initGREEN.ora';● SQL> create database GREEN

undo tablespace UNDO_TBS

default temporary tablespace TEMP;● Les tablespaces system et sysaux sont créés automatiquement. En gestion OMF un

fichier de tablespace fait 100Mo extensible par pas de 10Mo et en taille illimitée.● Les datafiles seront sous /u04/app/oracle/oradata/GREEN/datafiles● Les redologs sous /u04/app/oracle/oradata/GREEN/onlinelogs

Page 256: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Finalisation création OMF

● Création des tables du dictionnaire● SQL> @?/rdbms/admin/catalog.sql● SQL> @?/rdbms/admin/catproc.sql● SQL> @?/rdbms/admin/utlrp.sql

● Mots de passe sys et system● SQL> alter user sys identified by manager11;● SQL> alter user system identified by manager11;

● Se reconnecter en system/manager11 et lancer le script pupbld.sql● SQL> @?/sqlplus/admin/pupbld.sql

● Ne pas oublier de configurer le réseau ( tnsname.ora ).● Configurer éventuellement le database control

● export ORACLE_SID=GREEN● emca -repos create● emca -config dbcontrol db

Page 257: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Tester la gestion OMF

● Se connecter à la base GREEN en system/manager11 et créer un tablespace nommé DATA_GREEN

● SQL> create tablespace DATA_GREEN;● SQL> select tablespace_name, file_name,

(bytes/1024/1024) "Taille en Mo" from dba_data_files order by tablespace_name,file_name;

● Vérifier la création du fichier physique sous /u04/app/oracle/oradata/GREEN/datafiles

Page 258: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Les segments d'annulation

● Stockent les informations avant la modification de celles-ci.

● Les segments d'annulation sont utilisés : ● par l'ordre rollback● la lecture cohérente● certaines fonctions de flashback● la récupération de la base ( RECOVER )

● L'ordre INSERT est peu gourmand en segments d'annulation → pas de données avant.

● Les ordres UPDATE et DELETE génèrent plus de segments d'annulation.

Page 259: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Gestion des segments d'annulation

● Elle peut être manuelle ou automatique par la configuration du paramètre d'initialisation undo_management=auto ou manual.

● Oracle déconseille la gestion manuelle qui oblige à gérer des rollback segments comme sous les versions pré-9i.

● La gestion manuelle n'apporte aucun avantage.

● Il existe un segment d'annulation nommé SYSTEM et stocké dans le tablespace SYSTEM. Il permet à une base de toujours démarrer même si les structures adaptées ( tablesapce UNDO ou rollback segment ) n'existent pas.

● Il faut toutefois créer au moins un tablespace UNDO spécifique sinon la première transaction hors données du dictionnaire échouera ( Erreur Oracle : ORA-01552 ).

Page 260: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Durée de rétention

● Quand une transaction se termine par commit ou rollback, les données contenue dans le tablespace UNDO deviennent inutiles sauf :● Pour la lecture cohérente ( celle qui déclenche parfois l'erreur : ORA-01555,

snapshot too old )● Pour certaines fonctions de flashback.

● Le paramètre undo_retention permet de définir la durée de conservation des données dans le tablespace UNDO. Sa valeur par défaut est de 900 secondes → 15 minutes.

● Il est possible de garantir la durée de rétention dans le tablespace UNDO. Attention cette fonctionnalité peut interdire les transactions si le tablespace UNDO est trop petit pour garantir la durée de rétention → Erreur Oracle ORA-30036.

● Si l'erreur ORA-01555 se produit, ce qui est normalement rare, il faut agrandir le tablespace UNDO.

Page 261: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Mise en œuvre de l'annulation

● Mettre le paramètre undo_management=auto. En 11g c'est la valeur par défaut.

● Déclarer éventuellement le tablespace UNDO● undo_tablespace=undo_tbs● Ce tablespace sera utilisé au démarrage de l'instance,

sinon on utilise celui du tablespace SYSTEM.

● Définir la durée de rétention ( 15 minutes par défaut ).● undo_retention=1800● → 30 minutes● La valeur maximale est 2^32 - 1 = 49 000 jours.

Page 262: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Lecture cohérenteAlice Bob

Requête demise à jour dela table article :prix → +10%

commit

Requête demandede prix d'un article→ prix avant augmentationLa lecture se fait dans lessegments d'annulation

Fin de la requête de Bob, quivoit toujours les données aumoment de son lancementmalgré le commit de Alice.

Temps TempsSegments

d'annulation

lecture

lecture

écriture lecture

Requête demandede prix de plusieurs articles→ prix avant augmentationLa lecture se fait dans lessegments d'annulation

Incidence nullesur la requête deBob.

Page 263: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Transactions et UNDO

● Les transactions portent sur les ordres DML insert, update et delete.

● Lors d'une transaction les données avant modification sont copiées dans un bloc du tablespace UNDO.

● Ces blocs restent disponibles jusqu'à la validation de la transaction soit par commit ou rollback.

● Commit provoque une écriture dans le redolog courant.

● Rollback remet les données de l'UNDO dans le Database Buffer Cache.

● Les données restent également dans les blocs du tablespace UNDO pour les actions de flashback.

UNDO

Redolog

DatabaseBuffer Cache

lgwr

OrdreDML

commit

rollback

Page 264: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Blocprotégé

Blocnon protégé

Blocnon protégé

Blocs non expirés Blocs expirés

Blocs dans tablespace UNDO

● Rouge : Bloc non expiré et protégé. Bloc ne devant pas être supprimé● Attente de fin de transaction● Lecture cohérente● Garantie de rétention

● Orange : Bloc non expiré et non protégé. Bloc n'étant plus utilisés mais entrant dans la politique de garantie de rétention.

● Vert : Bloc expiré et non protégé. Bloc pouvant être recyclé.

Page 265: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Visualiser l'état des segments d'annulation

● La requête suivante permet de lister dans un tablespace d'UNDO les segments d'annulation en cours d'utilisation (ACTIVE) ou contenant des blocs n'ayant pas encore expirés (UNEXPIRED) :

● SQL> select segment_name, sum(bytes/1024/1024) as "Taille (Mb)", status from dba_undo_extents where tablespace_name = 'UNDO_TBS' and status in ('ACTIVE','UNEXPIRED') group by segment_name,status order by 2 desc ;

Page 266: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Informations sur l'UNDO

● 3 paramètres dans le spfile● SQL> show parameter undoNAME      TYPE VALUE

­­­­­­­­­­­­­­­­ ­­­­­­­­­ ­­­­­­­­­

undo_management  string AUTO

undo_retention integer 900

undo_tablespace  string UNDO_TBS

Page 267: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Modifier la durée de rétention

● Se connecter en system/manager11@red● SQL> alter system set undo_retention=1800

scope=both ;

● La durée de retention est maintenant de 1 800 secondes soit 30 minutes.

● Cet ordre peut échouer si le tablespace UNDO n'est pas assez volumineux.

● Il faut dans ce cas agrandir le tablespace UNDO.

Page 268: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Agrandir le tablespace UNDO

● Modifier la taille d'un tablespace UNDO n'est pas toujours simple. ● Lors de la création de la base un tablespace UNDO ( UNDO_TBS ) d'une

taille de 25Mo fut mis en place. Si cette taille est insuffisante procéder ainsi.● Création, similaire aux tablespaces permanents en stipulant undo

tablespace.● create undo tablespace tbs_undo datafile

'/u02/app/oracle/oradata/RED/tbs_undo_01.dbf' size 2G;

● Changer le tablespace undo actif● alter system set undo_tablespace = tbs_undo scope=both;● Si des segments d’annulations sont utilisés dans des transactions lors d'un

changement de tablespace undo, leurs états ne seront pas OFFLINE mais PENDING OFFLINE jusqu'à la fin des transactions en cours.

● Supprimer le tablespace undo original.● drop tablespace undo_tbs including contents and datafiles;

Page 269: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Erreur ORA-30013

● ORA-30013: undo tablespace ‘UNDO_TBS' is currently in use

● Cette erreur survient si lors du changement de tablespace UNDO il y a encore des blocs non expirés.

● Il faut alors rechercher les sessions qui utilisent encore le tablespace UNDO afin de demander la validation des transactions en cours.

Page 270: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Sessions utilisant UNDO

● La requête suivante permet de connaître les sessions utilisant le tablespace UNDO.

● SQL> select a.name,b.status,d.username,d.sid, d.serial#,d.osuser from v$rollname a, v$rollstat b, v$transaction c, v$session d where a.usn=b.usn and a.usn=c.xidusn and c.ses_addr=d.saddr and a.name in ( select segment_name from dba_segments where tablespace_name='UNDO_TBS' );

NAME       STATUS          USERNAME SID SERIAL# OSUSER

_SYSSMU3$  PENDING OFFLINE ALICE    121 36482   oracle

● Il suffit de demander à l'utilisateur alice de valider sa transaction.

● Il est également possible de forcer la deconnexion

● SQL> alter system kill session '121,36482' immediate;

Page 271: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Garantir la durée de rétention

● SQL> select tablespace_name, retention from dba_tablespaces;

TABLESPACE_NAME RETENTION

­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

SYSTEM       NOT APPLY

SYSAUX       NOT APPLY

UNDO_TBS        NOGUARANTEE

TEMP            NOT APPLY

● Activer la garantie de rétention● SQL> alter tablespace undo_tbs retention guarantee ;

● Annuler la garantie de rétention● SQL> alter tablespace undo_tbs retention noguarantee ;

Page 272: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Dimensionner le tablespace UNDO

● La rêquete suivante permet de donner la dimension optimale du tablespace UNDO.

● SQL> select d.undo_size/(1024*1024) "Taille Actuelle [Mo]", substr( e.value,1,25) "Undo Rétention [Sec]", (to_number(e.value) * to_number(f.value) * g.undo_block_per_sec) / (1024*1024) "Taille Optimale [Mo]" from ( select sum(a.bytes) undo_size from v$datafile a, v$tablespace b, dba_tablespaces c where c.contents = 'UNDO' and c.status = 'ONLINE' and b.name = c.tablespace_name and a.ts# = b.ts# ) d, v$parameter e, v$parameter f,( select max(undoblks/((end_time-begin_time)*3600*24)) undo_block_per_sec from v$undostat ) g

where e.name = 'undo_retention' and f.name = 'db_block_size' ;

● Il est important d'avoir eu un temps d'activité sur la base avant de prendre une décision.

● Le Database Control propose un conseiller ( Undo Advisor ) qui effectue cette tâche.

● Article intéressant sur le sujet en langue anglaise. http://tamimdba.wordpress.com/category/how-to/performace-tuning/optimize-oracle-undo-parameters-performace-tuning-how-to/

Page 273: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

User SCOTT/TIGER

● Pour la suite du cours, il sera fait appel aux 4 tables du user scott.● emp● dept● salgrade● bonus

● Charger le script de création de cet utilisateur :● wget http://192.168.21.24/ORA/createscott.sql

● Créer le user scott ainsi :● sqlplus system/manager11@red @$HOME/createscott.sql

● Ce script va déclarer un user scott mot de passe tiger et créer les 4 tables exemples

Page 274: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Les utilisateurs et les droits

Page 275: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Gestion des utilisateurs

● Ordre SQL : create user● User et Schéma sont équivalents sous Oracle

● Il est d'usage d'affecter à un utilisateur un tablespace par défaut.

● Il est de bonne pratique de lui affecter également un tablespace temporaire dédié

● sqlplus system/manager11@red● SQL> create user alice identified by ecila default

tablespace data_alice temporary tablespace temp_alice;

Page 276: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Identification des utilisateurs

● Les utilisateurs peuvent être identifiés de plusieurs manières :● Par oracle, c'est le cas de l'utilisateur alice créé précédemment● Par le système d'exploitation.● Par un produit tiers, Oracle Fusion MiddleWare avec notamment OID

● Identification Oracle● L'utilisateur se connecte ainsi : ● sqlplus alice/ecila

● Identification OS● L'utilisateur se connecte ainsi : ● sqlplus /● Oracle vérifie simplement que l'utilisateur existe au niveau du système d'exploitation.

● Identification OID● Oracle Internet Directory● Produit Oracle → Annuaire LDAP● La mise en place de OID dépasse le cadre de ce cours.

Page 277: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Identification OS Linux

● Pour faire le lien entre l'utilisateur OS et la base de données, Oracle utilise un préfixe défini par le paramètre os_authent_prefix dont la valeur par defaut est ops$.

● Ainsi un utilisateur gaston au niveau linux aura pour login de connexion dans oracle ops$gaston.

● Il est possible de mettre os_authent_prefix="", ainsi utilisateur système et oracle sont identiques.

● Pour déclarer un utilisateur dans Oracle identifié par l'OS :● SQL> create user ops$gaston identified externally;● SQL> grant connect to ops$gaston;● Si os_authent_prefix="" alors :● SQL> create user gaston identified externally;● SQL> grant connect to gaston;

Page 278: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple d'authentification OS

● Au niveau Linux créer un utilisateur nommé gaston ( passer root, su - root )● adduser gaston● passwd gaston● Mettre le mot de passe de votre choix

● Se connecter gaston● su - gaston

● Exporter les 3 variables suivantes :● export ORACLE_BASE=/u01/app/oracle● export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1● export PATH=$PATH:$ORACLE_HOME/bin

● Se connecter sous oracle ainsi

● export ORACLE_SID=RED

● sqlplus /

Page 279: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Identification OS Windows

● Sous Windows, le nom de la machine fait partie du login utilisateur

● Ainsi un utilisateur gaston au niveau Windows sur une machine silverlake aura pour login de connexion dans oracle OPS$silverlake\GASTON

● De plus l'utilisateur gaston doit être membre du groupe ORA_DBA.

● Il est impératif de saisir la chaîne OPS$silverlake\GASTON entre guillemet et en majuscules.

● Pour déclarer un utilisateur dans Oracle identifié par l'OS :

● SQL> create user ''OPS$silverlake\GASTON'' identified externally;● SQL> grant connect to ''OPS$silverlake\GASTON'';

Page 280: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Droits des utilisateurs

● Créer un utilisateur ne suffit pas, il faut lui donner des privilèges

● Le privilège minimum pour se connecter à Oracle est create session.

● Historiquement ce privilège est inclus dans le rôle connect.

● Les rôles permettent de regrouper un ensemble de privilèges sous un nom unique.

Page 281: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Droits des utilisateurs

● Créer un utilisateur ne suffit pas, il faut lui donner des privilèges● Le privilège minimum pour se connecter à Oracle est create

session.● Historiquement ce privilège est inclus dans le rôle connect.● Les rôles permettent de regrouper un ensemble de privilèges

sous un nom unique.● Il existe 3 rôles historiques dans Oracle

● connect● resource → Permet de créer tables et index ( entre autres )● dba → tous les droits !

Page 282: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Affectation de droits

● Ordre SQL : grant● SQL> grant connect, resource to alice ;

● Alice peut se connecter ( rôle connect ) et créer des objets ( rôle resource ).

● Création d'un autre user : Bob qui n'aura que le droit d'utiliser les objets d'Alice● SQL> create user bob identified by robert ;● SQL> grant connect to bob ;

● Bob n'a pas besoin de tablespace par défaut car il n'a pas d'objet à créer. Il est par contre judicieux de lui donner un tablespace temporaire. Dans l'exemple bob utilisera le tablespace temporaire de alice.● SQL> alter user bob temporary tablespace temp_alice;

Page 283: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Privilèges et Rôles

● L'objectif est de sécuriser l'accès aux données de la base.● Le principe est d'accorder ( grant ) ou de retirer ( revoke )

des privilèges à un utilisateur.● Pour faciliter la gestion il est possible de regrouper un

ensemble de privilèges dans un rôle.● Oracle propose 3 rôles prédéfinis :

● connect → permet juste la connexion à la base.● resource → permet la création d'objets tables et index.● dba → tous les droits, à donner avec parcimonie.

● Il est possible de créer des rôles personnalisés.

Page 284: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Types de privilèges

● Système : Autorise création, modification, suppression et exécution d'objets.● create table,● create view,● create sequence● execute...

● Objet : Autorise des manipulations sur des objets spécifiques.● select● insert,● delete● update● Les 4 privilèges ci-dessus peuvent être donnés via le mot clé "all"● Affectés à une table.

Page 285: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création d'objets

● Se connecter Alice● SQL> connect alice/ecila@red● SQL> create table personne ( code char(2), prenom char(15)) tablespace

data_alice ;● SQL> insert into personne values( '01','Alice') ;● SQL> insert into personne values( '02','Bob') ;● SQL> insert into personne values( '03','Charles') ;● SQL> commit ;

● Se reconnecter Bob● SQL> connect bob/robert@red● SQL> select * from personne ;● Ne fonctionne pas, il faut spécifier le nom du propriétaire● SQL> select * from alice.personne ;● Ne fonctionne toujours pas car Bob n'a pas de droits sur les objets de Alice.

Page 286: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Affecter des droits aux autres user

● Se connecter alice● SQL> connect alice/ecila@red● Donner le droit de sélection à Bob● SQL>grant select on personne to bob ;● Les droits peuvent être :

● select● update● insert● delete● all

● Se reconnecter Bob et tester l'accès à la table personne de alice.● SQL> connect bob/robert@red● SQL> select * from alice.personne;

Page 287: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Utiliser les objets d'un autre user

● Il faut utiliser la commande grant pour donner les droits à un utilisateur.● Il est possible d'utiliser le dictionnaire des données afin de créer simplement un script

d'affectation des droits.● Soit un utilisateur alice souhaitant donner le droit select à bob sur toutes ses tables :

● SQL> spool $HOME/droits_bob.sql● SQL> select 'grant select on ' || table_name || ' to bob;' from user_tables;● SQL> spool off● Il suffit ensuite de lancer ce script sous sqlplus.

● Afin d'éviter à bob de devoir spécifier le nom de alice devant toutes les tables il est possible de spécifier le schéma sur lequel on travaille. Le DBA doit avoir donné à Bob le privilège alter session● SQL> connect system/manager11@red● SQL> grant alter session to bob;● SQL> connect bob/robert@red● SQL> alter session set current_schema=alice ;● SQL> select * from personne;

Page 288: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Affectation de privilèges objet

● Un utilisateur dispose de tous les droits sur les objets qu'il a créé.● Un utilisateur doit en plus obtenir des privilèges sur les objets des autres utilisateurs pour

les utiliser.● Soit deux utilisateurs alice et bob ainsi qu'une table personne appartenant à alice.● Alice souhaite donner le droit de sélection et d'insert à Bob sur sa table personne.● Connecté alice sur la base :

● SQL> grant select, insert on personne to bob;

● Pour donner tous les droits à Bob sur sa table personne, alice procède ainsi :● SQL> grant select, update, delete, insert on personne to bob;● ou● SQL> grant all on personne to bob;

● Il est possible de ne donner des privilèges que sur certaines colonnes de la table● SQL> grant update ( prenom ) on personne to bob;● → Bob ne pourra faire un update que sur le champ prénom.

● Important : Pour mettre à jour ou supprimer des lignes update et delete ne suffisent pas, select est requis.

Page 289: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

WITH GRANT OPTION

● Soit la requête suivante exécuté en connexion alice:

● SQL> grant all on personne to bob with grant option;

● Cette affectation donné par Alice à Bob sur la table personne accorde le droit à Bob de transmettre ce privilège à un autre utilisateur.

● Un utilisateur ne peut pas transmettre plus de privilèges qu'il a reçu.

Page 290: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

PUBLIC

● Oracle offre la possibilité de donner des privilèges à tous.

● SQL> grant select on personne to public;● Alice donne à tous les utilisateurs présents et

futurs le droit de sélection sur la table personne.

Page 291: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Rôles

● Un utilisateur dispose parfois de nombreux privilèges. Afin de faciliter l'affectation des mêmes privilèges à plusieurs utilisateurs il est possible de créer un rôle.

● Un rôle regroupe des privilèges.● Syntaxe : create role● SQL> create role developpeur; ● SQL> grant create session, create table, create indextype,

create view to developpeur;● Affectation du rôle développeur à charles :● SQL> create user charles identified by selrahc;● SQL> grant developpeur to charles;

Page 292: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Pour en savoir plus

● Le site developpez.com comporte un article intéressant et en français sur les rôles et les privilèges.

● http://oracle.developpez.com/guide/administration/adminrole/

● Consulter la documentation Oracle afin d'avoir l'ensemble des options relatives aux privilèges et aux rôles.

Page 293: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Supprimer des droits

● Ordre SQL revoke● Se connecter alice● SQL> connect alice/ecila@red;● SQL> revoke all on personne from bob ;● → supprime tous les droits de bob sur la table personne.● Comme pour grant les droits supprimés peuvent être :

● select● update● insert● delete● all

Page 294: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exercice

● Créer un utilisateur charles avec comme rôle connect et resource. Lui donner un mot de passe quelconque.

● Se connecter charles et créer la table produit● SQL>create table produit ( p char(2), np char(15));

● Insérer une ligne● SQL>insert into produit values('P1','Huitre');● SQL>commit;

Page 295: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Suppression d'un utilisateur

● Ordre SQL : drop user● SQL> drop user charles;● → Cet ordre échoue car charles possède des

objets, la table produit. Pour supprimer charles il faut d'abord supprimer tous ses objets ou utiliser la commande :

● SQL> drop user charles cascade;● Cette commande supprime tous les objets de

charles et enfin son compte oracle.

Page 296: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Verrouiller un compte

● Plutôt que de supprimer un utilisateur, il est possible de lui interdire toute action.

● Seul un DBA peut verrouiller un compte● Exemple verrouiller le compte Bob● sqlplus system/manager11@red

● SQL> alter user bob account lock;

● Il sera impossible à Bob de se connecter. Faire l'essai● SQL> connect bob/robert@red → compte verrouillé !

● Déverrouillage● SQL> alter user bob account unlock;

Page 297: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Les profils

● Ensemble de limitations de ressources affectées à un utilisateur.● Les ressources suivantes peuvent être limitées :

● Temps CPU● Nombre de lectures logiques● Nombre de sessions simultanées● Temps d'inactivité d'une session● Durée maxi d'une session● Quantité de mémoire SGA( en MTS uniquement )

● Le profil peut aussi mettre en place une politique de gestion des mots de passe.● Si rien n'est spécifié, un utilisateur dispose d'un profile nommé DEFAULT qui

n'a aucune limite.● En pratique les profils ne sont pas très souvent utilisés, car Oracle propose une

autre solution → Database Ressource Manager via le package dbms_resource_manager ( hors cours )

Page 298: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple de profil

● SQL> create profile exploitation limitsessions_per_user 3idle_time 30;

● Ce profil limite à 3 le nombre de sessions simultanées et à 30 minutes d'inactivité de session.

● Pour que la gestion des profils soit prise en considération il faut l'activer● SQL> connect system/manager11@red● SQL> alter system set resource_limit=true scope=both;

● Affectation à un utilisateur● SQL> alter user alice profile exploitation;

● Affectation lors de la création du user● SQL> create user denise identified by esined profile exploitation;

Page 299: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Durée validité motde passe

● Quand un utilisateur est créé il hérite par défaut d'un profile nommé DEFAULT.

● Avant la 11gR2 la clause PASSWORD_LIFE_TIME avait la valeur UNLIMITED. Elle est maintenant de 180 jours.

● SQL> select limit from dba_profileswhere resource_name = 'PASSWORD_LIFE_TIME'and profile = 'DEFAULT';

Page 300: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Modifier la durée devalidité du mot de passe

● Sans action sur ce plan certaines applications risquent de bloquer au bout de 6 mois.

● La requête suivante permet de revenir aux conventions pré-11gR2.

● SQL> alter profile default limit password_life_time unlimited;

Page 301: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Comment supprimer une session

Rechercher la session

SET LINESIZE 100

COLUMN spid FORMAT A10

COLUMN username FORMAT A10

COLUMN program FORMAT A45

SELECT s.inst_id, s.sid, s.serial#, p.spid, s.username, s.program

FROM gv$session s, gv$process p

WHERE p.addr = s.paddr AND p.inst_id = s.inst_id

AND s.type != 'BACKGROUND';

● Supprimer une session● SQL> ALTER SYSTEM KILL SESSION 'sid,serial#';

Page 302: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Les structures de stockage

Page 303: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Gestion des tables

● Les tables sont un des objets principaux de la base de données.

● Avec les index, il s'agit des seuls objets occupant de la place en plus de leur définition dans le dictionnaire des données.

● Les tables contiennent des segments composés d'extensions ( extent ) eux même composés de blocs contigus .

Page 304: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Organisation du stockage dans les blocs

En-tête de bloc

Espace Libre

Ligne 1

Ligne 5 Ligne 4 Ligne 3

Ligne 9 Ligne 8

Ligne 2

Ligne 7 Ligne 6

Ligne 10

En-têtede ligne

05 Emile

En-tête de colonnes

Donnée de la colonne

Taille du bloc:8192 → 8ko

Les lignes sontde longueur variableselon le remplissagede chaque colonne.

Page 305: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

En-tête du bloc

● L'en-tête contient ● l'adresse du bloc,● le type de segment ( table, index, temporaire, annulation ),● un répertoire des tables, si bloc de table,● un répertoire des lignes et des entrées pour les transactions● Taille variable de 100 à 200 octets.

● Stockée dans la partie haute du bloc, les données sont insérées par le bas du bloc.

● L'en-tête peut grossir ( vers le bas ) en fonction de l'activité du bloc. Il ne rétrécit jamais.

Page 306: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Structure d'une ligne

● L'en-tête de ligne contient :● le nombre de colonnes,● chaînage éventuel ( voir plus loin ),● verrou● Taille minimale 3 octets

● Ensuite chaque colonne est stockée avec une en-tête de colonne qui contient la longueur de la colonne ( taille de 1 à 3 octets ) puis la valeur de la colonne.

● La longueur totale d'une ligne dépend du type de données de chaque colonne et du nombre de colonne.

● Un bloc ne contient donc pas que des données. Il y a des informations utiles à Oracle pour sa gestion.

Page 307: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Gestion de l'espace dans un bloc

● Géré manuellement ou automatiquement.● La gestion manuelle est un héritage des anciennes

versions de Oracle, son emploi est déconseillée.● La gestion automatique ( ASSM ) permet une

meilleure utilisation de l'espace dans les blocs.● La gestion automatique est une option du

tablespace via la clause segment space management auto qui est la valeur par défaut.

● Avec la gestion automatique le seul paramètre éventuellement à surveiller est PCTFREE.

Page 308: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

PCTFREE

● Pourcentage Libre

● Permet de ne pas remplir le bloc à 100% afin de conserver de la place pour les mises à jour de la ligne ( update ).

● Lorsqu'une ligne est insérée toutes ses colonnes ne sont pas obligatoirement renseignées. Oracle réserve donc de l'espace afin que la ligne reste dans le même bloc lors d'un update.

● Si la place est insuffisante, Oracle migre la ligne dans un autre bloc entraînant ainsi un chaînage de ligne dommageable pour les performances.

Page 309: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principe du PCTFREE

En-tête

Espace libre

En-tête

Espace libre

Données

PCTFREE

● Exemple d'un PCTFREE à 10 → 10%● Le bloc ne sera rempli qu'à 90%, ensuite il n'y

aura plus d'insertions dans le bloc.● Ces 10% seront utilisés pour les ordres update

sur les lignes contenues dans le bloc.

insertions

Page 310: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principe de la gestion automatique

● Oracle utilise un bitmap pour connaître le taux de remplissage de chaque bloc.● 0% → bloc plein ( - pctfree éventuel ),● 0 à 25% d'espace libre,● 25 à 50% d'espace libre,● 50 à 75% d'espace libre,● 75 à 100% d'espace libre.

● Lors de l'insertion d'une ligne Oracle consulte ce bitmap pour déterminer quel bloc il peut utiliser.

● La gestion manuelle utilise des informations complémentaires ( pctused, freelist... ) stockées dans le dictionnaire des données. Ce processus pénalise les performances et ne présente aucun intérêt.

Page 311: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Déterminer le PCTFREE

● Il est fixé au niveau du tablespace, il peut toutefois être modifié pour une table.

● Sa valeur par défaut est de 10%● Si une ligne est insérée et ne sera jamais

modifiée, le PCTFREE peut être à 0, le bloc sera utilisé à 100% de sa capacité.

● Par contre si une ligne après son insertion fait l'objet de nombreux update susceptibles d'agrandir sa taille, le PCTFREE peut être augmenté. Sinon il se produira une migration.

Page 312: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Le ROWID

● Colonne virtuelle, ou pseudo-colonne.● SQL>connect alice/ecila@red● SQL> select rowid, code, prenom from personne;

● Présente dans chaque table, donne l'adresse physique du stockage de la ligne.

● Utilisé en interne par Oracle pour les index.● C'est l'accès le plus rapide à une ligne quand il est connu → Oracle pointe

directement à la bonne adresse.● Le ROWID est unique pour toute ligne et ne change jamais, tant que la

ligne n'est pas supprimée.● Un update ne change pas le rowid et si suite à un update la ligne ne peut

être contenue dans un bloc Oracle la migre dans un autre.● Ce phénomène, dit row chained, est préjudiciable aux performances et

doit être évité.

Page 313: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Structure du rowid

● SQL> select rowid,dname from scott.dept;

ROWID              DNAME

­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­

AAACyfAAFAAAAAOAAA ACCOUNTING

AAACyfAAFAAAAAOAAB RESEARCH

AAACyfAAFAAAAAOAAC SALES

AAACyfAAFAAAAAOAAD OPERATIONS

● Le codage est en base 64● AAACyf → Numéro de l'objet, voir object_id dans dba_objects● AAF → Numéro du fichier de données, voir file_id dba_data_files● AAAAAO → Bloc de données, relatif au fichier et non au tablespace.● AAA → Numéro de ligne dans le bloc.

● Le package dbms_rowid, contient des fonctions pour décoder les rowid.● Objet : rowid_object● Numéro de fichier : rowid_relative_fno● Bloc : rowid_block_number● Numéro dans bloc: rowid_row_number

Page 314: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Un exemple d'utilité du rowid

● Créer en tant que user alice une table personne avec des lignes en double.● SQL> connect alice/ecila@red● SQL> create table personne ( code char(2), prenom char(15));● SQL> insert into personne values ( '01','Alice');● SQL> insert into personne values ( '02','Bob');● SQL> insert into personne values ( '02','Bob');● SQL> insert into personne values ( '03','Charles');● SQL> insert into personne values ( '04','Denise');● SQL> insert into personne values ( '04','Denise');● SQL> insert into personne values ( '05','Emile');● SQL> commit;● SQL> select rowid,code, prenom from personne;

Page 315: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Utiliser le ROWID pour supprimer des doublons

● Soit la table personne suivante :● Cette table contient des doublons● Le rowid permet de

différentier chaque ligne et donc d'éliminer les doublons

● SQL> delete from personne p1where rowid < ( select max( p2.rowid )from personne p2 where p1.code=p2.code and p1.prenom=p2.prenom );

● Supprimer la table personne● SQL> drop table personne ;

Page 316: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Chainage et Migration

● Dans Oracle on parle souvent de lignes chainées pour désigner en fait une migration.

● L'ambiguïté vient du mot row chained.● Le chainage est du au fait qu'une ligne est trop longue

pour tenir dans un seul bloc.● Le seul moyen d'éviter cela est d'agrandir la taille du bloc.● Grace à la gestion des blocs multiples il est possible de

mettre ces données dans un tablespace ayant des blocs de 16Ko alors que la taille standard est de 8ko.

● La migration ( row chained ) peut et doit être évitée en positionnant correctement le PCTFREE

Page 317: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principe de migration

lignerowid

lignerowid

update

La ligne augmenteen taille

Si le PCTFREE est suffisant la ligne reste dans le même bloc. Sinon Oracle migre la ligne dans un autre bloc. Pour lire la ligne, Oracle devra donc lire 2 blocs au lieu d'un.

rowid

ligne

Le rowid et l'en-tête de ligne reste dans le bloc d'origine.L'en-tête contient un pointeur vers le nouveau bloc stockant la ligne.

La ligne est migrée dans un autre bloc. Ce phénomène peut se reproduire plusieurs fois.

En-têtede ligne.

Page 318: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Spécifier le PCTFREE à la création d'une table

● Ordre SQL : create table● SQL> create table article

( codart char(8),nomart varchar2(50),codfam char(8),prix number(6,2) )tablespace datapctfree 30;

● La table produit sera dans le tablespace data, dont le pctfree est de 10% mais pour cette table il sera de 30%.

● La valeur de pctfree peut varier de 0 à 99, par défaut 10.

Page 319: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Détecter les rows chained

● La commande analyze table est utilisée pour cela. Attention cette commande ne fait pas la différence entre chaînage et migration de ligne.

● Il faut au préalable créer une table dédiée aux rows chained.● sqlplus system/manager11@red

● SQL> @?/rdbms/admin/utlchain● Ce script met en place la table chained_rows qui servira pour la détection● SQL> analyze table alice.personne list chained rows;● SQL> select count(head_rowid) from chained_rows where

table_name='PERSONNE' and owner_name='ALICE';

● Si le résultat est > 0, il faut interroger la ou les lignes afin de voir si il s'agit d'un problème de chaînage ou de migration.● SQL> select head_rowid from chained_rows where tablename='PERSONNE' and

owner_name='ALICE' and rownum = 1; → rowid de la ligne ● SQL> select * from alice.personne where rowid =

Page 320: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Chainage ou Migration

● La colonne avg_row_len de la table dba_tables donne la dimension moyenne d'une ligne par table.

● Si la longueur moyenne des lignes est supérieur à la taille du bloc, c'est un problème de chaînage → La table doit utiliser des blocs plus grands.

● Sinon c'est un problème de migration.● Il n'y a pas de réponse exacte au pourcentage

admissible de lignes migrées. L'usage veut de considérer le problème à partir de 5% des lignes.

● Pour supprimer les lignes migrées, il faut réorganiser la table avec un PCTFREE plus important.

Page 321: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Réorganisation de table

● Les lignes migrées ne sont pas le seul besoin en réorganisation de table :● libérer l'espace au dessus de la HWM ( voir plus loin )● améliorer le taux de remplissage des blocs● réorganiser plus globalement le stockage de la table

( changement de tablespace par exemple )

● Oracle propose plusieurs méthodes pour réorganiser une table, la plus efficace est MOVE.

● Réorganiser la table en augmentant le PCTFREE● SQL> alter table alice.personne move pctfree 20;

Page 322: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Un exemple de migration

● Se connecter sous le user alice.● sqlplus alice/ecila@red

● Créer la table chained_rows● SQL> @?/rdbms/admin/utlchain ;

● Créer une table test et y insérer des lignes● SQL> create table test_migration ( code number, jour date ) ;● SQL> begin

for i in 1..100000 loop

  insert into test_migration values ( i, sysdate + i );

end loop;

commit;

end;

/

Page 323: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Un exemple de migration suite

● Ajouter une colonne à la table et la remplir avec la chaine 'A BLANC'● SQL> alter table test_migration add ( texte varchar(15)) ;● SQL> update test_migration set texte='A BLANC' ;● SQL> commit ;

● Analyser la table afin de compter les lignes migrées.● SQL> analyze table test_migration list chained rows ;● SQL> select count(*) from chained_rows;● → plus de 40 000 lignes migrées.

Page 324: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Un exemple de migration fin

● Il faut donc réorganiser la table avec un PCT_FREE plus important● SQL> alter table test_migration move pctfree 20;

● Refaire l'analyse● SQL> delete from chained_rows ;● SQL> analyze table test_migration list chained

rows ;● SQL> select count(*) from chained_rows;● → Plus de lignes migrées.

Page 325: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Estimer le PCTFREE

● PCTFREE = 100 x ( 1 -Ti / Tf )● Ti = taille initiale moyenne de la ligne en octets,

donc au moment de l'insertion.● Tf = taille finale moyenne de la ligne en octets,

donc après mise à jour.● Les valeurs de Ti et Tf peuvent être estimées à

partir des statistiques → colonne avg_row_len de la table dba_tables.

Page 326: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Surveiller l'utilisation d'une table

● Depuis la 10g les tables sont nativement mise en surveillance.

● Paramètre STATISTICS_LEVEL <> BASIC● Ceci augmente l'efficacité du calcul de l'optimiseur statistique.

● Ce mécanisme permet d'analyser l'activité sur une table et de disposer d'une évaluation sur ses transactions.

● Ces informations sont stockées dans la table dba_tab_modifications ( schéma sys )

● table_name = nom de la table● inserts = nombre approximatif de lignes insérées● updates = nombre approximatif de lignes mise à jour● deletes = nombre approximatif de lignes supprimées

Page 327: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Spécifier la clause storage lors de la création d'une table

● Cette option vue au niveau du tablespace est le plus souvent employée lors de la création de la table.

● SQL> create table article( codart char(8),nomart varchar2(50),codfam char(8),prix number(6,2) )tablespace datastorage ( initial 10M );

● Lors de la création de la table article une extension de 10M sera allouée.● Ce principe permet en estimant la volumétrie finale de la table d'être certain

que toutes les données seront dans la même extension.● Il est important de noter que le fait qu'une table soit stockée dans plusieurs

extensions ne pose pas de problème de performance.● Il est de bonne pratique de dédier un tablespace aux tables volumineuses.

Page 328: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Espace occupé par une table

● Pour chaque table, Oracle connait le dernier bloc utilisé.● Il s'agit de la HWM ( High Water Mark )● La HWM augment lors des insertions mais ne diminue pas lors

des suppressions.

HWM HWM

Table vide initialement

Table après insertions

Table après suppression

● La HWM permet de connaître le nombre maximal de blocs utilisés pendant son existence. Mais pas les blocs réellement utilisés ou leur remplissage.

● La HWM marque pour Oracle le dernier bloc où il est susceptible de trouver une ligne.

● En cas de parcours complet de la table, Oracle recherche donc dans tous les blocs sous la HWM.

Page 329: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

HWM et remplissage de bloc

● Si une table est soumise à des suppressions nombreuses, le taux d'occupation des blocs peut ne plus être optimal.

● De plus en cas de parcours complet de la table tous les blocs, y compris les vides, seront explorés.

● Le package dbms_space permet de connaître le taux d'occupation des blocs d'une table.

● Il existe plusieurs procédures dans ce package, dont la plus utile est space_usage.

Page 330: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

dbms_space.space_usage

● Charger les scripts espace.sql et inutile.sql ainsi :● wget http://192.168.21.24/ORA/espace.sql● wget http://192.168.21.24/ORA/inutile.sql

● La section intéressante se trouve après le begin, il suffit de changer le nom du propriétaire et de la table avant utilisation...begin dbms_space.space_usage( segment_owner => 'ALICE', segment_name => 'TEST', segment_type => 'TABLE',…

● Ce script permet de calculer le taux d'occupation d'une table dans ses blocs.

Page 331: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Mise en place du test

● Créer la table test● sqlplus alice/ecila@red● ALICE:RED > create table test as

select rownum as numop,

rownum / (24 * 60) + sysdate - 1000 as date_op

from dual

connect by rownum <= 200000;

● Cette commande va créer une table de 200 000 enregistrements.

Page 332: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Mesurer l'espace initial dans la table TEST

ALICE:RED > sta espace

Blocs :

. Pleins = 497

. 0 à 25% d'espace libre = 0

. 25 à 50% d'espace libre = 0

. 50 à 75% d'espace libre = 0

. 75 à 100% d'espace libre = 0

. Non formatés = 0

ALICE:RED > sta inutile

Blocs :

. Total = 640

. Inutilisés = 125

. Utilisés = 515 → HWM● La différence entre le nombre de blocs pleins et utilisés ( 18 ) vient des index bitmap pour

la gestion automatique qui ne sont pas comptés par dbms_space.

Page 333: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Supprimer une ligne sur deux

ALICE:RED > delete test where mod(numop, 2) = 0;

ALICE:RED > commit;

ALICE:RED > sta espace

Blocs :

. Pleins = 1

. 0 à 25% d'espace libre = 0

. 25 à 50% d'espace libre = 496 → les blocs ne sont remplis qu'à 50% maxi

. 50 à 75% d'espace libre = 0

. 75 à 100% d'espace libre = 0

. Non formatés = 0

ALICE:RED > sta inutile

Blocs :

. Total = 640

. Inutilisés = 125

. Utilisés = 515 → la HWM n'est pas modifiée

Page 334: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Réorganiser la table

ALICE:RED > alter table test move;

ALICE:RED > sta espace

Blocs :

. Pleins = 249

. 0 à 25% d'espace libre = 0

. 25 à 50% d'espace libre = 0

. 50 à 75% d'espace libre = 0

. 75 à 100% d'espace libre = 0

. Non formatés = 0

ALICE:RED > sta inutile

Blocs :

. Total = 384

. Inutilisés = 121

. Utilisés = 263 → HWM modifiée, un parcours complet ne lira plus que 263 blocs au lieu de 515.

Page 335: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Alter table...move

● Cette action n'est pas neutre, car les rowid des enregistrements changent.

● Il faut donc reconstruire les index ( si ils existent )● alter index … rebuild

● Il faut également recalculer les statistiques de l'optimiseur● exec dbms_stats.delete_table_stats('ALICE','TEST');● exec dbms_stats.gather_table_stats('ALICE','TEST');

Page 336: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Gestion des index● Un index est défini sur une ou plusieurs colonnes

d'une table, formant ainsi la clé d'index.● Un index contient deux colonnes

● la clé d'index ( qui peut être sur x colonnes )● le rowid de l'enregistrement

● Exemple : On recherche dans l'index le code '04'

A

02

03

05

06

04

124

278

730

436

007

CLE ROWID

A 12401 124

269

02 BOB

01 ALICE

CODE PRENOM

03 CHARLES

04 DENISE

05 EMILE

06 FRANCIS

124

278

730

436

007

124124

269

124

278

730

436

007

124124

269

124

278

730

436

007

124124

269

124

278

730

436

007

124124

269

124

278

730

436

007

124124

269

124

278

730

436

007

124124

269

124

278

730

436

007

124124

269

124

278

730

436

007

124124

269

124

278

730

436

007

124124

269

124

278

730

436

007

124124

269

124

278

730

436

007

124124

269

ROWID

TABLE PERSONNEINDEX

Par

cour

s de

l'in

dex

Pointe vers

Page 337: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Type d'index

● Un index peut être unique ou non● Oracle préconise de ne pas utiliser d'index unique

mais de définir une contrainte primary_key ( un index implicite est alors mis en place )

● Un index peut être sur un ou plusieurs colonnes ( index concaténés )

● Oracle utilise deux type d'index● B-Tree● Bitmap

Page 338: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Index B-Tree

● Arbre Balancé, c'est le type d'index le plus courant.● L'index stocké sous forme d'arbre ordonné et

équilibré automatiquement par Oracle.● Il peut avoir 2, 3 voire plus de niveaux (profondeur

de branche).● La recherche consiste en la détermination de

l'intervalle pour connaître le niveau inférieur et ainsi de suite jusqu'à atteindre la feuille qui stockera, prés de sa valeur, le rowid du ou des enregistrements recherchés.

Page 339: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principe B-Tree : Trouver la valeur 18

7 16

104 20 24

1 3 4 6 7 8 10 12 16 18 20 22 24 26 27

Chemin pourtrouver 18.

Page 340: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Index Bitmap

● Ils servent à indexer les champ à faible cardinalité → 4/5 valeurs distinctes.

● Ils peuvent parfois améliorer les performances● Toutefois ils sont gourmands en ressource, car l'index

est reconstruit à chaque mise à jour de la ligne et pas uniquement de la colonne indexée.

● Ils ne sont d'ailleurs utilisés que pour les bases de type datawarehouse, où les informations sont mises à jour en batch.

● Il importe d'effectuer des tests avant d'utiliser des index bitmap, car l'effet peut être contraire à celui recherché.

Page 341: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Sélectivité d'un index

● Un bon index est un index sélectif .● La sélectivité est le rapport entre le nombre de valeurs dans

l'index et le nombre de lignes dans la table.● Elle est facile à calculer :

● select count(distinct valeur_colonne)/count(*) from table;● Exemple : select count(distinct code_art)/count(*) from article;

● Plus ce chiffre se rapproche de 1 plus l'index est sélectif● Plus ce chiffre se rapproche de 0 , moins l'index est sélectif● Une colonne n'ayant que des valeurs uniques est un bon index.● Une colonne n'ayant que 2 valeurs possibles, exemple

OUI/NON n'est pas un bon index.

Page 342: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Index ou pas

● Un parcours complet de table est parfois plus efficace qu'un index, surtout sur les petites tables ( < 200 lignes ).

● Si une table tient dans un bloc unique, il est inutile de l'indexer, Oracle lit la table d'un coup.

● Trop d'index sur une table dégradent les performances en écriture → mise à jour des index.

● Si la clé d'index contient les colonnes du select, il est inutile de lire la table.

● Utiliser une fonction sur une clé d'index dans une clause where → parcours complet de la table.

Page 343: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Index invisibles

● Sous Oracle 11g, il est possible de définir la caractéristique INVISIBLE pour un index.

● L'index est tenu à jour mais l'optimiseur ne le prend pas en compte.

● Cette fonction permet de tester la pertinence d'un index

● Ceci se configure avec le paramètre :● OPTIMIZER_USE_INVISIBLE_INDEXES=FALSE● OPTIMIZER_USE_INVISIBLE_INDEXES=TRUE● La valeur par défaut est FALSE.

Page 344: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Utilisation d'un index invisible

● Création● SQL> create index indx_01 on table test ( ville )

invisible;

● Il est également possible de rendre un index visible/invisible par alter:● SQL> alter index indx_01 visible;● SQL> alter index indx_01 invisible;

Page 345: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Reconstruire les index

● Les index Oracle sont maintenus automatiquement. Il est le plus souvent inutile de les reconstruire.

● Cette action est toutefois nécessaire en cas de réorganisation d'une table ou d'un tablespace● alter table … move● alter tablespace … move

● L'ordre le plus efficace est :● alter index...rebuild● Cet ordre est similaire au alter table...move pour les tables.

● La création et la reconstruction d'un index utilisent le tablespace temporaire.

Page 346: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Le partionning

● Fonctionnalités optionnelle → version Entreprise de Oracle

● Le partitionnement de tables est généralement effectué pour améliorer la gestion, la performance ou la disponibilité.

● Chaque partition se retrouve sur des serveurs ou des disques différents.

● Cela permet également d'obtenir une capacité de base de données supérieure à la taille maximum des disques durs ou d'effectuer des requêtes en parallèle sur plusieurs partitions.

Page 347: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Partitionnement

● Le partitionnement permet de découper une table ou un index sur des critères logiques.

● La table se comporte alors comme plusieurs tables de dimensions plus petites.

● Les avantages principaux du partitionnement sont :● de pouvoir définir des critères de stockage différents

pour chacune des partitions → tablespace, initial...● le découpage logique de la table permet un accès plus

rapide aux informations → moins de lectures disques à effectuer.

Page 348: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Types de partitionnements● by range : on définit les partitions par tranche supérieure exclusive

(toutes les données < 0)

● by list : on définit une valeur par partition (utilisé lorsque la liste de valeur pour le champ considéré est faible)

● by hash : la partition de stockage est calculée dynamiquement par un calcul de type hash code, ce mode impose un nombre de partitions 2^n

● composite : c'est une méthode de partitionnement hybride. Les données sont d'abord partitionnées by range. Ensuite, chaque partition sera sous-partitionnée soit by hash ou by list. Il n'est pas nécessaire d'avoir exactement le même nombre de sous-partitions par partition : par exemple, une partition peut être constituée de 4 sous-partitions alors qu'une autre sera composée de 5 sous-partitions.

● Le mécanisme de découpage logique peut être étendu sur plusieurs champs, ainsi que sur deux niveaux. On parle dans ce cas de sous-partitionnement.

Page 349: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple de partition

PARTIONNEMENT SUR L'ANNEE DE COTATION

ISIN DTE OUV MAX MIN CLO VOLUME

COTPART

AVANT2000

De 2000à 2005

De 2006à 2009

20102011et +

Page 350: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création de la table COTPART

● SQL> create table COTPART (

isin varchar2(20),

dte date,

ouv number,

max number,

min number,

clo number,

volume number )

partition by range (dte)

(

partition cot2000 values less than( to_date('01/01/2000','DD/MM/YYYY')),

partition cot2005 values less than( to_date('01/01/2006','DD/MM/YYYY')),

partition cot2009 values less than( to_date('01/01/2010','DD/MM/YYYY')),

partition cot2010 values less than( to_date('01/01/2011','DD/MM/YYYY')),

partition cotfutur values less than( maxvalue)

);● Pour les tables très volumineuses, il est conseillé d'affecter un tablespace par partition.

Page 351: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Insertion des données

● Insertion● SQL> insert into COTPART select isin, dte, round(100*dbms_random.value, 2),

round(100*dbms_random.value, 2), round(100*dbms_random.value, 2), round(100*dbms_random.value, 2), round(100000*dbms_random.value) from ACTION, ( select sysdate-rownum dte from ALL_OBJECTS where rownum < 200000 );

● Recalculer les statistiques● SQL> exec dbms_stats.gather_schema_stats ( 'ALICE' );

● Visualiser le nombre de lignes par partition● SQL> select table_name, partition_name, num_rows from user_tab_partitions;

Page 352: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Gestion des contraintes

● Pour utiliser les tables, il est possible de définir des règles → Les contraintes.

Type de la contrainte Description

Not Null Une valeur doit être affectée au champ mais les valeurs ne doivent pas être uniques.

Unique Key Toutes les valeurs de cette colonne doivent être uniques. Null est accepté.

Primary Key Toutes les valeurs de cette colonne doivent être uniques et ne peuvent pas être nulles.

Foreign Key Toutes les valeurs de cette colonne sont liées à une colonne d’une autre table. Null est accepté.

Check La valeur ajoutée à cette colonne doit valider la règle de gestion définie pour cette colonne.

Page 353: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple de contraintes

PRODUIT MAFOURNITURE FOURNISSEUR

PNOM_PCOULEURORIGINEPRIX

FP

QTE

FNOMREMISEVILLE

La colonne P de latable produit est uneclé primaire.

La colonne F de latable fournisseur est uneclé primaire.

La concaténation de lacolonne P et de la colonneF de la table mafournitureest une clé primaire.

P est une clé étrangère

F est une clé étrangère

Base de données EPICERIE

Page 354: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Intégrité référentielle

● Les clés primaires et étrangères garantissent l'intégrité référentielle de la base.

● Il est impossible de supprimer un enregistrement référencé clé étrangère.Exemple :SQL> delete from fournisseurwhere f='F7';→ erreur, il faut au préalable supprimer les enregistrements de F7 dans la table MAFOURNITURE.

Page 355: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Contraintes des Contraintes

● Dans certains cas il faut lever les contraintes et les réactiver par la suite.

● Lors d'un import ou de chargement SQL*Loader il est possible que les contraintes ne permettent pas l'intégration.

● La désactivation des contraintes doit se faire table par table et contrainte par contrainte.

● SQL> alter table <table> disable <contrainte>;● La réactivation suit la même logique● SQL> alter table <table> enable <contrainte>;

Page 356: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Lever et activer toutes les contraintes

● C'est la méthode la plus souvent utilisée.● Le DBA lève ( disable ) toutes les contraintes,

charge les données et réactive ( enable ) celles-ci.

● Le dictionnaire des données et une boucle PL/SQL permettent facilement de mettre au point des scripts pour effectuer ces tâches.

● Les deux scripts présentés ici active/désactive les contraintes pour un schéma et non sur la base complète.

Page 357: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Script pour lever les contraintes

● A exécuter sous la connexion de l'utilisateur.

BEGIN

FOR c IN

(SELECT c.owner, c.table_name, c.constraint_name

FROM user_constraints c, user_tables t

WHERE c.table_name = t.table_name

AND c.status = 'ENABLED'

ORDER BY c.constraint_type DESC)

LOOP

dbms_utility.exec_ddl_statement('alter table ' || c.owner || '.' || c.table_name || ' disable constraint ' || c.constraint_name);

END LOOP;

END;

Page 358: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Script pour réactiver les contraintes

● A exécuter sous la connexion de l'utilisateur.

BEGIN

FOR c IN

(SELECT c.owner, c.table_name, c.constraint_name

FROM user_constraints c, user_tables t

WHERE c.table_name = t.table_name

AND c.status = 'DISABLED'

ORDER BY c.constraint_type)

LOOP

dbms_utility.exec_ddl_statement('alter table ' || c.owner || '.' || c.table_name || ' enable constraint ' || c.constraint_name);

END LOOP;

END;

Page 359: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Statistiques Optimiseur

● Oracle utilise des statistiques pour déterminer le plan d'exécution optimal d'une requête.

● Les statistiques doivent être recalculées régulièrement si la base à de nombreuses mises à jour sur ses colonne indexées● Ajout de lignes,● Suppression de lignes

● Les updates sur des champs non indéxés ne demandent pas de recalculer les statistiques.

● Les statistiques peuvent être calculées sur ● une table ou un index● un schema● toute la base

● Les statistiques peuvent aussi se faire sur l'ensemble des données ou sur un echantillon.

Page 360: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Statistiques et 11g

● Par défaut un job est lancé chaque nuit ( 22h00 ) par oracle pour recalculer les statistiques.

● C'est Oracle qui décide si une statistique doit ou non être recalculée.

● Il est possible de forcer ce calcul, par l'utilisation du package dbms_stats.

● Il faut recalculer les statistiques dans les cas suivants :● Import de données ( imp, datapump ou SQL*Loader )● alter table...move● Création de nouveaux index...● Beaucoup de structures recalculent systématiquement chaque jour

les statistiques.

Page 361: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Visualisation des jobs par défaut

set linesize 200

col PROGRAM_NAME format a35

col PROGRAM_ACTION format a60

select a.JOB_NAME,

a.PROGRAM_NAME,

b.PROGRAM_TYPE,

b.PROGRAM_ACTION,

b.NUMBER_OF_ARGUMENTS

from DBA_SCHEDULER_JOBS a, DBA_SCHEDULER_PROGRAMS b

where a.PROGRAM_NAME = b.PROGRAM_NAME;

Page 362: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Le package DBMS_STATS● Calculer les statistiques sur le schéma alice

● SQL> exec dbms_stats.gather_schema_stats('ALICE');● Calculer les statistiques sur le schéma alice avec un echantillon de 25%

● SQL> exec dbms_stats.gather_schema_stats('ALICE',25);● Calculer les statistiques sur la table personne de alice

● SQL> exec dbms_stats.gather_table_stats('ALICE','PERSONNE');● Calculer les statistiques sur la table personne de alice avec un échantillon de 30%

● SQL> exec dbms_stats.gather_table_stats('ALICE','PERSONNE',null,30);● Calculer les statistiques sur toute la base

● SQL> exec dbms_stats.gather_database_stats;● Supprimer les statistiques du schéma alice

● SQL> exec dbms_stats.delete_schema_stats('ALICE');● Pour connaître la date du dernier calcul de statistiques sur une table :

● SQL> select table_name, last_analyzed from dba_tables;● Il est possible d'exporter les statistiques vers une autre base afin de simuler du volume.

● Le package et les fonctions de dbms_stats contiennent de nombreuses options, voir la documentation Oracle.

Page 363: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Sauvegarde etrestauration

"Sauvegarder à rien ne sert, si restaurer ne peut se faire."

Page 364: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Modes de sauvegarde

● Il existe de nombreuses manières de sauvegarder une base Oracle.

● La sauvegarde peut être :● Cohérente → sauvegarde à froid● Incohérente → sauvegarde à chaud

● Une sauvegarde cohérente, implique un arrêt de base.● Une sauvegarde incohérente implique un

fonctionnement en archivelog.● Le sujet est vaste, ORSYS propose un cours sur 3 ou

5 jours uniquement sur ce thème.

Page 365: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Recovery MANager

● RMAN est l'outil fournit avec Oracle pour la sauvegarde et la restauration des bases de données.

● Livré en standard depuis la version 8i, RMAN permet :● sauvegarde complète ou incrémentale● sauvegarde partielle● restauration globale ou partielle● clonage de base● corriger les blocs corrompus...

● RMAN est un produit très complet. L'ensemble des fonctions fait l'objet d'un cours spécial.

● Note sur import/export. Très utilisé comme mode de sauvegarde car simple, cet outil n'a jamais été conçu comme solution de sauvegarde et encore moins de restauration.

Page 366: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Architecture RMAN

● La base à sauvegarder est appelée cible → target. La connexion à une base cible utilise la couche Oracle*Net

● L'ensemble d'une sauvegarde est nommé backupset● Un backupset contient des backuppieces● Il est possible d'avoir des backuppieces d'une taille données → option

maxpiecesize.● Les informations sur la sauvegarde peuvent être stockées sous deux

formes :● dans le fichier de contrôle de la base,● dans un catalogue.

● L'utilisation d'un catalogue permet de centraliser la sauvegarde de bases multiples.

● RMAN permet également de sauvegarder les fichiers tels que → backup as copy.

Page 367: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principe de communication

RMANbase catalogue

ou fichier decontrôle de la base

cible

ProcessusOracle

Basecible

référentielde sauvegarde

Médiade stockage

Canaux de communication

● Le média de stockage peut être du disque ou une bande.

● Il est possible de paralléliser la communication en allouant plusieurs canaux → allocate channel.

Page 368: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Le client RMAN

● Utilitaire en ligne de commande.● Appel depuis l'OS :

● export ORACLE_SID=RED● rman target /● RMAN>

● La connexion à la base cible ( target ) s'effectue implicitement en sysdba.

● Connexion à une base distante● rman target sys/manager11@red● RMAN>

● Appelé sous cette forme RMAN utilise le fichier de contrôle de la base de données comme référentiel des sauvegardes.

Page 369: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Autres appels de RMAN

● La syntaxe du slide précédent est la plus simple.● Il est possible de se connecter également à une

base auxiliaire → auxiliary et/ou à une base catalogue → catalog.

● Ces deux autres types d'appels seront vus lors du clonage pour auxiliary et via un catalogue pour catalog.

● Il est également possible d'utiliser RMAN depuis l'interface Web du Database Control.

Page 370: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

RMAN et la mémoire

● RMAN utilise la large pool de la SGA.● En cas de gestion automatique de la SGA celle-ci s'adapte

en fonction du besoin.● La gestion manuelle demande plus de soin.● Il est possible d'avoir une grosse activité de swap durant

un processus RMAN● Le lien suivant permet de mettre en place des outils pour

optimiser les process RMAN● http://docs.oracle.com/cd/B28359_01/backup.111/b28270/

rcmtunin.htm

Page 371: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Sauvegardes RMAN

● RMAN permet de sauvegarder : ● A froid → Base stoppée. On parle de sauvegarde

cohérente.● A chaud → base ouverte. On parle alors de

sauvegarde incohérente.

● La sauvegarde à chaud implique un fonctionnement en mode archivelog. Sans cela RMAN génère une erreur et refuse d'effectuer la sauvegarde.

Page 372: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Sauvegarde avec RMAN Prérequis

● Pour utiliser RMAN simplement, il faut définir une zone de récupération rapide → flash recovery area. Mais cela n'est pas obligatoire.

● La flash recovery area permet de simplifier les sauvegardes/restauration.

● Au niveau système créer le répertoire suivant :● mkdir -p /u01/app/oracle/flash_recovery_area

● Se connecter à RED en sysdba

● sqlplus sys/manager11@red as sysdba

● SQL> alter system set db_recovery_file_dest_size=2G scope=both ;

● SQL> alter system set db_recovery_file_dest='/u01/app/oracle/flash_recovery_area' scope=both ;

● SQL> exit ;

Page 373: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Sauvegarde RMAN à froid

● Une sauvegarde à froid avec RMAN demande une base en statut « mount »● Lancer RMAN● export ORACLE_SID=RED● rman target / → La connexion est implicitement en sysdba● RMAN> configure controlfile autobackup on ; → à faire une fois.● RMAN> shutdown immediate;● RMAN> startup mount;● RMAN> backup database;● RMAN> alter database open;● RMAN> exit ;● Les fichiers de sauvegarde sont sous

/u01/app/oracle/flash_recovery_area/RED/backupset/<date> et /u01/app/oracle/flash_recovery_area/RED/autobackup/<date>

Page 374: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Script shell de sauvegarde● Créer sous $HOME un fichier nommé svfroid.rma avec

les lignes suivantes :● run {

shutdown immediate;

startup mount;

backup database;

delete noprompt obsolete;

alter database open;

}● Lancement en ligne de commande

● export ORACLE_SID=RED● rman target / @$HOME/svfroid.rma

● Lancement depuis un cron, éditer /etc/crontab et rajouter :● 00 23 * * * oracle . ~/.bash_profile ; export ORACLE_SID=RED ; rman target /

@$HOME/svfroid.rma > $HOME/svfroid.rma.log

Seule la dernière sauvegardeest conservée.

Page 375: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Sauvegarde avec compression

● La syntaxe de connexion est identique, seule la commande de sauvegarde de la base change● RMAN> backup as compressed backupset

database ;

● La compression prend du temps CPU mais divise la taille des sauvegarde d'un facteur voisin de 5.

Page 376: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Restauration● Se connecter en sysdba à RED et arréter la base.● Sous /u01/app/oracle/oradata/RED supprimer tous les fichiers ● Tenter de démarrer la base → erreur, elle reste en mode nomount● Lancer RMAN● export ORACLE_SID=RED● rman target /

● RMAN> shutdown abort ;● RMAN> startup nomount ;● RMAN> restore controlfile from autobackup ;● RMAN> alter database mount ;● RMAN> restore database ;● RMAN> recover database ;● RMAN> alter database open resetlogs ;● RMAN> exit ;

● La commande restore restaure tous les fichiers manquants.● La commande recover rejoue les redologs.

Page 377: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Recovery Data Advisor

● Détecte la corruption ou la perte de données.● list failure

● Détermine les actions à effectuer.● advise failure

● Propose l'exécution des actions suggérées.● repair failure preview → Montre l'effet de l'action● repair failure → lance l'action après confirmation● repair failure noprompt → lance l'action directement.

Page 378: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principe de l'archivelog

● Les transactions sont enregistrées dans les redologs.● Le principe de l'écriture cyclique des redologs fait que l'information

est périodiquement écrasée.● Pour éviter ceci, il est possible de configurer la base en mode

archivelog.● Une copie du redolog est effectuée dès que celui-ci est rempli au

moment du passage vers un autre groupe.● Utiliser le mode archive-logs et une gestion multiplexée des

redologs permet en cas de crash de ne perdre aucune transaction.● Inconvénient du mode archivelog est la génération d'un volume

important sur les disques.

Page 379: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

arch02

Processus d'archivage

redo01 redo02

arch01

4 : Les transactionsremplissent redo02

2 : redo01 est plein,redo01 est copié→ archivelog

3 : basculement

1 : Les transactionsremplissent redo01

5 : redo02 est plein,redo02 est copié→ archivelog

6 : basculement

Page 380: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Mode archivelog

● Permet de sauvegarder une base à chaud● Permet de rejouer toutes ou une partie des transaction à partir d'une sauvegarde.● Les archivelogs sont par défaut stockés dans la flash_recovery_area● Passer la base en archivelog

● sqlplus sys/manager11@red as sysdba● SQL> shutdown immediate;● SQL> startup mount ;● SQL> alter database archivelog;● SQL> alter database open ;● SQL> select log_mode from v$database ;● SQL> alter system archive log current ;

● Les fichiers d'archives sont sous /u01/app/oracle/flash_recovery_area/RED/archivelog/<date>

● En cas de faible activité transactionnelle il est possible de forcer un archivage tous les x secondes via le paramètre ARCHIVE_LAG_TARGET.

● Exemple :● SQL> alter system set archive_lag_target=900 scope=both; → Un archivelog est forcé toutes les

15 minutes, toutefois si l'activité de transaction est nulle rien n'est archivé.

Page 381: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Sauvegarde à chaud RMAN● Une sauvegarde à chaud avec RMAN ne demande pas

un arrêt de base.● Afin d'optimiser le processus de sauvegarde il est possible de

demander la sauvegarde automatique du spfile et du controlfile.

● rman target sys/manager11@red● RMAN> backup database plus archivelog delete all input;● RMAN> exit;● Cette simple ligne sauvegarde l'ensemble de la base, les

archivelog et les efface après sauvegarde.● Les fichiers de sauvegarde sont sous

/u01/app/oracle/flash_recovery_area/RED/backupset/<date> et /u01/app/oracle/flash_recovery_area/RED/autobackup/<date>

Page 382: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Visualiser les sauvegardes

● rman target sys/manager11@red● RMAN> list backup ;● RMAN> list backup summary ;

● Supprimer les sauvegardes obsolètes● RMAN> report obsolete ;● RMAN> delete obsolete ;

● Supprimer toutes les sauvegardes● RMAN> delete backup ;

● Ces deux dernières commandes demande une confirmation.

Page 383: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Restauration avant crash

● Dans cet exemple nous allons faire des modifications dans la base qui ne sont pas dans la sauvegarde.

● Se connecter alice : sqlplus alice/ecila@red● SQL> insert into personne values ('06','Flugence' );● SQL> insert into personne values ('07','Gudulle');● SQL> commit ;

● Arrêter la base pour simuler le crash● SQL> connect sys/manager11@red as sysdba● SQL> shutdown immediate ;● SQL> exit ;

Page 384: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principe de restauration

Archivelogs100-322

redologs201-275

redologs100-200

redologs275-322

18/04 19/0418/04 20/04 21/04

SauvegardeBase

Crash Base

RestaurationBase

Réapplicationredologs201-275

Réapplicationredologs100-200

Réapplicationredologs275-322

ReconstitutionBase

Phase recover

Pha

se r

esto

re

21/04 21/04

redologcourant

Si le redolog courantest perdu, une partiedes transactions seraperdue.La phase recover signalera un échec.

Page 385: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Simulation du crash et restauration

● Supprimer tous les fichiers sous /u01/app/oracle/oradata/RED● La perte est de certains fichiers de contrôle, des redologs et des

datafiles.● rman target sys/manager11@red

● RMAN> startup nomount ;● RMAN> restore controlfile from autobackup;● RMAN> alter database mount;● RMAN> restore database; ● RMAN> recover database;● RMAN> alter database open resetlogs;● RMAN> exit ;

● Se reconnecter à la base en alice et vérifier la présence des deux dernières lignes insérées.

Page 386: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Incrémental vs Cumulative

0 1 111 0

Cumulative

0 1 111 0

Incrémental

● Une incrémentale de niveau 0 correspond à une sauvegarde complète

● Une sauvegarde complète n'est pas une incrémentale de niveau 0● Les incrémentales de niveau 1 sont plus rapides que les

cumulatives niveau 1 en sauvegarde● Les cumulatives niveau 1 sont plus rapides que les

incrémentales niveau 1 en restauration.

Page 387: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Sauvegardes incrémentielles

● Niveau 0● RMAN> backup incremental level=0 database ;

● Niveau 1● RMAN> backup incremental level=1 database ;

● Si un niveau 1 est demandé sans la présence d'un niveau 0, un niveau 0 est automatiquement exécuté.

● Par défaut les sauvegardes incrémentielles de niveau 1 sont en mode différentiel.

● L'option cumulative permet de passer en mode cumulatif.● RMAN> backup incremental level=1 cumulative database ;

Page 388: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Block Change Tracking

● Permet de tenir à jour la liste des blocs Oracle modifiés accélérant ainsi la sauvegarde incrémentielle.

● SQL> alter database enable block change tracking using file '/u01/app/oracle/oradata/RED/block_change_tracking.trc';

● SQL> select * from v$block_change_tracking;

Page 389: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Paramétrage RMAN

● La configuration de RMAN se visualise par la commande show all.

● Il est possible de modifier la configuration par défaut via la commande configure.● RMAN> configure controlfile autobackup on ;

Page 390: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Durée de rétention

● Par défaut la durée de rétention est de 1.● Il est possible de définir un nombre différent ainsi :● RMAN> configure retention policy to redundancy 3 ;● Il est possible de définir une fenètre de retention en

jours, par exemple 7 jours● RMAN> configure retention policy to recovery

window of 7 days ;

Page 391: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Obsolescence des sauvegardes

● RMAN gère les sauvegardes obsolètes en fonction de la politique de rétention.

● La commande report obsolete permet de connaître celles-ci.

● La commande delete obsolete permet leur suppression.

Page 392: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Bloc corrompu

● Erreur ORA-01578● SQL> select segment_name , header_file, header_block from

dba_segments where segment_name = 'PERSONNE' and owner='ALICE' ;

● → 6 14● cd /u01/app/oracle/oradata/RED● dd of=data_alice_01.dbf bs=8192 conv=notrunc seek=14 <<

EOF● > corrupt !● > EOF

Page 393: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Test de la corruption

● sqlplus "/ as sysdba"● SQL> alter system flush buffer_cache ;● SQL> connect alice/ecila● SQL> select * from personne● → ORA-01578

Page 394: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Restauration

● rman target /● RMAN> blockrecover datafile 6 block 14 ;● RMAN> exit● sqlplus alice/ecila@red● SQL> select * from personne ;

Page 395: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Nouvelle sauvegarde

● Pour la suite du cours, il importe de refaire une nouvelle sauvegarde de la base de données

● rman target sys/manager11@red● RMAN> backup database plus archivelog

delete all input;● RMAN> delete obsolete;● RMAN> exit;

Page 396: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Flashback

● Oracle offre la possibilité de remonter le temps pour ses données.● La notion de flashback existe depuis la version 9i.● En 11gR2 il existe 8 fonctionnalités de flashback.

● Flashback Query● Flashback Versions Query ● Flashback Transaction Query● Flashback Table● Flashback Drop● Flashback Data Archive● Flashback Transaction Backout● Flashback Database

● Les différentes possibilités de flashback sont liées à la licence souscrite ( Standard ou Enterprise ).

Page 397: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Flashback et les données

● Les différents Flashback n’utilisent pas les mêmes fichiers Oracle pour récupérer les données.● Flashback Database utilise des journaux Flashback● Flashback Drop utilise une corbeille.● Flashback Data Archive utilise la notion d’archive Flashback.● Flashback Table, Flashback Version Query, Flashback Query, Flashback Transaction

Query utilisent le tablespace undo.● Flashback Transaction Backout utilise le tablespace undo et les archivelogs.

● Certaines fonctions de flashback ne modifient pas la base → lecture seule.● La base doit être configurée avec certaines options afin de pouvoir utiliser

certaines fonctions● Mode Archivelog● Mode Flashback

Page 398: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Paramétrage du tablespace UNDO

● Le tablespace UNDO est largement utilisé dans le Flashback.

● Sa dimension et surtout sa durée de rétention doivent être précisées avec soin.

● Si la notion de Flashback est un impératif, il faut de plus gérer la garantie de rétention.

● Garantir la rétention peut interdire l'insertion ou la mise à jour de données de manière temporaire → Erreur ORA-30036.

Page 399: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Rappels gestion de l'annulation

● Manuelle, déconseillée →gestion via rollback segments● Automatique, par défaut →utilise un tablespace UNDO.

● UNDO_MANAGEMENT=AUTO ● UNDO_TABLESPACE = UNDO_TBS

● Durée de rétention● UNDO_RETENTION=900 → Valeur par défaut, 15 minutes ( 900 secondes ) non

garantie.

● Modifier la durée de rétention à 30 minutes● alter system set undo_retention=1800 scope=both ;

● Garantir la durée de rétention● alter tablespace undo_tbs retention guarantee ;

● Retirer la garantie de rétention● alter tablespace undo_tbs retention noguarantee ;

Page 400: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Flashback query

● Permet de lire les données telles qu'elles étaient dans le passé.● Se connecter scott/tiger@red● SQL> update emp set sal=sal*4 ;● SQL> commit ;● SQL> select ename,sal from emp;● Relire les valeurs de sal avant l'augmentation, remonte ici de 2

minutes dans le passé.● SQL> select ename, sal from emp as of timestamp ( sysdate -

( 2/1440 ));● sysdate demande un nombre de jours en plus ou en moins, pour

remonter de 2 minutes on divise 2 par le nombre de minutes dans un jour → 1440

Page 401: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Flashback table

● Ramène une table à ses valeurs passées.● SQL> delete from emp ;● SQL> commit ;● SQL> select * from emp ;● Table vide.● SQL> alter table emp enable row movement ;● SQL> flashback table emp to timestamp ( sysdate -

( 5/1440 )) ;● Les lignes sont revenues.

Page 402: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Flashback drop

● Supprimer la table emp de scott● SQL> drop table emp;

● La table est en fait stockée dans la corbeille● SQL> show recyclebin;

● L'ordre suivant permet de sortir la table de la corbeille et de la restaurer● SQL> flashback table emp to before drop;● SQL> select count(*) from emp;

● Attention si la table est dans le tablespace SYSTEM cette fonction ne marche pas.

● La tablespace SYSTEM n'a pas de corbeille, une raison de plus pour ne pas mettre d'objet dans le tablespace SYSTEM.

Page 403: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Flashback base de données

● Il s'agit ici de ramener l'intégralité d'une base de données dans le passé.

● Cette fonction n'est disponible qu'en version Enterprise.● La base doit fonctionner en mode archivelog● Il faut activer le mode flashback

● sqlplus sys/manager11@red as sysdba● SQL> shutdown immediate;● SQL> startup mount;● SQL> alter database flashback on;● SQL> alter database open;● SQL> select log_mode, flashback_on from v$database;

Page 404: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple de flashback base de données

● Toujours connecté sys as sysdba.● Relever le numero SCN

● SQL> select dbms_flashback.get_system_change_number() from dual; ● → 4017852.

● Supprimer la table emp de scott● SQL> drop table scott.emp;

● Rajouter une ligne dans la table personne de alice● SQL> insert into alice.personne values ( '06','Francis' );● SQL> commit;

● Stopper la base et demander le flashback● SQL> shutdown immediate;● SQL> startup mount;● SQL> flashback database to scn 4017852;● SQL> alter database open resetlogs;● Vérifier le retour de la table scott.emp et que la valeur dans la table personne de alice est bien

absente.

Page 405: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Flashback avec RMAN● Il est possible d'utiliser RMAN pour le flashback● La base doit être en archivelog● L'exemple demande de remettre la base de données dans son état au

18/04/2013 à 15H00 pile !● rman target sys/manager11@red as sysdba

● RMAN> run {● RMAN> shutdown immediate● RMAN> startup mount;● RMAN> set until time "to_date('18/04/2013 15:00:00' , 'dd/mm/yyyy hh24:mi:ss')";● RMAN> restore database;● RMAN> recover database;● RMAN> alter database open;● RMAN> }

● Il est impératif d'utiliser un bloc run quand une commande set until time est introduite.

● La commande set until time permet de dire à RMAN jusqu'à quand rejouer les archivelogs à partir de la dernière sauvegarde.

Page 406: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Clonage avec RMAN

● Cloner une base est très pratique pour obtenir un environnement de test reflétant une production. RMAN permet cette action à partir d'une sauvegarde.

● Objectif : créer une base BLACK depuis la sauvegarde RMAN de la base RED

● Créer l'aborescence● mkdir -p /u01/app/oracle/admin/BLACK/pfile● mkdir -p /u01/app/oracle/oradata/BLACK● mkdir -p /u02/app/oracle/oradata/BLACK● mkdir -p /u03/app/oracle/oradata/BLACK● mkdir -p /u04/app/oracle/oradata/BLACK

● Procéder à une sauvegarde complète de la base RED.

Page 407: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Créer le fichier initBLACK.ora

● Depuis le spfile de RED, créer le pfile

● export ORACLE_SID=RED

● sqlplus /nolog

● SQL> connect / as sysdba● SQL> create pfile=

'/u01/app/oracle/admin/BLACK/pfile/initBLACK.ora' from spfile;● Editer ce fichier et remplacer toute occurrence de RED par BLACK.

● Avec vi passer en mode commande et taper :

– :1,$s/RED/BLACK/g● En fin de fichier rajouter les lignes suivantes :

● DB_FILE_NAME_CONVERT=('RED','BLACK')

● LOG_FILE_NAME_CONVERT=('RED','BLACK')

● INSTANCE_NAME='BLACK'

Page 408: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

L'instance BLACK

● Créer le fichier de mot de passe pour BLACK● cd $ORACLE_HOME/dbs● orapwd file=orapwBLACK password=manager11

● Créer le lien symbolique vers le pfile● cd $ORACLE_HOME/dbs● ln -s /u01/app/oracle/admin/BLACK/pfile/initBLACK.ora initBLACK.ora

● Sous windows créer le service pour BLACK● oradim -new -sid BLACK -intpwd manager11 -startmode auto -startype SRVC,INST

● Démarrer BLACK● export ORACLE_SID=BLACK● sqlplus /nolog● SQL> connect / as sysdba● SQL> startup nomount;● SQL> quit

Page 409: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création du clone

● export ORACLE_SID=BLACK● rman target sys/manager11@RED auxiliary /

● RMAN> duplicate target database to black;● Renseigner la base BLACK dans le tnsnames.ora et le listener.

● Renseigner BLACK pour le démarrage automatique dans /etc/oratab

Page 410: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Clonage en 11g

● La version 11g apporte une améliora tion en permettant le clonage sans sauvegarde.

● Ici création de BLACK depuis RED directement.● La base BLACK doit être statiquement enregistrée dans le listener.● sqlplus sys/manager11@black as sysdba● SQL> shutdown immediate ;● SQL> exit ;● rman target sys/manager11@red auxiliary sys/manager11@black● RMAN>startup clone nomount ;● RMAN> duplicate target database to black from active database ;● RMAN> exit ;

Page 411: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple listener.ora LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS=(PROTOCOL = TCP)(HOST = lx-1-3 )(PORT = 1521)

)

)

)

SID_LIST_LISTENER =

( SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = RED)

(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)

(SID_NAME = RED)

)

(SID_DESC =

(GLOBAL_DBNAME = BLACK)

(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)

(SID_NAME = BLACK)

)

)

Page 412: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple tnsnames.ora

RED =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = lx-1-3)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = RED)

)

)

BLACK =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = lx-1-3 )(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = BLACK)

)

)

Page 413: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

RMAN avec catalogue

● Il est possible d'enregistrer les informations de sauvegarde dans un catalogue.

● Ainsi RMAN peut sauvegarder de multiples bases et avoir un point central pour la gestion des sauvegardes.

● Un catalogue est stocké dans une base de données Oracle ordinaire.

Page 414: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principe du catalogue

RMAN

Base à Sauvegarder

( cible )

Espace deSauvegarde

(FLAR)

Basecatalogue

OracleServer

Session

Page 415: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création du catalogue

● Dans cet exemple nous allons utiliser la base BLACK pour gérer le catalogue

● Dans cette instance, créer un tablespace et un utilisateur pour RMAN● sqlplus system/manager11@black● SQL> create tablespace rman_data datafile

'/u01/app/oracle/oradata/BLACK/rman_data_01.dbf' size 200M;● SQL> create user rman identified by rman default tablespace rman_data;● SQL> grant connect, resource, recovery_catalog_owner to rman;● SQL> exit

● Se connecter à rman et créer le catalogue.● rman catalog rman/rman@black

● RMAN> create catalog;● RMAN> exit

● Ces étapes sont à faire une fois.

Page 416: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Enregistrement des bases à sauvegarder

● Il faut enregistrer les bases de données que l'on souhaite sauvegarder, les cibles ou target. Par exemple ici la base RED

● rman catalog rman/rman@black target sys/manager11@red● RMAN> register database;● RMAN> resync catalog ;● RMAN> exit

● La seconde commande permet de synchroniser le catalogue avec le fichier de contrôle.

● Retirer une base du catalogue● rman catalog rman/rman@black target sys/manager11@red● RMAN> unregister database red;● RMAN> exit

Page 417: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

RMAN et le DBID

● Lors de la connexion à la base cible ( target ) RMAN donne le DBID de la base.

● Le DBID ( Database Identifier ) est important si des bases ayant le même nom ( SID ) sont dans le catalogue RMAN.

● Lors de la restauration il sera nécessaire de donner ce DBID afin de lever l'ambiguïté sur quelle base restaurer.

● Le DBID peut se trouver par la requête suivante :● SQL> select dbid from v$database ;● Ou encore en interrogeant la table RC_DATABASE du catalogue

RMAN.● Sous RMAN on positionne le DBID ainsi :● RMAN> set DBID 2265554275;

Page 418: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Changer le DBID1/2

● Il peut arriver, notamment par clonage ou par récupération d'une autre sauvegarde que le DBID de deux bases soit identique.

● Le modifier est simple en utilisant la commande nid.● export ORACLE_SID=RED● sqlplus /nolog

● SQL> connect / as sysdba● SQL> select dbid from v$database; → Noter le dbid● SQL> shutdown immediate;● SQL> startup mount;● SQL> exit;

● nid target=sys/manager11● Répondre YES à la question

Page 419: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Changer le DBID2/2

● Redemarrer la base en mode mount et l'ouvrir avec l'option resetlogs.

● sqlplus /nolog● SQL> connect / as sysdba● SQL> startup mount;● SQL> alter database open resetlogs;● SQL> select dbid from v$database; → Nouveau

dbid● SQL> exit;

Page 420: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Sauvegarde

● rman catalog rman/rman@black target sys/manager11@red● RMAN> backup full database plus archivelog delete

all input;● RMAN> exit

● Les sauvegardes sont générées dans la flash recovery area par défaut.

Page 421: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Restauration

● Les principes de restauration sont les mêmes qu'avec une gestion autonome.

● rman catalog rman/rman@black target sys/manager11@red● RMAN> startup mount ;● RMAN> restore database;● RMAN> recover database;● RMAN> alter database open;● RMAN> exit;

Page 422: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Utilitaires ORACLE

Page 423: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Les utilitaires

● exp et imp● Datapump● SQL*Loader● Explain plan● TKPROF

Page 424: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Export avec exp

● Bien que déprécié, exp est toujours très utilisé.● On parle souvent de "créer un dump" de la base de

donnée.● Appelé en ligne de commande, exp passe en mode

interactif et demande des réponses.● exp system/manager11@red

● Il est possible de passer les arguments sur la ligne commande.● exp userid=system/manager11@red file=$HOME/alice.dmp

log=$HOME/alice.exp.log owner=alice

Page 425: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exp et fichier de paramètres

● Il s'agit de la méthode la plus pratique. Le fichier contient l'ensemble des options de la commande exp.

● Les options ont toutes une valeur par défaut, il ne faut donc spécifier ici que celles ayant une valeur différente.

● Editer un fichier texte● vi $HOME/alice.param.exp

userid=system/manager11@red

buffer=1000000

file=$HOME/alice.dmp

log=$HOME/alice.exp.log

owner=alice

● Lancer l'export● exp parfile=$HOME/alice.param.exp

Page 426: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Import avec imp● Il s'agit du complément à la commande exp, elle permet d'importer

le contenu d'un fichier export.● La commande imp s'utilise de la même façon que exp. Les options sont plus

nombreuses.● Il est possible d'importer les données d'un schéma dans un autre ( alice → scott )● Editer un fichier de paramètres● vi $HOME/scott.param.imp

userid=system/manager11@red

buffer=1000000

file=$HOME/alice.dmp

log=$HOME/scott.imp.log

fromuser=alice

touser=scott

● Lancer l'import● imp parfile=$HOME/scott.param.imp

● Tester en se connectant scott la présence de la table personne.

Page 427: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Data Pump● Remplace exp/imp depuis la 10g. Datapump est incompatible

avec exp/imp.● Un fichier exporté avec exp doit être importé avec imp et réciproquement.● Trois éléments

● Package dbms_datapump● Package dbms_metadata● Clients expdp et impdp

● Modes export et import● Complet● Schéma● Table● Tablespace

● Privilèges de l'utilisateur● exp_full_database● imp_full_database

● Demande un objet Oracle DIRECTORY

Page 428: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Mise en place Data Pump

● Créer un répertoire pour Data Pump● mkdir /u01/app/oracle/oradata/RED/dpump

● Créer un utilisateur dédié● SQL> create user dp identified by dp ;● SQL> grant connect,resource, imp_full_database,exp_full_database to dp ;

● Créer l'objet DIRECTORY● SQL> create directory dpump as '/u01/app/oracle/oradata/RED/dpump' ;

● Droit lecture et écriture sur l'objet DIRECTORY à l'utilisateur dédié● SQL> grant read, write on directory dpump to dp ;

Page 429: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Remise en etat des données SCOTT

● Pour la suite des manipulations en raison des modifications faites sur les tables de SCOTT, récréer celles-ci en relançant le script createscott.sql

● Si perdu, le charger ainsi :● wget http://192.168.4.224/createscott.sql

● Lancement● sqlplus system/manager11@red @createscott.sql

Page 430: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Export Data Pump

● Créer un fichier de paramètres● vi $HOME/scott.dpexp● directory=dpumpdumpfile=scott.dpumplogfile=scott.dpexp.logschemas=scott

● Lancement de l'export● expdp dp/dp@red parfile=$HOME/scott.dpexp

● Résultats visibles sous /u01/app/oracle/oradata/RED/dpump

Page 431: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Import Data Pump

● Supprimer le user scott● sqlplus system/manager11@red● SQL> drop user scott cascade ;● SQL> exit;● Créer un fichier de paramètres

● vi $HOME/scott.dpimp● directory=dpumpdumpfile=scott.dpumplogfile=scott.dpimp.logschemas=scott

● Lancement de l'import● impdp dp/dp@red parfile=$HOME/scott.dpimp

● Voir le log sous /u01/app/oracle/oradata/RED/dpump

Page 432: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Import Data Pump avec transfert de schéma et filtre

● Créer un utilisateur blake● SQL> create tablespace data_blake datafile '/u01/app/oracle/oradata/RED/data_blake_01.dbf' size 5M ;

● SQL> create temporary tablespace temp_blake tempfile '/u01/app/oracle/oradata/RED/temp_blake_01.dbf' size 2M ;

● SQL> create user blake default tablespace data_blake temporary tablespace temp_blake identified by mortimer ;

● SQL> grant connect,resource to blake ;

Page 433: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Créer un fichier de paramètres

● vi $HOME/blake.dpimp

directory=dpumpdumpfile=scott.dpumplogfile=blake.dpimp.logtable_exists_action=replaceschemas=scottquery=scott.emp:"where SAL < 1500"exclude=table:"in('BONUS','SALGRADE')"remap_schema=scott:blake

● Les noms de colonnes et de tables doivent être en majuscules sinon les clauses exclude et query ne fonctionnent pas ( bug ? )

● Lancement de l'import● impdp dp/dp@red parfile=$HOME/blake.dpimp

● Voir le log sous /u01/app/oracle/oradata/RED/dpump● Se connecter blake/mortimer et vérifier la présence des tables et des données.

Page 434: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principe du database link● Permet d'accéder à un objet ( table, vue,...)

situé dans une autre base de données que celle où on est connecté.

● Dans cet exemple un utilisateur connecté sur BLACK souhaite accéder à la table personne de alice située sur RED.

REDPERSONNE

BLACK

select * from personne@lien ;

lien

le database link lien utilisela chaine Oracle*Net RED

Page 435: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Database Link

RED RED

Serveur LX-4-20 Serveur LX-4-21

tnsname.ora :REDRED_LX-4-21

tnsname.ora :REDRED_LX-4-20

● Base RED sur serveur lx-4-20

● SQL> create public database link lien1 connect to dp identified by dp using 'RED_LX-4-21';

● Base RED sur serveur lx-4-21

● SQL> create public database link lien1 connect to dp identified by dp using 'RED_LX-4-20';

Page 436: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Import Data Pump par DBLink

● Permet d'éviter le fichier export intermédiaire● Utilise le réseau et la couche Oracle*NET● Détruire les tables du user blake.● Créer un fichier de paramètres

● vi $HOME/scott_blake.dpimp● directory=dpumpnetwork_link=lien1logfile=scott_blake.dpimp.logschemas=scottexclude=table:"in('BONUS','SALGRADE')"remap_schema=scott:blake

● Lancement de l'import● impdp dp/dp@RED parfile=$HOME/scott_blake.dpimp

Page 437: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Imp/Exp - Datapump

● Il faut noter que l'export soit par exp soit par datapump est toujours plus rapide que l'action d'import.

● Les index ne sont jamais exportés, seules leurs définition l'est.

● Lors de l'import les index sont donc recréés.● En pratique on observe qu'un export durant

1heure, demande 3 heures d'import.● Les statistiques doivent toujours être recalculées

après un import.

Page 438: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

SQL*Loader

● Intégration de données depuis un fichier plat

SQL*LoaderFichier Log

Fichierbad

Fichierdiscard

Base dedonnées

Fichier dedonnées

Fichiercontrôle

Page 439: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Fonctionnement de SQL*Loader

● En entrée, SQL*Loader prend un fichier de contrôle qui pilote le chargement, et un ou plusieurs fichiers de données ASCII.

● En sortie, SQL*Loader alimente la base de données Oracle et génère un fichier journal (log), un fichier des rejets (bad - données erronées) et un fichier des refus (discard - données écartées).

● Pour des petits volumes, les données peuvent être directement incluses dans le fichier de contrôle.

● Le fichier discard contient des enregistrements qui ont été refusés (écartés) par SQL*Loader car ils ne respectaient pas des conditions spécifiées dans le fichier de contrôle.

● Le fichier bad contient des enregistrements qui ont été rejetés soit par SQL*Loader (format de l’enregistrement non valide par rapport à la description du fichier de contrôle), soit par Oracle (violation d’une contrainte d’intégrité, type de données non valide, etc.).

● Les enregistrements rejetés ou refusés sont écrits tels quels dans les fichiers bad et discard qui ont donc, la même structure que les fichiers de données utilisés en entrée ; après correction éventuelle des enregistrements, les fichiers bad et discard peuvent être utilisés comme fichiers d’entrée.

Page 440: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Table d'interface

● Récupérer le fichier csv via le lien suivant● wget http://192.168.4.224/ORA/agent.csv

● Créer une table recevant les données en se connectant alice/ecila@red● SQL> create table agent ( code varchar2(15), matr varchar2(15), titre varchar2(15), nom varchar2(50), adr1 varchar2(50), adr2 varchar2(50), codpst varchar2(10), ville varchar2(50)) ;

Page 441: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Création du fichier de contrôle

● vi $HOME/agent.ctl

● LOAD DATA INFILE '$HOME/agent.csv'TRUNCATEINTO TABLE ALICE.AGENTFIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'TRAILING NULLCOLS(  CODE,  MATR,  TITRE,  NOM,  ADR1,  ADR2,  CODPST,  VILLE)

Page 442: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Lancement du chargement

● Création d'un fichier de paramètres● vi $HOME/agent.load

● userid=system/manager11@redcontrol=$HOME/agent.ctldiscard=$HOME/agent.discardbad=$HOME/agent.badlog=$HOME/agent.log

● sqlldr parfile=$HOME/agent.load

Page 443: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Accélerer le chargement SQL*Loader

● Si le chargement ne demande pas de commit régulier il est possible d'utiliser le mode direct.

● Modifier le fichier $HOME/agent.load et ajouter juste la ligne suivante :● direct=y

● Relancer le chargement.● sqlldr parfile=$HOME/agent.load

Page 444: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Installation d'un patch● Dans l'exemple présenté le patch 8670579 va être installé. Ce patch corrige,

entre autre, DBCA sous processeur AMD.● Récupérer le patch

● wget http://192.168.4.224/ORA/p8670579_112010_LINUX.zip

● En étant connecté oracle, le décompresser et se positionner sous le répertoire créé.● unzip p8670579_112010_LINUX.zip● cd 8670579

● Vérifier les pré-requis du patch● $ORACLE_HOME/OPatch/opatch prereq

● Vérifier les actions du patch● $ORACLE_HOME/OPatch/opatch query

● Installer le patch par la commande opatch apply● $ORACLE_HOME/OPatch/opatch apply

● La commande suivante permet de voir l'installation du patch.● $ORACLE_HOME/OPatch/opatch lsinv

Page 445: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Créer un fichier délimité

● Créer un fichier agent.sql contenant les lignes ci-dessousset feedback offset linesize 300set verify offset heading offset pagesize 0set trimspool offset termout offset colsep '|'spool '$HOME/agent.txt'select * from agent;spool offexit;

● Lancer le script ainsi● sqlplus -s alice/ecila@red @agent.sql● L'option -s correspond au mode silence de sqlplus, bien mettre exit en fin de

script car sinon l'écran semble figé.

Page 446: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Activer le mode autotrace

● Cette fonctionnalité est très pratique afin de visualiser rapidement les ressources et le plan d'exécution d'une requête.

● Le rôle plustrace doit être activé dans la base et affecté à l'utilisateur. Ce qui n'est pas fait par défaut.

● Création du rôle plustrace

● sqlplus sys/manager11@red as sysdba● SQL> sta $ORACLE_HOME/sqlplus/admin/plustrce.sql● SQL> grant plustrace to scott;

● L'utilisateur scott peut maintenant utiliser set autotrace on

Page 447: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple autotrace

● Se connecter SCOTT● sqlplus scott/tiger@red● SQL> alter table emp add primary key ( empno );● SQL> alter table dept add primary key ( deptno );● SQL> set linesize 150;● SQL> set autotrace on● SQL> select empno,ename,job,dept.deptno,dname

from emp,dept where emp.deptno=dept.deptno;● SQL> set autotrace off;

Page 448: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple de plan d'exécution

Page 449: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Mise en place de l'Explain Plan

● Permet de connaître le plan d'exécution d'une requête.

● Fonction redondante avec set autotrace on● Nécessaire pour récupérer le plan d'exécution

dans les traces → tkprof● Demande la création d'une table :● sqlplus alice/ecila@red● SQL>@?/rdbms/admin/utlxplan.sql● Doit être fait sous le compte de l'utilisateur.

Page 450: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Analyse de la requête

● SQL> explain plan for select * from personne ;● Exploitation● SQL>@?/rdbms/admin/utlxpls

Page 451: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

SQL trace et TKPROF● Activation au sein d'une session, possible ● au niveau de l'instance mais ralenti

notablement les performances.● Collecte les instructions SQL● Génère une trace mise en forme par TKPROF

SQL Trace

BD

Fichiertrace

TKPROF

SQL Trace

Fichierd'état

Stocké sous le répertoireadr ( $ORACLE_BASE/diag/... )

Page 452: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Activer le mode trace

● L'utilisateur doit disposer du privilège alter session● SQL>connect system/manager11@red● SQL>grant alter session to scott ;● SQL>connect scott/tiger@red● SQL>alter session set sql_trace=true ;● SQL>select empno,ename,job,dept.deptno,dname from emp,dept

where emp.deptno=dept.deptno;● SQL>alter session set sql_trace=false ;● SQL>exit;● La trace est dans $ORACLE_BASE/diag/rdbms/red/RED/trace● Il s'agit en général du dernier fichier créé → utiliser la commande ls

-rtl.

Page 453: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Mise en forme TKPROF

● Transient Kernel PROfile● cd $ORACLE_BASE/diag/rdbms/red/RED/trace

● tkprof red_ora_3107.trc $HOME/trace.txt sys=no

● La clause sys=no permet d'exclure les requêtes internes Oracle ( mais pas toutes ).

● Le nom du fichier trace est certainement différent.

● Editer le fichier $HOME/trace.txt pour exploiter le résultat.

Page 454: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Résultat mise en forme TKPROF

Page 455: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Annexes

Page 456: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Result Cache

● Stocke le résultat d’une requête SQL ou d’une fonction PL/SQL.

● Réutilisation directe d’un résultat sans avoir à ré-exécuter l’instruction.

● Le temps de réponse est proche de 0.

● Le Result Cache est un sous pool de la Shared Pool.

● Les requêtes ou fonctions adaptées à l’exploitation de cette fonctionnalité sont celles travaillant sur de nombreuses lignes pour retourner un résultat peu volumineux.

● Cette fonctionnalité peut s’appliquer à des sous-interrogations.

Page 457: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Conditions d'utilisation

● Les données de la table n’ont pas changé, pas de mise à jour

● La fonctionnalité soit activée (hint, paramètre, attribut de la table)

● La requête ne fait pas référence à des éléments contextuels ( sysdate par exemple ) ou temporaires.

● Le résultat soit encore en cache

Page 458: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Non utilisation du result cache

● Le cache de résultat est désactivé pour les requêtes contenant :● des tables temporaires● des tables systèmes● des séquences CURRVAL et NEXTVAL● les fonctions SYSDATE, CURRENT_DATE, SYS_GUID● DML ou DDL sur des bases distantes

● Le cache de résultat ne libère pas automatiquement la mémoire, il augmente jusqu'à son maximum.

● La procedure DBMS_RESULT_CACHE.FLUSH purge la mémoire.● Avec les variables bindées, le cache de résultat n'est découvert

qu'avec les mêmes valeurs pour les variables.

Page 459: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Paramètres de l'instance

● RESULT_CACHE_MODE● MANUAL, valeur par défaut, spécifier le hint "result_cache"● FORCE, tous les résultats seront stockés en cache, si conditions respectées.

● RESULT_CACHE_MAX_SIZE● Défini la taille du cache● Désactive le cache de résultat si positioné à 0● Par défaut il dépend d'autres paramètres mémoire

– 0.25% de memory_target – 0.5% de sga_target – 1% de share_pool_size, ne peut pas dépasser 75% du shared_pool

● RESULT_CACHE_MAX_RESULT● Définie la taille maximum pour un seul résultat● Défaut à 5%, paramètre au niveau system ou session

● RESULT_CACHE_REMOTE_EXPIRATION● Défini le temps d'expiration du cache qui dépend d'objets distants → DBlink● Défaut à 0 → ne doit pas être utilisé sur des objets distants.

Page 460: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Utilisation d'un hint

● Utiliser le Result Cache ● /* + RESULT_CACHE */● Select /* + result_cache */ ename, dname from emp, dept

where emp.deptno=dept.deptno ;

● Ne pas utiliser le Result Cache● /* + NO_RESULT_CACHE */● Select /* + no_result_cache */ ename, dname from emp,

dept where emp.deptno=dept.deptno ;● Utile si RESULT_CACHE_MODE=FORCE et souhait de ne

pas utiliser le result_cache.

Page 461: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Caractéristique de la table

● Une table peut systématiquement utiliser le résult cache● CREATE TABLE….RESULT_CACHE (MODE

{ DEFAULT | FORCE } ) ● ALTER TABLE….RESULT_CACHE (MODE

{ DEFAULT | FORCE } )

Page 462: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Vues utiles

● V$RESULT_CACHE_STATISTICS● statistiques sur l'usage des caches et de la mémoire

● V$RESULT_CACHE_MEMORY● Blocks mémoire et statistiques associées

● V$RESULT_CACHE_OBJECTS● Objets, caches de résultats et dépendances, avec leur attribut

● V$RESULT_CACHE_DEPENDENCY● Détails des liens entre caches de résultats et leurs dépendance

● Consulter le contenu du Result Cache :● SQL> SELECT type, status, name, object_no, row_count,row_size_avg

FROM v$result_cache_objects ORDER BY 1;

Page 463: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

DBMS_RESULT_CACHE

● Status du Cache● SELECT DBMS_RESULT_CACHE.STATUS FROM DUAL;

● Rapport sur l'usage du cache de résultat● EXECUTE DBMS_RESULT_CACHE.MEMORY_REPORT;

● Vidange de tous les caches de résultat● EXECUTE DBMS_RESULT_CACHE.FLUSH;

● Invalidation des caches de résultat spécifiques● EXECUTE DBMS_RESULT_CACHE.INVALIDATE('EMP','DEPT');

● Le lien Internet suivant contient une bonne présentation d'un cas avec le result cache.● http://blog.arkzoyd.com/2012/10/fonctions-result-cache-en-action.html

Page 464: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Result Cache et outils décisionnels

● Les requêtes décisionnelles profitent le plus du result cache.

● Certains outils décisionnels, Cognos, Business Object, Microstrategy..., disposent de leur propre cache. Le result_cache peut-il être interressant ?

● Le cache applicatif est souvent limité au périmètre de la requête (les prédicats d'interrogation et de sécurité permettant de déterminer ce périmètre).

● Lorsque l'on souhaite un cache plus étendu coté application, il s'agit souvent d'options

● Pour profiter du result_cache comme un cache plus large que les caches applicatifs classiques, il est intéressant de passer par des vues incorporant le hint /*+result_cache*/ et d'utiliser ces vues dans le catalogue ou l'univers.

Page 465: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Mise à jour

● Arrêter la base de données● Installer la mise à jour, par exemple 11.2.0.3● Démarrer la base en mode mount et la passer en mode upgrade.

● SQL> startup mount;● SQL> alter database open upgrade;● SQL> @?/rdbms/admin/catupgrd.sql;

● Tester ensuite la mise à jour correcte● SQL> select comp_name, version from dba_registry;COMP_NAME                                  VERSION

­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ ­­­­­­­­­­­­­­­­­­

Oracle Database Catalog Views              11.2.0.3.0

Oracle Database Packages and Types         11.2.0.3.0

● Il peut y avoir plus de lignes sur cette requête.● Relancer le script catupgrd.sql si les versions sont différentes.

Page 466: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Outils système utiles

● Bien que le database control donne de bonnes indications sur la santé de la base, il est intéressant de connaître des outils Linux basiques. Il permettent très rapidement de déceler un problème disque, processeur, mémoire ou noyau.

● Les chiffres dans les commandes suivantes indiquent pour le premier le temps en secondes entre deux mesures, le second le nombre de mesures.

● La commande sar :● sar -u 5 10 → donne des informations sur l'utilisation du processeur.● sar -d 5 5 → donne des informations sur l'utilisation des disques.

● La commande vmstat● vmstat 5 5 → donne des informations sur la pagination.

● La commande ipcs donne des informations sur les paramètres noyau, notamment les sémaphores.

Page 467: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple sur imp● Les exemple suivants montrent l'activité d'un serveur Oracle lors d'un import de données● Commande sar -d 5 5● On distingue nettement l'utilisation du disque ( dev8-0 ) et des partitions 5,6 et 13Moyenne:          DEV       tps  rd_sec/s  wr_sec/s  avgrq­sz  avgqu­sz     await     svctm     %util

Moyenne:       dev8­0    155,54   2635,67   2339,94     31,99      0,98      6,29      5,87     91,35

Moyenne:       dev8­1      0,00      0,00      0,00      0,00      0,00      0,00      0,00      0,00

Moyenne:       dev8­2      0,00      0,00      0,00      0,00      0,00      0,00      0,00      0,00

Moyenne:       dev8­3      0,80      0,24      2,32      3,20      0,01     10,10      2,60      0,21

Moyenne:       dev8­4      0,00      0,00      0,00      0,00      0,00      0,00      0,00      0,00

Moyenne:       dev8­5      6,60      0,64    655,10     99,39      0,02      2,33      2,32      1,53

Moyenne:       dev8­6    139,74   2633,51    911,00     25,36      0,94      6,71      6,42     89,68

Moyenne:       dev8­7      0,00      0,00      0,00      0,00      0,00      0,00      0,00      0,00

Moyenne:       dev8­8      0,00      0,00      0,00      0,00      0,00      0,00      0,00      0,00

Moyenne:       dev8­9      0,00      0,00      0,00      0,00      0,00      0,00      0,00      0,00

Moyenne:      dev8­10      0,64      0,32      5,76      9,50      0,00      6,50      2,12      0,14

Moyenne:      dev8­11      0,16      0,32      0,96      8,00      0,00      9,25      8,75      0,14

Moyenne:      dev8­12      0,16      0,00      2,88     18,00      0,00      5,00      5,00      0,08

Moyenne:      dev8­13      7,44      0,64    761,94    102,54      0,01      1,38      1,37      1,02

Moyenne:      dev8­16      0,00      0,00      0,00      0,00      0,00      0,00      0,00      0,00

Moyenne:      dev8­17      0,00      0,00      0,00      0,00      0,00      0,00      0,00      0,00

Page 468: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple sur imp suite

● La commande sar -u 5 5● Ici encore le système I/O est fortement solicité.

18:49:59          CPU     %user     %nice   %system   %iowait    %steal     %idle

18:50:04          all      2,90      0,00      0,50     47,15      0,00     49,45

18:50:09          all      4,50      0,00      0,90     44,86      0,00     49,75

18:50:14          all      4,20      0,00      0,70     45,25      0,00     49,85

18:50:19          all      4,40      0,00      0,60     45,60      0,00     49,40

18:50:24          all      4,40      0,00      0,60     45,15      0,00     49,85

Moyenne:          all      4,08      0,00      0,66     45,60      0,00     49,66

Page 469: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Exemple sur imp suite et fin

● La commande vmstat 5 5● Cette commande confirme que l'activité

système est actuellement sur le disque, ce qui est normal pour une importation de données.procs ­­­­­­­­­­­memory­­­­­­­­­­ ­­­swap­­ ­­­­­io­­­­ ­­system­­ ­­­­­cpu­­­­­­

 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

 0  1  19204  13900   3952 803844    7    9  3508  3385  580  512 13  3 39 44  0

 0  1  19204  13816   3980 803916    0    0  1493  1155 1148  375  5  1 50 45  0

 0  1  19200  13600   3980 804284    0    0  1680  1409 1149  414  5  1 50 44  0

 1  1  19200  14292   4000 805316    0    0  1307  1080 1162  410  4  1 50 45  0

 0  1  19200  14168   3988 805408    0    0  1390  1034 1168  421  4  1 50 45  0

Page 470: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Configuration à 2 listeners

● Le principe général est d'affecter RED à LSNR1 et BLACK à LSNR2.

● RED est accessible via le port 1521 alors que BLACK l'est via le port 1522 en TCP/IP.

● Stopper le listener actuel.● lsnrctl stop

● Il faut dans un premier temps modifier le fichier $ORACLE_HOME/network/admin/listener.ora afin de créer 2 listeners distincts : ● LIST1● LIST2

Page 471: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Principe

client

client

client

client

client

LIST1

LIST2

RED

BLACK

TCP/IP1521

TCP/IP1522

Page 472: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

listener.ora

LIST1 =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = lx-4-20)(PORT = 1521))

)

)

ADR_BASE_LIST1 = /u01/app/oracle

LIST2 =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = lx-4-20)(PORT = 1522))

)

)

ADR_BASE_LIST2 = /u01/app/oracle

Page 473: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Alias listener

● Ensuite ajouter dans $ORACLE_HOME/network/admin/tnsnames.ora des alias vers ces deux listeners.

● Ce sont ces alias qui serviront pour le paramètre LOCAL_LISTENER.

Page 474: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

tnsnames.ora

LSNR1 =

(DESCRIPTION =

(ADDRESS_LIST =

( ADDRESS = ( PROTOCOL = TCP ) ( HOST = lx-4-20 )( PORT = 1521))

)

)

LSNR2 =

(DESCRIPTION =

(ADDRESS_LIST =

( ADDRESS = ( PROTOCOL = TCP ) ( HOST = lx-4-20 )( PORT = 1522))

)

)

Page 475: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Démarrage listener

● Redémarrer les deux listeners● lsnrctl start list1● lsnrctl start list2

● Activer sur chaque instance le paramètre LOCAL_LISTENER● export ORACLE_SID=RED● sqlplus "/ as sysdba"● SQL> alter system set local_listener='LSNR1' scope=both● SQL> alter system register ;● SQL> exit;● export ORACLE_SID=BLACK● sqlplus "/ as sysdba"● SQL> alter system set local_listener='LSNR2' scope=both● SQL> alter system register ;● SQL> exit;

Page 476: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Bibliographie● En français, un bon ouvrage est

celui des éditions ENI ( très orienté Windows et Database Control )

● http://www.editions-eni.fr● Les meilleurs livres sinon sont en

anglais et tout particulièrement les manuels SYBEX pour la certification OCA et OCP.

● Ils comportent le livre, sa version PDF et un QCM très complet.

● http://www.sybex.com

Page 477: Oracle 11g - ADMINISTRATIONdoc.callmematthi.eu/static/webArticles/Oracle 11g Administration.pdf · Erik Jourdain DBA Oracle Administration et Optimisation Linux Debian, RedHat Cluster

Sites Web

● En français● http://www.oracle-wiki.net/● http://blog.arkzoyd.com/● http://www.silverlake.fr

● En anglais● http://www.dba-village.com● http://www.akadia.com● http://www.dba-oracle.com● http://www.oracle.com/pls/db112/homepage