You are on page 1of 466

Oracle11g

Administration

OlivierHEURTEL

Rsum
Ce livre sur Oracle 11g sadresse tout informaticien dsireux de matriser les tches dadministration des bases de donnes Oracle. Aprs une prsentation gnrale de larchitecture interne dun serveur Oracle (mmoire, processus), ce livre dtaille les diffrentes tches dadministration dune base de donnes : installation (sous Windows et sous Linux), configuration Oracle Net, cration dune nouvelle base de donnes, gestion de la mmoire, gestion du stockage, gestion des utilisateurs et des droits, sauvegardes et restaurations avec RMAN (Recovery Manager). Une attention particulire est apporte aux nouvelles fonctionnalits dOracle 11g qui facilitent le travail de ladministrateur : rglage automatique de la mmoire, rfrentiel de Diagnostique Automatique, mots de passe sensibles la casse, rtrcissement dun tablespace temporaire gr localement, nouvelle ergonomie de Oracle Entreprise Manager Database Control, etc. Louvrage contient de nombreux conseils pratiques et recommandations et prsente les solutions qui peuvent tre apportes aux problmes les plus courants. Des exemples de scripts sont en tlchargement sur cette page.

L'auteur
Aprs plus de huit ans passs en socit de service, o il a successivement occup les postes de dveloppeur, chef de projet puis directeur de projet, Olivier Heurtel a dmarr une activit de consultant/formateur indpendant spcialis sur les bases de donnes (Oracle), le dveloppement Web (PHP) et les systmes dcisionnels. Olivier Heurtel est certifi Oracle Certified Professional et cet ouvrage est le fruit de l'exprience acquise au cours de nombreuses prestations de mise en uvre de bases Oracle en entreprise.

Ce livre numrique a t conu et est diffus dans le respect des droits dauteur. Toutes les marques cites ont t dposes par leur diteur respectif. La loi du 11 Mars 1957 nautorisant aux termes des alinas 2 et 3 de larticle 41, dune part, que les copies ou reproductions strictement rserves lusage priv du copiste et non destines une utilisation collective, et, dautre part, que les analyses et les courtes citations dans un but dexemple et dillustration, toute reprsentation ou reproduction intgrale, ou partielle, faite sans le consentement de lauteur ou de ses ayants droit ou ayant cause, est illicite (alina 1er de larticle 40). Cette reprsentation ou reproduction, par quelque procd que ce soit, constituerait donc une contrefaon sanctionne par les articles 425 et suivants du Code Pnal. Copyright Editions ENI

ENI Editions - All rights reserved - Algeria Educ

- 1-

Installationduserveur
1.Introduction
LinstallationdOraclesurunserveurncessiteunebonnecomprhensiondelarchitectureOracleetdescomptences minimales sur le systme dexploitation ces comptences sont rduites au strict minimum pour la plateforme Windowsmaissontunpeuplusavancespourlesautresplatesformes. Danstouslescas,ilestimpratifdeserfrerladocumentationOraclespcifiquelaplateforme :
q

OracleDatabaseInstallationGuidefor... OracleDatabaseQuickInstallationGuidefor... OracleDatabaseReleaseNotesfor...

La documentation "Quick Installation Guide" dcrit comment installer rapidement Oracle en utilisant des options par dfaut.Cettedocumentationestengnralsuffisantepourunepremirepriseenmain. Lobjectifdecechapitreestdeprsenterlesprincipalestapesetoptionsdelinstallation,enselimitantauxplates formesWindowsetLinux(enloccurrenceRedHatEnterpriseLinux4) cechapitrenapasvocationremplacerles manuels dinstallation fournis par Oracle. Par ailleurs, louvrage dans son ensemble apporte les comptences sur larchitectureOraclencessaireslacomprhensiondesdiffrentesphasesdelinstallation. Sur OTN (Oracle Technology Network : http://www.oracle.com/technology/index.html), moyennant une inscription gratuite au site, vous pouvez tlcharger les produits Oracle des fins de dveloppement ou dvaluation.

Sur Metalink (site du support Oracle : https://metalink.oracle.com/), vous pouvez trouver des notes dinstallation prcises, jour, pour chaque version dOracle, chaque systme dexploitation et chaque architecture(32/64bits)nhsitezpaslesconsulter.

2.Principalestapesdelinstallation
InstallerOraclesurunserveurcomportetroisgrandesphases :
q

prinstallation :prparerlesystmedexploitation installation :installerlesproduitsOracle postinstallation :terminerlinstallationetconfigurercertainscomposantsOracle.

SurplateformeWindows,laphasedeprinstallationestrduiteaustrictminimum :
q

vrifierlesprrequislogicielsetmatriels seconnecterentantquemembredugroupeAdministrateur.

Surplateforme Unix ou Linux, la phase de prinstallationcomporteparcontre,plusieurstapes.Danslesgrandes lignes,lestapessontlessuivantes :


q

vrifierlesprrequislogicielsetmatriels configurerlenoyau(smaphores,mmoirepartage...) crerlesrpertoiresncessaires

ENI Editions - All rights reserved - Algeria Educ

- 1-

crerungroupeetuncompteappartenantcegroupe.

Linstallation des produits Oracle seffectue avec lapplicationOracle Universal Installer cet installeur est "universel" danslamesureoilestidentique(peudechosesprs)surlesdiffrentesplatesformesetestutilispardiffrents produitsOracle(serveur,client,etc.). OracleUniversalInstallerpermet :
q

de choisir le type dinstallation : Enterprise Edition, Standard Edition, Personal Edition (plateformeWindows uniquement)personnalis de crer une base de donnes de dpart avec diffrentes options de configuration pour le stockage, ladministration,lasauvegarde,etc.

lissuedecettephase,sivousoptezpouruneinstallationavecbasededonnes,vousdevriezavoir :
q

unebasededonnesdedpartlance uneconfigurationOracleNetpardfautavecunprocessusdcoute(listener)lanc OracleEnterpriseManagerDatabaseControletlancetaccessiblelaidedunnavigateur

Laphasedepostinstallationconsisteessentiellement :
q

tlchargeretappliquerdventuelspatchsOracle recompilerlesmodulesPL/SQLinvalides configurercertainscomposantsOracle(OracleNet,etc.) installerdesproduitssupplmentaires configurerlenvironnementdetravail configurer le dmarrage et larrt automatiques des diffrents composants Oracle (base de donnes, processusdcoute,etc.).

Sur plateforme Windows, si vous optez pour une installation avec base de donnes de dpart, Oracle UniversalInstallercreautomatiquementlesservicesassocisauxdiffrentscomposantsetlesconfigureen dmarrage automatique si linstallation seffectue sans base de dpart, ces services doivent tre crs et configursultrieurement.SurplateformeLinuxouUnix,lesservicesdoiventtreexplicitementcrsetconfigurs parladministrateurdusystmedexploitation. Les diffrentes phases de linstallation sont dcrites ciaprs. Ensuite, nous verrons comment configurer lenvironnementdetravailetconfigurerledmarrageetlarrtautomatiquesdesdiffrentscomposantsOracle. Avant cela, nous prsenterons le standard Optimal Flexible Architecture (OFA). OFA est un ensemble de recommandationssurlarborescenceetlenommagedesfichiersduserveur,destinesfaciliterladministrationdes produitsOracle. Avanttouteinstallation,ilestconseilldesauvegarderleslmentscritiquesventuellementprsentssurle serveur(basesOracleduneautreversiondOracle,autresproduits).

3.OptimalFlexibleArchitecture(OFA)
a.Principesgnraux

- 2-

ENI Editions - All rights reserved - Algeria Educ

OFA est un ensemble de recommandations sur larborescence et le nommage des fichiers du serveur, destines faciliterladministrationdesproduitsOracle. UndespointslesplusintressantsdustandardOFAestdeclairementsparerleproduitOracle,lesfichiersrelatifs ladministration et les fichiers des bases de donnes, en tenant compte de la possibilit davoir plusieurs versions dOracleet/ouplusieursbasessurleserveur. Lesrecommandationsvarientlgrementselonlaplateforme(voirladocumentation"OracleDatabaseInstallation Guide"devotreplateforme). OracleUniversalInstallerestcompatibleOFAetproposeunearborescencepardfautquirespectecestandard. DanslestandardOFA,deuxrpertoiresjouentunrleparticulier :lesrpertoiresOracleBaseetOracleHome. LerpertoireOracleBaseestlerpertoireracinedelarborescenceOracle. LerpertoireOracleHomeestunsousrpertoiredurpertoireOracleBasequicontientlelogicielOracleproprement dit,pouruneversiondonne.DansunrpertoireOracleBase,ilestpossibledavoirplusieursrpertoiresOracleHome correspondantchacununecertaineversiondunproduitOracledonn(serveurdebasededonnes,client,serveur dapplication,etc.). Dans des configurations avances, il est possible davoir plusieurs rpertoires Oracle Base, pour installer plusieursproduitsOraclesurdesdisquesdiffrents. Chaque rpertoire Oracle Home est, par ailleurs, identifi par un nom, par dfaut sous la formeOraDb11g_homeN, N tantunnumrodordre. Sur plateforme Windows, les emplacements de ces deux rpertoires sont dfinis dans des entresde la base de registre (dans HKEY_LOCAL_ MACHINE\SOFTWARE\ORACLE\KEY_nom, nom tant le nom du Oracle Home). Sur plateforme Linux ou Unix, les emplacements de ces deux rpertoires sont gnralement dfinis dans des variables denvironnementORACLE_BASEetORACLE_HOMEducomptedanslequelOracleestinstall. SurplateformeWindows,depuislaversion11,lesrecommandationssontlessuivantespourcesdeuxrpertoires : OracleBase X:\app\compte, X tant un lecteur de disque et compte le nom du compte utilis pour linstallation. Exemple : d:\app\oracle OracleHome ORACLE_BASE\product\v.v.v\type_n, ORACLE_BASEdsignantlerpertoireOracleBase, producttantuneconstante indiquant que les produits sont ici, v.v.v le numro de version du produit, type le type de produit (db pour un serveurdebasededonnes,clientpourunclient,etc.)et nunnumrodordredansletype. Exemple :d:\app\oracle\product\11.1.0\db_1 Avantlaversion10,lecheminOracleBasetaitdutypeX:\Oracle(parexempleD:\Oracle)etlecheminOracleHome dutype ORACLE_BASE\OraVV, VV tant le numro de version du produit (par exemple D:\Oracle\Ora92).Lenomdu OracleHometaitdelaformeOraHomeVV(parexempleOraHome92)etlacldelabasederegistredelaformeHOMEn, n tant un numro dordre (par exemple HOME0). Puis en version 10, le chemin Oracle Base tait du type X:\oracle\product\v.v.v et le chemin Oracle Home du type ORACLE_BASE\type_n (cest le chemin Oracle Base qui comportaitlinformationdeversion). Si vous installez Oracle11g sur un systme sur lequel une version prcdente dOracle est installe, linstalleur va conserver lancien chemin du rpertoire Oracle Base et adapter en consquence le chemin OracleHome.Encasdedoute,consultezlesvaleursdanslabasederegistre.

Sur la plateforme Windows, il nest pas habituel de crer un compte spcifique pour installer Oracle. Si vousutilisezlecompteadministrateurdelamachine,vouspouvezmodifierlecheminpropospourOracle Baseparlinstalleuretmettreoracleenguisedecompte. Sur plateforme Unix ou Linux depuis la version 10, les recommandations sont les suivantes pour ces deux rpertoires : OracleBase / pm/ ccc/ compte, pm tant un point de montage dun systme de fichiers (avec p une chane et m un numro dordre),cccunechanequelconqueetcomptelenomducompteutilispourlinstallation.Exemple :/u01/app/oracle

ENI Editions - All rights reserved - Algeria Educ

- 3-

OracleHome ORACLE_BASE/product/v.v.v/type_n,ORACLE_BASEdsignantlerpertoire OracleBase, v.v.vlenumrodeversiondu produit,typeletypedeproduit(dbpourunserveurdebasededonnes,clientpourunclient,etc.)etnunnumro dordredansletype.Exemple:/u01/app/oracle/product/11.1.0/db_1 Avantlaversion10,lesrecommandationstaientlesmmes,maissanslapartie type_ n. Lapartie type_ nducheminOracleHomepermetdinstallerdiffrentsproduitsaveclemmenumrodeversionsous lemmerpertoireOracleBase.Celapermetaussidinstallerplusieursfoislemmeproduit,danslammeversion, souslemmerpertoireOracleBase. EndehorsdurpertoireOracleHome,lerpertoireOracleBaseestdestincontenirquatreautresrpertoires :
q

oradatapourlesfichiersdesbasesdedonnes adminpourlesfichiersdadministrationdesbasesdedonnes cfgtoollogspourlesfichiersjournauxdesassistantsdeconfiguration diagpourleRfrentielduDiagnostiqueAutomatique(AutomaticDiagnosticRepository ADR).

Puisqueplusieursbasessontsusceptiblesdtreprsentessurlesystme,lestandardOFArecommandedecrer unsousrpertoireparbase,portantlenomdelabase(paramtreDB_NAME),danslesrpertoiresoradataetadmin. Exemple :

- 4-

ENI Editions - All rights reserved - Algeria Educ

Surcesdeuxexemples,deuxbases(ORCLetTEST)sontprsentessurlesystme. Les diffrents sousrpertoires du rpertoire dadministration sont prsents dans le chapitre Cration dune nouvellebasededonnes. Encequiconcernelesfichiersdelabasededonnes,lesrecommandationsdenommagesontlessuivantes : Fichierdecontrle control.nn.ctl, nntantunnumrodordre(01,02,etc.). Fichierdejournalisation redonn.log,nntantlenumrodugroupe(01,02,etc.). Fichiersdedonnes tablespacenn.dbf,tablespacetantlenomdutablespaceet nnlenumrodordredufichierauseindutablespace (01,02,etc.).

b.Rpartitiondesfichiersdelabasededonnessurplusieursdisques
Dunemaniregnrale,ilestsouhaitabledesparerlestockagedusystmedexploitation,dulogicielOracleetdes basesdedonnes,chaquestockagepouvanttreauchoixundisque,unvolumelogiqueouunvolumeRAID. Danslecasovouscrezunebasededonnessurdesdisquesquinesontpasorganissenvolumeslogiquesou enRAID,ilestrecommandderpartirlesfichiersdelabasededonnessurdiffrentsdisquesafindamliorerles performancesetlascurit. Vous pouvez donc tre amens utiliser plusieurs rpertoiresoradata situs sur diffrents points de montage ou lecteursdedisque. SelonlarecommandationOFA,cesrpertoires oradatasupplmentairesdoiventtrecrsenrespectantlamme arborescencequelerpertoireoradataprincipal. Exemple: Windows e:\app\oracle\oradata

ENI Editions - All rights reserved - Algeria Educ

- 5-

UnixouLinux /u02/app/oradata/oradata partirdel,selonlessystmesdestockagedisponibles,plusieursorganisationssontdisponibles. Exemple:

Axe
1 2 3

Nature
Disque Disque NdisquesenRAID0+1

Contenu
Systmedexploitation LogicielOracle Fichiersdedonnesdes tablespaces Fichiersdecontrle

4 5

NdisquesenRAID0+1 Disque

Fichiersdejournalisation Fichiersdejournalisation archivs Sauvegardessurdisque

SurplateformeLinuxouUnix,ilestpossibledutiliserleslienssymboliquespourfairecroirequelesfichiers sontsitussousunseulpointdemontagealorsquilssontenfaitrpartissurplusieurs.

Sivouslesouhaitez,vouspouvezadopteruneorganisationOFAnonstandard,dumomentquevousen respectezlaphilosophie(sparationdesproduitsOracle,sparationdesbasesdedonnes).

4.Prinstallation
a.SurplateformeWindows
Seconnecterausystme Oracle doit tre install laide dun compte membre du groupe Administrateur. Si linstallation seffectue sur un serveurcontrleurdedomaine(principalousecondaire),lecomptedoittremembredugroupeAdministrateurde domaine. Dans cet ouvrage, nous supposerons quun compte nomm oracle , membre du groupe Administrateur, a t spcialementcrpourloccasion. Vrifierlesprrequislogicielsetmatriels Oracle11gsupportelessystmesdexploitationWindowssuivants :
q

Windows2000(servicepack1ousuprieur) WindowsServer2003(touteslesditions) WindowsXPProfessional WindowsVista(Business,EnterpriseetUltimate).

Dans cet ouvrage, nous utiliserons une plateforme Windows Server 2003 Entreprise Edition. Linstallation sur les autresplatesformesWindowsestidentique. Lesexigencesmatriellessontlessuivantes :

- 6-

ENI Editions - All rights reserved - Algeria Educ

1Godemmoirephysiqueminimum Ledoubledemmoirevirtuelle 200Modespacetemporaire Environ3GodespacedisquepourlesproduitsOracle Environ2Godespacedisquesupplmentairesivoussouhaitezcrerunebasededonnesdedpartlors delinstallation 256couleurspourlavido.

Sivousnavezque256Modemmoirephysique,vousnaurezpassuffisammentdemmoirepourcrerune basededonnesaucoursdelinstallation vousdevrezcrerlabasededonnesultrieurement(avecune petiteSGA).

b.SurplateformeLinux
Seconnecterausystmeentantquutilisateurroot Lespremirestchesdelaphasedeprinstallationdoiventtreeffectuesentantqueroot . Vrifierlesprrequislogicielsetmatriels Oracle11gsupportelessystmesdexploitationLinuxsuivants :
q

OracleEnterpriseLinux4ouRedHatEnterpriseLinux4(noyau2.6.9) OracleEnterpriseLinux5ouRedHatEnterpriseLinux5(noyau2.6.18) SUSEEnterpriseLinux10(noyau2.6.16.21).

Danscetouvrage,nousutiliseronsuneplateformeRedHatEnterpriseLinux4.Linstallationsurlesautresplates formesLinux(ouUnixengnral)estsimilaire :lesprincipessontlesmmes,maiscertainesvaleursoucertaines commandespeuventdiffrer(reportezvousaumanueldinstallationdevotreplateforme). Pourchaquedistribution,uncertainnombredepackagesdoiventtreinstalls(avecuneversionminimum). ExemplepourRedHatEnterpriseLinux4 : binutils-2.15.92.0.2-18 compat-libstdc++-33.2.3-47.3 elfutils-libelf-0.97-5 elfutils-libelf-devel-0.97-5 glibc-2.3.4-2.19 glibc-common-2.3.4-2.19 glibc-devel-2.3.4-2.19 glibc-headers-2.3.4-2.19 gcc-3.4.5-2 gcc-c++-3.4.5-2 libaio-devel-0.3.105-2 libaio-0.3.105-2 libgcc-3.4.5 libstdc++-3.4.5-2 libstdc++-devel-3.4.5-2 make-3.80-5 sysstat-5.0.5 unixODBC-2.2.11 unixODBC-devel-2.2.11

ENI Editions - All rights reserved - Algeria Educ

- 7-

LescriptsuivantpermetdevrifiercesexigencessurRedHatEnterpriseLinux4 : echo "* Version du noyau" uname -r echo "* Packages" # Liste des packages listePackages=$(cat < _EOF_ binutils libaio libaio-devel gcc gcc-c++ glibc glibc-common glibc-headers glibc-devel libstdc++ libstdc++-devel compat-libstdc++-33 make sysstat elfutils-libelf elfutils-libelf-devel unixODBC unixODBC-devel _EOF_ ) # Recherche les packages et indique si le package est # installe ou pas. for package in $listePackages; do version=$(rpm -q $package --qf "%{version} %{arch}") if [ $? = 0 -a "$version" ] then printf "+ %-25s %-15s %s\n" $package $version else printf "o %-25s %s\n" $package "?" fi done Rsultat : * Version du noyau 2.6.9-67.0.15.ELsmp * Packages + binutils + libaio + libaio-devel + gcc + gcc-c++ + glibc + glibc-common + glibc-headers + glibc-devel + libstdc++ + libstdc++-devel + compat-libstdc++-33 + make + sysstat + elfutils-libelf + elfutils-libelf-devel + unixODBC + unixODBC-devel

2.15.92.0.2 0.3.105 0.3.105 3.4.6 3.4.6 2.3.4 2.3.4 2.3.4 2.3.4 3.4.6 3.4.6 3.2.3 3.80 5.0.5 0.97.1 0.97.1 2.2.11 2.2.11

i386 i386 i386 i386 i386 i686 i386 i386 i386 i386 i386 i386 i386 i386 i386 i386 i386 i386

Lesexigencesmatriellessontlessuivantes :
q

1Godemmoirephysiqueminimum Espace swap : 1,5 fois la mmoire physique si cette dernire fait moins de 2 Go ou gal la mmoire
ENI Editions - All rights reserved - Algeria Educ

- 8-

physiquesicettedernireestcompriseentre2Goet8Go
q

400Modespacetemporaire(/tmp) Environ3,5GodespacedisquepourlesproduitsOracle Environ2Godespacedisquesupplmentairesivoussouhaitezcrerunebasededonnesdedpartlors delinstallation

LescriptsuivantpermetdevrifiercesexigencessurRedHatEnterpriseLinux4 : echo "* Mmoire (Mo)" free -m echo "* Disque" df -h /tmp /u0* Rsultat : * Memoire (Mo) total used free shared buffers Mem: 1010 966 44 0 4 -/+ buffers/cache: 591 419 Swap: 2559 116 2443 * Disque Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 9.9G 2.8G 6.6G 30% / /dev/mapper/VolGroup01-LogVol100 9.9G 5.4G Configurerlenoyau

cached 370

4.0G

58% /u01

Paramtre
semmsl semmns semopm semmni shmall shmmax shmmni file-max ip_local_port_range

Valeur
250 32000 100 128 2097152 lamoitidelammoirephysique 4096 65536 102465000

Fichier
/proc/sys/kernel/sem

/proc/sys/kernel/shmall /proc/sys/kernel/shmmax /proc/sys/kernel/shmmni /proc/sys/fs/file-max /proc/sys/net/ipv4/ip_ local_port_range

rmem_default

4194304

/proc/sys/net/core/ rmem_default

rmem_max

4194304

/proc/sys/net/core/ rmem_max

wmem_default

262144

/proc/sys/net/core/
- 9-

ENI Editions - All rights reserved - Algeria Educ

wmem_default wmem_max 262144 /proc/sys/net/core/wmem_max

LescriptsuivantpermetdevrifiercesparamtressurRedHatEnterpriseLinux4 : listeVariables=$(cat << _EOF_ kernel.shmall kernel.shmmax kernel.shmmni kernel.sem fs.file-max net.ipv4.ip_local_port_range net.core.rmem_default net.core.rmem_max net.core.wmem_default net.core.wmem_max _EOF_ ) for variable in $listeVariables; do sysctl $variable done Rsultat : kernel.shmall = 2097152 kernel.shmmax = 33554432 kernel.shmmni = 4096 kernel.sem = 250 32000 32 128 fs.file-max = 102445 net.ipv4.ip_local_port_range = 3276861000 net.core.rmem_default = 110592 net.core.rmem_max = 131071 net.core.wmem_default = 110592 net.core.wmem_max = 131071 Surcetexemple,lesvaleursengrasnesontpasconformesauxrecommandationsOracle.Siundesparamtresdu noyauaunevaleurinfrieurelavaleurrecommande,vouspouvezditerlefichier/etc/sysctl.confetajouterou modifierdeslignesdeconfigurationdesparamtres : Exempledelignesajoutesdanslefichier : # modifications pour oracle kernel.shmmax = 536870912 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 262144 Pourquelesnouvellesvaleurssoientprisesencompteimmdiatement,excutezlacommandesuivante : sysctl -p Crerlesgroupesetlutilisateur Ensuite,vousdevezcrerdeuxgroupesetuncompteutilisateurquiserautilispourlinstallationetquiseradoncle propritairedeslogicielsOracle. Lors de la premire installation dOracle sur un systme, linstalleur cre un fichier oraInst.loc (dans le rpertoire/etcsousLinux).CefichiercontientlecheminverslerpertoirecontenantlinventairedesproduitsOracle installssurlamachine,ainsiquelenomdugroupeOracleInventory(typiquementoinstall)utilispourprotger laccs au rpertoire dinventaire. La prsence du fichier oraInst.loc permet de dterminer si le groupe Oracle Inventoryexistedj,etderetrouversonnom. Comme indiqu dans le chapitre Les bases de larchitecture Oracle, un groupe particulier (nomm gnriquement

- 10 -

ENI Editions - All rights reserved - Algeria Educ

OSDBA) est utilis pour identifier les comptes utilisateurs qui peuvent se connecter AS lauthentificationparlesystmedexploitation.Traditionnellement,cegroupesappelledba.

SYSDBA en utilisant

Encomplment,ilestpossibledecrerungroupe(traditionnellementnommoper)pourlauthentificationAS SYSOPER(cf.ChapitreLesbasesdelarchitectureOracle). Traditionnellement, le compte utilisateur utilis pour linstallation sappelleoracle il a le groupe Oracle Inventory commegroupeprincipaletlegroupeOSDBAcommegroupesecondaire. Lescommandessuivantespermettentdecrerlesdeuxgroupesetlecomptesilsnexistentpasdj : groupadd oinstall groupadd dba useradd -g oinstall -G dba oracle passwd oracle

Danscetouvrage,leterme compteoracle dsigneralecompteutilispourlinstallationdOracle.Sivous appelezcecompteautrement,adaptezlesexemplesaunomquevousavezchoisi.

Dfinirleslimitesdushellpourlecompteoracle Pouramliorerlesperformancesdulogiciel,vousdevezaugmenterleslimitessuivantespourlecompteoracle : Nombremaximumdedescripteursdefichiersouverts:65535 Nombremaximumdeprocessus:16384 Pouraugmenterceslimites :


s

Ajoutezleslignessuivantesdanslefichier/etc/security/limits.conf: soft hard soft hard nproc nproc nofile nofile 2047 16384 1024 65536

oracle oracle oracle oracle


s

Ajoutezleslignessuivantesdanslefichier/etc/pam.d/login(siellesnexistentpasdj) : required required /lib/security/pam_limits.so pam_limits.so

session session
s

Ajoutezleslignessuivantesdanslefichier/etc/profile(adapterenfonctiondeladistributionetdushellpar dfautdelutilisateuroracle) :

if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi Crerlesrpertoires Pour respecter le standard OFA prsent prcdemment, vous devez crer au minimum le rpertoire parent du rpertoireOracleBase,parexemple/u01/app. VouspouvezutiliserunrpertoireOracleBasedjexistant,dumomentquevousutilisezbienunrpertoire OracleHomediffrent.Noubliezpasquilfautprvoirenviron3,5GopourlesproduitsOracleet2Gopourla basededonnesdedpart. Les commandes suivantes permettent de crer le rpertoire, et de dfinir le propritaire, les groupes et les permissions :

ENI Editions - All rights reserved - Algeria Educ

- 11 -

mkdir -p /u01/app chown -R oracle:oinstall /u01/app/ chmod -R 775 /u01/app/

LesrpertoiresoracleetoraInventoryserontcrsparlinstalleurdanslerpertoireparentdurpertoire OracleBase (/u01/app/surnotreexemple).Lecompteoracledoitdonc,bienavoirdesdroitsdcrituredans cerpertoire,souspeinederecevoiruneerreurlorsdelinstallation. Desrpertoiressupplmentairespeuventtreprvussurdautresdisquespourlabasededonnesetlazonede rcupration rapide (flash recovery area). Le propritaire, les groupes et les permissions doivent tre dfinis lidentiquedupremierrpertoire. Configurerlenvironnementducompteoracle Editezlefichierdedmarragedushelldelutilisateur :

BashShell(bash)surRedHat .bash_profile Bourneshell(sh),Bashshell(bash)surSUSEouKornshell(ksh).profile Cshell(cshoutcsh).login


s

Ajoutezlalignesuivantedanscefichierpourdfinirlesdroitsdaccspardfautdesnouveauxfichiers :

umask 022 Si le rpertoire /tmp ne comporte pas suffisamment despace, vous pourrez dfinir les variables denvironnements TMPetTMPDIRetyindiquerlenomdunrpertoirecontenantsuffisammentdespacelibre.Exemple : TMP=/home/oracle/tmp TMPDIR=/home/oracle/tmp export TMP TMPDIR Seconnecterausystmeentantquutilisateuroracle Pourlasuitedelinstallation,vousdevezvousconnecterentantquutilisateuroracle.

5.InstallationavecOracleUniversalInstaller
a.Vuedensemble
Oracle Universal Installer (OUI) fonctionne de la mme manire, peu de chose prs, sur les diffrentes plates formes. OUIproposedeuxgrandsmodespourlinstallation :
q

Linstallationdebase Linstallationavance.

Linstallation de base permet dinstaller Oracle avec les options standards, en un petit nombre dtapes. Dans ce mode, si vous choisissez de crer une base de donnes de dpart, cette dernire utilisera le systme de fichiers pourlestockageetlemmemotdepasseseraattribuauxcomptesSYS,SYSTEM,SYSMANetDBSNMP. Linstallation avance offre un plus grand contrle sur linstallation, notamment sur les composants installs et la configurationdelabasededonnesdedpart. En rgle gnrale, sauf pour un test rapide, je dissocie linstallation dOracle proprement dite de la cration de la basededonnes.Cetteapprocheprsentedeuxavantages :
q

Aprslinstallationduproduit,maisavantlacrationdelabasededonnes,jepeuxappliquerlesventuels

- 12 -

ENI Editions - All rights reserved - Algeria Educ

patchsapparusdepuislasortieduproduit.
q

LorsdelacrationdelabasededonnesenSQLouaveclassistantConfigurationdebasededonnes,je peuxconfigurerlabasededonnestrsprcismentenfonctiondesbesoins.

Avecunetelleapproche,linstallationdebase,aveccrationounondunebasededonnesdedpart,rpondla majoritdesbesoins.Cestleseulmodedinstallationquiseraprsentdanscetouvrage. Les bases de donnes de dpart dOracle sont intressantes pour avoir rapidement un environnement oprationnel pour le test ou le dveloppement. Par contre, ces bases contiennent un grand nombre de schmas et de fonctionnalits qui ne sont pas forcment utiles pour une base de donnes de production. Cest une raison supplmentaire pour installer Oracle sans crer de base de donnes, puis crer ensuite la base de donnes,laidedelassistantgraphique,oulamain(chapitreCrationdunenouvellebasededonnes). Cettepartieestdoncorganisedelamaniresuivante :
q

b.LancerOracleUniversalInstallersurplateformeWindows c.LancerOracleUniversalInstallersurplateformeLinux d.Installationdebase

IlestpossibledutiliserOracleUniversalInstallerenmodenoninteractifenutilisantunfichierderponse.Il est aussi possible de cloner une installation Oracle Home existante. Pour plus dinformations, consultez la documentation OracleDatabaseInstallationGuide devotreplateforme.

b.LancerOracleUniversalInstallersurplateformeWindows
s

Pour dmarrer linstalleur, lancez lapplication setup.exe qui se trouve sur le mdia utilis pour linstallation (ou danslerpertoiredatabasesivousaveztlchargleproduitsurlesiteOTN).UnefentredelancementdOracle Universal Installer saffiche. Cette fentre vrifie les prrequis puis lance Oracle Universal Installer si les exigencessontvrifies.LapagedaccueildOracleUniversalInstallersaffichealors.

ENI Editions - All rights reserved - Algeria Educ

- 13 -

Pourlinstallationdebase,reportezvouslasectionInstallationdebase.

c.LancerOracleUniversalInstallersurplateformeLinux
Oracle Universal Installer, en mode interactif, doit tre lanc dans un environnement X Window. Vous devez donc dmarrerlinterfacegraphiquedansvotresessionoracle,parexempleaveclacommandestartx. Si laffichage X ne seffectue pas sur le systme sur lequel le produit est install, positionnez la variable denvironnementDISPLAYpourdporterlaffichagesuruneautremachine. Pour dmarrer linstalleur, lancez lapplicationrunInstaller qui se trouve sur le mdia utilis pour linstallation(ou dans le rpertoiredatabasesivousaveztlchargleproduitsurlesiteOTN).Lescriptvrifielesprrequispuis lanceOracleUniversalInstallersilesexigencessontvrifies.LapagedaccueildOracleUniversalInstallersaffiche alors.

- 14 -

ENI Editions - All rights reserved - Algeria Educ

Pourlinstallationdebase,reportezvouslasectionInstallationdebase.

d.Installationdebase
Slectionnerunemthodedinstallation

ENI Editions - All rights reserved - Algeria Educ

- 15 -

LamthodeInstallationdebasepermetdinstallerOracletrsrapidementensaisissantquelquesinformationssur lepremiercran : EmplacementdurpertoiredorigineOracleHome RpertoiredelinstallationdOracle(OracleHome). Typedinstallation Auchoix :EnterpriseEdition,StandardEdition,StandardEditionOneetPersonalEdition(Windowsuniquement). Crerunebasededonnesdedpart(1482MB)supplmentaire Permetdecrerunebasededonnesdetype universel (pourplusdedtails,voirlasectionCrationdelabase dedonneslaidedelassistantgraphiquedanslechapitreCrationdunenouvellebasededonnes). Nomglobaldebasededonnes Nomglobaldelabasededonnessouslaformenom_base[.domaine](parexempleorcl.olivier-heurtel.priv). Motdepassedebasededonnes MotdepassedescomptesSYS,SYSTEM,SYSMANetDBSNMP. SurplateformeLinuxouUnix,loptionGroupeDBAUNIXestproposeenplus :

Cette option permet de choisir le nom du groupe utilis pour identifier les comptes utilisateurs qui peuvent se connecterAS SYSDBAenutilisantlauthentificationparlesystmedexploitation legroupedba,prcdemmentcr ceteffetetaffectlutilisateuroracle,estpropos.
s

SaisissezlesvaleurssouhaitespuiscliquezsurleboutonSuivant.

- 16 -

ENI Editions - All rights reserved - Algeria Educ

Slectionnerlerpertoiredelinventaireetlesinformationsdidentification

CetcranestaffichuniquementsurplateformeLinuxouUnix,lorsdelapremireinstallationdunproduitOracle.Il permetdedfinirlesinformationsrelativesaurpertoiredinventaire(cheminetgroupeayantlaccsencrituresur cerpertoire).Sivousavezbienrespectlestapesdelaphasedeprinstallation,lesvaleursproposesdoivent tre correctes. Le rpertoire dinventaireoraInventory est cr par dfaut dans le rpertoire parent du rpertoire OracleBaseetlenomdugroupedoittreceluidugroupeOracleInventorycrprcdemment(traditionnellement oinstall).
s

Saisissez,sibesoin,lesinformationsdemandesetcliquezsurleboutonSuivant.

Vrificationdeprrequispropresauproduit

ENI Editions - All rights reserved - Algeria Educ

- 17 -

Linstalleurvrifiequelesystmeestcorrectementconfigur.Sivousavezrespectlestapesdelaphasedepr installation,ilnedevraitpasyavoirdeproblme.
s

Silavrificationchoue,slectionnezlaligneconcerneetanalysezlacauseduproblme :

- 18 -

ENI Editions - All rights reserved - Algeria Educ

Sipossible,corrigezleproblmeetrecommencezlavrification(boutonRessayer). Sivouspensezquilnyapasdeproblme,vouspouvezcocherlacase :

Lorsque les vrifications sont termines avec succs, vous pouvez cliquer sur le bouton Suivant pour poursuivre linstallation.Silresteunevrificationavecunchec,uneconfirmationestdemande :

Vouspouvezalorspoursuivrelinstallation,maisvosrisquesetprils. InscriptionOracleConfigurationManager

Cet cran est affich uniquement si une base de donnes de dpart est cre durant linstallation il permet dactiverOracleConfigurationManager. Oracle Configuration Manager est utilis pour collecter des informations sur la configuration dune installation. Ces informations sont envoyes intervalles rguliers dans un rfrentiel du support Oracle. Lorsquune demande de service(ServiceRequest)estsoumiseOracle,ellepeuttreassocieauxinformationsdeconfigurationcollectes aupralable. Cette fonctionnalit nest pas prsente plus en dtail dans ce livre. A noter quelle peut tre installe ultrieurement. Pour plus dinformations, consultez la documentation "Oracle Configuration Manager Installation andAdministrationGuide"(cejour,cettedocumentationexisteuniquementenversion10.2).

ENI Editions - All rights reserved - Algeria Educ

- 19 -

CliquezsurleboutonSuivant.

Rsum

Danscetcran,vouspouveznotammentreprerlescheminsutilisspourlesrpertoiresOracleBaseetOracleHome, ainsiqueleslanguesduproduit. LeslanguesduproduitsontleslanguesutilisesparOUIlorsdelinstallation,etnonleslanguesdisponibles danslabasededonnesOracleproprementdite.VouspouvezinstallerOracleenanglaisaveclinstalleuret utiliserplustardlefranais,oudautreslangues,danslabasededonnes.

CliquezsurleboutonInstallerpourlancerlinstallation.

InstallationetconfigurationdulogicielOracle Pendantlinstallation,uncranprsentantltatdavancementestaffich.

- 20 -

ENI Editions - All rights reserved - Algeria Educ

Assistantsdeconfiguration lafindelinstallation,plusieursassistantsdeconfigurationsontautomatiquementlancsparlinstalleur.

Cesassistantsnesontlancsquesiunebasededonnesdedpartestcreaucoursdelinstallation.Si

ENI Editions - All rights reserved - Algeria Educ

- 21 -

cenestpaslecas,cesassistantsnesontpaslancsetilfaudraconfigurerOracleNetultrieurement. UnefentrespcifiquedavancementsaffichepourlassistantConfigurationdebasededonnes :

lafindelacrationdelabasededonnes,lcransuivantsaffiche :

- 22 -

ENI Editions - All rights reserved - Algeria Educ

Cet cran indique notamment lURL utiliser pour accder la console Enterprise Manager. Un clic sur le bouton Gestion des mots de passe ouvre une fentre de dialogue qui permet dactiver ou dsactiver des comptes utilisateuretdedfinirlesmotsdepassedecesdiffrentscomptes :

Comme vous pouvez le constater, la base de donnes de dpart dOracle contient un grand nombre de comptes
ENI Editions - All rights reserved - Algeria Educ - 23 -

utilisateurs. Pour plus dinformations sur ces diffrents comptes, reportezvous la documentation Oracle DatabaseInstallationGuide .Pourverrouiller/dverrouilleruncompte,ilsuffitdecliquerdanslacolonneVerrouiller lecompte. Excuterlesscriptsdeconfiguration

CetcranestaffichuniquementsurplateformeLinuxouUnix,etvousinviteexcuterdesscriptsdeconfiguration entantquutilisateurroot. LescriptorainstRoot.shestexcutuniquementlorsdelapremireinstallationdunproduitOraclesurlamachine. IlmodifielesdroitsetlegroupedurpertoireoraInventory. Lescriptroot.shcopietroisfichiers(dbhome,oraenvetcoraenv)dansunrpertoirelocalbin(demandparlescript, pardfaut/usr/local/bin),crelefichier/etc/oratab(silnexistepasdj)etyajouteuneentrepourlabasede donnesventuellementcrpendantlinstallation.Lerleetlutilisationdecesdiffrentsfichiersserontprsents ultrieurement.


s

Pourexcutercesdeuxscripts,ouvrezunefentredeterminalentantqueroot :

- 24 -

ENI Editions - All rights reserved - Algeria Educ

Tapez[Entre]pouraccepterlavaleurpardfautproposeparchaqueinviteafficheparlescriptroot.sh. Lorsquelescriptesttermin,cliquezsurleboutonOKdelafentrededialogue.

Findelinstallation Linstallationesttermine underniercransaffiche :

ENI Editions - All rights reserved - Algeria Educ

- 25 -

Danslecasovousavezcrunebasededonnesdedpart,cetcranrappellelURLutiliserpouraccderla consoleEnterpriseManager.Danslecascontraire,lazone"noubliezpas"nestpasaffiche.
s

CliquezsurleboutonQuitterpourquitterOracleUniversalInstaller(uneconfirmationvousserademande).

6.Postinstallation
a.TlchargeretappliquerdespatchesOracle
LaversiondOraclequevousvenezdinstallerpartirdunmdiaouduntlchargementsurOTNnecontientpas lesdernierspatchesapplicablesauproduits.Parailleurs,Oraclepubliergulirementdespatchespourcesproduits etvouspouvezdonctreamensmettrejourvotreconfigurationintervallesrguliers. Pouridentifierettlchargerlespatchesdunproduit,vousdevezallersurlesiteWebOracleMetaLink,ladresse suivante :http://metalink.oracle.com

lheureocetouvrageestrdig,Oracleestentraindemettreenplaceunenouvelleversiondesonsite desupport(dornavantappelMyOracleSupport).Ilestdoncpossiblequevousayezdespageslgrement diffrentesdecellesprsentesici. Pour accder OracleMetaLink, vous devez disposer dun compte pour ouvrir un compte (lien Register For Metalink),vousdevezpossderunidentifiantdesupportquivousestfournidanslecadreduncontratdesupport.
s

Pourvousconnecter,cliquezsurlelienLoginToMetalink,puissaisissezvotreidentifiantetvotremotdepasse. Une fois connect, cliquez sur longlet Patches & Updates en haut droite de lcran puis sur le lien Simple Search.

Danslapagequisaffiche :
s

DanslechampSearchBy,slectionnezProductorFamily,puissaisissezRDBMSServer. DanslechampRelease,slectionnezlaversionsouhaiteduproduit. DanslechampPatchType,slectionnezlavaleurPatchset/Minipack. DanslechampPlatformorLanguage,slectionnezvotreplateforme. CliquezsurleboutonGopourobtenirlalistedespatchesdisponibles.


ENI Editions - All rights reserved - Algeria Educ

- 26 -

Exemple

lheureocetouvrageestrdig,OracleDatabaseestdistribuenversion11.1.0.6etlePatchset11.1.0.7nest pasencoredisponible(maisildevraitltreaumomentovouslirezcelivre). UnPatchsetouMinipackestunregroupementdepatchesquicorrigentplusieursproblmes.Enrglegnrale,les Patchsets sont cumulatifs (le Patchset 2 reprend les corrections du Patchset 1) et peuvent tre installs systmatiquement sans avoir besoin de les qualifier Oracle indique que les correctifs ont un faible impact sur le systmeetonttcompltementtests(maislerisquezronexistepas).Sinon, il est possible dappliquerdes patches individuels qui corrigent un problme prcis (indiquez Patch dans le champ Patch Type) ces patches ne doiventgnralementtreappliqusquenrponseunproblmeprcisidentifidanslabasedesbugs. Exemplederecherchedepatchesindividuels

ENI Editions - All rights reserved - Algeria Educ

- 27 -

Cliquez sur licne dinstallation.

pour afficher la note du patch qui dcrit les problmes corrigs et la procdure

Cliquezsurlicne danslanote).

pourtlchargerlepatchpuisprocdezsoninstallation(suivezlaprocdureindique

La procdure dinstallation dpend du patch. En rgle gnrale, les Patchsets sinstallent avec Oracle Universal Installeretlesautresaveclutilitaireopatch(installdanslesousrpertoireOPatchdurpertoireOracleHome).Dans lecasdesPatchsets,ilyalaplupartdutempsuneprocduredemiseniveauappliquerauxbasesdedonnes (excutiondunouplusieursscripts). Oracle Enterprise Manager peut tre utilis pour rcuprer et appliquer des patches il peut mme tre configurpourtlchargerautomatiquementlespatchesdisponibles.

b.Configurerlenvironnementdetravail
Choixdulangageetdujeudecaractres Oraclesupportediffrentslangagespourlinteractionaveclabasededonnes.Lelangagecourantestdfinidansla variabledenvironnementNLS_LANG. NLSsignifieNationalLanguageSupport. Cettevariablealeformatsuivant : LANGAGE_PAYS.CARACTERES Avec : LANGAGE Langageutilispourlesmessages(ainsiquelesnomsdejouroudemois). PAYS Nomdupays(dfinitdesconventionspardfautpourlesformatsdedatesetdenombres,lesymbolemontaire, etc.). CARACTERES Jeu de caractres utilis pour laffichage des messages (peut tre diffrent du jeu de caractres utilis pour le stockagedeschanesdecaractresdanslabasededonnes voirlechapitreLesoutilsdadministrationCration dunenouvellebase). Exemple : FRENCH_FRANCE.WE8ISO8859P15 AMERICAN_AMERICA.US7ASCII Vous pouvez parfaitement choisir un langage et un pays qui ne correspondent pas. Ainsi AMERICAN_FRANCE.WE8ISO8859P15permetdavoirdesmessagesenanglaismaisdesconventionsfranaisespardfaut pourlesformatsdedatesetdenombres. Lesjeuxdecaractreslespluscourammentrencontrssont : US7ASCII ASCII7bitAmerican. WE8ISO8859P1 ISO88591WestEuropean(negrepaslesymboledeleuro). WE8ISO8859P15

- 28 -

ENI Editions - All rights reserved - Algeria Educ

ISO885915WestEuropean(grelesymboledeleuro). UTF8 Unicode3.0UTF8Universal(grelesymboledeleuro). WE8PC850 IBMPC Code Page 850 8bit West European (sur plateforme Windows, permet davoir les accents dans les environnementslignedecommande). WE8PC858 IBMPCCodePage8588bitWestEuropean(grelesymboledeleuro). WE8MSWIN1252 MSWindowsCodePage12528bitWestEuropean(grelesymboledeleuro).

Consultez la documentation Oracle Database Globalization Support Guide pour avoir plus dinformations surlesupportdesdiffrentslangagesetpays.

PlateformeWindows Sur plateforme Windows, il ny a rien de particulier faire : linstalleur a pris soin de positionner plusieurs paramtres dans la base de registre et de dfinir la variable denvironnement PATH, en y mettant notamment le cheminverslerpertoirebin. Vous pouvez donc, sans problme, lancer des outils Oracle en ligne de commande (sqlplus par exemple), sans mentionnerlechemincomplet. Pour chaque Oracle Home, la base de registre contient une cl HKEY_LOCAL_MACHINE\ SOFTWARE\ORACLE\KEY_nom_oracle_homequistockeplusieursparamtresrelatifsauOracleHome. VousytrouvereznotammentunparamtreORACLE_SID.Ceparamtrecontientlenomdeladernireinstancecre dansleOracleHomeconcern cestlinstancelaquellevousvousconnectezpardfautquandvouslancezunoutil dadministrationdirectementsurleserveur(cf.sectionSQL*PlusdanslechapitreLesoutilsdadministration). La base de registre contient aussi un paramtreNLS_LANG, dfini par dfaut par linstalleur en fonction de la localisation du systme dexploitation (typiquement FRENCH_ FRANCE.WE8MSWIN1252 pour une version franaise de Windows). Les diffrents paramtres prsents dans la base de registre sont dcrits dans la documentation Oracle DatabasePlatformGuideforWindows. LesparamtresdelabasederegistrecommeORACLE_SIDetNLS_LANGsontutilisspardfautparlesdiffrentsoutils Oracle. Si vous souhaitez utiliser des valeurs diffrentes, avant de lancer un outil, vous pouvez modifier les paramtres de la base de registre ou dfinir des variables denvironnement de mme nom (dans le panneau de configurationSystmeoudansunefentredecommandes). VouspouveznotammentutiliserlejeudecaractresWE8PC850sivoussouhaitezavoirunaffichagecorrect desaccentsdanslesoutilslignedecommande(permetdviterdesmessagesdutypeConnect). LorsquevotresystmecomporteplusieursOracleHome,lavariabledenvironnementPATHcontientplusieurschemins verslesrpertoiresbindesdiffrentsOracleHome,dansuncertainordre lepremierchemintrouvest,enquelque sorte, celui duOracle Home par dfaut. Si vous lancez un outil sans mentionner de chemin complet, cest celui du Oracle Home par dfaut qui sera lanc, ce qui risque de poser des problmes si vous souhaitez travailler sur une basededonnesdunautreOracleHome(etdoncpeuttreduneautreversion). Pourvitercegenredeproblme,unepremiresolutionconsisteutiliserunchemincompletpourlancerloutildu bonOracleHome.LadeuximesolutionconsistechangerdeOracleHomepardfaut,soitenmodifiantsoimmela variablePATH,soitenutilisantOracleUniversalInstaller :
s

Lancez Oracle Universal Installer (menu Dmarrer Programmes Oracle nom_oracle_home Oracle InstallationProducts UniversalInstaller).

ENI Editions - All rights reserved - Algeria Educ

- 29 -

Surlcrandebienvenue,cliquezsurleboutonProduitsinstalls... DanslafentreInventairequisaffiche,cliquezsurlongletEnvironnement :

Cet onglet liste les diffrents Oracle Home trouvs sur le systme, dans leur ordre dapparition dans la variable denvironnementPATH (affiche dans la zoneChemin).Vouspouvezalorsslectionnerles OracleHome qui doivent apparatre dans la variable denvironnement PATH et modifier leur ordre. Cliquez sur le bouton Appliquer pour enregistrervosmodifications. PlateformeUnixouLinux SurplateformeUnixouLinux,linstalleurnemodifiepaslenvironnementducomptedanslequelOracleestinstall. chaque fois que vous utiliserez ce compte pour administrer Oracle, vous serez amens positionner diffrentes variables denvironnement : ORACLE_HOME(et ventuellement ORACLE_BASE), ORACLE_SID, PATH(chemin vers ORACLE_HOME/binnotamment)etventuellementNLS_LANG. Ces variables denvironnement peuvent tre dfinies la main, lors de chaque session ou tre dfinies dans le fichierdedmarragedushelldelutilisateur. Exemple : ORACLE_BASE=/u01/app/oracle ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1 ORACLE_SID=ORCL PATH=$PATH:$ORACLE_HOME/bin NLS_LANG=FRENCH_FRANCE.UTF8 export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH NLS_LANG Si vous avez plusieurs bases de donnes, et ventuellement plusieurs Oracle Home, il faut penser modifier en consquencelesvariablesORACLE_SID,etventuellementORACLE_HOMEetPATH.

openmirrors.com

- 30 -

ENI Editions - All rights reserved - Algeria Educ

Pourcela,vouspouvezutiliserunscriptshellfourniparOracle :coraenv(Cshell)ouoraenv(autresshells).Cesdeux scriptssontcrspendantlinstallation(parlescriptroot.sh)etsesituentpardfautdans/usr/local/bin. Pourlesexcuter,utilisezunedescommandessuivantes : source /usr/local/bin/coraenv . /usr/local/bin/oraenv Cesscriptsvousinvitentsaisirlenomdelinstancelaquellevousvoulezaccderetmodifientenconsquencela valeur des variables denvironnement ORACLE_SID, ORACLE_ HOME et PATH (ajout du chemin $ORACLE_HOME/bin la variablePATH.). PourdterminerlavaleurdelavariableORACLE_HOME,cesscriptsappellentlescriptdbhome.Cederniersebasesurle fichier/etc/oratab,luiaussicrdanslinstallation. Le fichier /etc/oratab est, en quelque sorte, un rfrentiel central des diffrentes instances (et donc bases de donnes)prsentessurleserveur.Ilcontientdeslignesdelaforme : $ORACLE_SID:$ORACLE_HOME:{Y|N} Exemple : ORCL:/u01/app/oracle/product/11.1.0/db_1:Y VoirlechapitreDmarrageetarrtpourlutilisationdecefichierdanslecontextedudmarragedunebase laideduscriptdbstartetlechapitreCrationdunenouvellebasededonnespourlamisejourdece fichieraprslacrationdunenouvellebasededonnes. Silinstance nestpastrouvedanslefichieroratab, le scriptoraenv oucoraenvdemandedesaisirlavaleurdela variableORACLE_HOME. Silefichieroratabestcorrectementrenseign(cequiestconseill),lesscriptsoraenvetcoraenvsonttrspratiques pourmodifierlenvironnementducompteetbasculerdunebaseuneautre. Exemple [oracle@srvlinora ~]$ tail -2 /etc/oratab ORCL:/u01/app/oracle/product/11.1.0/db_1:Y TEST:/u01/app/oracle/product/10.2.0/db_1:N [oracle@srvlinora ~]$ sqlplus / as sysdba -bash: sqlplus: command not found [oracle@srvlinora ~]$ . oraenv ORACLE_SID = [oracle] ? ORCL The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 is /u01/app/oracle [oracle@srvlinora ~]$ sqlplus / as sysdba SQL*Plus: Release 11.1.0.6.0 ... ... SQL> exit ... [oracle@srvlinora ~]$ . oraenv ORACLE_SID = [ORCL] ? TEST The Oracle base for ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1 is /u01/app/oracle [oracle@srvlinora ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.4.0 ... ... SQL> exit ... [oracle@srvlinora ~]$

c.Configurerledmarrageetlarrtautomatique
PlateformeWindows Sur plateforme Windows, linstalleur cre automatiquement les services qui permettent le dmarrage et larrt

ENI Editions - All rights reserved - Algeria Educ

- 31 -

automatique des diffrents composants Oracle : processus dcoute, base de donnes, console Oracle Enterprise Manager. Ilnyadoncriendeparticulierfairecestade. Noustudieronsplusendtailcesdiffrentscomposantsdanslasuitedecetouvrage.

PlateformeUnixouLinux SurplateformeUnixouLinux,linstalleurneconfigureaucuncomposantendmarrageautomatique. Ilestdelaresponsabilitdeladministrateurdusystme(root)decrerunscriptdedmarragedecescomposants etlefairesexcuterdanslesniveauxdexcutionsouhaits. Danscetouvrage,nousallonsprsenterlesactionseffectuersuruneplateformeRedHatEnterpriseLinuxES4. Les principes sont les mmes pour les autres distributions (ou Unix en gnral), mais certains chemins, certaines valeurs ou certaines commandes peuvent tre diffrents (consultez la documentation Oracle Database Administrators Reference de votre plateforme et la documentation de votre systme dexploitation sur les processusdedmarrageetdarrt). Connectezvousentantqueroot. Danslerpertoire/etc/init.d,>crezunscriptnommdboraavecuncontenusimilaireausuivant : #! /bin/sh # # chkconfig: 35 99 01 # description: dmarre et arrte les services Oracle # # Modifiez la valeur des variables suivantes pour tenir compte de # votre environnement : # - ORACLE_HOME # chemin vers le rpertoire Oracle Home des # scripts dbstart et dbshut # - ORACLE_HOME_LISTENER # chemin vers le rpertoire Oracle Home du listener # - ORACLE # nom du compte oracle # - LOG # chemin vers un fichier journal # - VAR_LOCK # chemin vers le fichier utilis par le systme pour savoir # si le service est dmarr # (normalement /var/lock/subsys/<nom du service>) ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 ORACLE_HOME_LISTENER=$ORACLE_HOME ORACLE=oracle LOG=$ORACLE_HOME/dbora.log VAR_LOCK=/var/lock/subsys/dbora # # Si le script est appel sans deuxime paramtre (appel initial), # on le relance sous le compte oracle (du coup avec un deuxime # paramtre) if [ ! "$2" = "ORA" ] ; then su - $ORACLE -c "$0 $1 ORA" case $1 in start) # indiquer que le service a dmarr (du moins a priori) touch $VAR_LOCK ;; stop) # indiquer que le service a t stopp (du moins a priori) rm -f $VAR_LOCK esac exit fi PATH=${PATH}:$ORACLE_HOME/bin export ORACLE_HOME PATH

openmirrors.com

- 32 -

ENI Editions - All rights reserved - Algeria Educ

touch $LOG chmod a+r $LOG case $1 in start) echo "***** $(date) - $0 : dmarrage" > $LOG $ORACLE_HOME/bin/dbstart $ORACLE_HOME_LISTENER > $LOG 2>&1 & ;; stop) echo "***** $(date) - $0 : arrt" > $LOG $ORACLE_HOME/bin/dbshut $ORACLE_HOME_LISTENER > $LOG 2>&1 & ;; *) echo "usage: $0 {start|stop}" ;; esac exit Depuislaversion11,lesscriptsdbstartetdbshutprennentenchargeledmarrageetlarrtduprocessus dcoute. En consquence, le script prsent cidessus permet le dmarrage et larrt automatique du processusdcouteetdesbasesdedonnes.Parcontre,ildoittrecompltpourprendreenchargelaconsole OracleEnterpriseManager. Changerlegroupedufichierdboraendba(ouvotregroupeOSDBAsilestdiffrent)etmodifierlespermissionsdu fichier : chgrp dba dbora chmod 750 dbora Crerdeslienssymboliquesverslescriptdboradanslesrpertoiresdesniveauxdexcutionadquats,parexemple pouravoirundmarrage(pluttendernier)danslesniveaux3et5,etunarrt(pluttenpremier)danslesniveaux 0(arrtdusystme)et6(redmarragedusystme) : ln ln ln ln -s -s -s -s /etc/init.d/dbora /etc/init.d/dbora /etc/init.d/dbora /etc/init.d/dbora /etc/rc.d/rc0.d/K01dbora /etc/rc.d/rc3.d/S99dbora /etc/rc.d/rc5.d/S99dbora /etc/rc.d/rc6.d/K01dbora

Ceslienssymboliquespeuventtrecrsparlutilitairechkconfigquiexploitelesinformationscontenuesdansles commentairesendbutdescript : chkconfig --add dbora Lesystmeestoprationnel. SiplusieursversionsdOraclesontinstallessurvotreserveur,ilfautpluttutiliserlaversionlaplusrcente dans le script dbora (avec une variable $ORACLE_HOME configure en consquence). La seule exception potentielle concerne le dmarrage de la console Oracle Enterprise Manager (cf. Chapitre Les outils dadministration). Si besoin, ce script peut tre adapt, ou scind en plusieurs scripts, afin dutiliser diffrents OracleHome.

ENI Editions - All rights reserved - Algeria Educ

- 33 -

Installationduclient
Les procdures dinstallationdun client Oracle ressemblent beaucoup, en plus simples, aux procdures dinstallation duserveur.Enconsquence,danscetouvrage,nousprsenteronscesprocduresdemaniretrssynthtique.Pour plusdinformations,reportezvousladocumentationOraclespcifiquevotreplateforme
q

OracleDatabaseClientInstallationGuidefor... OracleDatabaseClientQuickInstallationGuidefor... OracleDatabaseClientReleaseNotesfor...

Lessimilitudesdinstallationentreunserveuretunclientportentnotammentsur :
q

Les diffrentes tapes de linstallation (prinstallation, installation avec Oracle Universal Installer, post installation) Le standard OFA, avec notamment un rpertoire Oracle Home (plusieurs clients peuvent tre installs sur la mmemachine) Lesspcificitsdechaqueplateforme(variablesdenvironnement,basederegistre,etc.) Lapossibilitdeffectueruneinstallationnoninteractive,enutilisantunfichierderponse.

UnclientOraclecomportegnralementauminimumlecomposantOracleNetquipermetdaccderunebaseOracle durseau.Encomplment,leclientpeutcomporter :
q

desoutilsdinterrogationoudadministration(SQL*Plus,etc.) desproduitsncessairespourledveloppementouledploiementdapplications.

Lesproduitspourledveloppementouledploiementquipeuventtreinstalls,varientduneplateformelautre. Lesprincipauxproduitssontlessuivants:
q

OCI(OracleCallInterface APIdebasniveauutilisableenCparexemple) OracleObjectForOLE(produitquivalentOLEDB) DriversODBC ProviderpourOLEDBou.NET DriversJDBC prcompilateursPro*C/C++,Pro*COBOL...

LinstallationproprementditeseffectueavecOracleUniversalInstaller.Lesprincipalestapessontlessuivantes :
q

spcificationdurpertoiredinventaire(premireinstallationsurplateformeLinuxouUnix) dsignationdelemplacementdesfichiers(OracleHome) choixduntypedinstallation(voircidessous) choixventueldescomposantsinstaller(installationpersonnaliseuniquement)

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

affichageduncrandesynthsepermettantdeconfirmerlinstallation.

Lestypesdinstallationpropossparlinstalleursontlessuivants : InstantClient : ninstalle que les librairies ncessaires aux applications qui utilisent les OCI avec la fonctionnalit de "clientinstantan"(instantclient).Ncessitepeudespacedisque(plusoumoins150Moselonlaplateforme). Administrateur : installe la quasitotalit des composants, y compris les outils dadministration et les produits de dveloppement Runtime:installeunclientsimplecomportantprincipalementOracleNet,SQL*PlusetlesdriversJDBC. Personnalise:permetdeslectionnerprcismentlescomposantsetdinstallerunclientparfaitementadaptun besoin prcis (dveloppeur, dploiement) : avec ou sans outil (SQL*Plus par exemple), avec un produit de dveloppementprcis,etc. La fonctionnalit de "client instantan" permet dtablir une connexion une base de donnes sans configurationpralabledOracleNet(cf.ChapitreOracleNet). lafindelinstallation,danslecasduneinstallationautrequeInstantClient,lassistantConfigurationOracleNetest lanc,enmodeautomatiqueouinteractifselonletypedinstallation,afindeconfigurerlecomposantOracleNet.Dans le cas dune installation Runtime, lassistant effectue une configuration standard : cliquez simplement sur le bouton Suivant puis sur le bouton Terminer. Dans le cas dune installation Administrateur ou Personnalise, lassistant proposedeffectueruneconfigurationstandardouuneconfigurationmanuelle.Laconfigurationstandardestsouvent suffisante, au moins pour dmarrer. En cas de besoin, lassistant Configuration Oracle Net peut tre relanc ultrieurement. Pour effectuer une configuration standard, cochez la case Excuter la configuration standard puis cliquezsurleboutonSuivant(deuxfois),puissurleboutonTerminer. SurplateformeUnixouLinux,aprsenavoirterminaveclaconfigurationOracleNet,ilfautexcuterlescriptroot.sh dansuneconnexionroot. Linstallationestalorstermine ! Lenvironnementdetravailpeutensuitetreconfigurcommesurleserveur(cf.sectionInstallationduserveurdansle chapitreInstallation). ce stade, vous pouvez tester une connexion avec votre base en utilisant la mthode de rsolution de nom Easy Connect : > sqlplus system/xxxx@//hte/service Pourutiliseruneautremthodedersolutiondenom,ilfautconfigurerOracleNet(cf. ChapitreOracleNet). SurOTN,vouspouveztlchargerunclientinstantan(instantclient)souslaformedunearchivecompresse qui sinstalle directement par dcompression, sans utiliser Oracle Universal Installer. Pour utiliser ce client instantan, il faut juste ajouter le rpertoire dinstallation dans la variable denvironnement utilise pour le chargementdeslibrairies(PATHsurplateformeWindowsetLD_LIBRARY_PATHsurplateformeUnixouLinux).

- 2-

ENI Editions - All rights reserved - Algeria Educ

Introduction
1.RledOracleNet
Oracle Net permet des produits Oracle situs sur des machines diffrentes de communiquer. Les fonctions essentiellesdOracleNetsontdtablirdessessionsdecommunicationrseauentredeuxmachines(clientserveur ouserveurserveur)etdetransfrerlesdonnesentrelesdeuxmachines. Dans cet ouvrage, nous nous intresserons uniquement la communication entre un client et un serveur. La communication entre deux serveurs est un cas particulier o un serveur joue le rle de client visvis de lautre serveur surceserveurclient,OracleNetdoittreconfigurlafoisenserveuretenclient. OracleNetapourobjectifderendrelerseau"transparent"pourlesapplications :lesapplicationsnontpasbesoin de savoir o se trouve le serveur, quel est le protocole utiliser pour sy connecter, etc. Les applications ont simplementbesoindeconnatreunnomdeservicerseau(sortedalias)quileurpermettradtabliruneconnexion aveclabasededonnessouhaite. OracleNetdoittreinstallctclientetctserveur cetteinstallationestralisepardfautparOracleUniversal Installer.Aprsinstallation,lacoucheOracleNetdoittreconfigure,lencore,ctclientetctserveur.

2.Principesdefonctionnement
Leschmasuivantillustrelefonctionnement(simplifi)dOracleNet :

Lorsquune application cliente utilise un nom de service rseau pour se connecter, ce nom de service rseau est rsoluparOracleNetenundescripteurdeconnexioncomportantladresseduservice :protocoleutiliser,adresse duserveur,portdecommunication(danslecasduprotocoleTCP)etnomduservice(instancedanslecasquinous intresse). Ctserveur,unprocessusdcouteestchargderecevoirlesdemandesdeconnexionetdelestransmettrela baseconcerne.CeprocessusdcoutesematrialiseparunservicesurplateformeWindowsetunprocessussur plateformeUnix ilestconfigurparlefichierlistener.ora. Plusieursmthodespeuventtreutilisespourlarsolutiondunomdeservice : Locale(localnaming) Un fichier de configuration (tnsnames.ora), situ sur le poste de lutilisateur, se charge de la rsolution. Cette

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

mthodeestlapluscourammentutilise. Connexionsimplifie(easyconnectnaming) Laconnexionseffectuesansnomdeservice,enutilisantdirectementuneadresseTCP/IPdutype[//]hte[:port] [/service]. Cette mthode est utilisable uniquement en environnement TCP/IP. Elle ne ncessite aucune configurationmaislerseaunestplustransparentpourlutilisateur.Cettemthodeestapparueenversion10. AnnuaireLDAP(directorynaming) UnannuaireLDAPsechargedelarsolution.Cettemthodencessiteunproduittiers. Externe Unproduittierssechargedelarsolution. Pardfaut(configurationstandard),OracleNetestconfigurctclientpourutiliserlamthodedersolutiondenom localeetlaconnexionsimplifie(siTCP/IPestinstallsurleposteclient).

3.Nomdeserviceetnomdinstance
Depuis Oracle8i, une instance peut tre identifie par un ou plusieurs noms de service, en plus de lidentifiant de linstance(SID).CesnomsdeservicepeuventtredfinisgrceauparamtreSERVICE_NAMESdufichierdinitialisation. Lidentifiantdelinstancepeuttrevucommetantlenom"physique"delinstance.Lenomdeservicedelinstance peuttrevucommeunnomlogique,correspondantunserviceoffertparlabasededonnesouverteparlinstance. Par exemple, si une base abrite deux applications (une application de paie et une application de gestion des ressourceshumaines),ilestpossiblededfinirdeuxnomsdeservicepourlinstance : SERVICE_NAMES = paie,rh Unnomdeservicepeutinclureuneidentificationdedomaine.Exemple :paie.olivier.fr. Par dfaut, le paramtre SERVICE_NAMES est gal au nom global de la base de donnes (DB_NAME.DB_DOMAIN). Si le paramtreDB_DOMAINestvide(valeurpardfaut),leparamtreSERVICE_NAMESestalorsgalpardfautauparamtre DB_NAME,quiestluimmegnralementgalaunomdelinstance danscecas,nomdeserviceetnomdinstance sontgaux. Lorsdeladfinitiondunnomdeservicerseau,ilestpossiblededsignerlinstancecible,soitparsonidentifiant, soitparunnomdeservice. LesservicessontaussiutilissparOraclepourfaireunsuividactivitparservice(charge,performance,priorit,etc.). IlspeuventtregrsetsupervissdansleDatabaseControl.Ilspeuventaussitresupervissparplusieursvues dudictionnairededonnes(DBA_ SERVICES,V$ACTIVE_SERVICES,etc.)etgrsparlepackageDBMS_SERVICE.

- 2-

ENI Editions - All rights reserved - Algeria Educ

Configurationctserveur
1.Configurationduprocessusdcoute
LaconfigurationctserveurconsisteconfigurerleprocessusdcouteLISTENER,cestdireindiquer"comment" etpourquellesbasesil"coute". Cetteconfigurationpeutseffectuerdirectementdanslefichierlistener.oramaiscelancessitedebiencomprendre lastructuredecefichier,cequinestpasimmdiat(voirlexempleplusloin).Leplussimpleconsistealorsutiliser lapplicationOracleNetManager(menuProgrammes Oracle nom_oracle_home Outilsdeconfigurationetde migration NetManagersurplateformeWindowsouscriptshellnetmgrsurplateformeUnix).

Si aucune base de donnes na t cre durant linstallation dOracle, aucun processus dcoute na encore t cr danscecas,ledossierProcessusdcouteestvide.Pourcrerunprocessusdcoute,slectionnezlemenu Modifier Crer et donnez un nom au processus dcoute (par exemple LISTENER) dans la bote de dialogue qui saffiche. Le fichier listener.orase trouve par dfaut dans le rpertoire $ORACLE_HOME/ network/admin (plateforme Unix ou Linux)ou%ORACLE_HOME%\network\admin(plateformeWindows).Cetemplacementpeuttremodifiendfinissantla variabledenvironnementTNS_ADMIN. Le processus dcoute peut aussi tre configur et administr partir de la console Oracle Enterprise Manager.

Paramtresgnraux

La configuration des paramtres gnraux seffectue dans les trois onglets Gnral, Journalisation et trace et Authentification.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Longlet Journalisation et trace permet dactiver ou de dsactiver la journalisation (active par dfaut) et la trace (inactive par dfaut). Le fichier journal enregistre essentiellement des informations sur le dmarrage du processus dcouteetlesdemandesdeconnexionreues.Depuislaversion11,cefichier(nommlistener.log)setrouvepar dfaut dans le Rfrentiel de Diagnostic Automatique (Automatic Diagnostic Repository) : rpertoire $ORACLE_BASE/diag/tnslsnr/<nom hte>/<nom listener>/trace (plateforme Unix ou Linux) ou %ORACLE_BASE% \diag\tnslsnr\<nom hte>/<nom listener>/trace (plateforme Windows). Pour pouvoir modifier lemplacement par dfaut,ilfautdsactiverlutilisationdADRtantquecenestpaslecas,lesventuellesmodificationseffectuesdans OracleNetManagernesontpasprisesencompte.Latracepeuttreactivepouraiderrsoudredesproblmes defonctionnementduprocessusdcoute.Lencore,depuislaversion11,lesfichiersdetracessontenregistrspar dfautdansADR,aummeemplacementquelefichierjournal. LongletAuthentificationpermetdedfinirunmotdepasseutiliserpourlancerlutilitairelsnrctl(voirplusloin). Lorsquelesparamtresgnrauxsontpersonnaliss,ilssontenregistrsdanslefichierlistener.ora. Exemple : PASSWORDS_LISTENER= (54290B53985ADB21 ) TRACE_LEVEL_LISTENER = USER Emplacementsdcoute

Les emplacements dcoute sont des adresses rseaux utilises par le processus dcoute pour recevoir les demandesdeconnexionunebasededonnes. Le processus dcoute peut couter plusieurs adresses (pour des protocoles diffrents, pour des variantes du mmeprotocole parexempledeuxportsenTCP/IP,etc.). Laconfigurationdelemplacementdcoutedpendduprotocole :
q

TCP/IP :indiquelenomouladresseIPduserveuretleportdecommunication(1521pardfaut). IPC (InterprocessCommunication) : indique un nom unique de service (nom de linstance pour une base de donnes). NMP(NamedPipes) :indiquelenomduserveuretlenomducanal(typiquementORAPIPE).

Lesdfinitionsdesemplacementsdcoutesontenregistresdelamaniresuivantedanslefichierlistener.ora : LISTENER = (DESCRIPTION_LIST =

- 2-

ENI Editions - All rights reserved - Algeria Educ

(DESCRIPTION (ADDRESS = ) (DESCRIPTION (ADDRESS = )

= (PROTOCOL = IPC)(KEY = EXTPROC1521)) = (PROTOCOL = TCP)(HOST = srvwinora)(PORT = 1521))

Leslignesengrascorrespondentunedfinitiondemplacementdcoute. Servicesdebasededonnes

Cetcranpermetdedfinirlesservicesdebasededonnesinscrits(ouenregistrs)auprsduprocessusdcoute, cestdireceuxpourlesquelsleprocessusdcouteacceptedesdemandesdeconnexion. Lesbasesdedonnesinscritesauprsduprocessusdcoutesontdfiniesparlidentifiantdelinstance(SID),lenom globaldelabasededonnes(DB_NAME.DB_DOMAIN,ouunedesvaleursduparamtreSERVICE_NAMES,outouteautre valeur)etlechemindurpertoireOracleHomedelabasededonnes. Le processus dcoute peut accepter des demandes de connexion pour plusieurs bases de donnes, ventuellementpourdesversionsdOraclediffrentes. Les dfinitions des services de base de donnes sont enregistres de la manire suivante dans le fichier listener.ora : SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = d:\app\oracle\product\11.1.0\db_1) (SID_NAME = ORCL) ) ) Leslignesengrascorrespondentunedfinitiondeservicedebasededonnes. Enrglegnrale,ilyaunseulprocessusdcouteparserveur,mmesileserveurabriteplusieursbases de donnes. Si ces bases de donnes utilisent des versions diffrentes dOracle, il faut plutt utiliser le processusdcoutedelaversionlaplusrcente.

2.Gestionduprocessusdcoute

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Leprocessusdcoutesematrialiseparunservice(Oracle<nom_oracle_home>TNSListener)surplateformeWindows etparunprocessus(tnslsnr)surplateformeUnixouLinux. Leprocessusdcoutesadministregrcelutilitairelsnrctl,disponiblesurtouteslesplatesformes. Syntaxe : lsnrctl[commande] Lorsquelutilitaireestappelsanscommande,ilselanceetafficheuneinvite : LSNRCTL> Lescommandespeuventalorstresaisiessurlalignedinvite. Lesprincipalescommandessontlessuivantes : HELP Affichelalistedescommandes. HELP commande Affichelaidedunecommande. START Dmarreleprocessusdcoute. STOP Arrteleprocessusdcoute. STATUS Affiche des informations sur la configuration du processus dcoute, les emplacements dcoute et les services enregistrs. SERVICES Affichedesinformationsdtaillessurlesservicesenregistrsauprsduprocessusdcoute. RELOAD Recharge la configuration du processus dcoute (listener.ora). Permet dajouter ou de modifier les services enregistrsauprsduprocessusdcoute,sansarrtercedernier. Lescommandespeuventtresaisiesindiffremmentenmajusculesouenminuscules.Surplateforme Windows, le processusdcoutepeutaussitredmarretarrtendmarrantouenarrtantleserviceassoci. Exemple : C:\>lsnrctl LSNRCTL for 32-bit Windows: Version 11.1.0.6.0 - Production on 22-JUIN -2008 21:26:04 Copyright (c) 1991, 2007, Oracle. All rights reserved. Bienvenue dans LSNRCTL, tapez "help" pour plus dinformations. LSNRCTL> status Connexion (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUT du PROCESSUS DECOUTE ---------------------------Alias LISTENER Version TNSLSNR for 32-bit Windows: Version 11.1.0.6.0 - Production Date de dpart 22-JUIN -2008 21:12:45 Dure dactivit 0 jours 0 heures 13 min. 25 sec Scurit ON: Local OS Authentication SNMP OFF

- 4-

ENI Editions - All rights reserved - Algeria Educ

Fichier de paramtres du processus dcoute D:\app\oracle\product\ 11.1.0\db_1\network\admin\listener.ora Fichier journal du processus dcoute d:\app\oracle\diag\tnslsnr\srvwinora\listener\alert\ log.xml Rcapitulatif dcoute des points dextrmit... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=srvwinora)(PORT=1521))) Rcapitulatif services... Le service "ORCL" comporte 1 instance(s). Linstance "ORCL", statut UNKNOWN, comporte 1 gestionnaire(s) pour ce service La commande a russi LSNRCTL> SurplateformeWindows,sileserviceassociauprocessusdcoutenexistepas,unmessagederreurestaffich lorsdudmarrage,maisleserviceestalorsautomatiquementcretleprocessusdcouteestbiendmarr : LSNRCTL> start Starting tnslsnr: please wait... Failed to open service <OracleOraDb11g_home1TNSListener>, error 1060.

3.Dmarrageautomatiqueduprocessusdcoute
Gnralement, il est souhaitable que le processus dcoute soit dmarr automatiquement lors du dmarrage du systme. SurplateformeWindows,leprocessusdcoutepeuttredmarrautomatiquementlorsdudmarragedusystme, enpositionnantleserviceassoci(Oracle<nom_oracle_ home>TNSListener)endmarrageautomatique. Sur plateforme Unix ou Linux, le processus dcoute peut tre dmarr automatiquement grce au script de dmarrage prsent dans la section Installation du serveur du chapitre Installation Configurer le dmarrage et larrt automatique. Ce script de dmarrage appelle les scripts Oracledbstart etdbshutquiprennentenchargele dmarrageetlarrtduprocessusdcoutedepuislaversion11. Extraitsduscript : $ORACLE_HOME/bin/dbstart $ORACLE_HOME_LISTENER > $LOG 2>&1 & ... $ORACLE_HOME/bin/dbshut $ORACLE_HOME_LISTENER > $LOG 2>&1 & LesscriptsdbstartetdbshutacceptentenparamtrelecheminOracleHomeduprocessusdcoutedmarrerou arrter silyaplusieursversionsdOracleinstallessurleserveur,celapermetdechoisirlaversionduprocessus dcouteutiliser.

4.Enregistrementdynamiquedeservices
DepuisOracle8i,uneinstanceestcapabledenregistrerautomatiquementdesservicesauprsduprocessusdcoute. Aucuneconfigurationnestrequisedanslefichierlistener.ora. Lenregistrement automatique seffectuepardfautauprsduprocessusdcoute sur le serveur, en TCP/IP, sur le port 1521. Pour effectuer lenregistrement automatique une autre adresse, il faut configurer le paramtre dinitialisation LOCAL_LISTENER en y indiquant un nom de service rseau qui doit tre rsolu (par exemple avec le fichiertnsnames.ora)enuneadressedeprocessusdcoute. LesnomsdesservicesautomatiquementenregistrsproviennentduparamtredinitialisationSERVICES_NAMES. Lenregistrement dynamique seffectue en complment de lenregistrement statique ventuellement dfini dans le fichierlistener.ora. Avec ces deux mcanismes, une instance peut prsenter plusieurs services dans le processus dcoute,cequiestparfoisdroutant. Avec lenregistrement automatique, une instance non dmarre nestpasconnueduprocessusdcoute. Cela pose un problme si linstance doit tre dmarre partir dun poste du rseau car le processus dcoute refusera la demande de connexion (erreur ORA-12514). Dans ce cas, il faut prvoir un enregistrement statiquedanslefichierlistener.ora.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

Il peut y avoir dautres services enregistrs auprs du processus dcoute correspondant des fonctionnalitsinstallesdanslabasededonnes(OracleXMLDBparexemple).

- 6-

ENI Editions - All rights reserved - Algeria Educ

Configurationctclient
1.Introduction
Pourconfigurerleclient,ilfaut :
q

slectionnerlesmthodesdersolutiondenomsutilisablesparleclient configurerlesmthodesdersolutiondenomsslectionnes.

Lesmthodesdersolutiondenomsutilisablesparleclientsontstockesdanslefichiersqlnet.ora.Silamthode dersolutiondenomlocaleestutilise,ilfautenplusdfinirunouplusieursnomsdeservicerseaudanslefichier tnsnames.ora. Cesdeuxfichierssetrouventpardfautdanslerpertoire$ORACLE_HOME/network/ admin(plateformeUnixouLinux) ou %ORACLE_HOME%\network\admin (plateforme Windows). Cet emplacement peut tre modifi en dfinissant la variabledenvironnementTNS_ADMIN. Lesfichierssqlnet.oraettnsnames.orapeuventtreditsdirectementmaiscelancessitedebiencomprendreleur structureetdebienconnatrelasyntaxeetlerledesdiffrentsparamtres. Le plus simple consiste alors utiliser lapplication Oracle Net Manager (menu Programmes Oracle nom_oracle_home Outils de configuration et de migration Net Manager sur plateforme Windows ou script shellnetmgrsurplateformeUnix).

2.Slectiondesmthodesdersolutiondenoms
Pour configurer les mthodes de rsolution de noms utilisables par le client, cliquez sur licne Profil, puis slectionnezllmentAffectationdenomsdanslalistedroulante :

Dans une configuration standard, la mthode de rsolution de nom locale (TNSNAMES) et la mthode de connexion simplifie(EZCONNECT)sontslectionnespardfaut.Enutilisantlesdiffrentsboutonsdecepanneau,ilestpossible dajouteroudesupprimerdesmthodesetdemodifierlordredanslequellesmthodesserontutilises :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Surlexempleprcdent,lamthodedersolutiondenomdhte(HOSTNAME)atajoutedanslaliste. LazoneDomainepardfautpermetdajouterunnomdedomainepardfautauxnomsdeservicerseauutiliss. Ce nom de domaine par dfaut est souvent une source de problme. Sil est dfini (valeur X par exemple), il est automatiquementajoutaunomdeservicerseaulorsdelaconnexion,siaucundomainenestindiqu(CONNECT ... @ORCLdevient CONNECT ... @ORCL.X).Silenomdeserviceainsiconstitu(ORCL.X)nepeutpastrersoluparune desmthodesdersolutiondenom,uneerreurestretourne(erreurORA-12154).Pourvitercegenredeproblme, leplussimpleestdenepasdfinirdenomdedomainepardfaut. Lesdiffrentesinformationssaisiesdanscetcransontenregistresdanslefichiersqlnet.ora. Exemple : NAMES.DIRECTORY_PATH= (EZCONNECT, TNSNAMES, HOSTNAME) # NAMES.DEFAULT_DOMAIN = X LeparamtreNAMES.DIRECTORY_PATHcontientlalisteordonnedesmthodesdersolutiondenomutilisables. LeparamtreNAMES.DEFAULT_DOMAIN(iciencommentaire)contientlenomdedomainepardfaut.

3.Configurationdesmthodesdersolutiondenom
a.Rsolutiondenomlocale
Des noms de service rseau peuvent tre dfinis dans le fichiertnsnames.ora avec lapplication Oracle Net Manager :

Pourafficherlalistedesnomsdeservicerseaudjdfinis,doublecliquezsurledossierRsolutiondenomsde service. Pour crer un nouveau nom de service rseau, slectionnez le dossier Rsolution de noms de service puis slectionnezlemenuModifierCrer.

- 2-

ENI Editions - All rights reserved - Algeria Educ

SaisissezlenomdeservicerseausouhaitpuiscliquezsurleboutonSuivant.

Slectionnezleprotocolerseauutilis(TCP/IPdanscetexemple)puiscliquezsurleboutonSuivant.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Lesparamtresduprotocoledpendentduprotocoleslectionn.Danslecasduprotocole TCP/IP,saisissezlenom duserveurOracleousonadresseIPetlenumroduport(1521pardfaut,maissiunautreportatconfigur pourleprocessusdcoute,utilisezlemmeici). Dans le cas du protocole IPC, vous devez indiquer un nom de cl (reprendre la valeur utilise pour le processus dcoute,gnralementlenomdelinstance).DanslecasduprotocoleNamedPipes,vousdevezindiquerlenomde lamachineetlenomducanal(reprendrelavaleurutilisepourleprocessusdcoute,habituellementORAPIPE). CliquezsurleboutonSuivant.

Pour identifier linstance cible, saisissez au choix un nom de service ou un identifiant dinstance (SID). Le nom de servicedoittreundesnomsdeserviceenregistrsauprsduprocessusdcoute(cf.section Configurationct serveurdanscechapitre). LalistedroulanteType de connexionpermetdedfinirletypedeconnexionsouhait :Valeurpardfautdela basededonnes(valeurpardfaut),ServeurddiouServeurpartag.LechoixdeloptionServeurddiest ncessairepourforceruneconnexionunserveurddialorsqueleserveurestconfigurenserveurpartag. CliquezsurleboutonSuivantlcransuivantpermetdetesterlenouveaunomdeservicerseau.

- 4-

ENI Editions - All rights reserved - Algeria Educ

Cliquez sur le bouton Terminer. Le nouveau nom de service rseau apparat dans le dossier il peut tre slectionnetmodifidirectementsibesoin :

Lesnomsdeservicerseauainsidfinis,sontenregistrsdanslefichiertnsnames.ora. Exemple : ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = SRVWINORA)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = ORCL) ) ) Aprs configuration du processus dcoute ct serveur, il est judicieux, en restant sur le serveur, de configurer un nom de service rseau et de tenter une connexion laide de ce nom afin de tester la configuration. Ensuite, si la configuration dun poste ne fonctionne pas, la configuration du serveur ne sera, a priori, pas en cause. De plus, si le serveur hberge plusieurs bases de donnes, les noms de service rseau pourront tre utiliss pour passer rapidement dune base lautre (pas besoin de modifier la variable denvironnementORACLE_SID). Le fichier tnsnames.ora ne contient aucune information relative au poste il est donc parfaitement possible den crerunsurunpostepuisdelediffusersurtouslesautrespostes.

b.Connexionsimplifie
LamthodedersolutiondenomEasyConnectnencessiteaucuneconfigurationctclientetpeuttreutilise directement, si elle a t, au pralable, slectionne comme mthode de rsolution de nom dans le fichier sqlnet.ora(cf. section Configuration des mthodes de rsolution de nom dans ce chapitre). Cette mthode est apparueenversion 10etestutilisableuniquementenenvironnementTCP/IP. Ladressedeconnexionestdfiniedelamaniresuivante : [//]hte[:port][/service] Avec : hte

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

Nomduserveur(ventuellementqualifiparundomaine)ouadresseIPduserveur. port Portutilisparleprocessusdcoute(1521pardfaut). service Nom de service auquel se connecter. Le nom de service doit tre un des noms de service enregistrs auprs du processusdcoute(cf. section Configurationctserveurdanscechapitre).Silenomdeservicenestpasspcifi, le processus se connecte la base dfinie par le paramtre DEFAULT_SERVICE_<nom_listener> dans le fichier listener.ora. Exemple : srvwinora/orcl srvwinora:1522/test.olivier.fr

- 6-

ENI Editions - All rights reserved - Algeria Educ

Problmescourantsetsolutions
Lesproblmespossiblesdeconnexionentreunclientetunserveursontnombreux. ORA-12541: TNS : pas de processus dcoute TNS-12541: TNS : aucun processus dcoute Explication Leserveurspcifiparlachanedeconnexionabienttrouv,maisaucunprocessusdcoutenerpond. Cause(s) Leprocessusdcoutenestpaslanc.Leportindiqudanslachanedeconnexionnecorrespondpasauportdcoute duprocessusdcoute. Action(s) Vrifier que les ports sont bien configurs de la mme manire ct client et ct serveur. Vrifier si le processus dcouteestdmarr(ledmarrersibesoin(nepashsiterleredmarrerencasdedoute)). ORA-12505: TNS : le processus dcoute ne connat pas actuellement le SID indiqu dans le descripteur de connexion ORA-12514: TNS : le processus dcoute ne connat pas actuellement le service demand dans le descripteur de connexion Explication Le processus dcoute a bien t contact mais le SID ou le SERVICE_NAME indiqu dans la chane de connexion ne correspondaucuneinstancecouteparleprocessusdcoute. Cause(s) Le SID ou SERVICE_NAME indiqu dans la chane de connexion nest pas bon. Le SID_NAME spcifi dans le fichier de configurationduprocessusdcoutenestpasbon. Action(s) Vrifierquelesidentifiantsdinstanceoulesnomsdeservicecorrespondentbienentreleclientetleserveur(utiliserla commandestatusouservicesdanslutilitairelsnrctl).Encasdedoute,utiliserunSIDlaplacedunSERVICE_NAME danslachanedeconnexion. ORA-12545: Connexion impossible car lhte ou lobjet cible nexiste pas TNS-12545: la connexion a chou car lhte ou lobjet cible nexiste pas Explication Leserveurindiqudanslachanedeconnexionnapasputrecontact. Cause(s) Lenomduserveuresterron. Action(s) Vrifierlavaliditdunomduserveur.ventuellement,remplacerlenomduserveurparsonadresseIP.Vrifiersile serveurestaccessible. ORA-12170: TNS : dlai de connexion dpass

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

TNS-12535: TNS : le dlai imparti lopration est coul Explication Leserveurindiqudanslachanedeconnexionnapasputrecontactdans ledlaiimparti(dfiniparleparamtre SQLNET. INBOUND_CONNECT_TIMEOUTdufichiersqlnet.ora ctclient). Cause(s) Lenomduserveur(ouladresseIP)esterron.Leserveurnestpasaccessibleouilyaunproblmerseau(coupure, ralentissement). Action(s) VrifierlavaliditdunomduserveuroudeladresseIP.ventuellement,remplacerlenomduserveurparsonadresse IP. Vrifier si le serveur est accessible et sil ny a pas de problme rseau. Modifier la valeur du paramtre SQLNET.INBOUND_CONNECT_ TIMEOUT. ORA-12154: TNS : lidentificateur de connexion indiqu na pas pu tre rsolu TNS-03505: Echec de la rsolution du nom Explication Lenomdeservicerseauutilispourlaconnexion(@)napasputrersoluparunedesmthodesdersolutionde nomautorisesctclient. Cause(s) Le nom de service rseau utilis dans la connexion est erron (faute de frappe). Il nexiste par de nom de service rseaucorrespondantdanslefichiertnsnames.ora(mthodedersolutionlocale).Lenomdeservicerseaunapas putretraduitenadresseIP(mthodedersolutiondenomdhte).Lenomdeservicerseaunapasputrersolu enhte[:port] [/service](connexionsimplifie). Action(s) Vrifier que les mthodes de rsolution de nom souhaites sont bien configures dans le fichier sqlnet.ora. Si la mthodedersolutiondenomlocalestutilise,vrifierquelenomdeservicerseauutilisdanslaconnexionestbien dfinidanslefichiertnsnames.ora(pensernotammentlexistenceventuelledunnomdedomainepardfautdfini dans le fichier sqlnet.ora). Si une autre mthode de rsolution de nom est utilise, vrifier que la syntaxe et la configurationsontcorrectes. Si vous obtenez une erreur ORA-01033 ou ORA-01034, la configuration Oracle Net nest pas en cause linstance est arrte,ouelleestdmarremaislabasenestpasouverte. Pouraidertablirundiagnostic,lutilitairetnspingpeuttreutilisctclient. Syntaxe : tnsping nom_de_service Lutilitairetnspingtestesilenomdeservicepassenparamtrepeuttrersoluetsilaciblepeuttrecontacte. Encasdesuccs,tnspingaffichelenomdelamthodedersolutiondenomutilise,lachanedeconnexionutiliseet le temps mis pour contacter la cible. En cas dchec, tnsping affiche un message derreur, ainsi que le nom de la mthodedersolutiondenomutiliseetlachanedeconnexionutilise,silapursoudrelenomdeservicerseau. Exemples C:\>tnsping orcl TNS Ping Utility for 32-bit Windows: Version 11.1.0.6.0 - Production on 24-JUIN-2008 06:52:18 Copyright (c) 1997, 2007, Oracle. All rights reserved. Fichiers de paramtres utiliss : C:\app\oracle\product\11.1.0\client_1\network\admin\sqlnet.ora Adaptateur TNSNAMES utilis pour la rsolution de lalias Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = SRVWINORA)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ORCL)))
- 2 ENI Editions - All rights reserved - Algeria Educ

OK (30 msec) C:\>tnsping srvwinora/orcl Fichiers de paramtres utiliss : C:\app\oracle\product\11.1.0\client_1\network\admin\sqlnet.ora Adaptateur EZCONNECT utilis pour la rsolution de lalias Attempting to contact (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=orcl)) (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.154.51)(PORT=1521))) OK (20 msec) Lutilitairetnspingtesteuniquementsiunprocessusdcoutepeuttrecontact ilnetestepassilenomde serviceoulidentifiantdinstanceestconnuduprocessusdcoute.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Introduction
Oracleproposeplusieursoutilsdadministration :
q

SQL*Plus :outildebasepermettantdditeretdexcuterdesrequtesSQL. Oracle Enterprise Manager Database Control : application Web, permettant dadministrer graphiquement une seulebasededonnes. Oracle Enterprise Manager Grid Control : application Web, similaire la prcdente, permettant dadministrer demanirecentraliseplusieursbasesdedonnes. OracleSQLDeveloper:applicationgraphiquepermettantdexcuterdesrequtesoudesscriptsSQL,degrer les objets dune base de donnes (tables, vues, etc.) et de dvelopper et mettre au point des programmes PL/SQL.

Oracle Enterprise Manager Grid Control est une infrastructure dadministration compose dun serveur dapplication, dunrfrentielstockdansunebasededonnesOracleetdagentsinstallssurlesdiffrentsn udsadministrs.Ce produit qui ncessite une installation spare est intressant pour les entreprises ayant un trs grand nombre de basesdedonnesadministrer.Pourlesentreprisesayantquelquesbasesadministrer,laversionDatabaseControl estgnralementsuffisante.OracleEnterpriseManagerGridControlnestpasprsentdanscetouvrage. Sur plateforme Windows, Oracle propose aussi lapplication Oracle Administration for Windows (menu Dmarrer Programmes Oracle nom_oracle_home Outils de configuration et de migration Assistant dadministration pourWindows).CetteapplicationrequiertleproduitMicrosoftManagementConsole. Dans cet ouvrage, nous nous intresserons uniquement SQL*Plus, Oracle SQL Developer et Oracle Enterprise ManagerDatabaseControl. En complment, dans ce chapitre, nous prsenterons brivement la documentation Oracle (un autre outil dadministrationbienpratique !)puisnousparleronsdesfichiersdalerteetdetrace,ainsiquedunouveauRfrentiel deDiagnosticAutomatique(AutomaticDiagnosticRepository).

ENI Editions - All rights reserved - Algeria Educ

- 1-

SQL*Plus
1.Vuedensemble
Depuis la version 11, SQL*Plus est disponible uniquement en version ligne de commande. Les anciennes formes SQL*PlusWindows,SQL*PlusWorksheetetiSQL*Plusnexistentplus. SQL*Plus permet de saisir et dexcuter des ordres SQL ou du code PL/SQL et dispose en plus de plusieurs commandes,dontdescommandesdadministration. La connexion peut seffectuer localement linstance dfinie par la variable denvironnement ORACLE_SID(section InstallationduserveurduchapitreInstallation)oubientraverslerseaulinstancedfinieparunnomdeservice rseauouuneidentificationde>connexionsimplifie(cf.section ConfigurationctclientduchapitreOracleNet). Pour la connexion travers le rseau, le nom de service rseau ou lidentification de connexion simplifie peuvent treindiquslorsdulancementdeloutil(voirciaprs)outredfinisdansunevariabledenvironnement :
q

TWO_TASKsurplateformeLinuxouUnix LOCALsurplateformeWindows(ventuellementdanslabasederegistre).

Exemple : $ export TWO_TASK=orcl $ export TWO_TASK=srvlinora:1521/orcl C:\>set LOCAL=orcl C:\>set LOCAL=srvwinora:1521/orcl LavariabledenvironnementTWO_TASKouLOCALestprioritairesurlavariabledenvironnementORACLE_SID. SQL*Plusproposebeaucoupdecommandessouventtrsutilespourcriredesscriptsdadministration.Pour plusdinformations,reportezvousladocumentationSQL*PlusUsersGuideandReference.

2.Utilisation
a.LancerSQL*Plus
LasyntaxepourlancerSQL*Plusenlignedecommandeestlasuivante : sqlplus [ connexion | /NOLOG] [@fichier_script [argument [,...]]] Syntaxedeloptionconnexion : [utilisateur]/[mot_de_passe][@service] [AS SYSDBA | AS SYSOPER] Avec : utilisateur NomdelutilisateurOracle. mot de passe Motdepassedelutilisateur. service Nomdeservicerseauouidentificationdeconnexionsimplifie,utilis(e)pourlaconnexion.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

AS SYSDBA |AS SYSOPER DemandeuneconnexionSYSDBAouSYSOPER. /NOLOG LanceSQL*Plussanstablirdeconnexion. fichier_script Scriptexcuter. argument Paramtreduscriptexcuter. AppelerSQL*Plussansparamtresurlalignedecommandeprovoquelaffichageduneinvitedeconnexion. Loption/NOLOGpermetdelancerSQL*Plussanstablirdeconnexion danscecas,laconnexionpeuttretablie ensuiteaveclacommandeCONNECT. LorsquunscriptestsoumisSQL*Plussurlalignedecommande,laconnexionpeuttreassureparlalignede commandeouparlescript(danscecas,mettreloption /NOLOGsurlalignedecommande).Parailleurs,lafindu script,SQL*Plusnequittepas encasdebesoin,ilfautdoncpensermettreunecommandeEXIT. Exemple : sqlplus sqlplus sqlplus sqlplus /nolog system/xy$78@orcl @info.sql "/ as sysdba"

Aveclescriptinfo.sql: CONNECT sys/ab$12@orcl AS SYSDBA SELECT name FROM v$database; EXIT

b.Seconnecter
LacommandeCONNECTpermetdtablirunenouvelleconnexion. Syntaxe : CONNECT [utilisateur]/[ mot_de_passe][ @service] [AS SYSDBA | AS SYSOPER] LesoptionssontlesmmesquelorsdulancementdeSQL*Plusenlignedecommande.Laconnexionencoursest automatiquementdconnecte. LacommandeDISCONNECTpermetdesedconnecter. Exemple: SQL> CONNECT /@orcl AS SYSDBA Connect. SQL> CONNECT system/xy$78@srvlinora:1521/orcl Connect. Avantdeseconnecter,ilestpossibledetaperlacommandeSET INSTANCE servicepourdfinirlenomdeservice rseau ou lidentifiant de connexion simplifie utiliser pour la totalit de la session cette commande doit tre saisiesansaucuneconnexionencours,doncventuellementaprsunDISCONNECT. Exemple: SQL> SET INSTANCE orcl Oracle Database 11g Release 11.1.0.0.0 - Production SQL> CONNECT / AS SYSDBA Connect.

- 2-

ENI Editions - All rights reserved - Algeria Educ

SQL> CONNECT system/xy$78 Connect.

c.ExcuterunscriptSQL
LescommandesSTARTou@permettentdexcuterunscriptSQL. Syntaxe START script @script scriptestlenomduscriptSQLexcuter(aveclecheminsincessaire) lextensionpardfautest.sql. VousserezparfoisamensexcuterdesscriptssitusdanslarborescenceOracleHome.Lepointdinterrogation (?) peut tre utilis comme raccourci du chemin vers le rpertoire Oracle Home. Par ailleurs, sur plateforme Windows,SQL*Plusacceptelesparateur/(laplacede\)danslaspcificationdunchemin. Exemple SQL> @?/rdbms/admin/utlpwdmg

d.Excuterunecommandedusystmedexploitation
Lacommande HOSTpermetdexcuterunecommandedusystmedexploitationpartirdeSQL*Plus,notamment dansunscriptSQL. Syntaxe HOST commande Exemple SQL> HOST copy d:\app\oracle\oradata\orcl\system01.dbf g:\app\oracle\ oradata\orcl\system01.dbf 1 fichier(s) copi(s). SurplateformeUnixouLinux,lepointdexclamation(!)peuttreutilislaplacedelacommandeHOST.

e.Utiliserdesvariablesdesubstitution
SQL*Plus permet dutiliser des variables de substitution dans lexcution des ordres SQL, notamment dans un script. Unevariabledesubstitutionestdfinieparunnomprcdducaractre&.Ellepeuttreutilisepoursubstituer une valeur tout lment de lordre SQL : valeur dans une clause WHERE, nom de colonne, nom de table, clause WHEREcomplte,etc. Lors de lexcutiondun ordre SQL, si SQL*Plus rencontre une variable de substitution non dfinie, il affiche une invitepermettantdesaisirunevaleur. Ilestpossibledecontrlerlinviteetdaffecterunevaleurunevariabledesubstitutionavantlexcutiondelordre SQLgrcelacommandeACCEPT. Syntaxe ACC[EPT] variable [NUM[BER]|CHAR|DATE] [FOR[MAT] format] [DEF[AULT] dfaut] [PROMPT texte|NOPR[OMPT]] [HIDE] Avec variable Nomdelavariabledesubstitution(sanslecaractre&). format

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Formatdesaisie(mmesconventionsquecellesutilisesdansloptionFORMATdelacommandeCOLUMN). dfaut Valeurpardfautsiaucunevaleurnestsaisie. texte Textedelinvite(mettreentreapostrophesouentreguillemetssiletextecontientdesespaces). HIDE Permetdemasquerlasaisie(commepourunmotdepasse). Unevariabledesubstitutionpeutaussitredfinie,sansinterventiondelutilisateur,grcelacommandeDEFINE. Syntaxe DEFINE variable = valeur Avec variable Nomdelavariabledesubstitution(sanslecaractre&). valeur Valeurdelavariable(mettreentreapostrophesouentreguillemetssilavaleurcontientdesespaces). Pardfaut,lorsqueSQL*Pluseffectueunesubstitution,ilafficheunmessagedonnantlordreSQLavantetaprsla substitution. Il est possible dactiver ou de dsactiver cette fonctionnalit grce la commandeSET VERIFY ON | OFF. Exempledescriptinfo.sqlutilisantdesvariablesdesubstitution ACCEPT colonnes CHAR DEFAULT empno PROMPT "Colonne(s) : " ACCEPT nom CHAR PROMPT " Nom : "SELECT &colonnes FROM emp WHERE ename = UPPER(&nom); ExcutionduscriptdansSQL*Plus(saisieengras) SQL> @info Colonne(s) : job Nom : blake old 1: SELECT &colonnes FROM emp WHERE ename = UPPER(&nom) new 1: SELECT job FROM scott.emp WHERE ename = UPPER(blake) JOB --------MANAGER SQL> SET VERIFY OFFSQL> @info Colonne(s) : empno,job,sal Nom : king EMPNO JOB SAL --------- --------- --------7839 PRESIDENT 5000 Notezquedansledeuximecas,lasubstitutioneffectueparSQL*Plusnestpasaffiche(rsultatdelacommande SET VERIFY OFF). Lorsquelavariableestimmdiatementsuiviedunelettre,dunchiffre,dunpointoudunsoulign,ilestncessaire dutiliserunpointpourbiendlimiterlafindunomdelavariable. Exemple :

- 4-

ENI Editions - All rights reserved - Algeria Educ

SQL> DEFINE prefixe=user_ SQL> SELECT COUNT(*) FROM &prefixetables; Enter value for prefixetables: Surcetexemple,SQL*Plusconsidrequelenomdelavariableestprefixetables(etildemandesavaleurpuisque cettevariablenestpasdfinie). Solution : SQL> SELECT COUNT(*) FROM &prefixe.tables; old 1: SELECT COUNT(*) FROM &prefixe.tables new 1: SELECT COUNT(*) FROM user_tables COUNT(*) ---------638 Aveclepointaprslenomdelavariable,leproblmeneseposeplus. Leproblmeneseposepassilecaractrequisuitestundlimiteurdutype/,-,$,#,etc.Encasdedoute,lepoint peutdetoutefaontreutilis.

f.Passerdesvaleursunscript
Lesvariablesdesubstitution&1,&2, peuventtreutilisespourfairerfrenceauxparamtresprsentssurla lignedappelduscript. Exempledescriptinfo.sql utilisantdesparamtrespassssurlalignedappelduscript SET VERIFY OFF SELECT &1 FROM emp WHERE ename = UPPER(&2); ExcutionduscriptdansSQL*Plus SQL> @info job blake JOB -------MANAGER ExcutionduscriptdanslalignedecommandeSQL*Plus > sqlplus scott/tiger @info.sql job blake ... JOB -------MANAGER Lavaleurpasseenparamtreunscriptdoittremiseentreapostrophesouentreguillemetssiellecontientdes espaces(lespaceestlesparateurdesparamtres).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

OracleSQLDeveloper
OracleSQLDeveloperestuneapplicationgraphiquepermettantdexcuterdesrequtesoudesscriptsSQL,degrer les objets dune base de donnes (tables, vues, etc) et de dvelopper et mettre au point des programmes PL/SQL. OracleSQLDeveloperestgratuitetpeuttretlchargdirectementsurlesiteOTN.LapagedaccueildOracleSQL Developer se trouve ladresse suivante : http://www.oracle.com/technology/products/database/sql_ developer/index.html.Voustrouvereznotammentcetteadresseladocumentationetdestutoriaux.Depuislaversion 11dOracle,OracleSQLDeveloperestinstallpardfaut. Sur plateforme Windows, Oracle SQL Developer peut tre lanc par le menu Dmarrer Programmes Oracle nom_oracle_homeDveloppementdapplicationsSQLDeveloper. Sur plateforme Unix ou Linux, Oracle SQL Developer peut tre lanc laide du $ORACLE_HOME/sqldeveloper/sqldeveloper.sh.Lapplicationncessiteunenvironnementgraphique. shell script

Sur plateforme Windows, lors du premier lancement, il est possible que loutil demande le chemin de lapplication java.exe.VouspouvezutilisercellefournieparOracle :%ORACLE_HOME%\jdk\bin\java.exe. LafentreprincipaledOracleSQLDeveloperalalluresuivante :

Dans la partie gauche de la fentre, une structure arborescente permet de naviguer dans les objets dune ou de plusieursbasesdedonnes.Unclicsurlebouton permetdedfinirunenouvelleconnexion. Danslapartiedroitedelafentre,lazonedetravailpermetdditeretdexcuterdesrequtesSQLetdevisualiserle rsultat. Danslensemble,cetoutilesttrsconvivialetsonapprentissageestais.Commesonnomlindique,loutilestplutt destin aux dveloppeurs et il ne propose donc aucune fonctionnalit dadministration. Pour plus dinformations sur lutilisationdecetoutil,vouspouvezconsulterladocumentation"OracleDatabaseSQLDeveloperUsersGuide".

ENI Editions - All rights reserved - Algeria Educ

- 1-

OracleEnterpriseManagerDatabaseControl
1.Introduction
OracleEnterpriseManagerDatabaseControlestunoutildadministrationgraphiqueaccessibleparunnavigateur :il estapparuenversion10gdOracle. Lorsdelacrationdunebasededonnes,Oraclevousproposedadministrercettebasedefaoncentraliseavec OracleEnterpriseManagerGridControloudefaonlocaleavecOracleEnterpriseManagerDatabaseControl. PouradministrerlabaseavecleGridControl(nontraitdanscetouvrage),ilfautinstalleraupralablelagentOracle ManagementAgentsurlesystme.Sicenestpaslecas,loptionnestpasslectionnableetladministrationavecle DatabaseControlestproposepardfaut. Danslasuitedecetouvrage,nousutiliseronsprincipalementlesexpressions"DatabaseControl"ou"consoleOracle EnterpriseManager"pourdsignerloutilOracleEntrepriseManagerDatabaseControl. DatabaseControlproposetouteslesfonctionnalitsncessairesladministrationetloptimisationdunebasede donnesOracle.

2.Architecture
Derrire une apparente simplicit, le Database Control repose sur une architecture relativement complexe. Le Database Control est une application J2EE qui utilise une version autonome du serveur dapplication OC4J (Oracle ContainersforJ2EE).

Le Database Control utilise diffrents composants pour surveiller et administrer la base de donnes Oracle et son environnement(serveurhte,processusdcoute) :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

une version locale du service Oracle Management Service (OMS) destin fonctionner avec la base de donnesadministre unrfrentiel(OracleManagementRepository)installdanslabasededonnesadministre(schmaSYSMAN), destinstockerdesinformationsutilisesparleDatabaseControl uneversionlocaledelagent(OracleManagementAgent)dontlerleestdefournirdesinformationsauservice OMSlocal.

Ctclient,unsimplenavigateursuffitpourutiliserlaconsole lenavigateurcommuniqueavecleserviceOMS,surle port1158.Ctserveur,leserviceOMSetlagentcommuniquentsurleport3938. Lecompte DBSNMPestutilisparlagentpoursuperviseretgrerlabasededonnes.LecompteSYSMAN est utilis pourstockerlerfrentielduDatabaseControl ilpeutaussitreutilispouradministrerlabasededonnes. Le Database Control est associ une base de donnes. Si plusieurs bases de donnes sont prsentes sur le serveur,chaquebasededonnespossdesapropreinfrastructure(serviceOMS,agent,rfrentiel).Dansuntelcas defigure,lesportsutilisssontdiffrents :5500et1830pourlasecondebasededonnes,parexemple. Lefichierportlist.inistockdanslerpertoireinstalldonnelalistedesportsutilissparlesdiffrentes basesdedonnesprsentessurleserveur. LesfichiersutilissparleDatabaseControldunebasededonnessontstocksdansdeuxrpertoires :
q

%ORACLE_HOME%\serveur_sid(plateformeWindows)ou $ORACLE_HOME/serveur_sid(plateformeLinux) %ORACLE_HOME%\oc4j\j2ee\OC4J_DBConsole_serveur_sid (plateforme $ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_serveur_sid(plateformeLinux) Windows) ou

La configuration du Database Control est un sujet relativement complexe qui est dcrit dans la documentation OracleEnterpriseManagerAdvancedConfiguration.Voustrouvereznotammentdanscemanuelcommenteffectuer lestchessuivantes :
q

configurerleDatabaseControllorsdelacrationdunebasededonnes changerlesmotsdepassedeSYSMANetDBSNMP modifierlesportsutiliss scuriserleDatabaseControl(cestlecaspardfautenversion11).

SurMetaLink,voustrouverezaussidenombreusesnotesrelativesauDatabaseControl. Danscetouvrage,nousverronssimplementcommentConfigurerleDatabaseControllorsdelacrationdunebase dedonnes(cf.ChapitreCrationdunenouvellebasededonnes).

3.GrerleDatabaseControl
LeDatabaseControlpeuttrearrtoudmarrgrcelutilitairelignedecommandeemctl. Syntaxe : emctl { start | stop | status } dbconsole Lescommandesstartetstoppermettentrespectivementdedmarreretdarrterlaconsole lacommandestatus permetdevoirlestatut. Lutilitaire agit sur le Database Control de la base de donnes ouverte par linstance dfinie par la variable denvironnementORACLE_SID sicettevariabledenvironnementnestpaspositionne,lutilitaireafficheunmessage derreur. Lacommandeemctl status agentpeutaussitreutilisepourafficherdesinformationsdtaillessurlagent.

- 2-

ENI Editions - All rights reserved - Algeria Educ

LedmarrageduDatabaseControlestassezlong(environ1minute). Si vous utilisez le Database Control pour administrer la base de donnes, il est souhaitable que ce dernier soit dmarrautomatiquementlorsdudmarragedusystme. SurplateformeWindows,leDatabaseControlpeuttredmarrautomatiquementlorsdudmarragedusystme enpositionnantleserviceassoci(OracleDBConsole<SID>)endmarrageautomatique. Sur plateforme Unix ou Linux, le serveur dapplication peut tre dmarr automatiquement grce au script de dmarrageprsentdanslasectionInstallationduserveurduchapitreInstallation. Le script actuel doit tre modifi pour prendre en charge le dmarrage et larrt de plusieurs Database Control (ventuellementdansdesOracleHomediffrents)laidedelacommandeemctl. Vouspouvezvousinspirerdesscriptsdbstartetdbshutpourcrireuntelscript. Exemple for ligne in $(cat /etc/oratab | egrep ^[a-zA-Z]+:.*:Y$) do SID=$(echo $ligne | cut -d: -f1) EM_HOME=$(echo $ligne | cut -d: -f2) export ORACLE_SID=$SID $EM_HOME/bin/emctl start dbconsole > $LOG 2>&1 & done Cet exemple de code permet de dmarrer le Database Control pour toutes les instances dfinies en dmarrage automatiquedanslefichier/etc/oratab.

4.DbuteravecleDatabaseControl
a.Vuedensemble
Danscettepartie,nousallonsdonnerunevuedensembledelutilisationduDatabaseControl.Danslesdiffrents chapitres de louvrage, nous verrons ensuite comment utiliser le Database Control pour effectuer les diffrentes tches dadministration. Pourdmarrer une session Database Control, il suffit douvrir une fentre de votre navigateuretdesaisiruneURLdelaforme : https://serveur:port/em serveurestlenomouladresseIPduserveurdebasededonnes.portestlenumroduportsurlequelleservice OMScommunique(1158parexemple). Exemple : https://srvwinora:1158/em Si la base est dmarre, la page de connexion saffiche. Si la base nest pas dmarre, la page de dmarrage saffiche(cf.ChapitreDmarrageetarrt). Lapagedeconnexionpermetdesaisirunnom,unmotdepasseetventuellementdedemanderuneconnexion SYSDBAouSYSOPER(zoneSeconnecterentantque) :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Initialement,seulslescomptesOracleSYS,SYSTEMetSYSMANpeuventutiliserleDatabaseControl. Unefoisconnect,vousarrivezsurlapagedaccueilduDatabaseControl :

Cettepagedaccueilvousdonneunevisionglobaledufonctionnementgnraldelabasededonnes.Cettepage affiche notamment des informations synthtiques sur les performances du systme, lutilisation de lespace et les alertessignalesparlesystme diffrentslienspermettentensuitedafficherdesinformationsdtaillessurces diffrentsaspects. LesliensPerformances,Disponibilit,Serveur,Schma,MouvementdedonnesetLogicieletfichiersassocis affichentdespagesdenavigationquipermettentdaccderauxdiffrentsoutilsdadministration. Enhautdechaquepage,leDatabaseControlpropose4liens :

LelienInstallationafficheunepagequipermetdeconfigurerleDatabaseControl cettepagepermetnotamment dedfinirdautresutilisateurshabilitsutiliserlaconsole. LelienPrfrencesafficheunepagequipermetdemodifierlesprfrencesdelutilisateurcourant,etnotamment dedfiniruneadressedecourrierlectroniquepermettantderecevoirunenotificationencasdeproblme(voirla sectionUtiliserlesalertesdanscechapitre).

b.Informationsdidentificationetdeconnexion
Pour certaines tches dadministration (planification de travaux, sauvegarde/restauration), le Database Control vous demandera de saisir des informations didentification et de con nexion la base de donnes et/ou au systmehte. Pourviterdedevoirsaisircesinformationschaquefois,vouspouvezlesenregistrerdansvosprfrences. Sur la page Prfrences, cliquez sur le lien Informations didentification et de connexion stockes dans les prfrences.

- 4-

ENI Editions - All rights reserved - Algeria Educ

Cliquezsurunedesicnesdeladernirecolonnepoursaisirlesinformationsdidentificationdelaciblesouhaite (instancedebasededonnes,hte).

Pour la base de donnes, vous pouvez enregistrer deux identifications Oracle pour la base de donnes (une identification "normale", par exemple SYSTEM, et une identification SYSDBA, par exemple SYS) ainsi quune identificationpourlhte. Encequiconcernelidentificationpourlhte,vousdevezindiquerunutilisateurdusystmequialedroitdexcuter desapplicationsdanslerpertoireOracleHome cestlecasdescomptesquisontmembresdugroupeOSDBA,et doncnotammentducompteutilispourlinstallation. Sur plateforme Windows, le compte utilis doit par ailleurs tre membre du groupe Administrateurs et avoir le privilge Ouvrir une session en tant que tche. Si ce nest pas le cas, vous aurez le message derreur suivant lorsquevouscliquerezsurleboutonTest :

Pourattribuerceprivilge,procdezdelamaniresuivante :
s

SlectionnezlemenuDmarrer Programmes Outilsdadministration Stratgiedescuritlocale.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

Danslarborescencedegauche,cliquezsurledossierStratgieslocale Attributiondesdroitsutilisateur. Dans la liste des stratgies, double cliquez sur la stratgieOuvrir une session en tant que tche et ajoutez lutilisateursouhaitdanslaliste.

5.Utiliserlesalertes
a.Visualiserlesalertes
Pardfaut,leDatabaseControlestconfigurpoursignalerdiffrentsproblmessurlefonctionnementdelabase dedonnes :cestlanotiondalerte.LesalertessontvisiblessurlapagedaccueilduDatabaseControl :

La liste Alertes donne les alertes de linstance et de la base de donnes. La liste Alertes associes donne les alertes dautres composants Oracle (Oracle Net par exemple) ou de lhte. Lorsquune alerte est signale, vous pouvezcliquersurlelienassocipouravoirplusdinformations selonlanaturedelalerte,lapageaffichepeut proposerdeslienspourfairedesactionscorrectricesouuneanalysesupplmentaire.

b.Dfinirlesseuilsdesalertes
Surlapagedaccueil,vouspouvezcliquersurlelienParamtresdemesureetdergle(cadreLiensassocisen bas),pouraccderlapagedegestiondesseuilsdedclenchementdesalertes :

Cettepageaffichelesseuilsactuelsdedclenchementdesalertespourlesdiffrentesmesures.Pourlesmesures

- 6-

ENI Editions - All rights reserved - Algeria Educ

souhaites,vouspouvezdfinirunseuildavertissementetunseuilcritique.

c.Recevoirunenotificationlorsquunealertesurvient
Il est possible de recevoir directement une notification lorsquune alerte survient, typiquement par messagerie lectronique. Pourrecevoirunenotificationparmessagerielectronique,vousdevezfairedeuxchoses :
q

configurerlesmthodesdenotificationduDatabaseControl vous"abonner"desnotifications.

Configurerlesmthodesdenotification Surlapagedaccueil,outouteautrepage,cliquezsurlelienInstallationenhautdroite,puissurlelienMthodes denotificationpouraccderlapagededfinitiondesmthodesdenotification :

Lapremiremthodedenotificationquevouspouvezdfinirestlanotificationparmessagerielectronique.Pourla configurer,ilsuffitdindiquerladresseduserveurdemessageriesortant(etsibesoinuneauthentificationpource serveur) et didentifier lexpditeur (le Database Control) par un nom et une adresse lectronique. Si vous le souhaitez, vous pouvez dfinir dautres mthodes de notifications : SNMP (Simple Network Management Protocol), commandedusystmedexploitation,procdurePL/SQL. La configuration de la mthode de notification par messagerie lectronique peut tre ralise lors de la crationdunebasededonneslaidedelassistantgraphique,oulorsdelaconfigurationduDatabase Controlaveclutilitaireemca.

Sabonnerunenotification Sivoussouhaitezrecevoirdesnotificationsparmessagerielectronique,vousdevezdabordassocieruneadresse lectroniqueaucompteOraclequevousutilisezpourladministration. Surlapagedaccueil,outouteautrepage,cliquezsurlelienPrfrencesenhautdroite,pouraccderlapage degestiondevosprfrences :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

DanslecadreAdresseemail,vouspouvezindiqueruneouplusieursadresseslectroniques. Ensuite,vouspouvezcliquersurlelienRglespourvousabonnerunenotification :

Une rgle de notification est un ensemble de conditions qui dclenche une notification : cible (base de donnes, processus dcoute, hte, etc.), disponibilit de la cible, survenance dune ou plusieurs alertes (avec seuil de gravit). Plusieurs rgles de notification sont dfinies par dfaut lors de linstallation du Database Control. Par exemple,largle"DatabaseAvailabilityandCriticalStates"dclencheunenotificationlorsquelabasededonnes est arrte, et un seuil critique est atteint sur plusieurs mesures (pourcentage de remplissage de la zone darchivage,pourcentagederemplissageduntablespace,etc.). Sur la page cidessus, vous pouvez consulter ou modifier une rgle prdfinie ou crer de nouvelles rgles. En cochant la case de la dernire colonne (Abonnement), vous pouvez vous "abonner" la rgle, cestdire demandertredestinatairedelanotification. CestlecompteOracleSYSMANquiestpropritairedesrglesdenotificationprdfinies,maiscellescisont publiquesetpeuventdonctremodifiesparlesautresutilisateurshabilitsduDatabaseControl.Lorsde

- 8-

ENI Editions - All rights reserved - Algeria Educ

la cration dune base de donnes laide de lassistant graphique, ou lors de la configuration du Database Control avec lutilitaire emca, si vous configurez la notification par messagerie lectronique, ladresse de messagerie indique sera associe au compte SYSMAN, et les notifications seront automatiquement envoyes cetteadresse.

6.Lestchesdemaintenanceautomatises
Troistchesdemaintenanceautomatisessontprogrammespardfaut :
q

Collectedesstatistiquespourloptimiseur(voirChapitreGestiondestablesetdesindex) Conseilsurlestockagedessegments(voirChapitreGestiondestablesetdesindex) ConseilsurloptimisationdesrequtesSQL.

LestchesdemaintenanceautomatisespeuventtresupervisesdansleDatabaseControl.Surlapagedaccueil, cliquez sur le lien Serveur, puis sur le lienTches de maintenance automatises (cadreOracle Scheduler) pour afficherlalistedestchesdemaintenanceautomatises :

Par dfaut, les tches de maintenance automatique sexcutent du lundi au vendredi entre 22h00 et 2h00 et le samedietledimancheentre6h00et2h00. Si vous cliquez sur le lien correspondant au nom de la tche, vous pouvez visualiser le rsultat de la dernire excution(saufpourlacollectedesstatistiques). SivouscliquezsurleboutonConfigurer,lapagedeconfigurationdestchesdemaintenancesaffiche :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

partir de cette page, vous pouvez activer ou dsactiver les tches, modifier leur planification ou les configurer (boutonConfigurer). Dans ces deux pages, il y a une inversion entre les termes "Dsactiv" et "Activ" : "Dsactiv" veut dire "Activ"etrciproquement.

- 10 -

ENI Editions - All rights reserved - Algeria Educ

Objectifsdelouvrage
CetouvrageapourobjectifdevousprsentertouteslesbasesdeladministrationdunebasededonnesOracle11g :
q

comprhensionminimaledelarchitecture procduresdinstallationenenvironnementWindowsetUnix/Linux configurationdOracleNet arrtetdmarrage crationdunenouvellebasededonnes gestiondelammoire gestiondustockage(fichiersdedonnes,tablespaces,tables,index,etc.) gestiondelascurit(utilisateursetdroits) sauvegardesetrestaurationsavecRMAN(RecoveryManager)

Ce livre contient de nombreux conseils pratiques et de nombreuses recommandations, et prsente les solutions qui peuvent tre apportes aux problmes courants. Le tout est abondamment illustr par une quantit dexemples sur lutilisation des commandes et autres ordres SQL, mais aussi par de nombreuses copies dcrans dOracle Enterprise ManagerDatabaseControl.LesdiffrentsexemplesdecetouvragepeuventtretlchargssurlesitedesEditionsENI. CetouvragesadresselafoisauxdbutantsquisouhaitentdeveniradministrateurOracle,maisaussiauxnombreux administrateursformssurletas,etquisouhaitentmettrejourleursconnaissances,lesconsolideretdcouvrirles nombreusesnouvellesfonctionnalitsdOracle11g. Pour pouvoir profiter pleinement de ce livre, il est conseill davoir des connaissances pralables sur les bases de donnesrelationnelles(savoircequestunetable,unevue,unindex)etsurleSQL(ordresSELECT,INSERT,UPDATEet DELETE). Danscetouvrage,nousemploieronssouventletermecourammentutilisdeDBApourdsignerladministrateur delabasededonnes.Enanglais,DBAsignifieDataBaseAdministrator.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

LadocumentationOracle
1.Olatrouver ?
Lemdiadinstallationcontientessentiellementladocumentationrelativelinstallation,notamment :
q

OracleDatabaseReleaseNotes OracleDatabaseQuickInstallationGuide OracleDatabaseInstallationGuide. en ligne ladresse suivante :

La documentation Oracle est accessible http://www.oracle.com/technology/documentation/index.html

2.Organisation
Ladocumentationcomporteplusieurs"livres"(formatHTMLouPDF)regroupsparthme.

LazoneSearchpermetdeffectuerdesrecherches,notammentsurunnumroderreurOracle. LelienMasterBookListaffichelalistedetousleslivres. Lesprincipauxlivressontidentifispardescodesproposssousformedeliendansletableaudesynthsedelaliste deslivres.Leslivreslesplusutilespourladministrationsontlessuivants : OracleDatabaseConcepts(CON) ConceptssurlarchitectureetlesfonctionnalitsdOracle. OracleDatabaseAdministratorsGuide(ADM) Manueldeladministration.

ENI Editions - All rights reserved - Algeria Educ

- 1-

OracleDatabaseSecurityGuide(SEC) Gestiondesutilisateursetdesdroits. OracleDatabaseReference(REF) Manuel de rfrence de tous les paramtres du fichier de paramtres et de toutes les vues du dictionnaire de donnes. OracleDatabaseSQLLanguageReference(SQL) ManuelderfrenceduSQL. OracleDatabaseErrorMessages(ERR) Manueldeserreurs. OracleDatabaseUtilities(UTI) ManueldutilisationdesoutilsDataPump,Import,ExportetSQL*Loader. OracleDatabaseBackupandRecoveryUsersGuide(BAC) Manueldessauvegardesetrestaurations. OracleDatabaseBackupandRecoveryReference(BAC) ManuelderfrencedeloutilRMAN. OracleDatabaseUpgradeGuide(UPG) ManuelpourlamigrationdunebaseOracleduneancienneversion. Ladocumentationcomportebeaucoupdautreslivresrelatifsaudveloppement(PL/SQL,Java...),lacoucheOracle Net,loptimisation,etc.

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

Diagnostiquerlesproblmes
1.Vuedensemble
Depuislaversion11,Oracleinclutunenouvelleinfrastructurepourlediagnosticdesproblmes. Le composant principal de cette infrastructure est le Rfrentiel de Diagnostic Automatique (Automatic Diagnostic Repository ADR). ADR est un rpertoire qui stocke de faon structure et centralise toutes les donnes de diagnostic,parexempledesfichiersdetraceoudalerte. Cetteinfrastructureintroduitdeuxconcepts:lesproblmesetlesincidents. Unproblmeestuneerreurcritiquedelabasededonnes,commeleserreursinternes(ORA-00600),leserreursdu systmedexploitation(ORA-07445)oulemanquedemmoiredanslaSharedPool(ORA-04031).Chaqueproblmeest identifi par une cl qui inclut le code de lerreur (par exemple ORA-600) et ventuellement, des paramtres supplmentaires. Un incident est une occurrence dun problme. Chaque incident est identifi par un numro dincident. Lorsquun incidentseproduit,labasededonneseffectuelesactionssuivantes :
q

uneentreestcritedanslefichierdalertedelinstance(voirciaprs) unealerteestenvoyeOracleEnterpriseManager des informations de diagnostic sont captures et enregistres dans des fichiers dincidentquisontmarqus aveclenumrodelincidentetstocksdansunsousrpertoireduRfrentieldeDiagnosticAutomatique.

UnautrecomposantdelanouvelleinfrastructureestleHealthMonitorquiregroupeplusieursoutilsdevrificationdela bonnesantdelabasededonnes.CesoutilsdevrificationsontexcutsautomatiquementparOraclelorsquune erreur critique se produit ils peuvent aussi tre excuts la demande. Les rsultats sont stocks dans le RfrentieldeDiagnosticAutomatique. PourexploiterleRfrentieldeDiagnosticAutomatique,Oracleproposedeuxoutils :
q

LeSupportWorkbenchdelaconsoleEnterpriseManager Loutillignedecommandeadrci

2.LeRfrentieldeDiagnosticAutomatique
Depuislaversion11,touslesfichiersdetraceettouslesfichiersjournauxdesdiffrentscomposantsquisexcutent surleserveur(basesdedonnes,processusdcoute,etc.),sontstocksdefaonstructureetcentralisedansun rpertoiredediagnostic:cestleRfrentieldeDiagnosticAutomatique(AutomaticDiagnosticRepositoryADR). LerpertoiredebasedADRestdfiniparleparamtreDIAGNOSTIC_DESTquiest,pardfaut,galaurpertoireOracle BasesilavariabledenvironnementORACLE_BASEestdfiniesinon,ilestgal,pardfaut,ausousrpertoirelogdu rpertoire Oracle Home. Sous ce rpertoire de base, un rpertoire diag est cr avec une arborescence du type suivant: diag +---asm +---clients +---crs +---diagtool +---lsnrctl +---netcman +---ofm +---rdbms +---<nom unique base de donnes> +---<nom instance> +---alert +---incident +---trace +---...

ENI Editions - All rights reserved - Algeria Educ

- 1-

+---... +---tnslsnr Le rpertoirediag contient un sousrpertoire par composant Oracle, avec notamment un rpertoire rdbms pour les bases de donnes et un rpertoire tnslsnr pour le processus dcoute. Pour les bases de donnes, le rpertoire rdbms contient un sousrpertoire par base de donnes qui, luimme, contient un sousrpertoire par instance qui accde la base de donnes (en gnral une seule instance, sauf dans le cas dune configuration Real Application Clusters).Lesprincipauxrpertoiressontlessuivants : alert FichierdalertedelinstanceauformatXML. incident Fichiersrelatifsauxincidents. trace Fichiersdetracedesprocessusetversiontextedufichierdalertedelinstance. LavueV$DIAG_INFOdonnedesinformationssurlerpertoiredediagnostic : SQL> SELECT name,value FROM v$diag_info; NAME VALUE --------------------- ----------------------------------------------------Diag Enabled TRUE ADR Base d:\app\oracle ADR Home d:\app\oracle\diag\rdbms\orcl\orcl Diag Trace d:\app\oracle\diag\rdbms\orcl\orcl\trace Diag Alert d:\app\oracle\diag\rdbms\orcl\orcl\alert Diag Incident d:\app\oracle\diag\rdbms\orcl\orcl\incident Diag Cdump d:\app\oracle\diag\rdbms\orcl\orcl\cdump Health Monitor d:\app\oracle\diag\rdbms\orcl\orcl\hm Default Trace File d:\app\oracle\diag\rdbms\orcl\orcl\trace\ orcl_ora_4088.trc Active Problem Count 1 Active Incident Count 1 Avant la version 11, lemplacement des fichiers dalerte et de trace tait dfini par les paramtres BACKGROUND_DUMP_DEST(fichiersdalerteetfichiersdetracedesprocessusdarrireplan)etUSER_DUMP_DEST(fichiersde tracedesprocessusserveur).LesemplacementsrecommandsparlestandardOFAtaientrespectivementlessous rpertoiresbdumpetudumpdurpertoiredadministration. Depuislaversion11,lesparamtresBACKGROUND_DUMP_DESTetUSER_DUMP_DESTsontdprcisetignors.Silsnesont pasdfinisdanslefichierdeparamtresdelinstance,ilssontautomatiquementrenseignsparOracle.

3.Lesfichiersdalerteetdetrace
Oraclemaintientunfichierdalertedanslequelilcritdesmessagesdinformationouderreursurlaviedelabasede donnes :
q

Crationdelabasededonnes Dmarragesetarrts Modificationsdelastructure(tablespaces,fichiersdedonnes) Erreurscritiques(incidents) Erreursdebloccorrompu(ORA-01578) Problmesrelatifslcritureoularchivagedesfichiersdejournalisation.

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

Encomplment,lorsquunprocessusrencontreunproblme,ilcritdesinformationsdansunfichiertrace. Lefichierdalerteestdisponiblesousdeuxformes:uneversiontexteetuneversionXML(nouveauenversion11). Le fichier dalerte au format XML se nomme log.xml et se trouve dans le sousrpertoire alert du rpertoire de diagnosticdelabasededonnes.Ilestautomatiquementrenommenlog_n.xmllorsquilatteintunecertainetaille. Lenomdufichierdalerteauformattexteestdelaformealert_<SID>.logilsetrouvedanslesousrpertoiretrace durpertoiredediagnosticdelabasededonnes. Le fichier dalerteauformattexte,grossitsanslimite.Ilestconseilldelepurgerrgulirementpourviterquilne soit trop volumineux le mieux est de larchiver intervalles rguliers pour garder lhistorique de la vie de la base. Vous pouvez supprimer ou renommer le fichier dalerte au format texte sans crainte Oracle le recrera lorsquil en aurabesoin. Lenomdesfichiersdetracedesprocessusdarrireplanestdelaforme<sid>_<nom_processus>_<id_processus>.trc. Le nom des fichiers de trace des processus serveur est de la forme <sid>_ora_<id_processus>.trc. La taille des fichiersdetraceestlimiteparleparamtreMAX_DUMP_FILE_SIZE. Ilfautpriodiquementconsultercesfichiersdalerteetdetrace.Silecontenudunfichierdalerteoudetrace nestpasclair,ilnefautpashsitercontacterlesupportOracle.

4.UtiliserleDatabaseControl
a.SupportWorkbench
La console Enterprise Manager propose une fonctionnalit intituleSupport Workbench qui permet dexploiter trs facilementleRfrentieldeDiagnosticAutomatique. Dans la console, le terme "Support Workbench" est maladroitement traduit par "Prise en charge de workbench".Danslasuitedecechapitre,jeprfredoncutiliserlenomanglais.

PouraccderlapagedaccueilduSupportWorkbenchpartirdelapagedaccueildelaconsole,cliquezsurlelien LogicieletfichiersassocispuissurlelienPriseenchargedeworkbench.

LapagedaccueilduSupportWorkbenchaffichelesproblmessurvenusaucoursdes24derniresheures. EncliquantsurlelienAfficher,lesincidentsrelatifsauproblmesontaffichs :

ENI Editions - All rights reserved - Algeria Educ

- 3-

Pourafficherledtaildunincident,ilsuffitensuitedecliquersurlelienassoci :

LeSupportWorkbenchpermet,trsfacilement,deregrouperlesdonnesdediagnosticdansun"package"envuede lesenvoyerausupportOracle.
s

SurlapagedaccueilduSupportWorkbench,cochezleproblmeconcernpuiscliquezsurleboutonPackage :

Lapagesuivantesaffiche :

openmirrors.com

- 4-

ENI Editions - All rights reserved - Algeria Educ

Surcettepage,laissezloptionPackagingrapideslectionnepuiscliquezsurleboutonContinuer.

Lapremirepagedelassistantsaffiche :

Surcettepage,vousdevezsaisirvosidentifiantsdeconnexionMetalink.Sivousavezdjcrunedemande deservice,slectionnezloptionNonpourleboutonradioCrerunedemandedeservice(SR).Optionnellement, vouspouvezsaisirunnometunedescriptionpourlepackage. CliqueztroisfoissurleboutonSuivant,pourterminerlacrationdupackageetsonenvoiausupportOracle.

EncasdeproblmelorsdelenvoidupackageausupportOracle,unepagederreursaffiche :

Commelindiquelemessagederreur,lepackageestnanmoinscretpeuttreenvoyultrieurementausupport, soitpartirdelaconsole,soitmanuellement.Commelemontrelexemplecidessus,lenvoidupackageausupport OraclechouelorsquOracleConfigurationManagernapastcorrectementinstalletconfigurlorsdelinstallation dOracle.Pourplusdinformationssurlinstallationetlaconfigurationdececomposant,consultezladocumentation "Oracle Configuration Manager Installation and Administration Guide" ( ce jour, cette documentation existe uniquementenversion10.2). Une fois que le package est cr, et mme sil na pas pu tre envoy, des informations supplmentaires sont affichesdanslapagedaccueilduSupportWorkbench :

ENI Editions - All rights reserved - Algeria Educ

- 5-

Pour le problme concern, la colonne Package contient Oui, et longlet Packages permet de retrouver les packagesquionttgnrs,etventuellementdelesenvoyerdenouveausilenvoiinitialachou.

b.Consulterlecontenudufichierdalertedelinstance
Dans la section Liens associs situe dans le bas des pages de la console, le lien Contenu du journal dalertes afficheunepagedeconsultationducontenudufichierdalertedelinstance.

LelienRechercherafficheunformulairederecherchequipermetdeffectuerunerecherchedanslefichierdalertede linstance(pardate,textedumessage,etc.).

c.Vrificateurs
Pour accder aux outils de vrification de la bonne sant de la base de donnes, vous pouvez cliquer sur le lien Centredeconseil(sectionLiensassocissituedanslebasdelapagedaccueildechaqueonglet)puissurlelien (onglet)Vrificateurs.

openmirrors.com

- 6-

ENI Editions - All rights reserved - Algeria Educ

LesliensdelasectionVrificateurspermettentdelancerlesdiffrentsoutilsdevrification. La section Traitements du vrificateur affiche le rsultat de lexcution des outils, notamment des excutions automatiqueseffectuesparOraclelorsquuneerreurcritiqueseproduit. Pourconsulterlersultat,vouspouvezcliquersurleboutonDtailsousurleliendunomdutraitement.

Lacausedelerreur,siellenapasencorettraite,estaffichedanscettepage. La mme information peut tre consulte dans longlet Rsultats de recherche du vrificateur du Support Workbench.

ENI Editions - All rights reserved - Algeria Educ

- 7-

Danslesdeuxcas,vouspouvezcliquersurleboutonLancerRecoveryAdvisorpourrparerleproblmelaidedu DataRecoveryAdvisor(cf.sectionUtiliserleDatabaseControlduchapitreSauvegardeetrcupration).

5.Loutillignedecommandeadrci
LoutillignedecommandeadrcipermetdeconsulterlecontenuduRfrentieldeDiagnosticAutomatique. Pourlancerloutileninteractif,ilfautsassurerquelenvironnementOracleestcorrectementpositionn(ORACLE_HOME etPATH)puissaisirlacommandeadrcilinvitedusystmedexploitation. Exemple C:\>adrci ADRCI: Release 11.1.0.6.0 - Beta on Lun. Juin 30 16:40:29 2008 Copyright (c) 1982, 2007, Oracle. All rights reserved. ADR base = "d:\app\oracle"adrci> Loutil propose un trs grand nombre de commandes qui pour certaines dentreelles,comportentungrandnombre doptions. Dans ce chapitre, nous prsenterons brivement les commandes et options les plus utiles pour effectuer des tches courantes. Toutes les commandes et options sont dcrites dans la documentation "Oracle Database Utilities". Lescommandeslesplusutilessontlessuivantes: HELP Listetouteslescommandes. HELP commande Affichelaidedunecommande. EXIT ouQUIT Quitteloutil. SHOW HOMES

openmirrors.com

- 8-

ENI Editions - All rights reserved - Algeria Educ

Affichelechemindelaracinedurpertoiredediagnosticdechaquecomposantprsentsurleserveur. SET HOMEPATH chemin Dfinitlerpertoiredediagnosticcourant. SET EDITOR programme Dfinitlditeurexterneutiliserpourafficherlecontenudesfichiersdalerteoudetrace. SHOW ALERT [options] Affichelecontenudun fichier dalerte.Sansoption,latotalitducontenudufichierdalerteestaffichaveclditeur externe. SHOW INCIDENT [options] AffichedesinformationssurlesincidentsrpertorisdansADR. SHOW PROBLEM [options] AffichedesinformationssurlesproblmesrpertorisdansADR. Lescommandesnesontpassensibleslacasse. LacommandeSET EDITORdoitabsolumenttreutilisesuruneplateformeWindowscarlditeurpardfaut estviquinexistepas(enstandard)surcetteplateforme. Exemples
q

Dfinirlerpertoiredediagnosticcourant(celuidelinstanceORCL) :

adrci> SHOW HOMES ADR Homes: ... diag\rdbms\orcl\orcl diag\rdbms\test\test diag\tnslsnr\srvwinora\listener adrci> SET HOMEPATH diag\rdbms\orcl\orcl

Afficherles10derniresentresdufichierdalertedelinstance:

adrci> SHOW ALERT -TAIL 10 2008-06-27 10:07:57.375000 +02:00 SMCO started with pid=20, OS id=2856 ... 2008-06-30 12:26:09.593000 +02:00 Thread 1 advanced to log sequence 43 Current log# 1 seq# 43 mem# 0: D:\APP\ORACLE\ORADATA\ORCL\REDO01.LOG Afficher, dans la fentre courante, les entres du fichier dalerte de linstance correspondant un critre particulier(ici,laprsencedunecertaineerreur) :

adrci> SHOW ALERT -TERM -P "message_text like ORA-1652%" ADR Home = d:\app\oracle\diag\rdbms\orcl\orcl: ******************************************************************** 2008-06-24 15:33:29.312000 +02:00 ORA-1652: unable to extend temp segment by 128 in tablespace USERS 2008-06-24 15:35:07.031000 +02:00 ORA-1652: unable to extend temp segment by 128 in tablespace USERS

ENI Editions - All rights reserved - Algeria Educ

- 9-

Lammechoseenutilisantunditeurexterne(icisuruneplateformeWindows,cequincessitededfinir lditeurutiliseraupralable) :

adrci> SET EDITOR notepad.exe adrci> SHOW ALERT -P "message_text like ORA-1652%" ADR Home = d:\app\oracle\diag\rdbms\orcl\orcl: *************************************************************** Output the results to file: c:\temp\alert_2348_3036_orcl_2.ado Afficherla"structure"dufichierdalerte(listeles"colonnes"quipeuventtreutilisesdanslesrecherches) :

adrci> DESCRIBE alert_ext Name ----------------------------ORIGINATING_TIMESTAMP NORMALIZED_TIMESTAMP ORGANIZATION_ID COMPONENT_ID HOST_ID HOST_ADDRESS MESSAGE_TYPE MESSAGE_LEVEL MESSAGE_ID MESSAGE_GROUP CLIENT_ID MODULE_ID PROCESS_ID THREAD_ID USER_ID INSTANCE_ID DETAILED_LOCATION UPSTREAM_COMP_ID DOWNSTREAM_COMP_ID EXECUTION_CONTEXT_ID EXECUTION_CONTEXT_SEQUENCE ERROR_INSTANCE_ID ERROR_INSTANCE_SEQUENCE MESSAGE_TsEXT MESSAGE_ARGUMENTS SUPPLEMENTAL_ATTRIBUTES SUPPLEMENTAL_DETAILS PARTITION RECORD_ID FILENAME PROBLEM_KEY VERSION

Type NULL? --------------- ----------timestamp timestamp text(65) text(65) text(65) text(17) number number text(65) text(65) text(65) text(65) text(33) text(65) text(65) text(65) text(161) text(101) text(101) text(101) number number number text(2049) text(129) text(129) text(129) number number text(513) text(65) number

AfficherlesincidentsrpertorisdansADR :

adrci> SHOW INCIDENT ******************************************************************** INCIDENT_ID PROBLEM_KEY CREATE_TIME -------------------- ----------------------------------------------6529 ORA 600 [kssadd: null parent] 2008-06-24 16:03:16.593000 +02:00 1 rows fetched Afficherledtaildunincident :

adrci> SHOW INCIDENT -MODE DETAIL -P "incident_id = 6529" ADR Home = d:\app\oracle\diag\rdbms\orcl\orcl: ***********************************************************

openmirrors.com

- 10 -

ENI Editions - All rights reserved - Algeria Educ

********************************************************** INCIDENT INFO RECORD 1 ********************************************************** INCIDENT_ID 6529 STATUS ready CREATE_TIME 2008-06-24 16:03:16.593000 +02:00 PROBLEM_ID 1 ... PROBLEM_KEY ORA 600 [kssadd: null parent] FIRST_INCIDENT 6529 FIRSTINC_TIME 2008-06-24 16:03:16.593000 +02:00 ... INCIDENT_FILE d:\app\oracle\diag\rdbms\orcl\orcl\trace\ orcl_ora_2108.trc OWNER_ID 1 INCIDENT_FILE d:\app\oracle\diag\rdbms\orcl\orcl\incident\ incdir_6529\orcl_ora_2108_i6529.trc 1 rows fetched Loutil adcri peut tre utilis en mode batch, soit en passant les commandes sur la ligne de commande (option exec), soit en excutant un script de commandes (option script). Voir la documentation "Oracle DatabaseUtilities"pourplusdinformations.

ENI Editions - All rights reserved - Algeria Educ

- 11 -

Principes
Pourrendreunebaseaccessibletouslesutilisateurs,ilfautdmarreruneinstanceetouvrirlabasededonnesavec cetteinstance. Ilyatroisgrandesphasesdansleprocessusdedmarrage :
q

dmarragedelinstance montagedelabasededonnes ouverturedelabasededonnes.

Demme,ilyatroisgrandesphasesdansleprocessusdarrt :
q

fermeturedelabasededonnes dmontagedelabasededonnes arrtdelinstance.

Uneinstancepeuttredmarreavectroisniveauxsuccessifsdedisponibilitdelabasededonnes,correspondant auxtroisphasesdudmarrage :
q

Instancedmarre(tatNOMOUNT) Basemonte(tatMOUT) Baseouverte(tatOPEN).

Lorsdudmarragedelinstance,lefichierdeparamtresestlu,laSGAestalloueetlesprocessusdarrireplansont dmarrs. ce stade, seule linstance est lance il ny a pas de base de donnes associe. Les vues dynamiques relativeslinstance(V$INSTANCE, V$SGA,V$OPTION,V$PARAMETER,V$VERSIONetc.)sontinterrogeablesmaispaslesvues dynamiques relatives la base de donnes (V$DATABASE par exemple). Cet tat est principalement utilis lors de la crationdunenouvellebase. Lors du montage de la base de donnes, linstance utilise le paramtreCONTROL_FILESdufichierdeparamtrespour localiserlesfichiersdecontrleetlesouvrir.Danslefichierdecontrle,linstanceextraitlenometlestatutdesfichiers de donnes et des fichiers de journalisation, mais ne les ouvre pas et ne vrifie pas non plus leur prsence si un fichier nest pas trouv, aucun message derreur nest affich. ce stade, une base de donnes est associe linstance(V$DATABASEestmaintenantinterrogeable)maisnestpasouvertepouruneutilisation"normale" :personne nepeutseconnecterlabasededonnes,lexceptiondunutilisateurayantleprivilgeSYSDBAouSYSOPER.Lesvues statiques du dictionnaire ne sont notamment pas accessibles. Dans cet tat, le DBA peut effectuer certaines tches dadministration : renommer ou dplacer un fichier de donnes ou un fichier de journalisation, activer ou dsactiver larchivagedesfichiersdejournalisation,effectuerunercuprationdelabasededonnes. Lorsdelouverturedelabasededonnes,linstanceouvrelesfichiersdejournalisationetlesfichiersdedonnesqui taientenligneaumomentdelarrt,etvrifielacohrencedelabasededonnes.Silundesfichiersdedonnes ouvrirnestpastrouvouestendommag,linstancesignaleuneerreuretlabasededonnesnestpasouverte.Sila base de donnes peut tre ouverte mais que le dernier arrt ntait pas un arrt propre, SMON effectue la rcupration de linstance. ce stade, la base de donnes est accessible pour une utilisation "normale" : les utilisateurspeuventseconnecter.Ledictionnairededonnesesttotalementdisponible.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Dmarrage
1.UtiliserSQL*Plus
a.LacommandeSTARTUP
DansSQL*Plus,lacommandeSTARTUPpermetdedmarreruneinstanceetdeluiassocierunebaseavecleniveau dedisponibilitsouhait. Syntaxesimplifie STARTUP [NOMOUNT | MOUNT [nom_base] | OPEN [nom_base]] [RESTRICT] [PFILE=nom_fichier] Avec NOMOUNT | MOUNT | OPEN niveaudedisponibilitsouhait. nom_base nomdelabasemonterououvrir. RESTRICT restreintlaccslabaseauxutilisateursayantleprivilgeRESTRICTED SESSION. PFILE nomdufichierdeparamtresutiliser. LoptionRESTRICT Unebasededonnespeuttreouverte(OPEN)dansunmoderestreint(option RESTRICT)oseulslesutilisateurs ayant le privilge particulier RESTRICTED SESSION (voir la section Gestion des droits dans le chapitre Gestion des utilisateursetdeleursdroits)peuventeffectivementseconnecter gnralement,ceprivilgenestdonnquaux administrateurs. Cemoderestreintpeuttreutilispoureffectuercertainesoprationsdadministrationquincessitentquelabase soitouvertemaisquilestprfrable(pasobligatoire)deralisersansutilisateurconnect.Exemples:
q

rorganiserlestockagedunetable,reconstruiredesindex faireunexportouunimport faireunchargementdedonnesavecSQL*Loader.

Ne pas avoir dutilisateurs connects pendant ces oprations permet dviter des mises jour concurrentes intempestivesetderaliserloprationplusrapidement. Lorsqueloprationesttermine,ilestpossibledequitterlemoderestreintaveclordreSQL : ALTER SYSTEM DISABLE RESTRICTED SESSION; FichierdeparamtresetclausePFILE Les noms par dfaut du fichier de paramtres texte et du fichier de paramtres serveur dune instance sont respectivementinit<SID>.oraetspfile<SID>.ora. Lemplacementpardfautdecesdeuxfichiersdpenddelaplateforme :

ENI Editions - All rights reserved - Algeria Educ

- 1-

%ORACLE_HOME%\database(Windows) $ORACLE_HOME/dbs(Unix/Linux).

Encequiconcernelefichierdeparamtrestexte,lenometlemplacementrecommandsparlestandardOFAsont diffrents : init.oradanslesousrpertoire pfiledu rpertoire dadministration. Pour concilier lemplacementpar dfautetlestandardOFA,ilestpossibledecrerunfichierinit<SID>.oradanslerpertoirepardfautdelaplate forme et dy mettre une simple inclusion vers le "vrai" fichier de paramtres, grce au paramtreIFILE. Exemple (Windows) : IFILE=D:\app\oracle\admin\ORCL\pfile\init.ora<$I[]IFILE> Silaplateformelepermet,ilestaussipossibledutiliserunliensymbolique. SansclausePFILEdanslacommandeSTARTUP,Oraclerecherche,lemplacementpardfautdelaplateforme,dans lordre,unfichier :
q

spfile<SID>.ora spfile.ora init<SID>.ora

Lefichierspfile.ora(sansnomdinstance)estprincipalementutilisdanslecasduneconfigurationReal ApplicationCluster. Enpriorit,linstancerecherchedoncpardfautunfichierdeparamtresserveur.SpcifierlaclausePFILEpermet de dmarrer explicitement avec un fichier de paramtres texte, qui peut ventuellement ne pas respecter le nom et/oulemplacementpardfaut. Pourdmarreravecunfichierdeparamtresserveursituunautreemplacementouayantunautrenom,ilfaut dmarrer avec un fichier de paramtres texte contenant un paramtre SPFILE(pas IFILE) indiquant le chemin daccscompletaufichierdeparamtresserveur.Exemple(Windows) : SPFILE=D:\app\oracle\admin\ORCL\pfile\sp.ora LavaleurduparamtreSPFILE peut tre consulte aprs dmarrage de linstance,danslavueV$PARAMETER ou laidedelacommandeSQL*PlusSHOW PARAMETER.Siceparamtrenapastspcifiexplicitement,ilestaffecten interneparleserveur.Silestvide,cestquelinstanceadmarravecunfichierdeparamtrestexte. Ilestrecommanddutiliserunfichierdeparamtresserveur.Pourvoussimplifierlavie,respectezlenom etlemplacementpardfaut.

b.Modeopratoire
Lancez SQL*PLUS et connectezvous avec le privilge AS SYSDBA, en vous assurant que linstance souhaite est correctementdsigne. Exemple :
q

Connexionlocaleaprsavoirpositionnlavariabledenvironnement :ORACLE_SID
q

PlateformeWindows : C:\>set ORACLE_SID=ORCL C:\>sqlplus /nolog SQL> CONNECT / AS SYSDBA

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

PlateformeLinux : $ .oraenv<$I[]oraenv> <<< ORCL $ sqlplus /nolog SQL> CONNECT / AS SYSDBA

Connexion travers le rseau en spcifiant un <nom de service rseau grce la commande SET INSTANCE : > sqlplus /nolog SQL> SET INSTANCE orcl SQL> CONNECT / AS SYSDBA

Connexiontraverslerseauenspcifiantunnomdeservicerseaudanslachanedeconnexion : > sqlplus /nolog SQL> CONNECT /@orcl AS SYSDBA

TapezlacommandeSTARTUPaveclesoptionssouhaites :
q

Dmarreruneinstancesansassocierdebasededonnes(sansdouteenvuedencrerunenouvelle) : SQL> STARTUP NOMOUNT

Dmarrer une instance et simplement monter la base de donnes (pour effectuer certaines tches dadministration) : SQL> STARTUP MOUNT

Dmarreruneinstanceetouvrirlabasededonnespourlarendreaccessibletouslesutilisateurs : SQL> STARTUP

Exemplededmarrageaveclefichierdeparamtresserveurpardfaut : SQL> STARTUP Instance ORACLE lance. Total System Global Area 313860096 bytes Fixed Size 1332892 bytes Variable Size 230689124 bytes Database Buffers 75497472 bytes Redo Buffers 6340608 bytes Base de donnes monte. Base de donnes ouverte. SQL> SELECT value FROM v$parameter WHERE name = spfile; VALUE ---------------------------------------------------------D:\APP\ORACLE\PRODUCT\11.1.0\DB_1\DATABASE\SPFILEORCL.ORA

c.Modifierleniveaudedisponibilitdelabasededonnes
Silinstanceatdmarreavecuntatintermdiairepourlabasededonnes(NOMOUNTouMOUNT),ilestpossible delafairepasserltatsuivantgrcelordreSQLALTER DATABASE.
q

DeNOMOUNTMOUNT

ENI Editions - All rights reserved - Algeria Educ

- 3-

ALTER DATABASE [nom_base] MOUNT;


q

DeMOUNTOPEN

ALTER DATABASE [nom_base] OPEN; PourpasserdeltatNOMOUNTltatOPEN,ilfautpasserparltatMOUNT. Il existe aussi des ordres SQL ALTER DATABASE CLOSEet ALTER DATABASE DISMOUNT qui permettent de fermer puis dmonter la base de donnes. Par contre, ces ordres ne peuvent pas tre utiliss pour fermer une base de donnespuislarouvrirsanspasserparunarrtcomplet.

d.Rcuprerdesinformationssurlinstanceetsurlabasededonnes
Plusieurs vues du dictionnaire de donnes permettent de rcuprer des informations sur linstance et la base de donnesaucoursdudmarrage.
q

DsltatNOMOUNT :
q

V$INSTANCE :informationssurlinstance V$PARAMETER :listedesparamtresactifs V$SGA :informationssurlaSGA V$VERSION :versiondesdiffrentscomposantsdOracle V$OPTION :listedesoptionsOracle.

partirdeltatMOUNT :
q

V$DATABASE :informationsurlabasededonnes.

DansltatOPEN :
q

PRODUCT_COMPONENT_VERSION :versiondesdiffrentscomposantsdOracle.

DanslavueV$INSTANCE,lacolonneSTATUSpeutprendrelesvaleurssuivantes : STARTED instancedmarre,sansbase(NOMOUNT) MOUNTED instancedmarre,basemonte(MOUNT) OPEN instancedmarre,baseouverte(OPEN) LacolonneLOGINSindiquesilesconnexionssontautorises(valeurALLOWED)ourestreintes(RESTRICTED). DanslavueV$DATABASE,lacolonneOPEN_MODEpeutprendrelesvaleurssuivantes : MOUNTED basemonte(MOUNT) READ WRITE

openmirrors.com

- 4-

ENI Editions - All rights reserved - Algeria Educ

baseouverte(OPEN)enlecture/criture(pardfaut) READ ONLY baseouverte(OPEN)enlectureseule Le mode douverture de la base de donnes peut tre spcifi dans lordre SQL ALTER DATABASE, ou dans la commandeSTARTUP.

2.UtiliserleDatabaseControl
LorsquevousvousconnectezauDatabaseControletquelabasededonnesnestpasouverte,lapagesuivante saffiche :

Cettepagevouspermetsoitdedmarrerlabasededonnes,soitdeffectuerunercupration. Silabaseestarrtemaisquellenestpasendommage,vouspouvezcliquersurleboutonDmarrer unepage didentificationsaffiche :

ENI Editions - All rights reserved - Algeria Educ

- 5-

Sur cette page, saisissez une identification pour lhte et une identification SYSDBAou SYSOPERpour la base de donnes,puiscliquezsurleboutonOK. Silinstanceestarrte,lapagedeconfirmationdedmarragesaffiche :

Si linstance est dmarre, base non monte (NOMOUNT) ou base monte (MOUNT), une page de choix doprations saffiche. Cette page vous permet de prciser lopration que vous souhaitez faire : arrter la base de donnes, monter la basededonnes,ouvrirlabasededonnes.SlectionnezloptionsouhaiteetcliquezsurleboutonContinuer la page de confirmation de dmarrage saffiche avec des informations de statut et dopration adapts. Exemple (demandedouverturepourunebasededonnesmonte) :

Surlapagedeconfirmationdedmarrage,vouspouvezcliquersurleboutonOptionsavancespourslectionnerles optionsdedmarrage(NOMOUNT,MOUNT,OPEN,RESTRICT,PFILE,etc.) lesoptionsproposesdpendentducontexte. Lasquencederecherchedunfichierdeparamtresestlammequepourledmarrageaveclacommande STARTUPdansSQL*Plus.

openmirrors.com

- 6-

ENI Editions - All rights reserved - Algeria Educ

Pour lancer lopration, cliquez sur le bouton Oui. Pendant que lopration se droule, une page dinformations dactivitestaffiche. Unefoisqueloprationesttermine,lapagequisaffichedpendducontexte.
q

Silabasededonnesnestpasouverte(nonmonteoumonte),lapagedinformationssurlestatutestde nouveauaffiche. Silabasededonnesestouverte,lapagedeconnexionsaffiche.

VouspouvezalorsvousreconnecterauDatabaseControl.

ENI Editions - All rights reserved - Algeria Educ

- 7-

Arrt
1.UtiliserSQL*Plus
a.LacommandeSHUTDOWN
DansSQL*Plus,lacommandeSHUTDOWNpermetdefermerlabaseetdarrterlinstance. Syntaxe SHUTDOWN [NORMAL | IMMEDIATE | TRANSACTIONAL | ABORT] Options : NORMAL Oracle attend que tous les utilisateurs soient dconnects (pas de nouvelle connexion autorise) puis ferme proprementlabasededonnes. IMMEDIATE Oracle dconnecte tous les utilisateurs (en effectuant un ROLLBACK des ventuelles transactions en cours) puis fermeproprementlabasededonnes. TRANSACTIONAL Oracle attend que toutes les transactions en cours se terminent avant de dconnecter les utilisateurs (pas de nouvelletransactionautorise)puisfermeproprementlabasededonnes. ABORT Oracle dconnecte tous les utilisateurs (sans effectuer de ROLLBACK des ventuelles transactions en cours) puis ferme"brutalement"labasededonnes,sanseffectuerdepointdesynchronisation(checkpoint).Unercupration delinstanceserancessairelorsduprochaindmarrage. Leprocessusdelarrtestlesuivant:
q

Labasededonnesestferme. Labasededonnesestdmonte. Linstanceestarrte(lesprocessusdarrireplansontarrtsetlaSGAestlibre).

Un arrt est forcment complet il nest pas possible de sarrter dans un tat intermdiaire (MOUNT ouNOMOUNT). Pourpasserunebaseouverte(OPEN)entatmont(MOUNT),ilfautarrterlabase(SHUTDOWN)etlaredmarrerdans ltatsouhait(STARTUP MOUNTparexemple). Lesarrts NORMAL,IMMEDIATE etTRANSACTIONALsontpropresunpointdesynchronisation(checkpoint) est ralis surlesfichiersdedonnes.Leredmarrageultrieurnencessiterapasdercuprationdelinstance.Cenestpas le cas de larrt ABORT pour lequel le point de synchronisation nest pas ralis les fichiers de donnes sont immdiatement ferms. Ce comportement est similaire un arrt anormal de linstance. Lors du prochain redmarrage,unercuprationdelinstance(automatique)serancessaire(voirlesprincipesdanslechapitreLes basesdelarchitectureOracle). LarrtNORMALestsouventproblmatiquecarilattendladconnexiondesutilisateurs,mmesiceuxcisontinactifs. Danscecas,larrtIMMEDIATEpeuttreutilispourdconnecterlesutilisateurs lestransactionsventuellement en cours sont annules. Loprationdannulation des transactions peut prendre un peu de temps et larrt nest pasaussiimmdiat. LarrtTRANSACTIONALestunpeumoins"violent"quelarrtIMMEDIATEpuisquilattendquelestransactionsencours se terminent avant darrter la base. Par contre, il faut avoir conscience que cet arrt peut tre bloqu par une transactionquineterminepas(latransactionestellemmebloqueouunutilisateurestpartienlaissantunordre

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

INSERT/ UPDATE/DELETEensuspens). Larrt ABORT est le plus rapide (lui est immdiat !) mais ne doit tre utilis quen dernier recours : blocage dun autretypedarrt,besoinreldarrterlabaseimmdiatement. Dans un script darrt automatique destin, par exemple, faire une sauvegarde, utilisez un SHUTDOWN IMMEDIATEpourtrecertainquelabasededonnesseraeffectivementarrte.

b.Modeopratoire
Lancez SQL*PLUS et connectezvous AS SYSDBA, en vous assurant que linstance souhaite est correctement dsigne. Exemple : > sqlplus /nolog SQL> SET INSTANCE orcl SQL> CONNECT / AS SYSDBA Vrifiezventuellementsilyadesutilisateursconnectsetdestransactionsencours : Exemple : SQL> SELECT sid,serial#,username,DECODE(taddr,NULL,,Oui) trans 2 FROM v$session 3 / TapezlacommandeSHUTDOWNaveclesoptionssouhaites :
q

Arrtsansutilisateurconnect : SQL> SHUTDOWN

Arrtavecdesutilisateursconnectsenlaissantlestransactionsseterminer : SQL> SHUTDOWN TRANSACTIONAL

Lavue V$SESSIONpermetdevisualiserlesutilisateursconnects cettevueseraprsenteplusendtaildansla sectionSuperviserlesutilisateursconnectsduchapitreGestiondesutilisateursetdeleursdroits.Lestechniques utilisables pour dconnecter les utilisateurs seront aussi prsentes dans la section Superviser les utilisateurs connectsduchapitreGestiondesutilisateursetdeleursdroits. DansV$SESSION,ilfautvrifiersilexistedautressessionsquelessessionscorrespondantauxprocessusdarrire plan (colonneusername vide) et que la sessionSYS (session utilise pour larrt). La requte prsente cidessus permetaussidesavoirsilesutilisateursconnectsontunetransactionencours(colonnetransgaleOui). Dans la pratique, si le Database Control est lanc (service OMS et agent), vous aurez une ou plusieurs sessions SYSMANet DBSNMP. Pour arrter la base de donnes, vous devrez donc, soit arrter le Database Control(emctl stop dbconsole),soitutiliserlacommandeSHUTDOWN IMMEDIATE.

2.UtiliserleDatabaseControl
SurlapagedaccueilduDatabaseControl,lecadreGnraldonnelestatutactueletproposeunboutonArrterqui permetdarrterlabasededonnes :

- 2-

ENI Editions - All rights reserved - Algeria Educ

SivouscliquezsurleboutonArrter,lapagedidentificationsaffiche :

Sur cette page, saisissez une identification pour lhte et une identification SYSDBA ou SYSOPER pour la base de donnes,puiscliquezsurleboutonOK. Leschampsdecettepagesontremplispardfautsivousavezdfinidesinformationsdidentificationdans vos prfrences (cf. section Oracle Enterprise Manager Database Control du chapitre Les outils dadministration).NotezparailleursquecestlidentificationSYSDBAindiquesurcettepagequiserautilisepour effectuerlarrtetnonvotreconnexionactuelleauDatabaseControl(quipeuttreuneconnexionnormaleetpas SYSDBA). Lapagedeconfirmationdarrtestensuiteaffiche :

Surcettepagedeconfirmationdedmarrage,vouspouvezcliquersurleboutonOptionsavancespourslectionner lesoptionsdelarrt(NORMAL,IMMEDIATE,etc.) unlienestaussipropospourvisualiserlessessions. Cliquez sur le bouton Oui pour procder larrt. Pendant que lopration se droule, une page dinformations dactivitestaffiche :

Auboutdequelquesinstants,cliquezsurleboutonRgnrerpourrevenirauDatabaseControl.
ENI Editions - All rights reserved - Algeria Educ - 3-

openmirrors.com

Silarrtnestpasencoretermin,lapagedaccueilhabituellesaffiche.Attendezencorequelquesinstantsavantde rafrachirlapage. Pouruneraisoninconnue,ilarrivefrquemmentquunepagederreursoitaffichecestade :

CliquezsurleboutonOKpourrevenirlapageprcdenteetattendezquelquesinstantspourcliquerdenouveau surleboutonRgnrer.Sileproblmepersiste,quittezleDatabaseControlpuisouvrezlenouveau. Attendezencorequelquesinstantsavantderafrachirlapage.Lorsquelarrtesttermin,lapagedinformationssur lestatutdoitsafficher :

- 4-

ENI Editions - All rights reserved - Algeria Educ

Automatisationetscripts
1.SurplateformeUnixouLinux
a.Automatisation
SurplateformeUnixouLinux,desbasesdedonnespeuventtredmarresouarrtesautomatiquementgrce au script de dmarrage prsent dans la section Installation du serveur du chapitre Linstallation. Ce script de dmarrageappellelesscriptsdbstartetdbshutfournisparOracle. Extraitsduscript : # Dmarrer les bases de donnes echo "** dmarrage des bases de donnes" >> $LOG $ORACLE_HOME/bin/dbstart $ORACLE_HOME_LISTENER > $LOG 2>&1 & ... # Arrter les bases de donnes echo "** arrt des bases de donnes" >> $LOG $ORACLE_HOME/bin/dbshut $ORACLE_HOME_LISTENER > $LOG 2>&1 & Lesscripts dbstartet dbshututilisentlefichier /etc/oratabpourdterminerquellessontlesbasesdedonnes dmarrerouarrterautomatiquement.Cefichiercontientuneouplusieurslignesdelaformesuivante : <ORACLE_SID>:<ORACLE_HOME>:{Y|N} Exemple : ORCL:/u01/app/oracle/product/11.1.0/db_1:Y Lemplacement du fichier oratab peut varier selon le systme dexploitation. Consultez la documentation InstallationGuidedevotreplateforme. Pourdmarrerouarrterautomatiquementunebasededonnes,ilsuffitdemettreunYdansledernierchampde lalignecorrespondantlabasededonnes. LescriptdbstartlanceSQL*PlusetutiliselacommandeSTARTUPsansclausePFILE lasquencederecherchedu fichierdeparamtresestdonclammequepourundmarragemanuelaveclacommandeSTARTUPdansSQL*Plus. Si vous avez plusieurs versions dOracle sur votre serveur, utilisez les scripts dbstart et dbshut de la versionlaplusrcente(ajustezlavariabledenvironnement$ORACLE_HOMEenconsquence).

b.Scripts
Lesscriptsdbstartetdbshutpeuventtreappelsmanuellementpourdmarrerouarrterlesbasesdedonnes configuresYdansoratab. Desscriptsshellpersonnalisssimilairesdbstartetdbshutpeuventtretrsfacilementcrits. Exemple (scriptrestart) : ORACLE_SID=$1 ORAENV_ASK=NO . oraenv export ORACLE_SID ORAENV_ASK sqlplus /nolog << _EOF_ CONNECT / AS SYSDBA SHUTDOWN IMMEDIATE STARTUP EXIT _EOF_

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Appel : $ . restart ORCL Ce script permet de redmarrer une base de donnes dont lidentifiant dinstance est pass en paramtre. Il appelle le script oraenv pour modifier lenvironnement puis SQL*Plus pour faire un SHUTDOWN et un STARTUP. La connexion SYSDBA seffectue avec une authentification par le systme dexploitation. ORAENV_ASK=NO permet de ne pasavoirdequestionposeparoraenv.

2.SurplateformeWindows
a.Automatisation
Pourdmarrerautomatiquementunebaseaudmarragedusystme,ilfautmettreleserviceassocilinstance (OracleService<SID>)endmarrageautomatique. En complment, il peut tre ncessaire (en cas de problme notamment) de sassurer que le paramtre ORA_<SID>_AUTOSTARTest bien TRUEdanslabasederegistre.Sileserviceatcrendmarrageautomatique (chapitreCrationdunenouvellebasededonnes),celadoittrelecas. Pour arrter automatiquement une base lors de larrt du systme, il faut sassurer que le paramtre ORA_<SID>_SHUTDOWNest bien TRUE dans la base de registre et ajuster ventuellement la valeur du paramtreORA_<SID>_SHUTDOWN_TIMEOUT.Normalement,celadoittrelecas. Dans la base de registre, les paramtres indiqus HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_nom_oracle_home. Lesparamtresdelabasederegistreontlasignificationsuivante : ORA_<SID>_AUTOSTART Indiquesilinstanceidentifiepar<SID>doittredmarre(valeurTRUE)ounon(valeurFALSE)aprsledmarrage duservice. ORA_<SID>_SHUTDOWN Indique si linstance identifie par <SID> doit tre arrte (valeur TRUE) ou non (valeur FALSE) lors de larrt du service. ORA_<SID>_SHUTDOWNTYPE Type darrt effectu sur linstance identifie par <SID> : abort, immediate (valeur par dfaut), transactional et normal. ORA_<SID>_SHUTDOWN_TIMEOUT Dlai (en secondes) accord linstance identifie par <SID> pour sarrter avant larrt du service (qui est alors quivalentunSHUTDOWN ABORT). Si votre base met plus de 90 secondes sarrter, augmentez la valeur du paramtre ORA_<SID>_SHUTDOWN_TIMEOUTpourviterdavoirdesarrtsdetypeABORT. Dans la base de registre, il est possible de dfinir un paramtre ORA_<SID>_PFILE qui donne le chemin daccs completverslefichierdeparamtrestexteutiliserpourledmarragedelinstanceidentifiepar<SID>. Siceparamtreestvide,ounexistepas,lasquencederecherchedufichierdeparamtresseffectuecommelors dun STARTUP sans clause PFILE dans SQL*Plus. Si le paramtre est renseign, le dmarrage seffectue avec le fichier de paramtres texte indiqu. Si ce paramtre contient une valeur errone, linstance ne dmarre pas au redmarrageduserviceassoci.Pourdmarreravecunfichierdeparamtresserveurnonstandard,vouspouvez utiliserlatechniquedufichierdeparamtrestextecontenantunparamtreSPFILE. cidessus se trouvent dans la cl

b.Scripts
Plusieurstechniquessontpossiblespourcriredesscriptsdedmarrageoudarrt :
q

enutilisantlacommandesystmenetpourdmarrer(net start)ouarrterleservice(net stop)

- 2-

ENI Editions - All rights reserved - Algeria Educ

enutilisantlutilitaireoradimfourniparOracle enutilisantunfichierdecommandes(.bat)quilanceSQL*PlusavecunscriptSQLsurlalignedecommande quidmarreouarrtelabase.

Syntaxesimplifiedelutilitaireoradim :
s

Pourledmarrage :

ORADIM -STARTUP -SID sid


s

Pourlarrt:

ORADIM -SHUTDOWN -SID sid [-SHUTTYPE type] [-SHUTMODE mode] Avec: sid Identifiantdelinstance. type Indiquecequidoittrearrt.Valeurspossibles :srvc(service)ou inst(instance,pardfaut)ousrvc,inst(les deux). mode Modedelarrt.Valeurspossibles :i(IMMEDIATE,valeurpardfaut),n(NORMAL)oua(ABORT). Exemple(fichierdecommanderestart.bat) : set ORACLE_SID=%1% oradim -shutdown -sid %ORACLE_SID% oradim -startup -sid %ORACLE_SID% Appel : C:\>restart ORCL Cescriptpermetderedmarrerunebasededonnesdontlidentifiantdinstanceestpassenparamtre. Le service du Database Control (OracleDBConsole<SID>) est dpendant du service de linstance pour arrter le service de linstance, il faut au pralable arrter le service du Database Control. Inversement, dmarrerleserviceduDatabaseControldmarreleservicedelinstance.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Problmescourantsetsolutions
ORA-01033: ORACLE initialization or shutdown in progress Explication Labasededonnesnestpasouverte. Cause(s) Vous tentez de vous connecter une base de donnes non ouverte sans utiliser de connexion SYSDBA. La base de donnes est peut tre effectivement en train de dmarrer ou de sarrter la base de donnes est peuttreaussi toutsimplementnonmonteoumonte. Action(s) ConnectezvousAS SYSDBAetinterrogezlacolonneSTATUSdeV$INSTANCE. ORA-01034: ORACLE not available Explication Linstanceestarrte. Cause(s) VoustentezdevousconnecteruneinstanceOraclearrtesansutiliserdeconnexionSYSDBA. Action(s) ConnectezvousAS SYSDBAetdmarrezlinstance. ORA-01081: impossible de lancer ORACLE dj en cours - fermer dabord le thread Explication Voustentezdedmarreruneinstancedjdmarre. Cause(s) Vousntespasconnectlabonneinstance.VoustentezdepasserduntatNOMOUNTouMOUNTOPENenfaisantun STARTUP. Action(s) Interrogez V$INSTANCE pour vrifier quelle instance vous tes connect. Si vous ntes pas sur la bonne instance, reconnectezvous(aprsavoirmodifiORACLE_SIDouenutilisantlebonnomdeservicerseau).Pourpasserunebase dedonnesdeltatNOMOUNTouMOUNTOPEN,utilisezlacommandeALTER DATABASE. ORA-01109: base de donnes non ouverte ORA-01219: BdD fermee : demandes seulement autorises sur des tables/vues fixes Explication Labasededonnesnestpasouvertemaissimplementmonte(MOUNT). Cause(s) Vous tentez de faire une action (ORA-01109) ou de lire une vue statique du dictionnaire de donnes (ORA-01219) qui ncessitequelabasesoitouverte.

ENI Editions - All rights reserved - Algeria Educ

- 1-

Action(s) InterrogezlacolonneSTATUSdeV$INSTANCEetsicestlecas(valeurMOUNTEDaulieudeOPEN),ouvrezdabordlabase dedonnes. ORA-01507: base de donnes non monte Explication Labasededonnesnestpasmonte(NOMOUNT) seulelinstanceestdmarre. Cause(s) Vous tentez de faire une action qui ncessite que la base de donnes soit monte, par exemple : interrogation de V$DATABASE,ordreSQLALTER DATABASE OPEN,etc. Action(s) Interrogez la colonne STATUSde V$INSTANCEetsicest le cas (valeurSTARTED au lieu deMOUNTED), montez dabordla basededonnes(ALTER DATABASE MOUNT). ORA-12560: TNS : erreur dadaptateur de protocole Explication Leprocessusdcoutenapasrussidmarrerunprocessuspourconnecterlutilisateurlinstance. Cause(s) La variableORACLE_SID nest pas correctement positionne. Sur plateforme Windows, le service associ linstance (OracleService<SID>)nestpaslanc. Action(s) Vrifiezlavariableet/ouleserviceassoci. BlocagedunSHUTDOWN Cause(s) Surun SHUTDOWN NORMAL,ilyadesutilisateursconnects.SurunSHUTDOWN TRANSACTIONAL,ilyadestransactionsen cours.SurunSHUTDOWN IMMEDIATE,ilyaunetrsgrossetransactionannuler...ouunautreproblme. Action(s) Ouvrezuneautresessiondeloutildadministration,connectezvousAS SYSDBAetexcutezunSHUTDOWN ABORT.Sicela nemarchepas,ilfaut"tuer"lesprocessus : RedmarrageduserviceassocilinstancesurplateformeWindows. killdesprocessussurplateformeUnix. LorsquunSHUTDOWNestencours,ilnestpluspossibledinterrogerV$SESSIONetdoncdedterminersileproblmeest lidesutilisateursconnects. SurunSHUTDOWN IMMEDIATE,soyezpatient !Larrtpeutprendreplusieursdizainesdesecondes.

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

Vuedensemble
1.tapesdecrationdunenouvellebasededonnespouruneapplication
Leprocessuscompletdecrationdunenouvellebasededonnespouruneapplicationcomportelesgrandestapes suivantes : Conceptiondumodlephysique
q

Dfinir tous les objets (Oracle) de lapplication : tables, contraintes dintgrit (cls primaires/uniques/trangres), index, vues, programmes stocks (triggers, procdures/ fonctions stockes, packages). tudierlavolumtriedelapplication(nombredutilisateurs,nombredelignesattenduesdanslestables).

Crationdelabaseproprementdite(cechapitre)
q

Crerunenouvelleinstance. Crerunenouvellebasededonnes(fichiersdecontrle,fichiersdejournalisationetfichiersdedonnesdes tablespaces"techniques"dOracle). Rendreledictionnairededonnesexploitable. cestade,labasededonnespeuttrevuecommeune"enveloppe"(une"botevide")danslaquelledes structuresvonttrecrespouruneouplusieursapplications.

Crationdesstructuresdestockageadaptes(chapitresGestiondestablespacesetdesfichiersdedonneset Gestiondesinformationsdannulation)
q

Crerlestablespaces(avecleursfichiersdedonnes)destinsstockerlesdonnesdelapplication(tables etindex). Lesdimensionnerenfonctiondeltudedevolumtrieraliseinitialement.

Cration du compte Oracle qui va contenir les objets de lapplication (chapitre Gestion des utilisateurs et de leursdroits)
q

Crerlecompte. Luidonnerlesprivilgessuffisantspourcrerlesobjets. Lautoriserutiliserdelespacedanslestablespacesdelapplication.

CrationdesobjetsdelapplicationdanscecompteOracle(chapitreGestiondestablesetdesindex)
q

CrerlesobjetsOracledelapplication(gnralementsouslaformedunoudeplusieursscripts). Dimensionner chaque objet occupant de lespace de stockage (table et index) en fonction de ltude de volumtrieraliseinitialement.

Crationdesutilisateursfinauxdelapplication(chapitreGestiondesutilisateursetdeleursdroits)

ENI Editions - All rights reserved - Algeria Educ

- 1-

Crerlesutilisateurs. Leurdonnerdesdroitsadaptssurlesobjetsdelapplication(i.e.surlesobjetscrsprcdemmentdansle comptepropritairedelapplication).

Sauvegardedelabase(chapitreSauvegardeetrcupration)
q

Sauvegardederfrencedelabase.

Comme vous pouvez le constater, la cration de la base de donnes proprement dite prsente dans ce chapitre nestquunepetitetapeduprocessuscomplet(maisunetapefondamentale).

2.tapesdecrationdelabasededonnesproprementdite
Lesgrandestapesdelacrationdelabasededonnesproprementditesontlessuivantes :
q

Crerlesrpertoiressurlesdisques,sipossibleenrespectantlesrecommandationsdustandardOFA. Prparerunnouveaufichierdeparamtrestexte,gnralementparcopiedunancien. PositionnerlavariabledenvironnementORACLE_SID. Crer le service associ linstance (plateforme Windows) ou crer le fichier de mot de passe pour lidentificationSYSDBA(plateformeUnixouLinux). LancerSQL*PlusetseconnecterAS SYSDBA. Crerunfichierdeparamtresserveur(pasobligatoire,maisconseill). DmarrerlinstanceentatNOMOUNT. Crerlabasededonnes(ordreSQLCREATE DATABASE). Finaliserlacrationdudictionnaire(quelquesscriptsexcuter). ConfigurerOracleNetpourlanouvellebasededonnes. Enregistrerlanouvelleinstancedanslefichieroratab(plateformeUnixouLinux). ConfigurerleDatabaseControl.

LacrationdunenouvellebasededonnessupposelinstallationpralabledOracle(chapitreInstallation). SileserveurabritedjdesbasesdedonnesOracle,ilestvivementconseilldeffectuerunesauvegarde decesbasesdedonnesavantdedmarrerleprocessusdecration. Aprscestapes,lanouvellebasededonnesestouverteetcontient :


q

lestablespacesSYSTEMetSYSAUXavecleur(s)fichier(s)dedonnesassoci(s) ventuellementuntablespacedannulationetuntablespacetemporaireselonlesoptionsutilises lesfichiersdecontrleetdejournalisation lesdeuxcomptesDBAstandard(SYSetSYSTEM)

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

lesegmentdannulationSYSTEM ledictionnairededonnes.

ce stade, la base de donnes est prte pour accueillir des structures complmentaires qui vont constituer lapplication.

3.Mthodesdisponibles
LanouvellebasededonnespeuttrecrelamainaveclesoutilsdusystmedexploitationetSQL*Plus dans cecas,ilesttrssimpledcrireoudercuprerdesscriptsetdelesrutiliserchaquefois.Lestapesdecration de la base de donnes proprement dite sont toujours les mmes et dpendent (relativement) peu des caractristiques de lapplication (et en tout tat de cause, des paramtres peuvent tre ajusts ultrieurement en fonction des caractristiques de lapplication) utiliser des scripts "gnriques" de cration de bases est donc envisageable. La nouvelle base de donnes peut aussi tre cre laidedun assistant graphique, lassistant Configurationde base de donnes. Cet assistant facilite la cration de la base de donnes en offrant la possibilit dutiliser des modlesdebasededonnesprtslemploiet/ouenpermettantdedfinirtrsprcismentlescaractristiquesde lanouvellebasededonneslaidedeplusieurscrans.Parailleurs,ilestpossiblededfinirsespropresmodles de base de donnes, comprenant ou non des fichiers de donnes prts lemploi, puis de les utiliser lors de la cration ultrieure dune nouvelle base de donnes. Lassistant graphique offre aussi la possibilit de gnrer les scriptsdecrationdelabasededonnes,sanscrerlabasededonnes cestunbonmoyenpourconstituernos scripts"gnriques". Lassistantgraphiqueinclutlestapessuivantesdecrationdesstructuresdestockage(chapitresGestion desfichiersdecontrleetdejournalisationetGestiondestablespacesetdesfichiersdedonnes).

ENI Editions - All rights reserved - Algeria Educ

- 3-

Crationdelabasededonnesmanuellement
1.Crerlesrpertoiressurlesdisques
PourrespecterlesrecommandationsdustandardOFA(voirlechapitreInstallation),vousdevezcrer :
q

unrpertoiredadministration,portantlenomdelabasededonnes,situdanslerpertoire%ORACLE_BASE% \admin(Windows)ou$ORACLE_BASE/admin(Linux/Unix), unrpertoirededonnes,portantlenomdelabasededonnes,situdansunrpertoireoradataluimme situdansORACLE_BASEousurunautrevolume.

Depuis la version 11 et lapparition du Rfrentiel de Diagnostic Automatique, le rpertoire dadministration contientmoinsderpertoiresetdefichiers. Lerpertoiredadministrationcontientgnralementlesrpertoiressuivants : adump Rpertoirepourdesfichiersdaudit. createouscripts Rpertoiredesscriptsdecrationdelabasededonnes. expoudpdump Rpertoirepourlesfichiersdexport. pfile Rpertoirepourlesfichiersdeparamtrestexte. Sileserveurcomporteplusieursdisques,ilserajudicieuxderpartirlesdiffrentsfichiersdelabasededonnessur ces disques afin doptimiser les entres/sorties et dviter les contentions dans ce cas, il faut crer dautres rpertoiresdedonnessurlesdisquesconcerns. Un rpertoire supplmentaire peut tre cr pour la zone de rcupration rapide (voir le chapitre Sauvegarde et rcupration). Gnralement,labasededonnesetlinstanceportentlemmenom.

2.Prparerunnouveaufichierdeparamtrestexte
a.Principes
CommeindiqudanslasectionLabasededonnesduchapitreLesbasesdelarchitectureOracle,ilestconseill dutiliserunfichierdeparamtresserveur,celuicitantinitialementcrpartirdunfichierdeparamtrestexte. PourrespecterlestandardOFA,cefichierdeparamtrestextedoitsappelerinit.oraetsetrouverdanslesous rpertoirepfiledurpertoiredadministration.Gnralement,cefichierdeparamtrestexteestcrparduplication dunfichierexistantoudunfichiermodlequevousaurezdfini. Nousnecreronspasdefichierinit<SID>.ora(avecuneinclusiondufichierinit.ora)lemplacementpardfautde laplateforme(dbssousUnix/Linux,databasesousWindows) ainsi,nousnerisquonspasdedmarrerparmgarde avecunfichierdeparamtrestexte. Ilyaplusde250paramtresdocumentsparOracle !Ilnestvidemmentpasquestiondelesspcifiertous !Surla totalitdesparamtres,unetrentainedeparamtresquilconvientdeconnatre,sontsuffisantspourlaplupartdes

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

basesdedonnes. Certainsparamtresserontdcritsbrivementdanscettepartiepuisprsentsdemanireplusdtailledansdes chapitresultrieurs.

b.Lesprincipauxparamtres
Lesparamtresnesontpaslistsdansunordrealphabtiquemaisdansunordrethmatique. Reportezvous la section Complments sur les paramtres relatifs la mmoire pour avoir plus dinformationscesujet.

DB_NAME Nomdelabase(jusqu8caractres).GnralementDB_NAMEestgalaunomdelinstance(ORACLE_SID). Exemple : DB_NAME = hermes DB_DOMAIN Localisationlogiquedelabasesurlerseau(jusqu128caractres).Ceparamtre,associauparamtreDB_NAME, permet Oracle de construire le nom global de la base de donnes<, sous la forme DB_NAME.DB_DOMAIN. Ce paramtre est important si la base de donnes appartient un systme distribu (ou est susceptible de ltre) sinon,ilpeuttreignor. Exemple : DB_DOMAIN = olivier-heurtel.fr DB_UNIQUE_NAME Nomuniquedebasededonnes(jusqu30caractres).DesbasesdedonnesayantlemmeDB_NAMEauseindu mme DB_DOMAIN (par exemple une base de production et une base de test) doivent avoir un DB_UNIQUE_NAME diffrent.Ceparamtreestapparuenversion10.Ilest,pardfaut,galDB_NAME. Ceparamtredoittrespcifisivoussouhaitezouvrirsimultanmentsurunserveurdeuxbasesportantlemme nom(lemmeDB_NAME) ilpermetdelesdiffrencier. Exemple : DB_UNIQUE_NAME = hermes_demo COMPATIBLE Indique un numro de version dOracle avec laquelle la base de donnes doit tre compatible. Valeurs possibles : 10.0.0jusquaunumrodelaversionactuelle(11.1.0.6).Valeurpardfaut :11.0.0. CeparamtrepermetdutiliserunenouvelleversiondOracleenrestantcompatibleavecuneversionplusancienne, etdoncsansavoirbesoindetesterlesnouvellesfonctionnalitssurlabasededonnes.Certainesfonctionnalits delanouvelleversionpeuventtrerestreintes.Lavaleurduparamtrepeuttreaugmenteultrieurement,maisil estensuitegnralementimpossiblederedescendre(ilfautrepartirdunesauvegardeantrieureauchangement). Exemple : COMPATIBLE = 11.1.0. CONTROL_FILES Emplacementdesfichiersdecontrledelabasededonnes.Ilestconseilldenspcifierauminimum2,sipossible surdesdisquesdiffrents(danslidal,3ou4surdesdisquesdiffrents).LarecommandationOFApourlenommage dufichierestcontrolN.ctl,N tantunnumrodordre(1,2,etc.ou01,02,etc.). Silefichierdeparamtresatcrparduplicationdunfichierexistantutilis,noubliezpasdemodifierce paramtre. En cas doubli, vous risquez dcraser les fichiers de contrle prsents dans cette directive et doncdeprovoquerunarrtbrutaldelabasededonnesquilesutilise.

- 2-

ENI Editions - All rights reserved - Algeria Educ

Exemple : CONTROL_FILES = ("f:\oracle\oradata\HERMES\control01.ctl", "g:\oracle\oradata\HERMES\control02.ctl") DB_BLOCK_SIZE Taille de bloc "standard" en octets, utilise par dfaut pour les fichiers de donnes des tablespaces et pour lorganisationducachededonnes(buffercache).Lavaleurdoittrecompriseentre2Koet32Ko(saufrestriction spcifiquelaplateforme)ettreunmultipledelatailledeblocdusystmedexploitation.Ceparamtrenepeut pastremodifiultrieurementsansrecrerlabasededonnes.Valeurpardfaut=8192(8Ko). La taille de bloc peut avoir un impact plus ou moins important sur les performances. Lexpos des avantages et inconvnients respectifs des "petits" blocs et des "grands" blocs sort du cadre de cet ouvrage. En rsum, les recommandationsdOraclesontlessuivantes :
q

Pourunsystmeplutttransactionnel(gnralementcaractrispardespetitesrequtesdelectureetde misesjour),utilisezdes"petits"blocs(4Koou8Ko). Pourunsystmepluttdcisionnel(gnralementcaractrispardesgrossesrequtesdelecture),utilisez des"gros"blocs(16Koou32Ko). Pourlessystmesmixtes,oudansledoute,utilisezunetailledeblocde8ko(valeurpardfaut).

Exemple : DB_BLOCK_SIZE = 8192 MEMORY_MAX_TARGET Taille maximum de la mmoire utilisable par linstance. Peut tre spcifie en octets, en Ko (symbole K), en Mo (symbole M) ou en Go (symbole G). Si ce paramtre nest pas spcifi, il est gal la valeur du paramtre MEMORY_TARGET. Noubliezpasquelesmodificationsdynamiquesdelammoireseffectuentdanslalimitedelavaleurduparamtre MEMORY_MAX_TARGET,quiluinestpasdynamique(cf.ChapitreLesbasesdelarchitectureOracl,sectionLinstance). Exemple MEMORY_MAX_TARGET = 2G MEMORY_TARGET Tailledelammoireallouelinstance.Peuttrespcifienoctets,enKo(symboleK),enMo(symboleM)ouenGo (symbole G). Valeur par dfaut : 0. Valeur minimale : 148 Mo. La valeur peut tre arrondie par Oracle au granule suprieur.Ceparamtreestapparuenversion11. Si ce paramtre a une valeur diffrente de zro, la gestion automatique de la mmoire (Automatic Memory ManagementAMM)estactive.Danscecas,OracledimensionneautomatiquementlaSGAetlaPGAenfonctionde leurs besoins respectifs et de la charge du systme (cf. section Linstance du chapitre Les bases de larchitecture Oracle). Exemple MEMORY_TARGET = 2G SGA_MAX_SIZE TaillemaximaledelaSGA.Peuttrespcifieenoctets,enKo(symboleK),enMo(symboleM)ouenGo(symboleG). Si ce paramtre nest pas spcifi, Oracle lui donne la valeur du paramtreMEMORY_MAX_TARGET sil est dfini ou la tailledelaSGAaudmarragedelinstance. Noubliez pas que les modifications dynamiques de la SGA seffectuent dans la limite de la valeur du paramtre SGA_MAX_SIZE,quiluinestpasdynamique(cf.sectionLinstanceduchapitreLesbasesdelarchitectureOracle). Exemple :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

SGA_MAX_SIZE = 1G SGA_TARGET TaillesouhaitepourlaSGA.Peuttrespcifienoctets,enKo(symboleK),enMo(symboleM)ouenGo(symbole G).Valeurpardfaut :0.Valeurminimale :64Mo,annoncedansladocumentationmaisplutt80Mosuruneplate forme32bitset88Mosuruneplateforme64bits.LavaleurpeuttrearrondieparOracleaugranulesuprieur.Ce paramtreestapparuenversion10. Si la gestion automatique de la mmoire est active (MEMORY_TARGET est diffrent de zro), ce paramtre fixe une tailleminimalepourlaSGA sil nestpasspcifi,lavaleur0luiestattribueetlatailledelaSGAestajusteen interne. Silagestionautomatiquedelammoireestdsactive(MEMORY_TARGETestgalzro),etsiceparamtreaune valeurdiffrentedezro,lerglageautomatiquedelammoirepartageestactiv.Danscecas,lescomposantes suivantes de la SGA sont automatiquement dimensionnes (cf. section Linstance du chapitre Les bases de larchitecture Oracle) : Database Buffer Cache (DB_CACHE_SIZE), Shared Pool (SHARED_POOL_SIZE), Large Pool (LARGE_POOL_SIZE),JavaPool(JAVA_POOL_SIZE)etStreamsPool(STREAMS_ POOL_SIZE). Exemple : SGA_TARGET = 1G SHARED_POOL_SIZE Taille en octets de la Shared Pool. Peut tre spcifie en octets, en Ko (symbole K), en Mo (symbole M) ou en Go (symboleG).LavaleurpeuttrearrondieparOracleaugranulesuprieur. Silerglageautomatiquedelammoirepartageestactiv(SGA_TARGETou MEMORY_ TARGETdiffrentdezro),ce paramtrefixeunetailleminimalepourlaSharedPool.Silnestpasspcifi,lavaleur0luiestattribueetlataillede laSharedPoolestajusteeninterneparOracle. Si le rglage automatique de la mmoire partage est dsactiv (SGA_TARGET ou MEMORY_TARGET gal zro), ce paramtrefixelatailledelaSharedPool.Silnestpasspcifi,savaleurpardfautestde64Mosuruneplateforme 32bitset128Mosuruneplateforme64bits. IlnyapasderglesimplenideformuledecalculpourdterminerlatailledelaSharedPool.Lesbesoinsdpendent normment de lapplication. Par contre, il peut tre facilement audit ultrieurement et modifi en cas de besoin (sansarrterlabasecarleparamtreestdynamique). Si le partage des requtes est bon, la taille de laShared Poolestpeulieaunombredutilisateurs. La taille de la SharedPoolestpluttlieaunombretotalderequtesdiffrentes,excutesparlapplicationetleurcomplexit.Il est par ailleurs important de tenir compte des programmes PL/SQL utiliss par lapplication (triggers, procdures/fonctionsstockes,packages). Pouruneapplicationmoyenne,ayantunbonpartagedesrequtes(utilisationdevariablesbind)etnutilisantpasde programmes PL/SQL, une valeur de lordre de 150 Mo peut tre suffisante. Si lapplication utilise des programmes PL/SQL,ousilapplicationutilisebeaucoupderequtes,ilnefautpashsiteraugmenterlatailledelaSharedPool 300Moouplus. Silepartagedesrequtesestmauvais,avoiruneSharedPooltropimportantenapporterarien,voiredgraderales performances(linstancepassantbeaucoupdetemps,envain,chercherunerequteidentiqueenmmoire). SivousutilisezleDatabaseControl,ilfautaugmenterlatailledelaSharedPool(aumoins80Mo). Exemple : SHARED_POOL_SIZE = 128M JAVA_POOL_SIZE Taille en octets de la Java Pool. Peut tre spcifie en octets, en Ko (symbole K), en Mo (symbole M) ou en Go (symboleG).LavaleurpeuttrearrondieparOracleaugranulesuprieur. Si le rglage automatique de la mmoire partage est activ (SGA_TARGET ou MEMORY_TARGET diffrent de zro), ce paramtrefixeunetailleminimalepourlaJavaPool.Silnestpasspcifi,lavaleur0luiestattribueetlatailledela JavaPoolestajusteeninterneparOracle. Si le rglage automatique de la mmoire partage est dsactiv (SGA_TARGET ou MEMORY_TARGET gal zro), ce paramtrefixelatailledelaJavaPool.Silnestpasspcifi,savaleurpardfautestde24Mo. SivousnutilisezpaslamachinevirtuelleJavaintgreauserveurOracle(pourdvelopperdesprocduresstockes

- 4-

ENI Editions - All rights reserved - Algeria Educ

enJavaparexemple),vouspouvezmettreceparamtrezro. Exemple : JAVA_POOL_SIZE = 0 LARGE_POOL_SIZE Taille en octets de la Large Pool. Peut tre spcifie en octets, en Ko (symbole K), en Mo (symbole M) ou en Go (symboleG).LavaleurpeuttrearrondieparOracleaugranulesuprieur. Si le rglage automatique de la mmoire partage est activ (SGA_TARGET ou MEMORY_TARGET diffrent de zro), ce paramtrefixeunetailleminimalepourlaLargePool.Silnestpasspcifi,lavaleur0luiestattribueetlataillede laLargePoolestajusteeninterneparOracle. Si le rglage automatique de la mmoire partage est dsactiv (SGA_TARGET ou MEMORY_TARGET gal zro), ce paramtrefixelatailledelaLargePool.Silnestpasspcifi,savaleurpardfautestdrivedelavaleurdautres paramtres. LesbesoinsenLargePooldpendentnormmentdelapplicationetdesfonctionnalitsutilises(excutionparallle des requtes, serveurs partags, etc). Il peut tre facilement audit ultrieurement et modifi en cas de besoin (sansarrterlabasecarleparamtreestdynamique). Exemple : LARGE_POOL_SIZE = 64M DB_CACHE_SIZE Tailledu DatabaseBufferCache pour la taille de bloc standard (poolstandard).Peuttrespcifieenoctets,enKo (symboleK),enMo(symboleM)ouenGo(symboleG).LavaleurpeuttrearrondieparOracleaugranulesuprieur. Si le rglage automatique de la mmoire partage est activ (SGA_TARGET ou MEMORY_TARGET diffrent de zro), ce paramtrefixeunetailleminimalepourleDatabaseBufferCache.Silnestpasspcifi,lavaleur0luiestattribueet latailleduDatabaseBufferCacheestajusteeninterneparOracle. Si le rglage automatique de la mmoire partage est dsactiv (SGA_TARGET ou MEMORY_TARGET gal zro), ce paramtrefixelatailleduDatabaseBufferCache.Silnestpasspcifi,savaleurpardfautestde48Mo(ou4Mo multipliparlenombredeCPU,sicettevaleurestplusgrande). Ilny a pas de rgle simple ni de formule de calcul pour dterminer la taille duDatabase Buffer Cache. Les besoins dpendentnormmentdelapplication.Parcontre,ilpeuttrefacilementauditultrieurementetmodifiencasde besoin(sansarrterlabasecarleparamtreestdynamique). LeDatabaseBufferCacheestsouventlacomposantelaplusimportantedelaSGA(lesdeuxtiersouplus). Pourunepetitebaseavecpeudutilisateurs,unetaillede128256Mopeuttresuffisante.Pourlesbasesplus volumineusesavecunnombredutilisateurslev,lataillepeutmonter1Goouplus. Exemple : DB_CACHE_SIZE = 640M DB_nK_CACHE_SIZE TailleenoctetsduDatabaseBufferCachepourlesblocsden Ko(n valant2,4,8,16ou32,maispaspourlataillede blocstandard).Peuttrespcifieenoctets,enKo(symbole K),enMo(symboleM)ouenGo(symboleG).Lavaleur peuttrearrondieparOracleaugranulesuprieur. Si la base de donnes utilise dautres tailles de bloc que la taille standard, il faut utiliser ces paramtres pour dimensionnerdespoolsadaptsdansleDatabaseBufferCache. LOG_BUFFER TailleenoctetsduRedo Log Buffer.Valeurpardfaut :512Ko(ou128KomultipliparlenombredeCPU,sicette valeurestplusgrande).Lavaleurpardfautestgnralementsuffisante,dautantplusquecettevaleurestdansla pratiquesuprieurecequiestannoncdansladocumentation. Exemple : LOG_BUFFER = 524288 # 512 Ko

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

PGA_AGGREGATE_TARGET QuantitdemmoiretotaleallouelaPGAagrgedetouslesprocessusserveurs.Peuttrespcifieenoctets, enKo(symboleK),enMo(symboleM)ouenGo(symboleG).Valeurpardfaut :10Mo,ou20%delatailledelaSGA sicettevaleurestplusgrande. Si la gestion automatique de la mmoire est active (MEMORY_TARGET est diffrent de zro), ce paramtre fixe une taille minimale pour la PGA cumule sil nest pas spcifi, la valeur 0 lui est attribue et la taille de la PGA est ajusteeninterne. Silagestionautomatiquedelammoireestdsactive(MEMORY_TARGETestgalzro),ceparamtrefixelataillede laPGAcumule. Oracleallouelammoireauxdiffrentsprocessusserveursenfonctiondeleurbesoins,enessayantdemaintenirla tailletotalecumuledetouteslesPGAendessousdelalimitedfinieparceparamtre. Plusceparamtreestlev,plusOracleestcapabledallouerbeaucoupdemmoireauxprocessusserveursetplus lesprocessusserveurssontcapablesdefairedesoprationsmmoirevolumineuses(trioujointureparhachagepar exemple),sansfairedestockagetemporairesurdisque(cequiamliorevidemmentlesperformances). Ilnyapasderglesimplenideformuledecalculpourdterminerlavaleurdeceparamtre.Engnral,dansun systmetransactionnellesbesoinsenmmoiredesprocessusserveurssontfaibles unevaleurdelordrede512 Ko 1 Mo par session peut tre suffisante. Par contre, dans un systme dcisionnel, les utilisateurs excutent souventdesrequtesquieffectuentdestrissurungrosvolumededonnes danscecas,ilfautcompteraumoins 10Moparsession. Exemple : PGA_AGGREGATE_TARGET = 200M STATISTICS_LEVEL Niveaudecollectedesstatistiquessurlabasededonnesetlesystmedexploitation,utilisesnotammentpourles fonctionnalitsdegestionautomatiquedOracle.Valeurspossibles :ALL,TYPICAL(valeurpardfaut)etBASIC. La valeur par dfaut (TYPICAL) est adapte pour la plupart des bases de donnes elle permet de bnficier des fonctionnalitsdegestionautomatiquedOracle,avecunimpactminimumsurlesystme.LavaleurBASICdsactive lesfonctionnalitsdegestionautomatiquedOracle.LavaleurALLpermetdecollecterplusdestatistiquesmaisaun impactimportantsurlesystme cettevaleurpeuttreutiliseponctuellementdansunesessionparticulire,des finsdoptimisation. Laissezlavaleurpardfaut ! Exemple : STATISTICS_LEVEL = typical OPEN_CURSORS Dtermine le nombre maximum de curseurs qui peuvent tre ouverts simultanment par une session. Valeur par dfaut :50. Lesbesoinsvarientnormmentduneapplicationlautre.Mettreunevaleurtropleveparrapportauxbesoins napasdincidence.Unevaleurde500doittresuffisantepourungrandnombredapplications. Si une session atteint la limite, lerreur ORA-01000: nombre maximum de curseurs ouverts dpass est retourne. Danscecas,saufdysfonctionnementdelapplication,augmentezlavaleurduparamtre. Exemple : OPEN_CURSORS = 500 PROCESSES Nombre maximum de processus qui peuvent se connecter simultanment linstance. Valeur par dfaut : 100. Comptezunpourchaquesessionutilisateursimultane,plusunpourchaqueprocessusdarrireplan(1520en gnral),plusuncertainnombrepourlessessionsSYSMANetDBSNMPutilisesparleDatabaseControl(unedizaine engnral). Pour connatre le nombre de processus darrireplan lancs par linstance, vous pouvez interroger la vueV$BGPROCESS(filtrezsurpaddr <> 00).Vouspouvezaussiinterrogerlavue<V$PROCESSpourconnatrelenombre totaldeprocessusdmarrsparlinstance.

- 6-

ENI Editions - All rights reserved - Algeria Educ

Si le nombre maximum de processus est atteint et quun utilisateur cherche se connecter, il recevra le message derreurORA-00020: nombre maximum de processus (NN) atteint,NN tantlavaleurduparamtre. Exemple : PROCESSES = 200 SESSIONS Dtermine le nombre maximum de sessions qui peuvent tre ouvertes dans linstance. La valeur par dfaut de ce paramtreestdrivedelavaleurduparamtrePROCESSESparlaformule(1.1 * PROCESSES) + 5.Cettevaleurpar dfautestaussilavaleurminimaleduparamtre.Ceparamtredoittreconsidrdansuneconfigurationserveurs partags o le nombre de processus peut tre faible, mais le nombre de sessions lev. Dans une configuration serveursddis,ceparamtrepeuttreignorsileparamtrePROCESSESatdfini. Exemple : SESSIONS = 300 SHARED_SERVERS Spcifielenombredeprocessusserveurspartagsquisontcrslorsquelinstancedmarre(0pardfaut).Indiquer unevaleurdiffrentedezro,activelafonctionnalitdeserveurspartags.Laissezcettevaleurzropourtreen configurationserveursddis(configurationutiliserapriori,saufsilenombredutilisateurssimultansestvraiment trslev). Exemple : SHARED_SERVERS = 20 JOB_QUEUE_PROCESSES Nombre maximum de processus qui peuvent tre lancs pour excuter des tches automatiques (calcul de statistiques,rafrachissementdunevuematrialise,etc.).Valeurspossibles :entre0et1000(valeurpardfaut). Lavaleurdeceparamtredoittresuprieureaunombredetchessusceptiblesdesexcuterenparallle. Laissezlavaleurpardfaut !

NLS_LANGUAGE Langagepardfautdelinstance,utilispourlesmessages,lesnomsdejouretdemoisetletri.Dtermineaussila valeur des paramtres NLS_DATE_LANGUAGE et NLS_SORT. La valeur par dfaut est drive de la variable denvironnementNLS_LANG. Exemple : NLS_LANGUAGE = french NLS_TERRITORY Territoirepardfautdelinstance,utilispourlanumrotationdesjoursetdessemaines.Dtermineaussilavaleur pardfautdesformatsdedate,dessparateursnumriquesetdessymbolesmontaires. Exemple : NLS_TERRITORY = france UNDO_MANAGEMENT Mode de gestion souhait pour les segments dannulation. Les valeurs possibles sont MANUAL pour la gestion manuelleet AUTO(pardfaut)pourlagestionautomatique.Lagestionautomatiquedessegmentsdannulationest prsente en dtail dans le chapitre Gestion des informations dannulation. Ce mode de gestion est vraiment trs intressant et doit tre utilis. Il peut tre activ ds la cration de la base en mettant le paramtre UNDO_MANAGEMENT AUTO et en crant un tablespace dannulation dans lordre SQL CREATE DATABASE(voirlasection Crationdelabasededonnesdanscechapitre). Exemple :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

UNDO_MANAGEMENT = auto UNDO_TABLESPACE Nom du tablespace dannulation utiliser par dfaut lors du dmarrage de linstance. Si ce paramtre nest pas renseign,linstanceutiliselepremiertablespacedannulation quelletrouve(cf.ChapitreGestiondesinformations dannulation). DIAGNOSTIC_DEST Rpertoire de base du Rfrentiel de Diagnostic Automatique (cf. section Diagnostiquer les problmes du chapitre Les outils dadministration). Ce paramtre est apparu en version 11. Egal, par dfaut, la valeur de la variable denvironnement ORACLE_BASE si cette variable nest pas dfinie, il est gal par dfaut, au sousrpertoire log du rpertoireOracleHome. Arrangezvous pour que ce paramtre soit gal au rpertoire de base dOracle, soit en dfinissant la variabledenvironnementORACLE_BASE,soitendfinissantleparamtre. Exemple DIAGNOSTIC_DEST = d:\app\oracle DB_RECOVERY_FILE_DEST Emplacement de la zone de rcupration rapide (flash recovery area). Si ce paramtre est spcifi, il faut aussi spcifier le paramtre DB_RECOVERY_FILE_DEST_SIZE. Voir le chapitre Sauvegarde et rcupration pour plus dinformations sur le fonctionnement et le rle de la zone de rcupration rapide. Ce paramtre est apparu en version10. Exemple : DB_RECOVERY_FILE_DEST = h:\oracle\flash_recovery_area DB_RECOVERY_FILE_DEST_SIZE Taille maximale autorise pour lensemble des fichiers stocks dans la zone de rcupration rapide. Peut tre spcifieenoctets,Ko(symboleK),enMo(symboleM)ouenGo(symboleG).Ceparamtreestapparuenversion 10. Exemple : DB_RECOVERY_FILE_DEST_SIZE = 20G LOG_ARCHIVE_DESTetLOG_ARCHIVE_DUPLEX_DEST Spcifientuneoudeuxdestinationspourlarchivagedesfichiersdejournalisation(StandardEdition).Voirlechapitre Sauvegardeetrcuprationpourplusdinformationssurlarchivagedesfichiersdejournalisation. Exemple : LOG_ARCHIVE_DEST = h:\oracle\arch\HERMES LOG_ARCHIVE_DEST_n Spcifie une ou plusieurs destinations pour larchivage des fichiers de journalisation (Enterprise Edition). n est compris entre 1 et 10. Voir le chapitre Sauvegarde et rcupration pour plus dinformations sur larchivage des fichiersdejournalisation. Exemple : LOG_ARCHIVE_DEST_1 = "LOCATION=h:\oracle\arch\HERMES" LOG_ARCHIVE_FORMAT Dfinit le format du nom des archives des fichiers de journalisation. Doit inclure les variables %T,%S et %Rdonnant respectivementlenumrodelinstance(thread),lenumrodesquencedufichierdejournalisationetunidentifiant

- 8-

ENI Editions - All rights reserved - Algeria Educ

dincarnation.VoirlechapitreSauvegardeetrcuprationpourplusdinformationssurcesvariables. Exemple : LOG_ARCHIVE_FORMAT = redo_%T_%S_%R.arc REMOTE_LOGIN_PASSWORDFILE positionnerselonlastratgieadoptepourlidentificationSYSDBA(cf.sectionLadministrateurdebasededonnes duchapitreLesbasesdelarchitectureOracle).Valeurspossibles :


q

NONE :pasdefichierdemotdepasse seulelauthentificationparlesystmedexploitationestactive. EXCLUSIVE :utilisationdunfichierdemotdepasseddilabasededonnes. SHARED :utilisationdunfichierdemotdepassepartagentreplusieursbasesdedonnes.

Avecunfichierdemotdepasse,pardfaut,seullecompteSYSaledroitdeseconnecteravecleprivilgeSYSDBAou SYSOPER.SileparamtreREMOTE_LOGIN_PASSWORDFILEestgalEXCLUSIVEde>,ilestpossiblededonnerleprivilge SYSDBA ou SYSOPER dautres utilisateurs (dans la limite dun nombre maximum dutilisateurs indiqu lors de la crationdufichierdemotdepasse).SileparamtreREMOTE_LOGIN_PASSWORDFILEestgalSHARED,seullecompte SYSpeututiliserlesprivilgesSYSDBAouSYSOPER. Exemple : REMOTE_LOGIN_PASSWORDFILE = exclusive SEC_CASE_SENSITIVE_LOGON Indiquesilesmotsdepassesontsensibleslacasse(true,valeurpardfaut)ounon(false).Ceparamtreest apparuenversion11. Laissezlavaleurpardfaut,saufsicelaposeunproblmedecompatibilitavecvotreapplication. Exemple SEC_CASE_SENSITIVE_LOGON = true

c.Unexemplesimple
Vous pouvez crer une base de donnes de dmarrage, utilisant la gestion automatique de la mmoire, avec un fichierdeparamtrecontenanttrspeudeparamtres. Exemple : DB_NAME = HERMES COMPATIBLE = 11.1.0 CONTROL_FILES = ("d:\oracle\oradata\HERMES\control01.ctl", "d:\oracle\oradata\HERMES\control02.ctl") DB_BLOCK_SIZE = 8192 MEMORY_TARGET = 512M DB_RECOVERY_FILE_DEST = d:\oracle\flash_recovery_area DB_RECOVERY_FILE_DEST_SIZE = 20G Pourlesautresparamtres,lesvaleurspardfautsontsatisfaisantes,aumoinsdansunpremiertemps.

3.Crerleserviceassocilinstanceoucrerlefichierdemotdepasse
a.Crerleserviceassocilinstance(plateformeWindows)
SurplateformeWindows,ilfautcrerleserviceassocilinstance selonlesoptionsutilises,cettetapepermet aussidecrerlefichierdemotdepasseutilispourlauthentificationSYSDBA. Leserviceestcrlaidedelutilitaireoradim.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

Syntaxesimplifie ORADIM -NEW -SID sid [-SYSPWD mot_de_passe] [-MAXUSERS nombre] [-STARTMODE auto|manual] [-SRVCSTART system|demand] [-PFILE fichier] [-SPFILE] [-SHUTMODE normal|immediate|abort] [-TIMEOUT dure] Avec -SID sid SIDdelanouvelleinstance. -SYSPWD mot_de_passe Mot de passe deSYS pour le privilgeSYSDBA. La prsence de cette option cre le fichier de mot de passe, ce qui permetdavoiruneauthentificationSYSDBAparfichier demotdepasse.Loptionpeuttreomiseencasdutilisation dune authentification SYSDBA par le systme dexploitation. Ne pas oublier de positionner le paramtre REMOTE_LOGIN_PASSWORDFILEenconsquence(cf.sectionLadministrateurdebasededonnesduchapitreLesbases delarchitectureOracle). -MAXUSERS nombre IndiquelenombredutilisateursquipourrontrecevoirleprivilgeSYSDBAouSYSOPERetquiserontenregistrsdansle fichierdemotdepasse.Ncessitelutilisationdunfichierdemotdepasse(optionprcdente). -STARTMODE auto | manual Prciselemodededmarragesouhaitpourlinstance : auto : linstanceestdmarrelorsqueleservicedmarre(paramtreORA_<SID>_ AUTOSTART = TRUEdanslabase deregistre). manual(pardfaut) :linstancenestpasdmarrelorsqueleservicedmarre(paramtreORA_<SID>_AUTOSTART = FALSEdanslabasederegistre). -SRVCSTART system | demand Prciselemodededmarragesouhaitpourleservice : system :leserviceestenredmarrageautomatique. demand(pardfaut) :leserviceestenredmarragemanuel. -SPFILE Indique que linstance nutilise pas explicitement de fichier de paramtres texte pour le dmarrage automatique. Danscecas,lorsdundmarrageautomatique,lasquencederecherchedunfichierparamtresseffectuecomme indique dans la section Dmarrage du chapitre Dmarrage et arrt La commande STARTUP. Option par dfaut si loptionPFILEnestpasspcifie. -PFILE fichier Chemindaccscompletaufichierdeparamtrestexteutiliserexplicitementpourledmarrageautomatique(pas de squence de recherche de fichier de paramtres). Ne pas mettre cette clause si vous utilisez un fichier de paramtresserveur(recommand). -SHUTMODE normal | immediate |abort Type darrt effectu sur linstance lorsque le service sarrte (voir les options de la commande STARTUP dans la section Dmarrage du chapitre Dmarrage et arrt La commande STARTUP). Est enregistr dans le paramtre ORA_<SID>_AUTOSTART = FALSEdelabasederegistre. -TIMEOUT dure Dlai (en secondes) accord linstance pour sarrter avant larrt du service (qui est alors quivalent un

- 10 -

ENI Editions - All rights reserved - Algeria Educ

SHUTDOWN ABORT).EstenregistrdansleparamtreORA_<SID>_SHUTDOWN_TIMEOUTdelabasederegistre.90secondes pardfaut. ORADIM -NEWcreetdmarreleserviceOracleService<SID>.Ilcreaussileservice OracleJobScheduler<SID>utilis parlordonnanceur Oracle (scheduler)pourlancerdestravauxauniveaudusystmedexploitation par dfaut, ce serviceestdsactiv. Pour les options -STARTMODE, -SHUTMODE et -SRVCSTART, la premire lettre des valeurs suffit (STARTMODE a, par exemple). Exemple : C:\>oradim -new -sid HERMES -syspwd wX#12 -startmode a -srvcstart s -spfile Instance cre. C:\> Cetexemplecreunserviceavectouteslesoptionsquipermettentdavoirunredmarrageautomatique.Unfichier deparamtresserveurestutilisetlauthentificationSYSDBAparunfichierdemotdepasseestpossible(enplusde lauthentificationparlesystmedexploitation). Dune manire plus gnrale, lutilitaire ORADIM permet de grer le service associ linstance, notamment de modifiercertainsparamtresoudelesupprimer(suitelasuppressiondunebaseparexemple). TapersimplementORADIMsurlalignedecommandepermetdobtenirlaidedeloutil. Loption-EDITdeORADIMpermetdemodifierlescaractristiquesduserviceetdelinstance,notammentdactiverou dedsactiverledmarrageautomatique. Syntaxesimplifie ORADIM -EDIT -SID sid [-SYSPWD mot_de_passe] [-MAXUSERS nombre] [-STARTMODE auto| manual ] [-SRVCSTART system| demand ] [-PFILE fichier] [-SPFILE] [-SHUTMODE normal| immediate |abort] [-TIMEOUT dure] Lesclausessontlesmmesquepourlacration.

b.Crerlefichierdemotdepasse(plateformeUnix/Linux)
SurplateformeUnixouLinux,ilnyapasdenotiondeserviceassocilinstance.Parcontre,ilpeuttrencessaire decrerlefichierdemotdepasseutilispourlauthentificationSYSDBA. Lefichierdemotdepasseestcrlaidedelutilitaireorapwd. Cet utilitaire existe aussi sur plateforme Windows. Il permet de crer ou de recrer le fichier de mot de passesansutiliseroradim. Syntaxe ORAPWD FILE=fichier PASSWORD=mot_de_passe ENTRIES=nombre FORCE=y|n IGNORECASE=y|n Avec FILE=fichier Chemincompletverslefichierdemotdepassecrer. PASSWORD=mot_de_passe MotdepassedeSYSpourleprivilgeSYSDBA. ENTRIES=nombre IndiquelenombredutilisateursquipourrontrecevoirleprivilgeSYSDBAouSYSOPERetquiserontenregistrsdansle fichierdemotdepasse.
ENI Editions - All rights reserved - Algeria Educ - 11 -

openmirrors.com

FORCE=y|n Mettreypourforcerlasuppressionpralabledufichiersilexistedj(utileencasderecrationdufichierdemotde passe). IGNORECASE=y|n Mettrey pour avoir un mot de passe non sensible la casse etn(valeurpardfaut)pouravoirunmotdepasse sensiblelacasse.Apparuenversion11.Avantlaversion11,lemotdepassentaitpassensiblelacasse. Aucunespacenedoittreprsentautourdusigne=. Exemple : ORACLE_SID=HERMES PWFILE=$ORACLE_HOME/dbs/orapw$ORACLE_SID orapwd file=$PWFILE password=wX#12 entries=4 SurplateformeUnixouLinux,lefichierdemotdepassesappellegnralementorapw<SID>(<SID>dsignantlenom delinstance)etestsitudanslerpertoire$ORACLE_HOME/dbs. SurplateformeWindows,lefichierdemotdepassesappellegnralementpwd<SID>.ora (<SID>dsignantlenom delinstance)etestsitudanslerpertoire%ORACLE_HOME%\database. Silefichierdemotdepasseexistedj,vousobtiendrezuneerreur pourrecrerunfichierdemotdepasse,ilfaut supprimermanuellementleprcdentouutiliserloptionFORCE. Noubliez pas de positionner le paramtreREMOTE_LOGIN_PASSWORDFILE en consquence (section LadministrateurdebasededonnesduchapitreLesbasesdelarchitectureOracle).

4.LancerSQL*PlusetseconnecterASSYSDBA
Maintenant que les tapes raliser au niveau du systme dexploitation sont termines, nous pouvons lancer SQL*PlusetnousconnecterAS SYSDBA. Pourcela :
q

PositionnerlavariabledenvironnementORACLE_SIDauniveaudusystmedexploitation :
q

SurplateformeWindows(possibleaussidanslabasederegistre) : set ORACLE_SID=HERMES

SurplateformeUnixouLinux(adapterenfonctiondushell) : export ORACLE_SID=HERMES

DmarrerSQL*Plussansseconnecter :sqlplus /nolog SeconnecterAS SYSDBA :


q

Authentifiparlesystmedexploitation : CONNECT / AS SYSDBA

Authentifiparunfichierdemotdepasse : CONNECT sys/wX#12 AS SYSDBA

- 12 -

ENI Editions - All rights reserved - Algeria Educ

5.Crerlefichierdeparamtresserveur
Lacrationdunfichierdeparamtresserveurseffectuepartirdunfichierdeparamtrestexte,grcelordreSQL CREATE SPFILE. Syntaxe : CREATE SPFILE [ = nom_spfile ] FROM PFILE [ = nom_pfile ] ; Avec : nom_spfile Chemindaccscomplet(surleserveur)etnomdufichierdeparamtresserveurcrer.Sinonspcifi,unnompar dfautetunemplacementpardfautsontutiliss(dpenddelaplateforme). nom_pfile Chemindaccscomplet(surleserveur)etnomdufichierdeparamtrestextedorigine.Sinonspcifi,unnompar dfautetunemplacementpardfautsontutiliss(dpenddelaplateforme). Exemple : SQL> CREATE SPFILE FROM 2 PFILE = d:\app\oracle\admin\HERMES\pfile\init.ora; Fichier cr. Cette opration ncessite une connexion SYSDBA ou SYSOPER. Si le fichier de paramtres serveur existe dj, il est remplac. Lenometlemplacementpardfautdufichierdeparamtresserveurestlesuivant :
q

%ORACLE_HOME%\database\spfile<SID>.ora(Windows) $ORACLE_HOME/dbs/spfile<SID>.ora(Unix/Linux).

Utiliserlenometlemplacementpardfautfaciliteladministrationultrieuredelabase,notammentledmarrage(voir lechapitreDmarrageetarrt). Lenometlemplacementpardfautdufichierdeparamtrestexteestlesuivant :


q

%ORACLE_HOME%\database\init<SID>.ora(Windows) $ORACLE_HOME/dbs/init<SID>.ora(Unix/Linux).

Danscechapitre,titreCrationdelabasededonneslamain,sectionPrparerunnouveaufichierdeparamtres texte, nous avons prconis de ne pas crer de fichier de paramtres texte lemplacement par dfaut. En consquence, dans lordre SQL CREATE SPFILE, il faut donc spcifier lemplacement du fichier de paramtres texte utiliscommesource(cestlaseulefois !). Silefichierdeparamtrestextecontientuneerreurdesyntaxe(nomdeparamtreerron,parenthseabsenteou surnumraire,guillemetouapostropheabsentousurnumraire,etc.),lordreCREATE SPFILEvachouer :
q

Nomdeparamtreerron :LRM-00101: unknown parameter name... Syntaxe(parenthse,guillemet,etc.) :LRM-00116: syntax error at... Chemindufichiertexte :LRM-00109: could not open parameter file...

Corrigezlefichierdeparamtrestexteetrecommencez.Biennoterqucestade,lesvaleursdesparamtresnesont pas vrifies elles seront vrifies au dmarrage de linstance. La cration du fichier de paramtres serveur peut seffectuerultrieurement.Personnellement,jeprconisedelecrerdsledbut ainsi,dslepremierdmarragede linstance,lefichierdeparamtresserveursestutilis,cequipermetsibesoindefairedesmodificationsdynamiques deparamtresenlesrendantpersistantesdanslefichierdeparamtres(cf.ChapitreGestiondelinstance).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 13 -

6.Dmarrerlinstance
Linstancepeutmaintenanttredmarre,enNOMOUNTpuisquelabasededonnesnexistepasencore : SQL> STARTUP NOMOUNT Instance ORACLE lance. ... Si le fichier de paramtres texte contient une erreur de valeur sur un paramtre (valeur en dehors de la plage autorise,mauvaischemin,etc.),lacommandeSTARTUP NOMOUNTvachouer.Corrigezlefichierdeparamtrestexte, recrezlefichierdeparamtresserveuretrecommencez.Biennoterqucestade,lesvaleursdetouslesparamtres nesontpasvrifies certainesserontvrifiesultrieurement(parexemplelorsdelexcutiondelordreSQLCREATE DATABASE).

7.Crerlabasededonnes
a.LordreSQLCREATEDATABASE
LordreSQLCREATE DATABASEpermetdecrerlabasededonnes. Syntaxe : CREATE DATABASE [nom_base] [ USER SYS IDENTIFIED BY mot_de_passe ] [ USER SYSTEM IDENTIFIED BY mot_de_passe ] [ CONTROLFILE REUSE ] [ SET DEFAULT { BIGFILE | SMALLFILE } TABLESPACE ] [ DATAFILE spcification_fichier [,...] ] [ EXTENT MANAGEMENT LOCAL ] [ SYSAUX DATAFILE spcification_fichier [,...] ] [[ BIGFILE | SMALLFILE ] UNDO TABLESPACE nom [ DATAFILE spcification_fichier [,...] ] ] [[ BIGFILE | SMALLFILE ] DEFAULT TEMPORARY TABLESPACE nom [ TEMPFILE spcification_fichier [,...] ] [ EXTENT MANAGEMENT LOCAL ] [ UNIFORM [ SIZE valeur [K|M|G|T] ] ] ] [ DEFAULT TABLESPACE nom [ DATAFILE spcification_fichier [,...] ] [ clause_extent_management ] ] [ LOGFILE [GROUP numro] spcification_fichier_redo [,...] ] [ ARCHIVELOG | NOARCHIVELOG ] [ FORCE LOGGING ] [ CHARACTER SET jeu ] [ NATIONAL CHARACTER SET jeu ] [ SET TIME_ZONE = { +|- hh:mi | region } ] [ MAXINSTANCES nombre ] [ MAXLOGFILES nombre ] [ MAXLOGMEMBERS nombre ] [ MAXDATAFILES nombre ] ; Avec : - spcification_fichier nom_fichier [ SIZE valeur [K|M|G|T] ] [REUSE] [ clause_auto_extend ] - clause_auto_extend AUTOEXTEND OFF | AUTOEXTEND ON [ NEXT valeur [K|M|G|T] ] [ MAXSIZE UNLIMITED | valeur [K|M|G|T] ] - clause_extent_management EXTENT MANAGEMENT DICTIONARY | EXTENT MANAGEMENT LOCAL { AUTOALLOCATE | UNIFORM [ SIZE valeur [K|M|G|T] ] } - spcification_fichier_redo (nom_fichier [,...]) [ SIZE valeur [K|M|G] ] [REUSE]

- 14 -

ENI Editions - All rights reserved - Algeria Educ

Exemple : CREATE DATABASE hermes USER SYS IDENTIFIED BY wX#12 USER SYSTEM IDENTIFIED BY az#78 SET DEFAULT SMALLFILE TABLESPACE DATAFILE &chemin\system01.dbf SIZE 200M AUTOEXTEND ON NEXT 10M EXTENT MANAGEMENT LOCAL SYSAUX DATAFILE &chemin\sysaux01.dbf SIZE 100M AUTOEXTEND ON NEXT 10M LOGFILE GROUP 1 (&chemin\redo01a.log, &chemin\redo01b.log) SIZE 50M, GROUP 2 (&chemin\redo02a.log, &chemin\redo02b.log) SIZE 50M, GROUP 3 (&chemin\redo03a.log, &chemin\redo03b.log) SIZE 50M SMALLFILE UNDO TABLESPACE undotbs DATAFILE &chemin\undotbs01.dbf SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1024M SMALLFILE DEFAULT TEMPORARY TABLESPACE temp TEMPFILE &chemin\temp01.dbf SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1024M DEFAULT TABLESPACE deftbs DATAFILE &chemin\deftbs01.dbf SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 500M EXTENT MANAGEMENT LOCAL AUTOALLOCATE NOARCHIVELOG CHARACTER SET WE8ISO8859P15 NATIONAL CHARACTER SET AL16UTF16 SET TIME_ZONE = Europe/Paris MAXINSTANCES 1 MAXLOGFILES 16 MAXLOGMEMBERS 4 MAXDATAFILES 128 / Cetexempleutiliseunevariabledesubstitution&cheminpourlechemindesfichiersdelabasededonnes cette variableestdfinieaupralabledansSQL*Plus,aveclasyntaxeDEFINE chemin=.... LordreSQLCREATE DATABASEdurequelquesminutes. LordreSQLCREATE DATABASEcrelanouvellebasededonnes,enloccurrence :
q

crationdesfichiersdecontrle crationdesfichiersdejournalisation crationdutablespaceSYSTEMetdesonfichierdedonnes crationdutablespaceSYSAUXetdesonfichierdedonnes crationdudictionnairededonnes(dansletablespaceSYSTEM) crationdunsegmentdannulation(nommSYSTEMstockdansletablespaceSYSTEM) crationdescomptesSYSetSYSTEM(entreautres) crationventuelleduntablespacedannulation,duntablespacetemporairepardfautetduntablespace permanentpardfaut.

larrive, la base de donnes est ouverte et parfaitement oprationnelle. Par contre, les vues et synonymes du dictionnairededonnesnesontpascrsetledictionnaireestdonc peuexploitable.Lafinalisationdelacration dudictionnaireestdcritedanslepoint Finaliserlacrationdudictionnaireciaprs.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 15 -

TouteslesstructuresstockesdansletablespaceSYSTEMsontcresgrceauscriptsql.bsqquisetrouvedansle rpertoire%ORACLE_HOME%\rdbms\adminou$ORACLE_HOME/rdbms/admin. Encequiconcernelesfichiersdelabasededonnes,lesrecommandationsdenommagesontlessuivantes : Fichierdecontrle controlnn.ctl,nntantunnumrodordre(01,02,etc.). Fichierdejournalisation redonn.log,nn,nntantlenumrodugroupe(01,02,etc.). Fichiersdedonnes tablespacenn.dbf,tablespacetantlenomdutablespaceetnnlenumrodordredufichierauseindutablespace (01,02,etc.). SilordreSQLCREATE DATABASEchouepouruneraisonoupouruneautre,ilestpossiblequeplusieursdesfichiers delabasededonnesaientdjtcrs.Danscecas,avantderelancerlacration,ilfautsupprimerlesfichiers djcrs(souspeinequeleCREATE DATABASEchouedenouveau,maiscettefoisparcequedesfichiersexistent dj). Lescausesdunchecdelacrationdunebasededonnespeuventtremultiples :
q

manquedespace cheminerronpourunfichier(Oraclenecreparlesrpertoires,ilsdoiventdjexister) etc.

Silemessagederreuraffichlcranestsibyllin(dugenreORA-01092: instance ORACLE interrompue. Dconnexion impose),consultezlefichierdalertedelinstancequivousdonnera(normalement)desinformationsdtaillessurla natureduproblme.

b.OptionsdelordreSQLCREATEDATABASE
TouteslesclausesdelordreSQLCREATE DATABASE sontoptionnellesetontdesvaleurspardfaut.Danslapratique, ilestprfrabledelesspcifiertoutes(oupresque)afindebiencontrlerlescaractristiquesdelanouvellebase. nom_base Nomdelabasededonnes.PardfautgalauparamtreDB_NAME.Provoqueuneerreursilenomindiquiciest diffrentdelavaleurduparamtreDB_NAME. USER{SYS|SYSTEM}IDENTIFIEDBY Exemple : USER SYS IDENTIFIED BY wX#12 USER SYSTEM IDENTIFIED BY az#78 CesdeuxclausespermettentdechangerlesmotsdepassedeSYSetSYSTEMdslacrationdelabasededonnes. Biennoterquecesdeuxclausesnesontpasobligatoires(maisrisquentdeledevenirdansuneversionultrieure). Parcontre,siluneestspcifie,lautredoitltreaussi.Sicesclausesnesontpasspcifies,lesmotsdepassepar dfautsontattribusSYS(change_on_install)etSYSTEM(manager). CONTROLFILEREUSE SiloptionestprsenteetquundesfichiersindiqusdansleparamtreCONTROL_FILESexistedj,Oraclelerutilise etlcrase.Siloptionestabsente,danslammesituation,unmessagederreursafficheetlacrationdelabase eststoppe. Dupointdevuedelascurit,ilestprfrabledenepasmettrecetteoptionafindviterdcraserparmgardeun fichierdecontrleutilisparuneautrebase.

- 16 -

ENI Editions - All rights reserved - Algeria Educ

SETDEFAULT{BIGFILE|SMALLFILE}TABLESPACE Cetteclausespcifieletypepardfaut(BIGFILEouSMALLFILE)destablespacescrslorsdelacrationdelabase dedonnes.LetypespcifiicisappliquenotammentauxtablespacesSYSTEMetSYSAUX,etnepeutpastremodifi pourcesdeuxtablespaces.Sicetteclauseestomise,OraclecredestablespacesSMALLFILEpardfaut. Untablespace BIGFILE est un tablespace qui ne comporte quun seul fichier de donnes qui peut contenir jusqu 2^32 blocs Oracle (plus de 4 milliards). Un tablespace SMALLFILE est le tablespace traditionnel dOracle, qui peut comporterjusqu1022fichiers,chaquefichierpouvantcontenirjusqu2^22blocsOracle(plusde4millions).Les tablespacesBIGFILEsontapparusenversion10. Cette notion de tablespaceBIGFILE est prsente plus en dtail dans le chapitre Gestion des tablespaces et des fichiersdedonnes. DATAFILEspcification_fichier[,...] Exemple : DATAFILE &chemin\system01.dbf SIZE 200M AUTOEXTEND ON NEXT 10M Cetteclausepermetdeprciserlemplacement,lenometlatailledun(ouventuellementdeplusieurs)fichiersde donnespourletablespaceSYSTEM. Lasyntaxeestlasuivantepourlaspcificationdunfichierdedonnes : - spcification_fichier nom_fichier [ SIZE valeur [K|M|G|T] ] [REUSE] [ clause_auto_extend ] nom_fichier Chemin daccs complet au fichier de donnes, normalement dans un rpertoire de donnes (oradata) pour respecterlestandardOFA. SIZE Tailleinitialedufichier.LataillepeuttreomiseuniquementsiloptionREUSEestutiliseetquelefichierexistedj. REUSE Si loption est prsente et que le fichier existe dj, Oracle le rutilise et lcrase. Si loption est absente, dans la mmesituation,unmessagederreursafficheetlacrationdelabasededonneseststoppe.Dupointdevuede lascurit,ilestprfrabledenepasmettrecetteoptionafindviterdcraserparmgardeunfichierdedonnes utilisparuneautrebasededonnes. - clause_auto_extend AUTOEXTEND OFF | AUTOEXTEND ON [ NEXT valeur [K|M|G|T] ] [ MAXSIZE UNLIMITED | valeur [K|M|G|T] ] AUTOEXTEND Indique si le fichier de donnes peut (ON) ou non (OFF) grossir une fois que tout lespace initialement allou est compltementutilis. NEXT Espaceminimumallouaufichierlorsdelextension. MAXSIZE Taillemaximaledufichier,ventuellementnonlimite(UNLIMITED).

LagestiondestablespacesetdesfichiersdedonnesseraprsenteendtaildanslechapitreGestiondes tablespacesetdesfichiersdedonnes.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 17 -

Pourle<tablespaceSYSTEM,ilfautprvoirunfichierdedonnesdauminimum200Mo(siaucuneoptionparticulire nest installe), et il est vivement conseill de permettre ce fichier de donnes de stendre en fonction des besoins(clauseAUTOEXTEND). Touteslestaillespeuventtreexprimesenoctet(pasdesymbole),Ko(symboleK),Mo(symboleM),Go(symboleG) ouTo(symboleT).LestaillesenTonesontautorisesquepourlestablespacesBIGFILE. Le type (BIGFILE ou SMALLFILE) du tablespace SYSTEM est dtermin par la clause SET DEFAULT ... TABLESPACE prsenteprcdemment.UnseulfichierdedonnespeuttrespcifisiletablespaceestdetypeBIGFILE. EXTENTMANAGEMENTLOCAL CetteclauseindiquequeletablespaceSYSTEMdoittregrlocalement pardfaut,ilestgrparledictionnaire. LanotiondetablespacegrlocalementseraprsentedanslechapitreGestiondestablespacesetdesfichiersde donnes.Biennoterlesconsquences(positives!)decetteclause :
q

Touslestablespacesdoiventtregrslocalement(conseillparOracle). Untablespacetemporairepardfautdoittrecrdslacrationdelabase(conseillparOracle). Si la gestion automatique des segments dannulation est active (par dfaut et conseill par Oracle), un tablespacedannulationdoittrecrdslacrationdelabasededonnes(conseillparOracle).

Ilnyapasdinconvnient(aucontraire)utiliseruntablespaceSYSTEMgrlocalement ! SYSAUXDATAFILEspcification_fichier[,...] Exemple : SYSAUX DATAFILE &chemin\sysaux01.dbf SIZE 100M AUTOEXTEND ON NEXT 10M Cetteclausepermetdeprciserlemplacement,lenometlatailledun(ouventuellementdeplusieurs)fichiersde donnespourletablespaceSYSAUX(apparuenversion10). La syntaxe de spcification du fichier de donnes est la mme que le tablespace SYSTEM. Les caractristiques du tablespaceSYSAUXserontprsentesdanslechapitreGestiondestablespacesetdesfichiersdedonnes. Le type (BIGFILE ou SMALLFILE) du tablespace SYSAUX est dtermin par la clause SET DEFAULT ... TABLESPACE prsenteprcdemment. LatailledutablespaceSYSAUXdpendranormmentdesfonctionnalitsutilisesdanslabasededonnes(OLAP, OracleText,OracleinterMedia,etc.).Siaucuneoptionparticulirenestutilise,unetaillededpartde100Moest suffisante. En rythme de croisire, il faut compter 200 300 Mo pour le rfrentiel AWR (base comportant en moyenne une trentaine de sessions actives) et environ 100 Mo pour le rfrentiel du Database Control (mais lespaceutilisparcesdeuxcomposantsdpenddenombreuxfacteurs).Ilestconseilldepermettreaufichierde donnesdutablespaceSYSAUXdestendreenfonctiondesbesoins(clauseAUTOEXTEND). [BIGFILE|SMALLFILE]UNDOTABLESPACE... Exemple : SMALLFILE UNDO TABLESPACE undotbs DATAFILE &chemin\undotbs01.dbf SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1024M Cetteclausepermetdecreruntablespacedannulationquiestutilispourlagestionautomatiquedessegments dannulation. Ce mode de gestion est intressant et doit tre utilis ds la cration de la base. La gestion automatique des segments dannulation sera prsente en dtail dans le chapitre Gestion des informations dannulation. La syntaxe pour spcifier les caractristiques des fichiers de donnes de ce tablespace est la mme que pour le tablespace SYSTEM.Laclauseoptionnelle BIGFILEou SMALLFILE permet de prciser le type de tablespace si cette clauseestomise,letypeestdterminparlaclauseSET DEFAULT ... TABLESPACEprsenteprcdemment. [BIGFILE|SMALLFILE]DEFAULTTEMPORARYTABLESPACE... Exemple :

- 18 -

ENI Editions - All rights reserved - Algeria Educ

SMALLFILE DEFAULT TEMPORARY TABLESPACE temp TEMPFILE &chemin\temp01.dbf SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1024M Cetteclausepermetdecreruntablespacetemporairepardfaut.Cettenotionestintressanteetdoittremise en uvredslacrationdelabasededonnes.Letablespacetemporaireseraprsentendtaildanslechapitre Gestiondestablespacesetdesfichiersdedonnes. La syntaxe pour spcifier les caractristiques des fichiers de donnes de ce tablespace, est la mme que pour le tablespaceSYSTEM,maisenremplaantlemotclDATAFILEparTEMPFILE.LaclauseoptionnelleBIGFILEouSMALLFILE permet de prciser le type de tablespace si cette clause est omise, le type est dtermin par la clause SET DEFAULT ... TABLESPACEprsenteprcdemment. DEFAULTTABLESPACEnom... Exemple : DEFAULT TABLESPACE deftbs DATAFILE &chemin\deftbs01.dbf SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 500M EXTENT MANAGEMENT LOCAL AUTOALLOCATE Cetteclausepermetdecreruntablespacepermanentpardfaut.Cetablespaceseraaffectpardfaut,comme tablespacepardfautdesutilisateursnon"systme"(autresqueSYS,SYSTEM,etc.).Letablespacepardfautdun utilisateur est le tablespace dans lequel Oracle stocke les segments crs par lutilisateur si celuici na pas mentionnexplicitementdetablespace.Cettenotionnestpasfondamentale.Ellenestrellementintressanteque dans les bases de donnes o beaucoup dutilisateurs, ayant le droit de crer des segments, devront tre grs dfiniruntablespacepermanentpardfautpermetdesimplifierlacrationdesutilisateurs(chapitreGestion des utilisateurs et de leurs droits). Le tablespace permanent par dfaut peut tre dfini ultrieurement. Le tablespace permanent par dfaut utilis par dfaut par Oracle est le tablespace SYSTEM cela ne prsente pas de risquevisvisdutablespaceSYSTEM,carlesutilisateursnonDBAnontpas(normalementcestlecaspardfaut) dequotasurletablespaceSYSTEM,etnepeuventpasycrerdesegments(voirlechapitreGestiondesutilisateurs etdeleursdroits). La syntaxe pour spcifier les caractristiques des fichiers de donnes de ce tablespace est la mme que pour le tablespace SYSTEM. Le tablespace est obligatoirement de type SMALLFILE. La clause EXTENT MANAGEMENT sera prsentedanslechapitreGestiondestablespacesetdesfichiersdedonnes. LOGFILE Exemple : LOGFILE GROUP 1 GROUP 2 GROUP 3

(&chemin\redo01a.log, &chemin\redo01b.log) SIZE 50M, (&chemin\redo02a.log, &chemin\redo02b.log) SIZE 50M, (&chemin\redo03a.log, &chemin\redo03b.log) SIZE 50M

Cetteclausepermetdeprciserlemplacement,lenombreetlatailledesfichiersdejournalisation(voirlechapitre LesbasesdelarchitectureOraclepourlesprincipesdorganisationengroupes,compossdeplusieursmembres). Lasyntaxeestlasuivante : LOGFILE [GROUP numro] spcification_fichier_redo [,...] spcification_fichier_redo = (nom_fichier [,...]) [ SIZE valeur [K|M|G] ] [REUSE] Avec : numro Numrodugroupe.Siloptionestabsente,Oraclenumrotelesgroupes1,2,...(cequiestbien). nom_fichier Chemindaccscompletunfichiermembredugroupe,normalementdansunrpertoirededonnes(oradata)pour respecterlestandardOFA.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 19 -

SIZE Tailledechaquemembredugroupeenoctet(pasdesymbole),Ko(symboleK),Mo(symboleM)ouGo(symboleG).La taillepeuttreomiseuniquementsiloptionREUSEestutiliseetquelefichierexistedj. REUSE Si loption est prsente et que le fichier existe dj, Oracle le rutilise et lcrase. Si loption est absente, dans la mmesituation,unmessagederreursafficheetlacrationdelabasededonneseststoppe.Dupointdevuede lascurit,ilestprfrabledenepasmettrecetteoptionafindviterdcraserparmgardeunfichierdedonnes utilisparuneautrebasededonnes. Vousdevezspcifierauminimumdeuxgroupes,composschacundunmembre.Dupointdevuedelascurit,ilest conseill davoir au minimum deux membres par groupe, si possible sur des disques diffrents. Pour les performances, il est aussi conseill de mettre les fichiers de journalisation sur des disques ddis (pour viter les contentionssurlesentres/sorties). Comptetenudelasyntaxe,touslesmembresdungroupeontforcmentlammetaille.Parcontre,rienninterdit davoir des groupes de tailles diffrentes : cela ne prsente aucun intrt, sauf temporairement, durant une oprationderedimensionnementdelatailledesfichiersdejournalisation(chapitreGestiondesfichiersdecontrle etdesfichiersdejournalisation). Dterminerlenombredegroupesetlatailledesgroupesestunsujetcomplexepourlequelilnexistepasdeformule decalcul.Lencore,ilestpossible,aposteriori,dauditerlefonctionnementdesfichiersdejournalisationafindevoir silenombredegroupesetlatailledesgroupessontsatisfaisants encasdeproblme,ilestrelativementsimple dapporter des corrections en ajoutant un nouveau groupe (cest simple) ou en augmentant la taille des groupes (cestunpeupluscompliqu).NousverronstoutceladansledtaildanslechapitreGestiondesfichiersdecontrle etdesfichiersdejournalisation. Pour dmarrer, il est classique dutiliser trois ou quatre groupes de fichiers de journalisation dune taille comprise entre20(petiteactivittransactionnelle)et100Mo(activittransactionnelleplusimportante). ARCHIVELOG|NOARCHIVELOG CetteclauseindiquesilabasededonnesfonctionnedanslemodeARCHIVELOGouNOARCHIVELOG.Gnralement,la baseesttoujourscreenmodeNOARCHIVELOGpuisventuellementpasseensuiteenmode ARCHIVELOG. ilnest eneffetpasutiledarchiverlesfichiersdejournalisationremplislorsdelacrationdelabasededonnes(encasde problme, il est plus simple de recrer la base). La mise en uvre de larchivage aprs cration de la base de donnesestprsentedanslechapitreSauvegardeetrcupration. FORCELOGGING CertainsordresSQLpeuventtreexcutsenmodeNOLOGGING,cestdiresansgnrerdactivit(oupresquepas) dans les fichiers de journalisation. Cette technique est intressante pour les performances (lopration est plus rapide)maispeutposerdesproblmespourlarcupration :lesoprationseffectuesenNOLOGGINGquinontpas tsauvegardesnesontpasrcuprables ilfautlesrefaire(sicestpossible...). LaclauseFORCE LOGGINGdelordreSQLCREATE DATABASEmetlabasededonnesdanslemodeFORCELOGGING,cequi permet de garantir que toutes les modifications seront enregistres dans les fichiers de journalisation, mme si loprationconcerneesteffectuedanslemodeNOLOGGING. Danslapratique,sterlapossibilitderalisercertainesoprationsdanslemodeNOLOGGINGestdommage,carcela peut tre trs intressant du point de vue des performances (pour la cration des index par exemple). Il est prfrable de ne pas mettre la base de donnes dans le mode FORCE LOGGING et de bien contrler les oprations ralises en NOLOGGING, et notamment de faire des sauvegardes aprs les oprations de ce genre si, cellesci ne peuvent pas tre facilement refaites en cas dincident.Cette proprit de la base de donnes peut tre modifie ultrieurement par lordre SQL ALTER DATABASE [NO] FORCE LOGGING. Elle est enregistre dans la colonne FORCE_LOGGINGdelavueV$DATABASE. LaclauseFORCE LOGGINGpeuttrepositionnesuruntablespacecequipermetdavoiruncontrleplusfin.

CHARACTERSET&NATIONALCHARACTERSET Exemple : CHARACTER SET WE8ISO8859P15 LaclauseCHARACTER SETdfinitlejeudecaractresutilispourlestockagedesdonnesdanslescolonnesdetype CHAR,VARCHAR2,LONGetCLOB.

- 20 -

ENI Editions - All rights reserved - Algeria Educ

LeCHARACTER SET,bienquoptionnel,doittreindiquavecsoin,carilnestpassimplechangerultrieurement la valeurpardfautdpenddelaplateformeetdelinstallation. PourlEuropedelouest,lesjeuxdecaractresWE8ISO8859P1etWE8ISO8859P15sontsouventutilisscarilsstockent lescaractressur8bitsetpermettentdoncdeconserverlescaractresaccentus ledeuximejeupermetenplus destockerlesymboledeleuro.UneautrevaleurusuelleestUS7ASCII cejeudecaractreanglosaxonnepermet pasdestockerlesaccents.LejeuUnicodeAL32UTF8estaussisupportetrecommandparOracle. La clause NATIONAL CHARACTER SET dfinit le jeu de caractres utilis pour le stockage des donnes dans les colonnesdetypeNCHAR,NVARCHAR2etNCLOB. Ilest,luiaussi,dlicatchangerultrieurement.LeNATIONAL CHARACTER SETpeuttreomissivousneprvoyezpas dutiliserundeuximejeudecaractresdanslabasededonnes ilestpardfautgalAL16UTF16.Seulslesjeux decaractresUTF8etAL16UTF16sontautoriss. Les techniques de changement de jeu de caractres sont dcrites dans la documentation Oracle Database GlobalizationSupportGuide. SETTIME_ZONE Exemple : SET TIME_ZONE = Europe/Paris Cetteoptionpermetdedfinirlefuseauhorairedelabase.Cefuseauhoraireestutilisparlestypesdedonnes TIMESTAMP WITH TIME ZONEetTIMESTAMP WITH LOCAL TIME ZONE.Sicetteoptionnestpasspcifie,Oracleutilisele fuseau horaire du systme dexploitation. Si le fuseau horaire du systme dexploitation nest pas valide, Oracle utiliselefuseauUTC.Lefuseauhorairepeuttredfiniparunechanedelaforme+|- hh:midonnantledcalage parrapportlheureuniverselle(+01:00parexemple),ouparlenomdunergion(Europe/Parisparexemple).Vous pouvezinterrogerlacolonneTZNAMEdelavueV$TIMEZONE_NAMESpouravoirlalistedesnomsdergion. MAXINSTANCES MAXLOGFILES MAXLOGMEMBERS MAXDATAFILES Exemple : MAXINSTANCES 1 MAXLOGFILES 16 MAXLOGMEMBERS 4 MAXDATAFILES 128 Cesoptionspermettentdelimiterlenombredefichiersdelabasededonnes : MAXLOGFILES Nombremaximumdegroupesdefichiersdejournalisation. MAXLOGMEMBERS Nombremaximumdemembresdansungroupedefichiersdejournalisation. MAXDATAFILES Nombremaximumdefichierdedonnes. Les valeurs minimales, par dfaut, et maximales dpendent de la plateforme.Ces paramtrent impactent directementlatailledesfichiersdecontrlecarOraclerservelenombredentresncessairesdanslesfichiersde contrle mettre des valeurs trs grandes, "pour tre tranquille", peut donc conduire un fichier de contrle dmesurmentgrand(plusde10Mo,contremoinsde10Moentempsnormal).Mettrelesvaleurssuivantespermet, engnral,dtretranquille,sanstropaugmenterlatailledufichierdecontrle : MAXLOGFILES En gnral, une base utilise quatre ou cinq groupes, donc, mettre une valeur de lordre de 10 serait largement suffisant malheureusement, MAXLOGFILES a une valeur minimum gale deux fois celle dune autre option, MAXINSTANCES(intressanteuniquementavecloptionRAC),quipardfautvaut16(soitunMAXLOGFILESminimumde 32 !). Le plus simple est soit de ne rien mettre (et la valeur par dfaut, gale la valeur minimum est largement suffisante)soitdemettre32(cequirevientaumme) :quipeutleplus,peutlemoinsetlespacegaspilldansle fichier de contrle est ngligeable. Une autre approche peut consister donner une valeur MAXINSTANCES (1 par exemple)etmettreMAXLOGFILESunevaleurdelordrede10.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 21 -

MAXLOGMEMBERS 3 ou 4 (utiliser trois membres par groupe offre normalement un niveau de scurit suffisant, si ces membres sont situssurdesdisquesdiffrents).5estsouventlavaleurmaximaleautorisepourcetteoption. MAXDATAFILES Delordrede50100(ventuellementpluspourlestrsgrossesbases).Classiquement,unebasemoyenneutilise 1020fichiersdedonnes.

8.Finaliserlacrationdudictionnairededonnes
AprslexcutiondelordreSQLCREATE DATABASE,labasededonnesestparfaitementoprationnelle,maislesvues etlessynonymesquirendentledictionnairededonnesexploitablenesontpascrs. Pour crer ces vues et ces synonymes, vous devez excuter (sous SYS) des scripts fournis par Oracle (dans % ORACLE_HOME%\rdbms\adminou$ORACLE_HOME/rdbms/admin) :
q

catalog.sql:vuesetsynonymesdebase catproc.sql : complments pour les options procdurales (cration dun grand nombre de packages fournis parOracle).

Lesscriptscatalog.sqletcatproc.sqlappellentdautresscripts. Lepassagedecatalogetcatprocdureenviron1015minutes. Dautres fonctions particulires dOracle peuvent ncessiter lexcution de scripts supplmentaires dans ce cas, le scriptlancerestclairementindiqudansladocumentation. Enrglegnrale,lesscriptsdoiventtreexcutsdansleschmaSYS(propritairedudictionnairededonnes)et doncavecuneconnexionAS SYSDBA.Encasdedoute,ouvrezlescriptetregardezsonentte laconnexionutiliser estgnralementindique. Encomplment,vouspouvezexcuter(sousSYSTEM)lescriptpupbld.sqlsitudans%ORACLE_HOME%\sqlplus\adminou $ORACLE_HOME/sqlplus/admin.Cescriptestexcutpourcrerunetable(PRODUCT_USER_PROFILE)dontlaprsenceest testeparlesoutilsOracle(SQL*Plusnotamment)lorsdelaconnexiondunutilisateur.Silatablenexistepasetque lutilisateurnestpasunDBA,unmessagedalerteestaffich(maislaconnexionestaccepte). Excuterlescriptpupbld.sqlpermetdviterdavoircemessage. LatablePRODUCT_USER_PROFILEpeuttreutilisepourlimiterlanaturedesordresSQLquunutilisateurpeutexcuter aveclesoutils(parexemple,interdirelutilisationdelordre UPDATEdansSQL*Plus).Pourensavoirplus,consulterla documentationSQL*PlusUsersGuideandReference.

9.ConfigurerOracleNetpourlanouvellebasededonnes
cestade,vouspouvezconfigurerOracleNetpourlanouvellebasededonnes :
q

Modification de la configuration du processus dcoute (fichier listener.ora) pour avoir un enregistrement statiquedelinstance. Crationdunnomdeservicerseau(fichiertnsnames.ora)pourpouvoirseconnecterlabasededonnes sansdevoirpositionnerlavariabledenvironnementORACLE_SID.

CesdiffrentesconfigurationsonttprsentesdanslasectionConfigurationctserveurduchapitreOracleNetet ConfigurationctclientduchapitreOracleNet.

10.Enregistrerlanouvelleinstancedanslefichieroratab
Surplateforme Unix ou Linux, il est intressant denregistrerlanouvelleinstancedanslefichier /etc/oratab,dune part,pourpouvoirchangerfacilementdenvironnement avec lutilitaireoraenv (voirlasectionInstallationduserveur duchapitreInstallation),etdautrepart,pourbnficierventuellementduredmarrageautomatique(voirlasection

- 22 -

ENI Editions - All rights reserved - Algeria Educ

AutomatisationetscriptsduchapitreDmarrageetarrt). Exemple : HERMES:/u01/app/oracle/product/11.1.0/db_1:Y

11.ConfigurerleDatabaseControl
LenvironnementduDatabaseControl(rfrentiel,arborescencedefichiersdanslerpertoireOracleHomeservicesur plateforme Windows) peut tre cr grce lutilitaire ligne de commande emca (Enterprise Manager Configuration Assistant)Appel sans option, lutilitaire affiche une aide. Cet utilitaire propose un grand nombre doptions qui permettentdeconfigurer,reconfigurer,mettrejourousupprimerleDatabaseControl. Syntaxesimplifie : emca -config dbcontrol db [-repos {create | recreate}] emca -deconfig dbcontrol db [-repos drop] Le premier appel permet de configurer lenvironnement complet. Loption -repos permet de crer ou recrer le rfrentiel.Sicetteoptionestabsente,lerfrentielestsupposdjexister. Ledeuximeappelpermetdesupprimerlaconfiguration.Loption-repos droppermetdesupprimerlerfrentiel.Si cette option est absente, le rfrentiel nest pas supprim.Pour reconfigurer le Database Control sans supprimer le rfrentiel,vouspouvezdoncappelersuccessivement emca -deconfigpuisemca -configenomettantchaquefois loption-repos. Lorsquevouslancezlutilitairepourcrerlenvironnement,cederniervousposeunesriedequestions. Exemple : C:\>emca -config dbcontrol db -repos create EMCA DEMARRE 10 juil. 2008 07:49:35 Assistant Configuration dEM, version 11.1.0.5.0 - Production Copyright (c) 2003, 2005, Oracle. Tous droits rservs. Entrez les informations suivantes : SID de base de donnes: HERMES Numro de port du processus dcoute: 1521 Mot de passe de lutilisateur SYS: Mot de passe de lutilisateur DBSNMP: Mot de passe de lutilisateur SYSMAN: Adresse lectronique pour les notifications (facultatif): contact@olivier-heurtel.fr Serveur de messagerie sortant (SMTP) pour les notifications (facultatif): smtp.orange.fr ----------------------------------------------------------------Vous avez indiqu les paramtres suivants Rpertoire dorigine ORACLE_HOME de la base de donnes ................ D:\app\oracle\product\11.1.0\db_1 Nom dhte local ................ srvwinora Numro de port du processus dcoute ................ 1521 SID de base de donnes ................ HERMES Adresse lectronique pour les notifications ................ contact@olivier-heurtel.fr Serveur de messagerie sortant (SMTP) pour les notifications ................ smtp.orange.fr ----------------------------------------------------------------Voulez-vous continuer ? [oui(Y)/non(N)]: Y 10 juil. 2008 07:50:38 oracle.sysman.emcp.EMConfig perform INFO: Cette opration est en cours de journalisation dans D:\app\oracle\cfgtoollogs\emca\HERMES\emca_2008_07_10_07_49_35.log. ... 10 juil. 2008 08:36:34 oracle.sysman.emcp.EMDBPostConfig perform Configuration INFO: >>>>>>> URL de Database Control : https://srvwinora:5500/ em <<<<<<<10 juil. 2008 08:36:37 oracle.sysman.emcp.EMDBPostConfig invoke

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 23 -

ATTENTION: ************************ WARNING ************************ Le rfrentiel de gestion a t mis en mode scuris : les donnes Enterprise Manager seront cryptes. La cl de cryptage a t stocke dans le fichier D:\app\oracle\product\11.1.0\db_1\srvwinora_HERMES\ sysman\config\emkey.ora. Vrifiez que ce fichier est bien sauvegard, car les donnes cryptes deviendront inutilisables si vous perdez ce fichier. *********************************************************** Enterprise Manager a t configur EMCA ARRETE 10 juil. 2008 08:36:38 Surlexemplecidessus,lesquestionsposessontengrasetlesrponsesenitalique.Lesquestionsposessontles suivantes : SIDdebasededonnes Identifiantdelinstance. Numrodeportduprocessusdcoute Numroduportsurlequelleprocessusdcoutecommunique(gnralement1521). MotdepassedelutilisateurSYS MotdepasseducompteSYS(indiquerlemotattribuSYSlorsdelacrationdelabasededonnes).Lasaisieest masque. MotdepassedelutilisateurDBSNMP MotdepasseducompteDBSNMP(crparlutilitaire).Lasaisieestmasque. MotdepassedelutilisateurSYSMAN MotdepasseducompteSYSMAN(crparlutilitaire).Lasaisieestmasque. Adresselectroniquepourlesnotifications(facultatif) Adresselectroniquelaquellelesnotificationsserontenvoyes(associaucompteadministrateurSYSMAN).Peuttre laissvideetconfigurultrieurementdansleDatabaseControl. Serveurdemessageriesortant(SMTP)pourlesnotifications(facultatif) Passerelle SMTP utilise pour lenvoi des notifications par courrier lectronique. Peut tre laiss vide et configur ultrieurementdansleDatabaseControl. lafindelinstallation,emcaaffichedeuxmessagesimportants :
q

UnmessagedonnantlURLutiliserpourseconnecterauDatabaseControl. Unmessageinvitantsauvegarderunfichiercontenantunecldechiffrage.

VouspouvezensuitevousconnecterauDatabaseControlenutilisantlURLindiqueparlutilitaire. Sibesoin,vouspouvezutiliserlappelemca -reconfig portspourmodifierlesportsutilissparleDatabaseControl. Lutilitaire emca peut aussi tre utilis dans un mode non interactif, soit en spcifiant les valeurs dans la ligne de commande,soitenutilisantunfichierderponseavecloption-respFile.Pourplusdinformationssurcesdiffrentes possibilits,vouspouvezconsulterladocumentation"OracleDatabaseUtilities".

12.Rsum :crireunscriptdecrationdunebasededonnes
En utilisant les caractristiques de chaque systme dexploitation, il est facile dcrire des scripts plus ou moins paramtrspermettantdautomatiserlacrationdunenouvellebasededonnes.

- 24 -

ENI Editions - All rights reserved - Algeria Educ

VoustrouverezdesexemplesdescriptspourlesplatesformesWindowsetUnix/LinuxsurlessitesdesEditionsENI.

13.Retrouverdesinformationssurlabasededonnes
LesvuesV$DATABASEetDATABASE_PROPERTIESpermettentderetrouverdesinformationssurunebasededonnes. LescolonnesintressantesdelavueV$DATABASEsontlessuivantes : NAME Nomdelabasededonnes. CREATED Date/heuredecrationdelabasededonnes. LOG_MODE Modedefonctionnementvisvisdelarchivage(ARCHIVELOGouNOARCHIVELOG). FORCE_LOGGING YES ouNOselonquelemodeFORCE LOGGINGestactifounon. PLATFORM_NAME Nomdelaplateforme. DB_UNIQUE_NAME Nomuniquedelabasededonnes. LavueDATABASE_PROPERTIEScontientdesinformationssurlespropritsdelabase.Lesprincipalescolonnesdecette vuesontlessuivantes : PROPERTY_NAME Nomdelaproprit. PROPERTY_VALUE Valeurdelaproprit.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 25 -

Crationdelabasededonneslaidedelassistantgraphique
1.Vuedensemble
LassistantConfigurationdebasededonnespermetde :
q

crerunenouvellebasededonnes,partirdemodlespouvantcomporterdesfichiersdedonnesprts lemploi modifierlesoptionsinstallesdansunebasededonnes supprimerunebasededonnes crerdesmodles configurerASM.

Lassistant cre des structures de stockage complmentaires (que nous verrons dans les chapitres Gestion des tablespacesetdesfichiersdedonnesetGestiondesinformationsdannulation). Lassistantpeuttrelancpartirdune fentre du systme dexploitationparlacommandedbca. Sur plateforme Windows, lassistant peut aussi tre lanc par le menu Dmarrer Programmes Oracle nom_oracle_home OutilsdeconfigurationetdemigrationAssistantConfigurationdebasededonnes. Un cran de bienvenue saffiche cliquez sur le bouton Suivant pour afficher lcran proposant les diffrentes oprations :

Lesoptionssontlessuivantes : Crerunebasededonnes Permetdecrerunenouvellebasededonnes(voirciaprs). Configurerlesoptionsdebasededonnes

ENI Editions - All rights reserved - Algeria Educ

- 1-

Permetdemodifierlemodedeconnexionpardfautdelabasededonnes(serveurddiouserveurpartag)et dinstalleroudesupprimerdesoptionssupplmentairesdanslabasededonnes. Supprimerunebasededonnes Permetdesupprimerunebasededonnes. Grerlesmodles Permetdecrer,modifieretsupprimerdesmodles(voirciaprs). ConfigurerAutomaticStorageManagement PermetdeconfigureruneinstancepourutiliserlesystmedestockageASM. SlectionnezloptionsouhaiteetcliquezsurleboutonSuivant. Lassistant peut tre utilis en mode non interactif en utilisant un fichier de rponse. Pour plus dinformations, consultezladocumentation"OracleDatabaseInstallationGuide"devotreplateforme.

2.Crationpartirdunmodleavecfichiersdedonnes
Les modles avec fichiers de donnes permettent de crer une nouvelle base trs rapidement. Par contre, cette dernireinclutungrandnombredoptionspasforcmentutilespourtouteslesapplications. Unmodleavecfichiersdedonnesestenquelquesorteunclonedebasededonnes(une"sauvegarde")quipeut dj contenir les objets dune application, avec ventuellement des donnes (donnes dans des tables de nomenclatureparexemple).Labasededonnescreavecunmodledecegenreestprtelemploi. Choixdumodle

Enstandard,lassistantproposetroismodles,dontdeuxincluentdesfichiersdedonnesprtslemploi avecce genredemodle,loprationdecrationdunenouvellebaseesttrsrapidecarilnestpasncessairedecrerles fichiers,dexcuterlesscripts,etc.LemodleDataWarehousepermetdecrerunebasededonnespluttoriente application dcisionnelle. Le modle Usage gnral ou traitement transactionnel permet de crer une base de donnes pour une activit mixte ou orienteapplication de saisiecest le modle choisi pour la suite. Le modle

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

Base de donnes personnalise ne comporte pas de fichiers de donnes ils devront donc tre spcifis et crs (cration de base complte). Nous verrons lutilisationdun tel modle au point Cration partir dun modle sans fichierdedonnesdecettesection. LeboutonAfficherlesdtails...permetdafficherdesinformationssurlesmodles. Slectionnezlemodle(Usagegnraloutraitementtransactionnelpourlasuite)etcliquezsurleboutonSuivant. Identificationdelanouvellebase

Sur cet cran, saisissez le Nom global de la base de donnes (sous la forme DB_NAME.DB_DOMAIN) et le SID de linstance,puiscliquezsurleboutonSuivant. Optionsdegestion

ENI Editions - All rights reserved - Algeria Educ

- 3-

Sur cet cran, indiquez si vous souhaitez que la base de donnes soit gre ou non par le Database Control, saisissezventuellementlesinformationsdemandespourlanotificationetlasauvegarde(peuttrefaitplustard dans le Database Control) puis cliquez sur le bouton Suivant. Si vous choisissez dadministrer la base avec le Database Control, lassistant effectuera la configuration ncessaire (rfrentiel, rpertoires, service sur plateforme Windows). Motsdepasse

Surcetcran,saisissezlesmotsdepassedesdiffrentscomptespuiscliquezsurleboutonSuivant.Utiliserlemme mot de passe pour les diffrents comptes est pratique dans un environnement de test mais, dconseill en
- 4 ENI Editions - All rights reserved - Algeria Educ

openmirrors.com

production. Optionsdestockage

Surcetcran,indiquezlesystmedestockagechoisipourlabasededonnespuiscliquezsurleboutonSuivant. Danscetouvrage,seullestockagedansunsystmedefichiersesttudi. Emplacementdesfichiersdelabasededonnes

ENI Editions - All rights reserved - Algeria Educ

- 5-

Sur cet cran, indiquez lemplacement des fichiers de la base de donnes puis cliquez sur le bouton Suivant. En cliquant sur le bouton Variables demplacement de fichier... vous pourrez dfinir des variables contenant des cheminsdaccs,quipourronttreutilisesdanslaspcificationdelemplacementdesfichiers. Configurationdelarcupration

Sur cet cran, saisissez lemplacement (paramtre DB_RECOVERY_FILE_DEST) et la taille (paramtre DB_RECOVERY_FILE_DEST_SIZE) de la zone de rcupration rapide, indiquez si vous souhaitez activer ds le dpart larchivagedesfichiersdejournalisation,puiscliquezsurleboutonSuivant.Sivousactivezlarchivagedesfichiersde journalisation, vous pouvez cliquer sur le bouton Activer les paramtres du mode darchivage... pour dfinir la destinationdesarchives,leformatdesnomsdarchives,etc.(touslesparamtresLOG_ ARCHIVE_*). Contenudelabasededonnes

openmirrors.com

- 6-

ENI Editions - All rights reserved - Algeria Educ

Sur cet cran, indiquez si vous souhaitez installer les schmas dexemple fournis par Oracle (premier onglet) et/ou excuter des scripts personnels (deuxime onglet), puis cliquez sur le bouton Suivant. Les schmas dexemple peuvent tre installs ultrieurement (scripts stocks dans le rpertoire %ORACLE_HOME%\demo\schema ou $ORACLE_HOME/demo/ schema). Paramtresdinitialisation

Lesquatreongletsdecetcranpermettentdespcifierlesvaleursdeplusieursparamtresdinitialisation.Lebouton Touslesparamtresdinitialisation...permetdeconsultertouslesparamtresutilissetsibesoindelesmodifier.

ENI Editions - All rights reserved - Algeria Educ

- 7-

Notezquelassistantutilisesystmatiquementunfichierdeparamtresserveur. LongletMmoirepermetderglerlesparamtresrelatifslammoire.SiloptionStandardestslectionne,vous pouvezmodifierlaquantitdemmoireallouelinstance(SGAetPGA).SiloptionUtiliserlagestionautomatique de la mmoire est coche, lassistant active la gestion automatique de la mmoire (paramtre MEMORY_TARGET) sinon,lassistantactivelagestionautomatiquedelammoirepartageetcalculeunerpartition SGA/PGAenfonctiondutypedebasededonnesdumodle(dcisionnelouusagegnral) :lesvaleurscalcules peuvent tre visualises grce au bouton Afficher la rpartition de la mmoire.... Si loption Personnalis est choisie,vouspouvezactiverounonlagestionautomatiquedelammoirepartage(menudroulantGestiondela mmoire).Silagestionautomatiquedelammoirepartageestactive,lassistantvousdemanderajustedesaisir latailledelaSGA(paramtre<$I[]SGA_TARGET>SGA_TARGET)<etlatailledelaPGA(paramtrePGA_AGGREGATE_TARGET). Silagestionautomatiquedelammoirepartagenestpasactive,vouspourrezdimensionnerindividuellementles diffrentesstructuresdelammoire. LongletDimensionnement permet de dfinir le nombre maximum de processus (paramtrePROCESSES).Lataillede bloc (paramtre DB_BLOCK_SIZE) ne peut pas tre modifie car le modle inclut les fichiers de donnes et ceuxci utilisentdjunecertainetailledebloc. LongletJeux de caractrespermetdechoisirlesjeuxdecaractres(clauseCHARACTER SET etNATIONAL CHARACTER SET de lordre SQL CREATE DATABASE), le langage par dfaut (paramtreNLS_LANGUAGE) et le territoire par dfaut (paramtreNLS_ TERRITORY). Longlet Mode de connexion permet de choisir le mode de connexion par dfaut de la base de donnes (serveur ddi ou serveur partag) et ventuellement dindiquer le nombre de processus serveurs partags, lancer au dmarragedelinstance(paramtreSHARED_ SERVERS). Aprsavoirsaisilesinformationsrequisessurlesdiffrentsonglets,vouspouvezcliquersurleboutonSuivant. Paramtresdescurit

Sur cet cran, vous pouvez choisir dutiliser ou pas les nouveaux paramtres de scurit apparus en version 11 (notamment les mots de passe sensibles la casse paramtre SEC_CASE_SENSITIVE_LOGON). A priori, il est recommand dutiliser ces nouveaux mcanismes de scurit (voir le chapitre Gestion des utilisateurs et de leurs droits). Aprsavoirslectionnunedesdeuxoptions,vouspouvezcliquersurleboutonSuivant. Tchesdemaintenanceautomatique

openmirrors.com

- 8-

ENI Editions - All rights reserved - Algeria Educ

Sur cet cran, vous pouvez choisir dactiver ou pas les tches de maintenance automatiques prvues en standard (collectedesstatistiques,conseilsurlestockagedessegments,conseilsurloptimisationdesrequtesSQL).Apriori, ilestrecommanddactivercestchesautomatiquesqui,sontraliseslanuitetleweekend,avecunfaibleimpact surlesperformancesduserveur.Lesparamtresdecestchesdemaintenance,notammentlaplanification,peuvent tremodifisdansleDatabaseControl(cf.sectionLadocumentationOracleduchapitreLesoutilsdadministration). Aprsavoireffectuvotrechoix,vouspouvezcliquersurleboutonSuivant. Stockagedelabasededonnes Lcransuivantpermetdespcifierlesfichiersdelabasededonnes :fichierdecontrle,fichiersdejournalisationet fichiersdedonnes.

ENI Editions - All rights reserved - Algeria Educ

- 9-

Le dossier Fichier de contrle permet de configurer les fichiers de contrle (paramtre CONTROL_FILES). Longlet OptionspermetdedfinirlavaleurdesoptionsMAX*(MAXDATAFILES,etc.)delordreSQLCREATE DATABASE.

LedossierFichiersdedonnespermetdemodifierlemplacementetlenomdesfichiersdedonnes.Parcontre,dans le cas de lutilisationdun modle avec fichiers de donnes (comme ici), il nest pas possible ( ce stade) dajouter dautrestablespacesetfichiersdedonnes,oudemodifierlatailledesfichiersdedonnesexistants cesoprations pourronttrefaitesultrieurementdansleDatabaseControl.

openmirrors.com

- 10 -

ENI Editions - All rights reserved - Algeria Educ

Le dossier Groupes de fichiers de journalisation permet de configurer les fichiers de journalisation : ajouter/supprimerdesgroupes,ajouterdesmembresdanslesgroupes,modifierlatailledesgroupes. Aprsavoirsaisilesinformationsrequises,vouspouvezcliquersurleboutonSuivant. Optionsdecration

Sur cette page, indiquez si vous souhaitez crer la base immdiatement et/ou enregistrer les options dans un nouveaumodleet/ougnrerlesscriptsdecrationdelabasededonnes,puiscliquezsurleboutonTerminer.

ENI Editions - All rights reserved - Algeria Educ

- 11 -

La troisime option est un moyen pratique pour gnrer des scripts de cration de base de donnes que vous pourrezensuitemodifier,paramtreretrutiliser. Confirmation UnrcapitulatifestaffichlorsquevouscliquezsurleboutonTerminer. CliquezsurleboutonOKpourlancerlopration. Durantlacrationdelabasededonnes,unefentreafficheuntatdavancement. Lorsquelacrationdelabasededonnesesttermine,unefentredonnantquelquesinformationssaffiche :

CettefentredonnenotammentlURLutiliserpourseconnecterauDatabaseControl. Lassistant cre automatiquement un nom de service rseau pour la nouvelle instance dans le fichier tnsnames.ora. Par contre, la configuration du processus dcoute nest pas modifie linstance nest pas enregistredemanirestatiqueauprsduprocessusdcoute. Sur plateforme Unix/Linux, lassistant ajoute automatiquement une entre pour la nouvelle instance dans le fichier/etc/oratab parcontre,linstancenestpaspositionneenredmarrageautomatique.

3.Crationpartirdunmodlesansfichierdedonnes
Si vous utilisez un modle sans fichier de donnes, vous pourrez contrler plus finement les options installes et lassistant effectue une cration complte (CREATE DATABASE, catalog, catproc, etc.). La cration de la base de donnesestdoncpluslonguequelorsdelutilisationdunmodleavecfichiersdedonnes. Dans cette section, nous ne prsentons que les crans supplmentaires ou diffrents de ceux prsents prcdemment. Nouvelletape :contenudelabasededonnes

openmirrors.com

- 12 -

ENI Editions - All rights reserved - Algeria Educ

Cet cran permet de slectionner les fonctionnalits installer dans la base de donnes chaque option se matrialise par lexcution dun script supplmentaire qui rallonge la dure de cration de la base. Ces options peuventtreinstallesultrieurement,notammentvialoptionConfigurerlesoptionsdebasededonnespropose surlepremiercrandelassistant. LongletScriptspersonnalisspermetdedsignerdesscriptscomplmentairesexcuterlorsdelacration. Le boutonComposants de base de donnes standard... affiche un cran qui permet de dsactiver quatre options installes par dfaut par Oracle : la machine virtuelle Java, loption Multimedia (anciennement interMedia), la fonctionnalit Oracle XML DB et Application Express (un environnement de dveloppement rapide Web intgr la basededonnes).Oracleconseilledelaissercesquatreoptions. Paramtresdinitialisation

Surledeuximeonglet,latailledeblocpeuttrespcifie(paramtreDB_BLOCK_SIZE). Stockagedelabasededonnes

ENI Editions - All rights reserved - Algeria Educ

- 13 -

Destablespacesetdesfichiersdedonnespeuventtreajouts,supprimsetmodifis(taillenotamment).

4.Grerlesmodles
Lassistant permet de dfinir des modles de base de donnes personnaliss, pouvant ventuellement inclure des fichiersdedonnesprtslemploi. Lepremiercrandelagestiondesmodlespermetdechoisirloprationraliser,crationousuppression.

openmirrors.com

- 14 -

ENI Editions - All rights reserved - Algeria Educ

Plusieursoptionssontproposespourlacration. Loption A partir dun modle existant permet de choisir un modle puis de drouler les diffrentes tapes de la crationpourmodifierlesoptionssouhaites(commepourunecrationdebasededonnes). LoptionA partir dune base de donnes existante (structure seulement)permetdereprendrelastructuredune basededonnesexistante,maissansinclurelesfichiersdelabasededonnes. LoptionApartirdunebasededonnesexistante(structureetdonnes)permetdereprendrelastructuredune basededonnesexistanteaveclesfichiersdedonnes(etdonclesdonnesquisontstockesdedans) :cesten quelque sorte un clone de la base de donnes dorigine qui pourra tre utilis pour crer une nouvelle base de donnesidentique(saufmodificationsdeconfigurationeffectueslorsdelacrationdelabasededonnes :nom, tailledelaSGA,etc.). Les modles sont stocks par dfaut dans le rpertoire %ORACLE_HOME%\assistants\ dbca\templates (plateforme Windows)ou$ORACLE_HOME/assistants/dbca/ templates(plateformeUnix/Linux). Un modle avec fichiers de donnes est compos de trois fichiers : un fichier XML .dbcquicontientladfinitiondu modle,unfichier.ctlquiestunecopiedufichierdecontrledelabasededonnesetunfichier.dfbquicontient les fichiers de donnes. Un modle sans fichiers de donnes comporte un seul fichier XML .dbt qui contient la dfinition du modle. Notez que les fichiers Seed_Database.ctl et Seed_Database.dfb sont communs aux deux modlesavecfichiersdedonnesfournisparOracle. Pour crer une base de donnes partir du modle sur un autre serveur, il suffit de copier les fichiers du modle danslerpertoiretemplatesduserveur,puisdelancerlassistant. Unmodleavecfichiersdedonnescrsuruneplateforme(Windowsparexemple)nepeutpastreutilis sur une autre plateforme (Unix par exemple). Il nen est pas de mme pour les modles sans fichiers de donnes.

ENI Editions - All rights reserved - Algeria Educ

- 15 -

PrsentationdOracle11g
1.Introduction
Cet ouvrage prsente ladministration dOracle Database 11g, qui sera le plus souvent dsigne par le terme "Oracle11g". Oracle Database 11g est un Systme de Gestion de Bases de Donnes Relationnelles (SGBDR) disponible sur un grandnombredeplatesformes(Unix,Linux,Windows).Dupointdevuedeladministration,lesdiffrencesentreles platesformessontminimes. Oracle11gestcommercialisselontroisgammes:
q

EditionEntreprise(EnterpriseEdition) EditionStandard(StandardEdition)etEditionStandardOne(StandardEditionOne) EditionPersonnelle(PersonalEdition),surplateformeWindowsuniquement.

Ldition Standard comporte toutes les fonctionnalits de base permettant de mettre en uvre des applications clientserveur ou Internet/Intranet, pour un groupe de travail ou un dpartement dentreprise. Cette dition ne permetpasdefairefonctionnerlesoptionsavancesdOracle11g(voircidessous)etestlimitedesserveursou desclustersdeserveursavecunecapacitmaximalede4processeurs.Depuisquelquestemps,Oraclecommercialise aussi une dition Standard One, fonctionnellement identique ldition Standard, mais limite des serveurs bi processeurs. Ldition Entreprise est plus particulirement destine aux applications critiques de lentreprise et propose des fonctionnalitssupplmentaires,enstandardouenoption,permettantdamliorerladisponibilitetlescapacitsde monteenchargedesgrossesbasesdedonnes,etdenfaciliterladministrationetloptimisation.titredexemple:
q

Oracle Real Application Clusters (RAC) : permet dutiliser Oracle sur des serveurs en cluster (haute disponibilit,rpartitiondecharge). OraclePartitioning:permetdesubdiviserlestockagedesgrosobjets(tablesetindex)enplusieurslments appelspartitions. Advanced Security Option : offre des fonctionnalits avances sur la gestion de la scurit (cryptage, authentification,etc.). Oracle Tuning Pack : module dadministration permettant de faciliter loptimisation des performances de la basededonnes. OracleOLAPetOracleDataMining:fonctionnalitsdestineslamiseenplacedesystmesdcisionnels. Total Recall (nouveau en version 11g) : solution permettant le stockage sur le long terme de donnes historiques. Real Application Testing (nouveau en version 11g) : permet de capturer lactivit relle dune base de donnesetderejouercetteactivitsurunautresystme. Advanced Compression (nouveau en version 11g) : permet la compression de tout type de donnes (structuresetnonstructures).

OracleRealApplicationClustersestuneoptiondelditionEntreprisemaisestincluse,avecquelquespetites contraintes,danslditionStandard(pasStandardOne) ! LditionPersonnelleestuneversionmonolicenceduproduit,particulirementdestineaudveloppeurelleoffrele mmeniveaudefonctionnalitquelditionEntreprise. Les bases de larchitecture et de ladministration sont les mmes pour les trois ditions. Sauf exception, les fonctionnalits prsentes dans cet ouvrage sont communes aux trois ditions toute fonctionnalit ncessitant
ENI Editions - All rights reserved - Algeria Educ - 1-

openmirrors.com

lditionEntrepriseseraclairementsignale. Les diffrents produits Oracle peuvent tre tlchargs sur le site Oracle Technology Network (http://www.oracle.com/technology/index.html) ils peuvent tre utiliss gratuitement pour le dveloppement ou le prototypageduneapplication(maispaspourlutilisationduneapplication).

2.Principalesnouveautsdelaversion11
Laversion11apporteungrandnombredenouveautsetdamliorationsdansdenombreuxdomaines.Pournen citerquequelquesunes :
q

Installationetmiseniveausimplifies. Gestioncompltementautomatiquedelammoiretotaleutiliseparlinstance. Compressiondestables,mmedansunenvironnementtransactionnel. Gestionsimplifiedesparamtresdinitialisation(SPFILE). Gestionautomatiquedelannulationactivepardfaut. Gestionsimplifiedelespacetemporaire. Nouveaucachepourstockerlersultatdesrequtes. Configurationdelabasededonnes,pardfaut,plusscurise. Nouveaurfrentielpourfaciliterlediagnosticdesincidents(AutomaticDiagnosticRepository). Assistantpourlarcuprationdesdonnes(DataRecoveryAdvisor). AmliorationdelagestiondesfichiersdejournalisationarchivsdansRMAN(RecoveryManager). AmliorationdesperformancesdessauvegardescompressesdansRMAN. Extensiondestechniquesdeflashbacklannulationdunetransactionvalide(FlashbackTransaction). BasededonnestransportableentreLinuxetWindows. Amliorationdeladtectiondesblocscorrompus. Amliorationdelacrationetdelarcuprationdunesauvegardedelongterme. Sauvegardeetrestaurationparalllisedestrsgrosfichiersdedonnes. Indexinvisibles. Tablesenlectureseule. CompressiondelatotalitdufichierdexportgnrparDataPump. ChiffragedufichierdexportgnrparDataPump. Colonnesvirtuelles. OprateursPIVOTetUNPIVOT.
ENI Editions - All rights reserved - Algeria Educ

- 2-

NouvelassistantpourrsoudreunproblmerelatifunordreSQL(SQLRepairAdvisor). AmliorationdelinterfaceutilisateurdOracleEnterpriseManagerDatabaseControl. UtilisationduLogMinertraverslinterfacegraphiquedOracleEnterpriseManagerDatabaseControl. Chiffrageduntablespace.

Bienvidemment,cettelistenestpasexhaustive.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Gestiondesparamtresdinitialisation
1.Modifierlesparamtresdinitialisation
a.Lestypesdeparamtres
Lesparamtrespeuventtreclasssendeuxcatgories :
q

lesparamtresdynamiques lesparamtresstatiques.

Les paramtres dynamiques peuvent tre modifis par un ordre SQL alors que linstance est en cours de fonctionnement.Selonlescas,leparamtreestmodifiableauniveaudelasessionet/oudusystme(pourtoutes lessessions).Auniveausystme,lamodificationpeuttreimmdiate(sappliqueauxsessionsactuelles)oudiffre (sappliqueauxsessionsfuturesuniquement). Les paramtres statiques ne peuvent pas tre modifis dynamiquement alors que linstance est en cours de fonctionnement ilfautmodifierlavaleurduparamtredanslefichierdeparamtresetredmarrerlinstance. LescolonnesISSES_MODIFIABLEetISSYS_MODIFIABLEdelavueV$PARAMETERdonnentdesinformationssurletypede paramtre. La colonne ISSES_MODIFIABLE vaut TRUE ou FALSE selon que le paramtre est modifiable ou non au niveau de la session. La colonne ISSYS_MODIFIABLE vautFALSE si le paramtre nest pas modifiable au niveau du systme,etDEFERREDouIMMEDIATEselonquilestmodifiableendiffrouimmdiatement. LesdiffrentsparamtressontdcritsdansladocumentationOracleDatabaseReference.

b.LesordresSQLALTERSYSTEMetALTERSESSION
Les ordres SQL ALTER SESSION etALTER SYSTEM permettent de modifier dynamiquement la valeur des paramtres dinitialisation,respectivementauniveaudelasessionetdusystme. Syntaxesimplifie : ALTER SESSION SET paramtre = valeur [...] ; ALTER SYSTEM SET paramtre = valeur [...] [ COMMENT = texte ] [ DEFERRED ] [ SCOPE = MEMORY | SPFILE | BOTH ] ; Options : paramtre Nomduparamtre. valeur Valeurattribueauparamtre. COMMENT = texte Commentaireassocilamodificationduparamtre.Insrdanslefichierdeparamtresserveursicedernierest lacibledelamodification(voirlaclauseSCOPE) visibledanslacolonneUPDATE_ COMMENTdelavueV$PARAMETERsila mmoireestlacibledelamodification(voirlaclauseSCOPE). DEFERRED Siprsente,indiquequelamodificationneconcernequelesfuturessessions,pascellesactuellementconnectes. Nadesensquesilammoireestlacibledelamodification(voirlaclauseSCOPE).Peuttreobligatoirepourcertains paramtres(ceuxdontlacolonneISSYS_MODIFIABLEvautDEFERREDdanslavue$PARAMETER).
ENI Editions - All rights reserved - Algeria Educ - 1-

SCOPE Dfinitlacibledelamodification : MEMORY : lammoireseulement(instanceencours). SPFILE : lefichierdeparamtresserveurseulement. BOTH : lesdeux. LaclauseSCOPE = SPFILEnepeuttrespcifiequesilinstanceadmarravecunfichierdeparamtresserveur. La modification sapplique uniquement au fichier de paramtres serveur et nest pas prise en compte immdiatement elleserapriseencompteuniquementauprochaindmarrage.Cestlaseuleoptionpossiblepour lesparamtresstatiques. La clause SCOPE = MEMORY sapplique uniquement la mmoire (instance en cours) et est prise en compte immdiatement. La modification ne survit pas larrt de la base. Cette option nest pas autorise pour les paramtres statiques. Cest la seule option possible si linstance a dmarr avec un fichier de paramtres texte cestlavaleurpardfautdanscecas. LaclauseSCOPE = BOTHsappliquelammoire(instanceencours)etestpriseencompteimmdiatement(aspect MEMORY). La modification est persistante dans le fichier de paramtres serveur (aspect SPFILE).Cetteoptionnest pasautorisepourlesparamtresstatiques(aspectMEMORY).Ellenepeuttrespcifiequesilinstanceadmarr avec un fichier de paramtres serveur (aspect SPFILE). Cette option nest pas autorise pour les paramtres statiques(aspectMEMORY). Exemple : Modificationdunparamtreuniquementdanslefichierdeparamtresserveur : SQL> ALTER SYSTEM SET PROCESSES = 200 2 COMMENT = Modif. OH du 10/07/2008 3 SCOPE = SPFILE; Systme modifi. Modificationdunparamtreenmmoireetdanslefichierdeparamtresserveur : SQL> ALTER SYSTEM SET MEMORY_TARGET = 500M 2 COMMENT = Modif. OH du 10/07/2008 3 SCOPE = BOTH; Systme modifi. Sivousutilisezunfichierdeparamtresserveur(conseill)etquevoussouhaitezmodifierunparamtrestatique, procdezdelamaniresuivante :
q

ModifiezleparamtreaveclordreSQLALTER SYSTEMetlaclauseSCOPE=SPFILE. Redmarrezlinstance(SHUTDOWN IMMEDIATEpuisSTARTUP).

Si linstance est arrte et que vous souhaitez modifier un paramtre statique pour le prochain dmarrage, vous devezdabordfaireunSTARTUP(NOMOUNTsuffit),avantde modifierleparamtreparlordreSQLALTER SYSTEMetde redmarrer.LordreSQLALTER SYSTEMncessitequelinstancesoitdmarre. Pour supprimer un paramtre du fichier de paramtres serveur, vous pouvez utiliser une variante de lordre SQL ALTER SYSTEM. Syntaxesimplifie : ALTER SYSTEM RESET paramtre [ SCOPE = SPFILE ] ; Options : paramtre Nomduparamtre LaclauseSCOPE = SPFILEestoptionnelle cestlaseuleautorise.Aprslasuppression,auprochaindmarrage,la valeur par dfaut du paramtre sera utilise. Les ordres SQL ALTER SYSTEM de modification de paramtres sont enregistrsdanslefichierdalertedelinstance.

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

2.Lesparamtresdansledictionnairededonnes
Plusieursvuesdudictionnairepermettentdevisualiserlesparamtres :
q

V$SYSTEM_PARAMETER : valeuractuelledesparamtresdanslinstance. V$SYSTEM_PARAMETER2 : mmechosequeV$SYSTEM_PARAMETERmaisavecunaffichagesurplusieurslignesdes paramtresquiontunelistedevaleurs(commeleparamtreCONTROL_FILESparexemple). V$PARAMETER et V$PARAMETER2 : mme contenu que les vues V$SYSTEM_ PARAMETER et V$SYSTEM_PARAMETER2 maisaveclesvaleursactuellesdesparamtresdanslasessioncourante cesvuesdonnentdonclavaleur desparamtresquionttventuellementmodifisdanslasession(parunALTER SESSION). V$SPPARAMETER : contenu actuel du fichier de paramtres serveur actif le contenu de la vue est vide si linstancenutilisepasdefichierdeparamtresserveur.

PrincipalescolonnesdesvuesV$SYSTEM_PARAMETER,V$SYSTEM_PARAMETER2,V$PARAMETERetV$PARAMETER2 : NAME Nomduparamtre(enminuscules). VALUE Valeurduparamtre. DISPLAY_VALUE Valeurduparamtredansunformatdaffichageplusconvivial(parexemple252Maulieude264241152). ISDEFAULT TRUEsileparamtreestgalsavaleurpardfaut,FALSEsinon. ISSES_MODIFIABLE TRUEsileparamtreestmodifiableauniveaudelasession,FALSEsinon. ISSYS_MODIFIABLE FALSEsileparamtrenestpasmodifiableauniveaudusystme,etDEFERREDouIMMEDIATEselonquilestmodifiable endiffrouimmdiatement. ISMODIFIED Indiquesileparamtreatmodifidepuisledmarragedelinstance.MODIFIEDsimodifiauniveaudelasession courante,SYSTEM_MODsimodifiauniveaudusystme,FALSEsinonmodifi. ISDEPRECATED TRUEsileparamtreestdprci(risquededisparatredansuneprochaineversion),FALSEsinon. UPDATE_COMMENT Commentaireassocilamodificationlaplusrcente(optionCOMMENTdelordreSQLALTER SYSTEM). PrincipalescolonnesdelavueV$SPPARAMETER : NAME

ENI Editions - All rights reserved - Algeria Educ

- 3-

Nomduparamtre(enminuscules). VALUE Valeurduparamtre. DISPLAY_VALUE Valeurduparamtredansunformatdaffichageplusconvivial(parexemple252Maulieude264241152). ISSPECIFIED TRUEsileparamtreestspcifidanslefichierdeparamtresserveur,FALSEsinon. UPDATE_COMMENT Commentaireassocilamodificationlaplusrcente(optionCOMMENTdelordreSQLALTER SYSTEM). Notez que la vue V$SPARAMETER donne la valeur du paramtre dans le fichier de paramtres serveur la valeur actuellepeuttrediffrentesileparamtreatmodifipourlinstancecouranteuniquement(SCOPE=MEMORY). Exemple : comparaisonentreV$PARAMETERetV$SPPARAMETER SQL> SELECT 2 p.name, 3 p.display_value actuel, 4 sp.display_value spfile 5 FROM 6 v$parameter p, 7 v$spparameter sp 8 WHERE 9 p.name = sp.name 10 AND p.name = processes 11 / NAME ACTUEL SPFILE -------------------- -------------------- --------------processes 100 200 Dans SQL*Plus, les commandes SHOW PARAMETERS [chane] etSHOW SPPARAMETERS [chane] affichent la valeur des paramtres respectivement dans la session courante et dans le fichier de paramtres serveur. Par dfaut, ces commandes affichent la valeur de tous les paramtres. Si une chane est spcifie lors de lappel, ces commandes affichentlavaleurdetouslesparamtresdontlenomcontientcettechane. Exemple SQL> SHOW PARAMETERS memory NAME -------------------------------hi_shared_memory_address memory_max_target memory_target shared_memory_address

TYPE ----------integer big integer big integer integer

VALUE -----------0 500M 400M 0

3.Exporterunfichierdeparamtresserveur
UnfichierdeparamtresserveurpeuttrerexportauformattexteparlordreSQLCREATE PFILE. Syntaxe CREATE PFILE [ = nom_pfile ] FROM SPFILE [ = nom_spfile ]; Lefonctionnement(significationdesparamtres,valeurspardfaut,etc.)estlemmequepourlordreSQLCREATE SPFILE (voir la section Cration dune base de donnes la main du chapitre Cration dune nouvelle base de donnes).LutilisationdecetordreSQLncessitenotammentuneconnexionSYSDBAouSYSOPER.CetordreSQLpeut treutilisinstancearrte !

openmirrors.com

- 4-

ENI Editions - All rights reserved - Algeria Educ

Exemple : SQL> CREATE PFILE = d:\app\oracle\admin\HERMES\pfile\init.ora 2 FROM SPFILE; Fichier cr. Contenudufichier(extrait) *.__db_cache_size=152M ... *.__shared_pool_size=72M ... *.db_name=HERMES ... *.memory_target=524288000#Modif. OH du 10/07/2008 ... *.processes=200#Modif. OH du 10/07/2008 ... Ces lignes en gras correspondent des paramtres dont la valeur avait t modifie prcdemment avec loption COMMENT. Le commentaire est prsent dans le fichier de paramtres serveur (voir aussi le contenu de la colonne UPDATE_COMMENTdanslavueV$SPPARAMETER). Dans loptique de lutilisationdun fichier de paramtres commun plusieurs instances (par exemple, avec loption RAC RealApplicationClusters),lesparamtrespeuventtrespcifissouslaformeinstance.paramtre,lesymbole* dsignant nimporte quelle instance (*.memory_target). Cette syntaxe est utilise lors de lexport dun fichier de paramtresserveur. Lefichierainsignrpeuttreutilisdesfinsdesimpleconsultationoudemodification,pourrecrerlefichierde paramtresserveurpartirdufichierdeparamtrestextemodifi(laidedelordreSQL CREATE SPFILE ... FROM PFILE), ou pour effectuer des dmarrages particuliers. Notez que si linstance a dmarr avec un fichier de paramtresserveur,celuicinepeutpastreremplacalorsquilestencoursdutilisation vousdevezdoncarrter labasededonnes(SHUTDOWN IMMEDIATE)avantderecrerlefichierdeparamtresserveurlaide de lordreSQL CREATE SPFILE(quiluiaussifonctionneinstancearrte !).Depuislaversion11,ilestpossibledecrerunfichierde paramtrestexteouunfichierdeparamtresserveurpartirdesvaleursdesparamtresactuellementenmmoire (instanceencours). Syntaxe CREATE PFILE [ = nom_pfile ] FROM MEMORY; CREATE SPFILE [ = nom_spfile ] FROM MEMORY; LesprincipesdefonctionnementsontlesmmesquepourlesautresvariantesdesyntaxedecesdeuxordresSQL.

4.UtiliserleDatabaseControl
DansleDatabaseControl,cliquezsurlelienServeursurlapagedaccueilpuissurlelienParamtresdinitialisation (cadreConfigurationdebasededonnes)pouraccderlapagedegestiondesparamtresdinitialisation :

ENI Editions - All rights reserved - Algeria Educ

- 5-

SurlongletEncours,vouspouvezconsulteretmodifierlavaleuractuelledesparamtres. Par dfaut, les modifications affectent uniquement linstance en cours (SCOPE=MEMORY). Pour affecter linstance en coursetlefichierdeparamtresserveur(SCOPE=BOTH),cochezlacaseAppliqueraufichierSPFILElesmodifications dans le mode des instances en cours dexcutionavantdecliquersurlebouton Appliquer.Seulslesparamtres dynamiquessontmodifiables. SurlongletFichierSPFILE,vouspouvezconsulteretmodifierlavaleurdesparamtresdanslefichierdeparamtres serveur :

Par dfaut, les modifications affectent uniquement le fichier de paramtres serveur (SCOPE=SPFILE). Pour affecter linstanceencoursetlefichierdeparamtresserveur(SCOPE=BOTH),cochezlacaseAppliquer les modifications en mode SPFILE aux instances en cours dexcution avant de cliquer sur le bouton Appliquer. Si vous cochez cette caseetquevousmodifiezunparamtrestatistique,leDatabaseControlvousproposeraderedmarrer(seulmoyen pourappliquerlamodification"linstanceencours").

openmirrors.com

- 6-

ENI Editions - All rights reserved - Algeria Educ

Le bouton Rinitialiser permet de supprimer le paramtre slectionn du fichier de paramtres serveur (ALTER SYSTEM RESET).

5.Problmescourantsetsolutions
a.Fichierdeparamtresserveurperduouendommag
Silefichierdeparamtresserveurestperduouendommag,vouspouvezauchoix :
q

Silinstanceestdmarre,lerecrerpartirdesvaleursdesparamtresactuellementenmmoire(CREATE SPFILE FROM MEMORY). Siunfichierdeparamtrestextevalideestdisponible,lerecrerpartirdecefichiertexte(CREATE SPFILE FROM PFILE). Lerestaurerpartirdunesauvegarde(voirlechapitreSauvegardeetrcupration).

Endernierressort,vouspouvezcrerunfichierdeparamtrestextelamainpuisrecrerlefichierdeparamtres serveurpartirdecefichiertexte.Pourcrerlefichierdeparamtrestexte,vouspouvezcopiercollerlesvaleurs desparamtresquisontcritesdanslefichierdalertedelinstancechaquedmarrage. Exemple : Starting up ORACLE RDBMS Version: 11.1.0.6.0. Using parameter settings in server-side spfile D:\APP\ORACLE\PRODUCT\11.1.0\DB_1\DATABASE\SPFILEHERMES.ORA System parameters with non-default values: processes = 150 nls_language = "FRENCH" nls_territory = "FRANCE" memory_target = 252M ...

b.Valeurerronequiempcheledmarrage
Une valeur errone dans le fichier de paramtres serveur peut empcher le dmarrage "normal" de la base de donnes. Deuxcaspeuventseproduire :
q

Linstancedmarremaislabasededonnesnepeutpastremonteououverte. Linstancenedmarrepas.

Si linstance dmarre, vous pouvez modifier le paramtre erron, ou le supprimer, avec lordre SQLALTER SYSTEM (SETouRESET). Si linstance ne dmarre pas, vous pouvez crer un fichier de paramtres texte partir du fichier de paramtres serveur(CREATE PFILE FROM SPFILE),corrigerlavaleurduparamtredanslefichierdeparamtretexte,puisrecrer lefichierdeparamtresserveurpartirdufichiertexte(CREATE SPFILE FROM PFILE).Pourmmoire,lesordresSQL CREATE PFILE et CREATE SPFILE fonctionnent mme si linstance nest pas dmarre (il faut juste une connexion SYSDBA).

c.ErreurlorsdunALTERSYSTEM
ORA-02065: option interdite pour ALTER SYSTEM Explication Loptionspcifienestpassupporte.

ENI Editions - All rights reserved - Algeria Educ

- 7-

Cause(s) Lenomduparamtreestincorrect. Action(s) Vrifiezetcorrigezlenomduparamtre. ORA-02095: Le paramtre dinitialisation indiqu ne peut pas tre modifi Explication Leparamtrenepeutpastremodifi. Cause(s) Leparamtreeststatiqueetnepeutpastremodifipourlinstanceencours. Action(s) UtilisezlaclauseSCOPE=SPFILE. ORA-02096: Le paramtre dinitialisation indiqu ne peut pas tre modifi avec cette option Explication Leparamtreestmodifiablemaispasavecloptionutilise. Cause(s) VousnavezpasutilisloptionDEFERREDpourunparamtrequilencessiteoulinverse,vousavezutilisloption DEFERREDpourunparamtrepourlequelcestinterdit. Action(s) ConsultezladocumentationduparamtreetcorrigezlordreSQL. ORA-02097: le paramtre ne peut pas tre modifi, car la valeur indique nest pas valide Explication Leparamtreestmodifiablemaislavaleurestincorrecte. Cause(s) Enrglegnrale,cetteerreursurvientlorsquelavaleurspcifieesttropgrandeoutroppetite. Action(s) ConsultezladocumentationduparamtreetcorrigezlordreSQL.

openmirrors.com

- 8-

ENI Editions - All rights reserved - Algeria Educ

Gestiondynamiquedelammoire
1.Principes
DepuisOracle9i,laSGAetlaPGAsontdynamiques.Ellespeuventtremodifiesdynamiquementalorsquelinstance estencoursdefonctionnement,cestdireaugmentesoudiminues,sansdevoirarrterlabase.Deplus,depuis Oracle10g, la mmoire partage peut tre gre automatiquement, et depuis Oracle11g, la totalit de la mmoire (SGAetPGA)peutltreaussi(voirlasectionLinstanceduchapitreLesbasesdelarchitectureOracle). Plusieurs paramtres relatifs la gestion de la mmoire (PGA ou SGA) sont modifiables dynamiquement par lintermdiairedelordreSQLALTER SYSTEM:
q

MEMORY_TARGET SGA_TARGET DB_CACHE_SIZEetventuellementlesdiffrentsparamtresDB_nK_CACHE_SIZE(nvalant2,4,8,16ou32) SHARED_POOL_SIZE LARGE_POOL_SIZE JAVA_POOL_SIZE STREAMS_POOL_SIZE RESULT_CACHE_MAX_SIZE PGA_AGGREGATE_TARGET

SeulelatailleduRedoLogBuffer(paramtreLOG_BUFFER)nepeutpastremodifiedynamiquement(maissavaleur pardfautestgnralementsatisfaisante). LataillemaximumdelammoiredelinstanceestdfinieparleparamtreMEMORY_MAX _TARGETetlataillemaximum delaSGAparleparamtreSGA_MAX_SIZE.Cesdeuxparamtresnesontpasdynamiquesetsontcalculs,pardfaut, audmarragedelinstance,silsnesontpasdfinisdanslefichierdeparamtres. Noubliezpasquetouteslesvaleursdesparamtresdedimensionnementdelammoiresontarrondiesau granulesuprieur(lexceptionduparamtreRESULT_ CACHE_MAX_SIZEdontlavaleurestdfinieparpasde 32Ko). Lors de la modification dynamique dune structure mmoire, vous pouvez obtenir un message derreur si la valeur demandeesttropgrandeoutroppetite(cf.sectionGestiondynamiquedelammoire).

2.Informationssurlammoire
LacommandeSQL*PlusSHOW SGAoulavueV$SGAdonnedesinformationssynthtiquessurlatailledelaSGA.Dans lesdeuxcas,laquantitSGA_MAX_SIZEestvirtuellementaffectelaSGA. SQL> SELECT name,value,display_value FROM v$parameter 2 WHERE name IN (sga_target,sga_max_size, 3 memory_target,memory_max_target); NAME VALUE DISPLAY_VALUE -------------------- -------------------- ---------------sga_max_size 524288000 500M sga_target 0 0 memory_target 419430400 400M memory_max_target 524288000 500M

ENI Editions - All rights reserved - Algeria Educ

- 1-

SQL> SELECT name,value FROM v$sga 2 UNION ALL 3 SELECT *** TOTAL ***,SUM(value) FROM v$sga; NAME VALUE -------------------- ---------Fixed Size 2145984 Variable Size 356516160 Database Buffers 159383552 Redo Buffers 3891200 *** TOTAL *** 521936896 LavueV$SGAINFOdonnedesinformationsplusdtaillessurlaSGA,etsavrelusageplusintressantequelavue V$SGA. SQL> SELECT name,ROUND(bytes/(1024*1024),1) 2 FROM v$sgainfo; NAME SIZE_MB -------------------------------- ---------Fixed SGA Size 2 Redo Buffers 3.7 Buffer Cache Size 152 Shared Pool Size 72 Large Pool Size 4 Java Pool Size 4 Streams Pool Size 0 Shared IO Pool Size 0 Granule Size 4 Maximum SGA Size 497.8 Startup overhead in Shared Pool 44 Free SGA Memory Available 260 size_mb,resizeable RES --No No Yes Yes Yes Yes Yes Yes No No No

Cette vue donne notamment la taille actuelle relle des diffrentes composantes de la SGA, ainsi que la taille du granule (ligne Granule Size). Toutes les tailles sont en octets. La colonne RESIZEABLE indique si la taille de la structurecorrespondantepeuttremodifiedynamiquement. LaligneFree SGA Memory AvailabledonneladiffrenceentrelataillemaximumdelaSGA(SGA_MAX_SIZE)etlataille actuelledelaSGA,etdonclaquantitdemmoiresupplmentairequipeuttreallouelaSGAencasdebesoin (soit automatiquement, soit manuellement selon la configuration). Il faut noter que, dans le cas o la gestion automatiquedelammoiredelinstanceestactive,cettemmoire"libre"inclutlaquantitdemmoireallouela PGAetnestdoncpasrellementdisponibleentotalitpourlaSGA. LammeinformationestdisponibledanslavueV$SGA_DYNAMIC_FREE_MEMORYquidonnelaquantitdemmoireSGA disponiblepouruneoprationderedimensionnementdynamique(seuleetuniquecolonneCURRENT_SIZE). Desinformationspluscompltessurlesstructuresdynamiquesdelammoire(SGAetPGA)sontdisponiblesdansla vueV$MEMORY_DYNAMIC_COMPONENTS.Lesprincipalescolonnessontlessuivantes : COMPONENT Nomdelastructure. CURRENT_SIZE Tailleactuelledelastructure. MIN_SIZE Tailleminimumdelastructuredepuisledmarragedelinstance. MAX_SIZE Taillemaximumdelastructuredepuisledmarragedelinstance. USER_SPECIFIED_SIZE Valeuraffecteauparamtre. LAST_OPER_TYPE
- 2 ENI Editions - All rights reserved - Algeria Educ

openmirrors.com

Informationsurladernireoprationralisesurlastructure(GROW,SHRINK,etc.). LAST_OPER_MODE Modedeladernireopration(MANUAL,IMMEDIATE,etc.). LAST_OPER_TIME Date/heuredeladernireopration. GRANULE_SIZE Tailledugranule. Touteslestaillessontenoctets. Exemple: SQL> SELECT component,current_size/(1024*1024) current_mb 2 FROM v$memory_dynamic_components; COMPONENT CURRENT_MB ------------------------------ ---------shared pool 72 large pool 4 java pool 4 streams pool 0 SGA Target 240 DEFAULT buffer cache 152 KEEP buffer cache 0 RECYCLE buffer cache 0 DEFAULT 2K buffer cache 0 DEFAULT 4K buffer cache 0 DEFAULT 8K buffer cache 0 DEFAULT 16K buffer cache 0 DEFAULT 32K buffer cache 0 Shared IO Pool 0 PGA Target 160 ASM Buffer Cache 0 Parlintermdiairedecettevue,nouspouvonsvoirlaquantitdemmoireallouelaSGA(ligneSGA Target)etla PGA(lignePGA Target),ainsiquelarpartitiondelaSGAentrecesdiffrentescomposantes.Surcetexemple,nous voyons quil y a 8 Mo (2407244152), soit 2 granules, rservs pour les structures non dynamiques de la SGA (RedoLogBufferetSGAfixe). En complment, vous pouvez interroger la vue V$MEMORY_RESIZE_OPS pour avoir lhistorique des 800 dernires oprationsderedimensionnementdelammoireetV$MEMORY_ CURRENT_RESIZE_OPSpouravoirdesinformationssur unventuelredimensionnementencours. Les vues V$MEMORY_* sont apparues en version 11 et tiennent compte de la PGA. Il existe des vues quivalentes, apparues en version 10, mais limites la SGA : V$SGA_ DYNAMIC_COMPONENTS, V$SGA_RESIZE_OPS et V$SGA_CURRENT_RESIZE_OPS.

3.Modifierlammoiredynamiquement
a.Aveclagestionautomatiquedelammoirepartage
Lorsque la gestion automatique de la mmoire partage est active (paramtre SGA_TARGET diffrent de zro), la tailledelaSGApeuttremodifiedynamiquementenmodifiantlavaleurduparamtreSGA_TARGET. La valeur de ce paramtre peut tre augmente jusqu la valeur du paramtre SGA_MAX_SIZE. Elle peut tre diminue jusqu une valeur minimale dtermine par Oracle en tenant de diffrents lments, dont la taille que vousavezventuellementaffecteauxcomposantesnonprisesenchargeparlagestionautomatique(paramtres DB_nK_CACHE_SIZE par exemple) mais aussi de la taille minimale que vous avez pu dfinir pour les composantes gresautomatiquement.

ENI Editions - All rights reserved - Algeria Educ

- 3-

LorsqueleparamtreSGA_TARGETestmodifi,seuleslescomposantesgresautomatiquementsontmodifies,et la rpartition entre les diffrentes composantes est automatiquement dtermine par Oracle les composantes gresmanuellementrestentinchanges.Encasdediminution,Oraclenedescendrapasendessousdelavaleur minimalequevousavezpudfinirpouruneouplusieurscomposantes. Sivouslesouhaitez,vouspouvezaussimodifierlavaleurdesparamtresgrsmanuellementet/oulavaleurdes paramtresgrsautomatiquement(danscederniercasvousdfinissezalorsunminimumpourleparamtre). Lecomportementestlesuivant :
q

Sivousdiminuezlavaleurdunparamtregrmanuellement,vousaugmentezimplicitementlaquantitde mmoire disponible pour la gestion automatique la mmoire supplmentaire va tre automatiquement rattribueauxparamtresgrsautomatiquement(Oracledcidedelarpartition). Sivousaugmentezlavaleurdunparamtregrmanuellement,vousdiminuezimplicitementlaquantitde mmoire disponible pour la gestion automatique cette quantit de mmoire va tre automatiquement enleveauxparamtresgrsautomatiquement(Oracledcidedelarpartition). Si vous diminuez la valeur dun paramtre gr automatiquement, vous ne diminuez en fait que la valeur minimaledeceparamtre,maispassavaleuractuelle.Encasdebesoin,Oraclepourradiminuerlavaleur actuelleduparamtrepourattribuerdelammoireuneautrestructure.Sivousmettezlavaleur0,vous nimposezplusdeminimum. Sivousaugmentezlavaleurdunparamtregrautomatiquement,vousaugmentezlavaleurminimalede ceparamtre,maispassavaleuractuellesi,celleciestactuellementsuprieureaunouveauminimum.Par contre,silenouveauminimumestsuprieurlavaleuractuelle,lavaleurestimmdiatementaugmente, etOraclediminueencontrepartielesautresparamtresautomatiques(Oracledcidedelarpartition).

Exemple : SQL> -- contenu du script memoire.sql SQL> HOST more memoire.sql COL component FOR A30 SELECT component, current_size/1024/1024 current_size, user_specified_size/1024/1024 user_specified_size FROM v$memory_dynamic_components WHERE current_size 0 UNION ALL SELECT *** LIBRE SGA ***,current_size/1024/1024,null FROM v$sga_dynamic_free_memory / SQL> -- situation de dpart SQL> SELECT name,display_value FROM v$parameter 2 WHERE name IN (sga_target,sga_max_size); NAME DISPLAY_VALUE --------------------- ----------------sga_max_size 300M sga_target 252M SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE ------------------------------ ------------ ------------------shared pool 72 0 large pool 4 0 java pool 4 0 SGA Target 252 252 DEFAULT buffer cache 164 0 PGA Target 64 64 *** LIBRE SGA *** 48 SQL> -- augmentation de SGA_TARGET 300M SQL> ALTER SYSTEM SET SGA_TARGET = 300M; Systme modifi. SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE ------------------------------ ------------ ------------------shared pool 72 0

openmirrors.com

- 4-

ENI Editions - All rights reserved - Algeria Educ

large pool java pool SGA Target DEFAULT buffer cache PGA Target *** LIBRE SGA ***

4 4 300 212 64 0

0 0 300 0 64

SQL> -- affectation dune valeur DB_16K_CACHE_SIZE SQL> -- et dun minimum SHARED_POOL_SIZE SQL> ALTER SYSTEM SET 2 DB_16K_CACHE_SIZE = 32M 3 SHARED_POOL_SIZE = 96M ; Systme modifi. SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE ------------------------------ ------------ ------------------shared pool 96 0 large pool 4 0 java pool 4 0 SGA Target 300 300 DEFAULT buffer cache 156 0 DEFAULT 16K buffer cache 32 32 PGA Target 64 64 *** LIBRE SGA *** 0 SQL> -- diminution de SGA_TARGET SQL> ALTER SYSTEM SET SGA_TARGET = 168M; Systme modifi. SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE ------------------------------ ------------ ------------------shared pool 96 96 large pool 4 0 java pool 4 0 SGA Target 168 168 DEFAULT buffer cache 24 0 DEFAULT 16K buffer cache 32 32 PGA Target 64 64 *** LIBRE SGA *** 132 Surcetexemple,nousvoyonsleschosessuivantes :
q

Lors de laugmentation de SGA_TARGET 300 Mo, la totalit de la mmoire supplmentaire est alloue au BufferCache,etilnyaplusdemmoirelibrepourlaSGA. Lors de laffectationdune valeur au paramtreDB_16K_CACHE_SIZE (gr manuellement) et dune valeur SHARED_POOL_SIZE(minimumpuisqueleparamtreestautomatique),uncachepourlesblocsde16Koest allou la valeur demande et la Shared Pool est augmente, car la valeur actuelle tait infrieure au nouveauminimum.LeBufferCacheestdiminuenconsquence(plusdemmoirelibrepourlaSGA). Lors de la diminution de SGA_TARGET 168 Mo, le Buffer Cache est diminu. Les autres paramtres ne peuvent pas tre diminus : DB_16K_CACHE_SIZE est gr manuellement et les autres sont leur valeur minimale.

b.Aveclagestionautomatiquedelammoire
Lorsque la gestion automatique de la mmoire est active (paramtre MEMORY_TARGET), la taille de la mmoire alloue linstance (SGA et PGA) peut tre modifie dynamiquement en modifiant la valeur du paramtre MEMORY_TARGET. Lavaleurdeceparamtrepeuttreaugmentejusqulavaleurduparamtre MEMORY_ MAX_TARGET.Ilpeuttre diminujusquunevaleurminimaledtermineparOracleentenantcomptedediffrentslments(commepour lagestionautomatiquedelammoirepartage). LorsqueleparamtreMEMORY_TARGETestmodifi,Oracledtermineunenouvellerpartitiondelammoireentrela PGA (PGA_AGGREGATE_TARGET) et la SGA (SGA_TARGET), puis une nouvelle rpartition de la SGA entre ces diffrentes

ENI Editions - All rights reserved - Algeria Educ

- 5-

composantes,selonlesmmesrglesquepourlagestionautomatiquedelammoirepartage. DupointdevuedelaSGA,lagestionautomatiquedelammoirenestquuneextensiondelagestionautomatique de la mmoire partage. Toutes les rgles exposes prcdemment sur la modification des paramtres grs manuellementetdesparamtresgrsautomatiquementdemeurentvalable(voirletitreprcdent). En complment, si vous le souhaitez, vous pouvez aussi modifier la valeur des paramtres SGA_TARGET et PGA_AGGREGATE_TARGET. Dans ce cas, SGA_TARGET et PGA_ AGGREGATE_TARGET imposent simplement un minimum respectivementpourlaSGAetpourlaPGA. Lecomportementestlesuivant :
q

Sivousaugmentezlavaleurde SGA_TARGETou PGA_AGGREGATE_TARGET,vousaugmentezlavaleurminimale de ces paramtres, mais pas leur valeur actuelle si, celleci est actuellement suprieure au nouveau minimum.Parcontre,silenouveauminimumestsuprieurlavaleuractuelle,lavaleurestimmdiatement augmente, et Oracle diminue en contrepartie les autres paramtres automatiques (Oracle dcide de la rpartition). SivousdiminuezlavaleurdeSGA_TARGETouPGA_AGGREGATE_TARGET,vousnediminuezenfaitquelavaleur minimale de ces paramtres, mais pas leur valeur actuelle. En cas de besoin, Oracle pourra diminuer la valeuractuelleduparamtrepourattribuerdelammoireuneautrestructure.Sivousmettezlavaleur 0,vousnimposezplusdeminimum.

Parailleurs,noubliezpasqueleparamtrestatiqueSGA_MAX_SIZE,silestdfini,imposeunetaillemaximumpourla SGA. Exemple : SQL> -- contenu du script memoire.sql SQL> HOST more memoire.sql COL component FOR A30 SELECT component, current_size/1024/1024 current_size, user_specified_size/1024/1024 user_specified_size FROM v$memory_dynamic_components WHERE current_size 0 UNION ALL SELECT *** LIBRE SGA ***,current_size/1024/1024,null FROM v$sga_dynamic_free_memory / SQL> -- situation de dpart SQL> SELECT name,display_value FROM v$parameter 2 WHERE name IN (memory_target,memory_max_target); NAME DISPLAY_VALUE --------------------- ----------------memory_target 400M memory_max_target 500M SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE ------------------------------ ------------ ------------------shared pool 72 0 large pool 4 0 java pool 4 0 SGA Target 240 0 DEFAULT buffer cache 152 0 PGA Target 160 0 *** LIBRE SGA *** 260 SQL> -- augmentation de MEMORY_TARGET 500M SQL> ALTER SYSTEM SET MEMORY_TARGET = 500M; Systme modifi. SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE ------------------------------ ------------ ------------------shared pool 72 0 large pool 4 0 java pool 4 0 SGA Target 240 0 DEFAULT buffer cache 152 0
- 6 ENI Editions - All rights reserved - Algeria Educ

openmirrors.com

PGA Target 260 0 *** LIBRE SGA *** 260 SQL> -- affectation dune valeur DB_16K_CACHE_SIZE SQL> ALTER SYSTEM SET DB_16K_CACHE_SIZE = 32M; Systme modifi. SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE ------------------------------ ------------ ------------------shared pool 72 0 large pool 4 0 java pool 4 0 SGA Target 240 0 DEFAULT buffer cache 120 0 DEFAULT 16K buffer cache 32 32 PGA Target 260 0 *** LIBRE SGA *** 260 SQL> -- affectation dune valeur SGA_TARGET SQL> ALTER SYSTEM SET SGA_TARGET = 300M; Systme modifi. SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE ------------------------------ ------------ ------------------shared pool 72 0 large pool 4 0 java pool 4 0 SGA Target 300 300 DEFAULT buffer cache 180 0 DEFAULT 16K buffer cache 32 32 PGA Target 200 0 *** LIBRE SGA *** 200 SQL> -- diminution de MEMORY_TARGET SQL> ALTER SYSTEM SET MEMORY_TARGET = 352M; Systme modifi. SQL> @memoire COMPONENT CURRENT_SIZE USER_SPECIFIED_SIZE ------------------------------ ------------ ------------------shared pool 72 0 large pool 4 0 java pool 4 0 SGA Target 300 300 DEFAULT buffer cache 180 0 DEFAULT 16K buffer cache 32 32 PGA Target 52 0 *** LIBRE SGA *** 200 Surcetexemple,nousvoyonsleschosessuivantes :
q

LorsdelaugmentationdeMEMORY_TARGET500Mo,latotalitdelammoiresupplmentaireestalloue laPGA. LorsdelaffectationdunevaleurauparamtreDB_16K_CACHE_SIZE(grmanuellement),uncachepourles blocsde16KoestalloulavaleurdemandeetleBufferCacheestdiminuenconsquence(commepour lagestionautomatiquedelammoirepartage). Lors de laffectation dune valeur (minimum) SGA_TARGET, la SGA est augmente immdiatement car la valeur actuelle tait infrieure au nouveau minimum la quantit de mmoire supplmentaire est intgralementalloueauBufferCache. Lorsdeladiminutionde MEMORY_TARGET352Mo,laPGAestdiminue.LaSGAnepeutpastrediminue carelleestlavaleurminimaleimposeparSGA_TARGET.

c.Sanslagestionautomatique

ENI Editions - All rights reserved - Algeria Educ

- 7-

Sivousnutilisezpaslagestionautomatiquedelammoirenilagestionautomatiquedelammoirepartage,les modifications apportes aux paramtres sont immdiatement prises en compte, toujours dans la limite de SGA_MAX_SIZEetMEMORY_MAX_TARGET(silestdfini).

d.Conclusionetconseil
Oracle recommande dutiliser la gestion automatique de la mmoire qui simplifie beaucoup le travail de ladministrateur : il suffit juste de dfinir le paramtre MEMORY_TARGET (et ventuellement le paramtre MEMORY_MAX_TARGET). Sivousutilisezlagestionautomatiquedelammoire,ousimplementdelammoirepartage,ilfaut,parcontre, viter dimposer trop de contraintes Oracle en donnant des valeurs minimums aux paramtres grs automatiquement. En interne, les paramtres __* (__db_cache_size par exemple) sont utiliss par les fonctionnalits de gestion automatique. Ils donnent la quantit de mmoire actuellement alloue chaque structure gre automatiquement le paramtre normal (non prfix par les deux caractres souligns) donne la valeur minimale du paramtre, telle que vous avez pu la dfinir (0 sinon). La valeur de ces paramtres internes est enregistredanslefichierdeparamtresserveur(silestutilis) encasderedmarrage,laconfigurationmmoire, quitaitutiliseaumomentdelarrt(apriorioptimale),serartablie.

4.UtiliserleDatabaseControl
a.Accslapagedegestiondelammoire
DansleDatabaseControl,cliquezsurlelienServeursurlapagedaccueilpuissurlelienFonctionsdeconseilsur la mmoire (cadre Configuration de base de donnes) pour accder la page de gestion des paramtres de mmoire. Lecontenudelapagedpenddumodedegestiondelammoire. PouraffecterunevaleurminimumunparamtredelaSGAgrautomatiquement,oupouraffecterune valeur un paramtre de la SGA gr manuellement, vous devez passer par la page Paramtres dinitialisation(cf.lasectionGestiondesparamtresdinitialisation).

b.Aveclagestionautomatiquedelammoire
Lorsquelagestionautomatiquedelammoireestactive,leDatabaseControlmontrelhistoriquedelarpartition delammoireentrelaSGAetlaPGA.

openmirrors.com

- 8-

ENI Editions - All rights reserved - Algeria Educ

Dansladeuximepartiedelcran,longletSGAaffichelarpartitiondelaSGAentrelesdiffrentescomposantes (aveclhistoriquedelarpartition)etlongletPGA,quelquesinformationssurlaPGA:

ENI Editions - All rights reserved - Algeria Educ

- 9-

Danslapremirepartiedelafentre,lazoneTailletotaledemmoirepermetdemodifierlatailledelammoire (paramtre MEMORY_TARGET)etlazone Taille maximale de mmoire, la taille maximum de la mmoire (paramtre MEMORY_MAX_TARGET).

VouspouvezcocherlacaseAppliquerlesmodificationsuniquementaufichierSPFILE(toutenbasdelcran)si voussouhaitezquelesmodificationsnaffectentquelefichierdeparamtresserveur(SCOPE=SPFILE).Pardfaut,les modifications affectent linstance actuelle et le fichier de paramtres serveur (SCOPE=BOTH) le Database Control vous proposera en consquence de redmarrer si vous modifiez la taille maximum de la mmoire (paramtre statique). Cliquez sur le bouton Dsactiver si vous souhaitez dsactiver la gestion automatique de la mmoire. Danslanouvelleconfiguration,lagestionautomatiquedelammoirepartageestactive.

c.Aveclagestionautomatiquedelammoirepartage
Lorsque la gestion automatique de la mmoire partage est active, le Database Control permet de rgler sparmentlatailledelaSGAetlatailledelaPGA.

openmirrors.com

- 10 -

ENI Editions - All rights reserved - Algeria Educ

Dans longlet SGA, le Database Control affiche la rpartition de la SGA entre les diffrentes composantes (avec lhistorique de la rpartition). La zoneTaille totale de mmoire SGA (Mo) permet de modifier la taille de la SGA (paramtreSGA_TARGET)etlazoneTaillemaximaledemmoireSGA(MB),lataillemaximumdelaSGA(paramtre SGA_MAX_SIZE).

DanslongletPGA,leDatabaseControlaffichequelquesinformationssurlaPGA.LazoneCibledagrgationdela mmoirePGApermetdemodifierlatailledelaPGA(paramtrePGA_AGGREGATE_TARGET).

ENI Editions - All rights reserved - Algeria Educ

- 11 -

LacaseAppliquerlesmodificationsuniquementaufichierSPFILEalemmerlequaveclagestionautomatique delammoire.LeDatabaseControlvousproposeranotammentderedmarrersivousmodifiezlataillemaximum delaSGA(paramtrestatique). Enhautdelcran,vouspouvezcliquersurleboutonActiverpouractiverlagestionautomatiquedelammoire.Le DatabaseControlvousinvitealorsrglerlatailledelammoire(paramtreMEMORY_TARGET)etlataillemaximum delammoire(paramtreMEMORY_MAX_TARGET) :

linverse,danslongletSGA,vouspouvezcliquersurleboutonDsactiverpourdsactiverlagestionautomatique delammoirepartage.LeDatabaseControlvousinvitealorsrglerlatailledesdiffrentscomposantsdelaSGA quisontgrsautomatiquement :

d.Sanslagestionautomatique
Lorsquelagestionautomatiquedelammoirepartageestdsactive,longletSGAseprsenteainsi :

openmirrors.com

- 12 -

ENI Editions - All rights reserved - Algeria Educ

LaDatabaseControlaffichelatailledesstructuresdelaSGAquisontgresautomatiquement,ainsiquelataille maximumdelaSGA,etpermetdelesmodifier(voircidessuspourlefonctionnement). Cliquez sur le bouton Activer de longlet SGA si vous souhaitez activer la gestion automatique de la mmoire partage.LeDatabaseControlvousinvitealorsrglerlatailledelaSGA(SGA_TARGET) :

Comme dans le point prcdent, le bouton Activer situ tout en haut de lcran permet dactiver la gestion automatiquedelammoire.

5.Problmescourantsetsolutions
ORA-00845: MEMORY_TARGET non pris en charge sur ce systme Explication Lagestionautomatiquedelammoirepartagenepeutpastreactive. Cause(s) Laplateformenestpassupporteou,surplateformeLinux,/dev/shmnestpasdimensionncorrectement. Action(s) Si vous tes sur une plateforme Linux, redimensionnez /dev/shm ou diminuez la valeur de MEMORY_TARGET (voir la
ENI Editions - All rights reserved - Algeria Educ - 13 -

documentation"AdministratorsReferenceforLinuxandUNIXBasedOperatingSystems"). Lorsque vous modifiez la valeur dun paramtre de mmoire avec une valeur errone (trop grande ou trop petite) vous obtenez une erreur ORA-02097 (cf. section Gestion des paramtres dans ce chapitre), suivie dune deuxime erreurquiprciselanatureduproblme. Lesprincipauxcassontlessuivants :
s

MEMORY_TARGETtropgrand

ORA-00837: la valeur de MEMORY_TARGET est suprieure celle de MEMORY_MAX_TARGET


s

MEMORY_TARGETtroppetit

ORA-00838: la valeur de MEMORY_TARGET est trop petite ; elle doit tre de nnn Mo au minimum ORA-00846: impossible de rduire MEMORY_TARGET a la valeur indique
s

SGA_TARGETtropgrand

ORA-00823: la valeur de sga_target est suprieure a celle de sga_max_size


s

SGA_TARGETtroppetit

ORA-00827: impossible de rduire sga_target a la valeur indique


s

PGA_AGGREGATE_TARGETtropgrandparrapportMEMORY_TARGET

ORA-00840: la valeur de PGA_AGGREGATE_TARGET ne peut pas tre change pour la valeur indique
s

PGA_AGGREGATE_TARGEThorslimites

ORA-00093: pga_aggregate_target doit tre compris entre 10M et 4096G-1


s

DB_CACHE_SIZE(ouDB_nk_CACHE_SIZE)tropgrandparrapportlammoiredisponiblepourlaSGA

ORA-00384: mmoire insuffisante pour faire voluer le cache


s

*_POOL_SIZEtropgrandparrapportlammoiredisponiblepourlaSGA

ORA-04033: mmoire insuffisante pour augmenter la taille du pool


s

*_POOL_SIZEtroppetit

ORA-04034: impossible de rduire le pool a la taille indique.

openmirrors.com

- 14 -

ENI Editions - All rights reserved - Algeria Educ

Gestiondesfichiersdecontrle
1.Rappelsurlefichierdecontrle
Lefichierdecontrlecontientdesinformationsdecontrlesurlabasededonnes :
q

lenomdelabasededonnes ladate/heuredecrationdelabasededonnes lemplacementdesautresfichiersdelabasededonnes(fichiersdedonnesetfichiersdejournalisation) lenumrodesquenceactueldesfichiersdejournalisation desinformationssurlespointsdereprise(checkpoint),etc.

Le fichier de contrle est automatiquement mis jour par Oracle lors de chaque modification de la structure de la basededonnes(ajoutoudplacementdunfichierparexemple).Latailledufichierdecontrleestdterminepar Oracle. Lorsquuneinstanceestlancepourouvrirunebasededonnes,lefichierdecontrleestlepremierfichierouvert.Il permetensuite,linstancedelocaliseretdouvrirlesautresfichiersdelabasededonnes.Silefichierdecontrle ne peut pas tre trouv (ou est endommag), la base de donnes ne peut pas tre monte, mme si les autres fichiers de la base de donnes sont prsents (linstance reste dans le statut NOMOUNT). Diffrents scnarios de restauration sont alors disponibles en fonction de la situation (prsence ou non dune sauvegarde du fichier de contrle,notamment)pourredmarrerlabasededonnes,maiscesontdesscnariosrelativementcomplexes. Pour des raisons de scurit, il est donc conseill de multiplexer le fichier de contrle, cestdire de disposer de plusieurs copies gres en miroir (multiplexes) par Oracle. Techniquement, il est possible de crer une base de donnesavecunseulfichierdecontrlemaisilestvivementconseilldutiliserplusieurscopies,mmesileserveur necomprendquundisque(celametlabridunesuppressionaccidentelle). Plusieursfichiersdecontrlepeuventtrespcifislorsdelacrationdelabase(chapitre Crationdunenouvelle basededonnes)ouultrieurement(voirciaprs).

2.Trouverdesinformationssurlesfichiersdecontrle
LavueV$CONTROLFILEdonnelalistedesfichiersdecontrle : SQL> SELECT * FROM v$controlfile; STATUS NAME ------- ------------------------------F:\ORADATA\HERMES\CONTROL01.CTL G:\ORADATA\HERMES\CONTROL02.CTL

IS_ BLOCK_SIZE FILE_SIZE_BLKS --- ---------- -------------NO 16384 618 NO 16384 618

LacolonneSTATUSestnormalementtoujoursvide.LacolonneIS_RECOVERY_ DEST_FILEindiquesilefichierdecontrle est stock dans la zone de rcupration rapide (telle que dfinie par le paramtre DB_RECOVERY_FILE_DEST). Le produitFILE_SIZE_ BLKS x BLOCK_SIZEdonnelatailledesfichiersdecontrlesenoctets. VouspouvezaussiinterrogerlavueV$CONTROLFILE_RECORD_SECTIONpourobtenirdesinformationssurlecontenudes diffrentessectionsdufichierdecontrle : SQL> SELECT type,records_total,records_used 2 FROM v$controlfile_record_section; TYPE RECORDS_TOTAL RECORDS_USED ---------------------------- ------------- -----------DATABASE 1 1 CKPT PROGRESS 4 0 REDO THREAD 1 1 REDO LOG 16 3 DATAFILE 128 6 FILENAME 2370 13 TABLESPACE 128 7
ENI Editions - All rights reserved - Algeria Educ - 1-

... Cette vue indique notamment le nombre maximum denregistrements possibles dans les diffrentes sections et le nombredenregistrementsactuellementutiliss.Dansnotreexemple,ilya6enregistrementsdefichiersdedonnes utiliss,surles128possibles.CertaineslimitesproviennentdesvaleursattribuesauxoptionsMAX*delordreSQL CREATE DATABASE(MAXDATAFILESparexemple). CertainescolonnesdelavueV$DATABASEdonnentaussidesinformationssurlesfichiersdecontrle : CONTROLFILE_CREATED Datedecrationdufichierdecontrle. CONTROLFILE_SEQUENCE# Numrodesquencedufichierdecontrle,incrmentlorsdesmisesjourdufichierdecontrle. CONTROLFILE_CHANGE# DerniernumroSCN(SystemChangeNumber)enregistrdanslefichierdecontrle. CONTROLFILE_TIME Date/heurededernierenregistrementdanslefichierdecontrle. CHECKPOINT_CHANGE# NumroSCNdudernierpointdereprise. CURRENT_SCN NumroSCNcourant.

3.Multiplexerlefichierdecontrle
Commeindiquprcdemment,ilestconseilldefairefonctionnerlabasededonnesavecaumoins,deuxfichiers decontrle,sipossiblesurdesdisquesdiffrents(danslidal,3ou4surdesdisquesdiffrents). Le multiplexage des fichiers de contrle peut tre mis en uvre lors de la cration de la base de donnes, en spcifiant la liste des fichiers de contrle souhaits dans le paramtreCONTROL_FILES, avant dexcuter lordreSQL CREATE DATABASE(voirlechapitreCrationdunenouvellebasededonnes). Lemultiplexagepeutaussitremisen uvre(ourenforc)ultrieurement.Pourcela,ilfautarrterproprementla basededonnes,dupliquerunfichierdecontrleexistantverslenouvelemplacement,mentionnerlenouveaufichier decontrledansleparamtreCONTROL_FILES(paramtrestatique)etredmarrerlabasededonnes.Sivousutilisez unfichierdeparamtresserveur(conseill),vousdevezmodifierleparamtreCONTROL_ FILESavantdarrterlabase dedonnes. Lemodeopratoireestalorslesuivant :
q

spcifierlemplacementdunouveaufichierdecontrledanslefichierdeparamtresserveur : SQL> ALTER SYSTEM SET CONTROL_FILES = f:\oradata\hermes\control01.ctl, 2 g:\oradata\hermes\control02.ctl, 3 e:\oradata\hermes\control03.ctl 4 SCOPE = SPFILE;

arrterlabaseproprement(pasABORT!) : SQL> SHUTDOWN IMMEDIATE

dupliquerunfichierdecontrleexistantverslenouvelemplacement : SQL> HOST copy f:\oradata\hermes\control01.ctl > e:\oradata\hermes\control03.ctl

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

redmarrerlabasededonnes : SQL> STARTUP

Vrifier : SQL> SELECT name FROM v$controlfile; NAME ----------------------------------------------F:\ORADATA\HERMES\CONTROL01.CTL G:\ORADATA\HERMES\CONTROL02.CTL E:\ORADATA\HERMES\CONTROL03.CTL

Une technique similaire peut tre utilise pour dplacer un fichier de contrle dun emplacement un autre ou supprimerunfichierdecontrle. La duplication du fichier de contrle doit se faire sur un fichier de contrle cohrent. Il ne faut donc pas dupliquer le fichier de contrle alors que la base de donnes est ouverte ou aprs un SHUTDOWN ABORT (le fichierdecontrlenapastfermproprement).Silacopiedufichierdecontrlenestpasjugecohrentepar Oracle,uneerreurseproduiraauredmarrage. Encomplment,nousverronsauchapitreSauvegardeetrcuprationquandetcommentsauvegarderlefichierde contrle,etcommentrcuprerunebasededonnesencasdepertedunfichierdecontrle.

4.UtiliserleDatabaseControl
Dans le Database Control>, cliquez sur le lien Serveur sur la page daccueil puis, sur le lien Fichiers de contrle (cadreStockage)pouraccderlapagedinformationsurlesfichiersdecontrle :

Les trois onglets donnent des informations sur les fichiers de contrle, en provenance des vues V$CONTROLFILE, V$DATABASEetV$CONTROLFILE_RECORD_SECTION.LeDatabaseControlneproposepasdemoyensimplepourmultiplexer lesfichiersdecontrle.

ENI Editions - All rights reserved - Algeria Educ

- 3-

Gestiondesfichiersdejournalisation
1.Rappelsurlesfichiersdejournalisation
Lesfichiersdejournalisation(redolog)enregistrenttouteslesmodificationsapporteslabasededonnes.Ilssont organiss en groupes crits de manire circulaire les informations sauvegardes sont donc, par dfaut, priodiquementcrases. Les fichiers de journalisation sont utiliss pour la restauration de linstance aprs un arrt anormal et pour la restauration de mdia si un fichier de donnes est perdu ou endommag dans ce cas, ils sont appliqus une sauvegardedefichierdedonnes,pourrejouertouteslesmodificationssurvenuesentrelasauvegardeetlincident ayantendommaglefichier. Les fichiers de journalisation sont organiss en groupes (au minimum 2) composs dun ou de plusieurs membres (minimum 1) ils sont crs lors de la dfinition de la base (chapitre Cration dune nouvelle base de donnes). lintrieur dun groupe, les membres sont crits simultanment en miroir par linstance Oracle (processus LGWR) et contiennent la mme information. Tous les membres dun groupe ont la mme taille dfinie lors de la cration du groupe un fichier de journalisation contient donc une quantit maximale dinformations. De mme, le nombre de groupeestdtermin ilnaugmentepasdynamiquement. Lorsquungroupeestplein(cestdirelorsquelesmembressontpleins),linstanceOraclepasseaugroupesuivant et ainsi de suite jusquau dernier lorsque le dernier groupe est plein, linstance Oracle repasse au premier. Le passagedungroupeunautreestappelbasculement(switch).

Lorsque linstance Oracle revient dans le premier groupe, elle crase les informations qui y sont stockes ces informationsnesontdoncplusdisponiblesencasdebesoin,parexemplepourunerestaurationdemdia.Afinde garantir cette possibilit deffectuer des restaurations compltes, il faut activer le mcanisme darchivage (chapitre Sauvegarde et rcupration) qui permet darchiver les fichiers de journalisation (en loccurrence un membre du groupe)lorsquilssontpleins,avantquelinstancenelesrutilise. Siungroupepossdeplusieursmembresetquundesmembressoitindisponible,labasededonnespeutcontinuer fonctionner. Les fichiers de journalisation sont trs importants pour la scurit de la base de donnes. Il est donc conseill dutiliserauminimumdeuxoutroismembrespargroupe(multiplexage),sipossiblesurdesdisquesdiffrents.

2.Trouverdesinformationssurlesfichiersdejournalisation
Plusieursvuesdudictionnairepermettentdobtenirdesinformationssurlesfichiersdejournalisation :
q

V$LOG : informationssurlesgroupes V$LOGFILE : informationssurlesmembres V$LOG_HISTORY : informationssurlhistoriquedesfichiersdejournalisation.

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs. V$LOG GROUP# Numrodugroupe.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

SEQUENCE# Numrodesquencedugroupe(sincrmentechaquebasculement). BYTES Tailleenoctets. MEMBERS Nombredemembres. ARCHIVED Groupearchiv(YESouNO). STATUS Statutdugroupe :
q

UNUSED : groupejamaiscrit(sansdoutenouveau) CURRENT : groupecourant(groupeencoursdcriture) ACTIVE : groupeencorencessaireencasderestaurationdinstance(pointdereprisenontermin) INACTIVE : groupeinutilepourunerestaurationdinstance(pointdereprisetermin).

FIRST_CHANGE# PluspetitnumroSCNcritdanslegroupe. FIRST_TIME DateetheuredupluspetitnumroSCN. V$LOGFILE GROUP# Numrodugroupe. STATUS Statutdumembre :


q

INVALID : fichierinaccessible STALE : fichierincomplet(statutdesnouveauxmembres) DELETED : fichiersupprim,plusutilis vide : fichierutilis.

MEMBER Nomcompletdufichiermembre IS_RECOVERY_DEST_FILE Indique(YESouNO)silemembreeststockdanslazonedercuprationrapide(tellequedfinieparleparamtre


- 2 ENI Editions - All rights reserved - Algeria Educ

DB_RECOVERY_ FILE_DEST). V$LOG_HISTORY SEQUENCE# Numrodesquencedugroupe. FIRST_CHANGE# PluspetitnumroSCNcritdanslegroupe. NEXT_CHANGE# PlusgrandnumroSCNcritdanslegroupe. FIRST_TIME DateetheuredupluspetitnumroSCNcritdanslegroupe. Exemple : SQL> SELECT group#,sequence#,bytes/(1024*1024) size_mo,members,status 2 FROM v$log; GROUP# SEQUENCE# SIZE_MO MEMBERS STATUS ------ ---------- ---------- ---------- ---------------1 16 50 2 INACTIVE 2 17 50 2 CURRENT 3 18 50 2 INACTIVE SQL> SELECT group#,status,member,is_recovery_dest_file 2 FROM v$logfile 3 ORDER BY group#; GROUP# STATUS MEMBER IS_RECOVERY_DEST_FILE ------ ------- ------------------------------ --------------------1 F:\ORADATA\HERMES\REDO01A.LOG NO 1 G:\ORADATA\HERMES\REDO01B.LOG NO 2 F:\ORADATA\HERMES\REDO02A.LOG NO 2 G:\ORADATA\HERMES\REDO02B.LOG NO 3 F:\ORADATA\HERMES\REDO03A.LOG NO 3 G:\ORADATA\HERMES\REDO03B.LOG NO SQL> SELECT sequence#,TO_CHAR(first_time,DD/MM HH24:MI) first_time 2 FROM v$log_history; SEQUENCE# FIRST_TIME --------- -----------1 16/07 14:53 2 16/07 14:55 3 16/07 14:56 15 16/07 15:17 16 16/07 15:19 17 16/07 15:25

3.Dimensionnerlesfichiersdejournalisation
Dterminerlenombredegroupesetlatailledesgroupesestunsujetcomplexepourlequelilnexistepasdeformule decalcul.Parcontre,ilestpossible,aposteriori,dauditerlefonctionnementdesfichiersdejournalisationafindevoir silenombredegroupesetlatailledesgroupessontsatisfaisants encasdeproblme,ilestrelativementsimple dapporterdescorrectionsenajoutantunnouveaugroupeouenaugmentantlatailledesgroupes(cetteactionest unpeupluscomplexe). Lobjectifestsimple :
q

Utiliser des fichiers de journalisation de taille suffisante pour viter des basculements trop frquents, pnalisantspourlesperformances.LarecommandationdOracle est davoirunbasculementtoutesles20

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

30minutesenviron.
q

Utiliserunnombresuffisantdegroupespourpermettreauxpointsderepriseetlarchivagedeseterminer avantquelinstancenereviennesurunfichierdejournalisation.Silepointderepriseoularchivagenesont pastermins,leprocessusLGWRattend,cequiesttrsmauvaispourlesperformances.

Avoirdesbasculementspeufrquents(plusde4heuresparexemple),etdoncdespointsdereprisepeufrquents, combinsuneforteactivitdemisejour(possibleavecdesfichiersdejournalisationvolumineux),estbnfique pourlesperformancesmaiscelarisque,encasdarrtanormaldelinstance,daugmenterladuredelarcupration delinstanceetdonc,ladureduredmarrage.LarecommandationdOracleestdetrouverunboncompromisentre laperformanceenfonctionnementnormaletlaperformanceduredmarrage,encasdarrtanormaldelinstance. Le fichier dalerte de linstance (voir la section Diagnostiquer les problmes du chapitre Les outils dadministration) peut tre utilis comme premier outil daudit simple de lactivit des fichiers de journalisation. Les informations surveillersontlessuivantes :
q

Basculementdefichierdejournalisation : Wed Jul 16 15:25:04 2008 Thread 1 advanced to log sequence 17 Current log# 2 seq# 17 mem# 0: F:\ORADATA\HERMES\REDO02A.LOG Current log# 2 seq# 17 mem# 1: G:\ORADATA\HERMES\REDO02B.LOG

Attentelorsdunbasculementdefichierdejournalisation :
q

Pointdereprisenontermin Wed Jul 16 15:17:28 2008 Thread 1 cannot allocate new log, sequence 15 Checkpoint not complete

Archivagenontermin Wed Jul 16 15:19:02 2008 Thread 1 cannot allocate new log, sequence 16 All online logs needed archiving

LavueV$LOG_HISTORYpeutaussitreutilisepouranalyserlavitessedebasculementdesfichiersdejournalisation. Siladurequisparelesmessagesdecetypeestsystmatiquementcourte,lesfichiersdejournalisationsontmal dimensionns.Sicettesituationdebasculementsrapprochs(oudebasculementstemporairementbloqus)estrare (une fois par jour par exemple), le dimensionnement est satisfaisant (la situation est peut tre lie un batch qui gnreunpicdelactivittransactionnelle). Encasdebasculementtroprapide(largementinfrieur20/30minutes),ilfautaugmenterlatailledesgroupes. En cas dattentes frquentes lors dun basculement, il faut ajouter un groupe (le processus LGWR mettra plus de temps faire le tour des groupes, ce qui laissera plus de temps au point de reprise ou larchivage pour se terminer). Lesoprationsdajoutdungroupeoudaugmentationdelatailledesgroupessontprsentesdanslasuitedece chapitre.

4.Administrerlesfichiersdejournalisation
a.Vuedensemble
Diffrentesoprationsdadministrationpeuventtreeffectuessurlesfichiersdejournalisation :
q

Ajouter un nouveau membre dans un groupepermetdamliorerlascuritdesfichiersdejournalisation (multiplexage). Ajouter un nouveau groupe permet damliorer la disponibilit des fichiers de journalisation pour le processusLGWR,enaugmentantladureduncyclecompletderotation.

- 4-

ENI Editions - All rights reserved - Algeria Educ

Dplacerunmembrepermetdamliorerlarpartitiondesentres/sortiesparexemple. Supprimerungroupepeuttreutilisdansuneoprationdaugmentationdelatailledesgroupes(ajout dunnouveaugroupeplusgrospuissuppressiondunancien). Supprimerunmembredungroupesilestendommagparexemple. Forcerlebasculementdugroupecourantausuivantpeuttreutilisdansloprationdaugmentationde taille.

Ilnexistepasdecommandepourmodifierlatailledesgroupes latechniqueconsisteajouterdesgroupesayant lataillesouhaiteetsupprimerlesanciensgroupes.Supprimerungroupeneserapaspossiblesicestlegroupe courant lacommandepermettantdeforcerunbasculementpeutalorstreutilisepourviterdattendre.Sinon, supprimerungroupeouforcerlebasculementdugroupecourantausuivantsontdesoprationsrarementutilises enellesmmes.

b.Ajouterunnouveaumembreungroupe(multiplexage)
Nousavonsvuquelemultiplexagedesfichiersdejournalisationpouvaittremisen uvrelorsdelacrationdela base de donnes (voir la section Cration de la base de donnes la main du chapitre Cration dune nouvelle base de donnes). Il suffit de spcifier plusieurs membres pour chaque groupe list dans la clause LOGFILE de lordreSQLCREATE DATABASE. Lemultiplexagedesfichiersdejournalisationpeutaussitremisen uvre(ourenforc)ultrieurement,laidede lordreSQLALTER DATABASE. Syntaxesimplifie : ALTER DATABASE ADD LOGFILE MEMBER nom_fichier [,...] TO GROUP numro; Exemple : ALTER DATABASE ADD LOGFILE MEMBER e:\oradata\HERMES\redo01c.log TO GROUP 1; La taille du fichier na pas besoin dtre spcifie le nouveau fichier a forcment la mme taille que les autres membresdugroupe.NotezaussiquelenouveaumembreauraunstatutINVALIDdansV$LOGFILE cestnormalet lestatutchangeralorsquelefichierserautilis. Mme sil est techniquement possible davoir des groupes qui nont pas le mme nombre de membres, cest normalement une situation temporaire. Bien protger tous les groupes sauf un, est prilleux la loi de Murphy indiquequesiunincidentdoitseproduire,ilauralieusurlegroupemalprotg.

c.Ajouterunnouveaugroupe
AjouterunnouveaugroupepeuttreralislaidedelordreSQLALTER DATABASE. Syntaxe : ALTER DATABASE ADD LOGFILE [GROUP numro] spcification_fichier_redo [,...] ; - spcification_fichier_redo (nom_fichier [,...]) [ SIZE valeur [K|M|G] ] [REUSE] Avec : numro Numrodugroupe.Siloptionestabsente,Oraclenumrotelesgroupes1,2...(cequiestbien). nom_fichier Chemindaccscompletunfichiermembredugroupe,normalementdansunrpertoirededonnes(oradata)pour respecterlestandardOFA.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

SIZE Tailledechaquemembredugroupeenoctets(pasdesymbole),Ko(symboleK),Mo(symboleM)ouGo(symboleG). LataillepeuttreomiseuniquementsiloptionREUSEestutiliseetquelefichierexistedj. REUSE Siloptionestprsenteetquelefichierexistedj,Oraclelerutiliseet lcrase. Si loptionestabsente,dansla mmesituation,unmessagederreursafficheetlacrationdelabasededonneseststoppe.Dupointdevuede la scurit, il est prfrable de ne pas utiliser cette option afin dviter dcraser par mgarde un fichier de journalisationutilisparuneautrebasededonnes. Exemple : ALTER DATABASE ADD LOGFILE GROUP 4 (e:\oradata\hermes\redo04a.log, g:\oradata\hermes\redo04b.log) SIZE 50M; Sauf opration daugmentationdelatailledesgroupes,lenouveaugroupeprsentenormalementlammetaille quelesautres avoirdesgroupesdetaillesdiffrentesneprsenteaucunintrt.

d.Dplacerunmembre
Lemodeopratoirepourdplacerunfichierdejournalisationestlesuivant :
q

arrterlabasededonnes(proprement,pasABORT) : SQL> SHUTDOWN IMMEDIATE

dplacerle(s)fichier(s)dejournalisationverslenouvelemplacement : SQL> HOST move e:\oradata\hermes\redo04a.log > f:\oradata\hermes\redo04a.log

monterlabasededonnes : SQL> STARTUP MOUNT

utiliserlordreSQLALTER DATABASE RENAME FILEpourindiquerOraclelenouvelemplacement : SQL> ALTER DATABASE 2 RENAME FILE e:\oradata\hermes\redo04a.log 3 TO f:\oradata\hermes\redo04a.log;

ouvrirlabasededonnes : SQL> ALTER DATABASE OPEN;

LasyntaxedelordreSQLALTER DATABASE RENAME FILEestlasuivante : ALTER DATABASE RENAME FILE ancien_nom_complet [,...] TO nouveau_nom_complet [,...]; Exemple : ALTER DATABASE RENAME FILE e:\oradata\hermes\redo04a.log TO f:\oradata\hermes\redo04a.log; NotezbienquelordreSQLALTER DATABASE RENAME FILEnerenommepas,ninedplacelefichierphysique cette opration doit tre effectue par une commande du systme dexploitation. Lordre SQL ALTER DATABASE RENAME
- 6 ENI Editions - All rights reserved - Algeria Educ

FILE sert juste indiquer Oracle le nouvel emplacement ou le nouveau nom dun fichier (Oracle met jour en consquence le fichier de contrle).Lancien nom complet doit correspondre un fichier appartenant la base de donnes, mais il peut ne plus exister physiquement par contre, Oracle vrifie que le fichier existe bien avec le nouveaunomet/oudanslenouvelemplacement(etquelefichierestvalide).

e.Supprimerungroupe
SupprimerungroupepeuttreralislaidedelordreSQLALTER DATABASE. Syntaxe : ALTER DATABASE DROP LOGFILE GROUP numro ; Exemple : ALTER DATABASE DROP LOGFILE GROUP 4; Labasededonnesdoitavoiraumoins3groupesdefichiersdejournalisationpourpouvoirensupprimerun(ildoit resteraumoins2groupes). SeulungroupeaustatutINACTIVEpeuttresupprim.Legroupecourant(celuidanslequelleprocessusLGWRest en train dcrire) ne peut pas tre supprim il en est de mme si le groupe a le statut ACTIVE (groupe encore ncessaireencasderestaurationdinstance).EnmodeARCHIVELOG,ungroupenonencorearchivnepeutpastre supprim. LesfichiersconcernsnesontpasphysiquementsupprimsparOracle ilfautlessupprimermanuellement,laide dunecommandedusystmedexploitation.

f.Supprimerunmembredungroupe
SupprimerunmembredungroupepeuttreralislaidedelordreSQLALTER DATABASE. Syntaxe : ALTER DATABASE DROP LOGFILE MEMBER nom_fichier [,...] Exemple : ALTER DATABASE DROP LOGFILE MEMBER g:\oradata\hermes\redo01b.log; Legroupeconcerndoitavoiraumoins2membrespourpouvoirensupprimerun(ildoittoujoursaumoinsexister unmembre valide par groupe) si le groupe a deux membres dont un invalide, vous ne pourrez pas supprimer le membrevalide.Poursupprimertouslesmembresdungroupe,ilfautenfaitsupprimerlegroupe(pointprcdent). Letableausuivantindiquesiunmembrepeuttresupprimenfonctiondustatutdugroupe :

Statusdugroupe
CURRENT ACTIVE INACTIVE

Membresupprimable?
Non Non Oui

EnmodeARCHIVELOG,unmembredungroupenonencorearchivnepeutpastresupprim.Lesfichiersconcerns nesontpasphysiquementsupprimsparOracle ilfautlessupprimermanuellement,laidedunecommandedu systmedexploitation.

g.Forcerlebasculementdugroupecourantausuivant
ForcerlebasculementdugroupecourantausuivantpeuttreralislaidedelordreSQLALTER SYSTEM.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

Syntaxe : ALTER SYSTEM SWITCH LOGFILE; Lebasculementmanuelprovoquelesmmesvnementsquunbasculementautomatique :


q

pointdereprise archivage(silarchivageestactiv).

5.Contrlerlafrquencedespointsdereprise
Pardfaut,lespointsdereprisesedclenchentlorsdunbasculementdefichierdejournalisation. Lorsquelesfichiersdejournalisationsontgrosetquelesbasculementssontpeufrquents,celapeutconduiredes redmarragesunpeulongsencasdarrtanormaldelinstance(beaucoupdemodificationsapporterauxfichiers dedonnespourlesremettreentat).Danscegenredesituation,ilpeuttreintressantdecontrlerlafrquence des points de reprise et de faire en sorte davoir des points de reprise intermdiaires, entre les basculements de fichiersdejournalisation. LamthoderecommandeconsisteutiliserleparamtreFAST_START_MTTR_TARGET quiindiquelenombremaximum de secondes souhait pour le redmarrage de linstance, aprs un arrt anormal. Une fois que ce paramtre est positionn,linstanceajusteautomatiquementlafrquencedespointsderepriseafindenepasavoirtropdactivit rejouerdanslesfichiersdedonnes,encasdarrtanormaldelinstance. Des points de reprise trop frquents peuvent dgrader les performances de lactivit courante il faut trouverlejustequilibre Lavue V$INSTANCE_RECOVERYpeuttreutilisepoursuperviserletempsestimderestaurationdelinstance.Cette vuecontientnotammentlescolonnessuivantes : TARGET_MTTR Objectif rel de dure de rcupration maximum, recalcul par Oracle, en fonction du contexte tient compte de la valeurduparamtreFAST_START_MTTR_TARGETmaisaussi,dautresfacteurs. ESTIMATED_MTTR Duredercuprationestimeactuellementcomptetenudelactivitdelinstance. OPTIMAL_LOGFILE_SIZE Taille optimale des fichiers de journalisation (en Mo) permettant datteindrelobjectif (valeur actuelle du paramtre FAST_START_ MTTR_TARGET) uniquement avec les points de reprises lis aux basculements des fichiers de journalisation. Si le paramtre FAST_START_MTTR_TARGET est rgl une valeur trop basse, la dure effective de recouvrement est dtermine au mieux de ce que le systme est capable de faire, compte tenu du contexte. Si le paramtre FAST_START_MTTR_TARGETestrglunevaleurleve,telleque,mmedanslepiredescas,lerecouvrementserait plus court, la dure effective de recouvrement est estime par rapport au scnario le pire : tous les blocs sont modifis dans le Buffer Cache, pour des transactions valides, et aucun na encore t crit sur disque, dans les fichiersdedonnes. Exemple : SQL> SELECT value FROM v$parameter 2 WHERE name = fast_start_mttr_target; VALUE -------------------60 SQL> SELECT target_mttr,estimated_mttr,optimal_logfile_size 2 FROM v$instance_recovery; TARGET_MTTR ESTIMATED_MTTR OPTIMAL_LOGFILE_SIZE ----------- -------------- --------------------

- 8-

ENI Editions - All rights reserved - Algeria Educ

30

18

99

Si le paramtre FAST_START_MTTR_TARGET nest pas dfini, la colonne TARGET_MTTR est gale 0 et la colonne OPTIMAL_LOGFILE_SIZE estvide parcontre,lacolonneESTIMATED_MTTR estrenseigne.

6.UtiliserleDatabaseControl
Dans le Database Control, cliquez sur le lienServeursurlapagedaccueil puis, sur le lienGroupes de fichiers de journalisation(cadreStockage)pouraccderlapagedegestiondesfichiersdejournalisation :

partirdecettepage,vouspouvezeffectuerdiversesactionssurlesgroupesdefichiersdejournalisation :

crerunnouveaugroupe(boutonCreroumenuCrercomme) supprimerungroupe(boutonSupprimer) forcerlebasculementdugroupecourantausuivant(menuChangerdefichierjournal) forcerunpointdereprise(menuForcerlapplicationdunpointdereprise).

EncliquantsurleliendunumrodegroupeouencliquantsurlesboutonsModifierouVisualiser,vousarrivezsurla pagedegestiondesmembresdugroupe :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

Cettepagepermetdajouter, supprimer, ou modifier un membre. Notez que le Database Control neffectueaucune action sur les fichiers physiques (suppression, dplacement, renommage) ces oprations doivent tre effectues manuellementauniveaudusystmedexploitation.

- 10 -

ENI Editions - All rights reserved - Algeria Educ

Vuedensembleetdirectives
1.Vuedensemble
Un tablespace est une unit logique de stockage compose dun ou plusieurs fichiers physiques (fichiers de donnes). Dans le Database Control, le tablespace est appel "espace disque logique" dans cet ouvrage, nous utiliseronsleterme"tablespace". La majorit des oprations dadministration relatives au stockage seffectue au niveau du tablespace, et non au niveaudesfichiersdedonnes. lintrieurduntablespace,lestockageestorganisensegments,compossduneouplusieursextensions(extent). Cesextensionspeuventtregres"parledictionnaire"ou"localement".Danslepremiercas(tablespace<grpar ledictionnaire),lesinformationssurlesextensionslibresetallouessontstockesdansdestablesdudictionnaire dedonnes danslesecondcas(tablespacegrlocalement),lesinformationssurlesextensionslibresetalloues sontstockesdanslenttedesfichiersdedonnesdutablespace. Enversion10,OracleaintroduitlanotiondetablespaceBIGFILE : untablespaceBIGFILEestuntablespacecompos dun seul fichier de donnes qui peut tre particulirement volumineux (jusqu 2^32 blocs Oracle soit plus de 4 milliards de blocs). A contrario, un tablespace traditionnel, dornavant appel tablespaceSMALLFILE, peut contenir plusieursfichiersdedonnes(jusqu1 022fichiers),maisdetaillepluslimite("seulement"2^22blocsOracle,soit toutdemmeplusde4millionsdeblocs). LorsquuntablespaceSMALLFILEcontientplusieursfichiersdedonnes,lesfichierssontgnralementsitussurdes disquesdiffrentsavecdeuxobjectifspossibles :
q

allouerdelespacesupplmentaireuntablespacedontlefichierdedonnesinitialnepeutplusstendre rpartirlestockagedutablespacesurplusieursdisques(stripingauniveaudOracle).

UnebasededonnespossdetoujoursauminimumdeuxtablespacesnommsSYSTEMetSYSAUX(tablespaceSYStem AUXiliaire, apparu en version 10). Le tablespace SYSTEM contient le dictionnaire de donnes. Le tablespace SYSAUX contient les donnes de certains composants Oracle. Avant la version 10, ces donnes taient stockes dans plusieurstablespaces lutilisationduntablespaceuniquepermetdoncrduirelenombredetablespacesutilisspar une base de donnes. Normalement, les tablespaces SYSTEM et SYSAUX ne doivent pas contenir de donnes utilisateur.Encomplment,unebasededonnescontientsouvent(vivementconseill)deuxtablespacesparticuliers, utiliss en interne par Oracle : le tablespace dannulation (chapitre Gestion des informations dannulation) et le tablespace temporaire. Ces tablespaces "techniques" ne peuvent pas contenir de donnes utilisateur. Les tablespaces autres que le tablespace dannulation et le tablespace temporaire sont appels "tablespaces permanents".UntablespacepeuttreONLINE(accessible)ouOFFLINE.RendreuntablespaceOFFLINEestunmoyende rendre certaines donnes de lapplication temporairement inaccessibles, ou si la base de donnes abrite plusieurs applications,derendreuneapplicationinaccessiblesanstoucheruneautre. LetablespaceSYSTEMdoittoujourstreONLINE. UntablespacepeuttreREAD WRITE(enlecture/criture)ouREAD ONLY(enlectureseule).RendreuntablespaceREAD ONLYestunmoyensimpledegarantirquelesdonnesquilcontientneserontjamaismodifies.

2.Directives
Lesprincipalesdirectivessurlorganisationdestablespacessontlessuivantes :
q

nepasmettrededonnesutilisateurdanslestablespacesSYSTEMetSYSAUX enplusdestablespacesSYSTEMetSYSAUX,crerauminimum untablespacepourlessegmentsdannulation (tablespace dannulation) un tablespace pour les segments temporaires (tablespace temporaire) un tablespacepourlestables untablespacepourlesindex. sipossible,rpartirlesfichiersdedonnesdecestablespacessurdesdisquesdiffrents.
ENI Editions - All rights reserved - Algeria Educ - 1-

openmirrors.com

Letablespaceestlunitdebasedenombreusestchesdadministration.Larglefondamentaleestdoncdutiliser plusieurs tablespaces pour sparer au maximum les diffrents types dlments et garantir une plus grande souplessedanslesoprationsdadministration.Deplus,sileserveurpossdeplusieursdisques,ilserapossiblede rpartir les fichiers de donnes des tablespaces sur les diffrents disques pour viter les contentions sur les entres/sorties. Des variantes sont possibles concernant lorganisation des tablespaces. Si la base de donnes abrite plusieurs applications,crezdestablespacesdetablesetdindexdiffrentspourchaqueapplication. Letablespace SYSAUXpeuttreutilispourvosbesoinsdadministration(crationdetablesparticulires) dansce cas,utilisezunschmaspar. Utiliserplusieurstablespacespermet :
q

desparerlesdonnesdelapplicationdesdonnesdudictionnaireOracle desparerlesdonnesdeplusieursapplicationsstockesdanslammebasededonnes desparerlestockagedesdiffrentstypesdobjets derpartirlesentres/sortiessurplusieursdisques deraliserdessauvegardes/restaurationspartielles decontrlerladisponibilitdesdonnes.

Pour les bases de donnes volumineuses et les serveurs comprenant plusieurs disques, vous pouvez utiliser deux tablespaces(ouplus)pourlestablesetdeuxtablespaces(ouplus)pourlesindexetrpartirlesfichiersdedonnes destablespacessurlesdiffrentsdisques. Dansunetelleconfiguration,lidalestdavoiraussilestablespacesSYSTEM,SYSAUX,annulationettemporairesurdes disquesdiffrents,etdeddierdautresdisquesauxfichiersdejournalisation.LeserveurOracleidaldoitpossder au minimum une dizaine de disques. Dans la pratique, nous disposons bien souvent de moyens limits, et nous essayons,danscecas,derpartiraumieuxlesentres/sortiessurlesdiffrentsdisques. LesrecommandationsdOraclevisvisdustockagedesfichiersdelabasededonnestiennentenunsigle : SAME (Strip And Mirror Everything). En clair, Oracle recommande dutiliser une technologie de type RAID0+1 sur chaque axe : "Strip"(RAID0)pourlesperformanceset"Mirror"(RAID1)pourlascurit.

- 2-

ENI Editions - All rights reserved - Algeria Educ

Tablespacepermanent
1.Crationduntablespacepermanent
LordreSQLCREATE TABLESPACEpermetdecreruntablespacepermanent. Syntaxesimplifie CREATE [ BIGFILE | SMALLFILE ] TABLESPACE nom DATAFILE spcification_fichier [,...] [ clause_gestion_extension ] [ clause_gestion_segment ] [ MINIMUM EXTENT valeur [K|M] ] [ DEFAULT [ clause_compression ] [ clause_stockage ] ] [ BLOCKSIZE valeur [K] ] [ LOGGING | NOLOGGING ] [ FORCE LOGGING ] [ FLASHBACK { ON | OFF } ] [ ONLINE | OFFLINE ] ; - spcification_fichier nom_fichier [ SIZE valeur [K|M|G|T] ] [REUSE] [ clause_auto_extension ] - clause_auto_extension AUTOEXTEND OFF | AUTOEXTEND ON [ NEXT valeur [K|M|G|T] ] [ MAXSIZE UNLIMITED | valeur [K|M|G|T] ] - clause_gestion_extent EXTENT MANAGEMENT DICTIONARY | EXTENT MANAGEMENT LOCAL { AUTOALLOCATE | UNIFORM [ SIZE valeur [K|M|G|T] ] } - clause_gestion_segment SEGMENT SPACE MANAGEMENT { MANUAL | AUTO } - clause_stockage STORAGE ( [ INITIAL valeur [K|M] ] [ NEXT valeur [K|M] ] [ MINEXTENTS valeur ] [ MAXEXTENTS { valeur | UNLIMITED } ] [ PCTINCREASE valeur ] ) - clause_compression COMPRESS [ FOR { ALL | DIRECT_LOAD } OPERATIONS ] | NOCOMPRESS Exemple : Tablespacepourlestables,avecunegestionlocaleuniformedesextensions : CREATE TABLESPACE data DATAFILE e:\oradata\hermes\data01.dbf SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE 800M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M SEGMENT SPACE MANAGEMENT AUTO; Tablespacepourlesindex,avecunegestionlocaleautomatiquedesextensions : CREATE TABLESPACE indx DATAFILE e:\oradata\hermes\indx01.dbf SIZE 500M AUTOEXTEND ON NEXT 100M MAXSIZE 800M EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO; Touteslesoprationsrelativesauxtablespacesetauxfichiersdedonnessontenregistresdanslefichier dalertedelinstance. LesoptionsdelordreSQLCREATE TABLESPACEsont :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

BIGFILE|SMALLFILE CetteclauseindiquesiletablespaceestuntablespaceBIGFILEouSMALLFILE.Sicetteclauseestomise,Oracleutilise letypepardfautdfiniauniveaudelabasededonnes(voirlasectionRemarquessurlestablespacesBIGFILE). nom Nomdutablespace. DATAFILEspcification_fichier Cette clause permet de prciser lemplacement, le nom et la taille dun (ou ventuellement plusieurs) fichier de donnespourletablespace.UnseulfichierdedonnespeuttrespcifisiletablespaceestdetypeBIGFILE. Lasyntaxeestlasuivantepourlaspcificationdunfichierdedonnes : nom_fichier [ SIZE valeur [K|M|G|T] ] [REUSE] [ clause_auto_extend ] nom_fichier Chemindaccscompletaufichierdedonnes,normalementdansunrpertoirededonnes(oradata)pourrespecter lestandardOFA. SIZE Tailleinitialedufichier.LataillepeuttreomiseuniquementsiloptionREUSEestutiliseetquelefichierexistedj. REUSE Si loption est prsente et que le fichier existe dj, Oracle le rutilise et lcrase. Si loption est absente, dans la mme situation, un message derreur saffiche et la cration du tablespace est stoppe. Du point de vue de la scurit, il est prfrable de ne pas slectionner cette option afin dviter dcraser par mgarde un fichier de donnesutilisparuneautrebasededonnes. - clause_auto_extend AUTOEXTEND OFF | AUTOEXTEND ON [ NEXT valeur [K|M|G|T] ] [ MAXSIZE UNLIMITED | valeur [K|M|G|T] ] AUTOEXTEND Indiquesilefichierdedonnespeut(ON)ounon(OFF)grossirunefoisquetoutlespaceinitialementallouestutilis. NEXT Espaceminimumallouaufichierlorsdelextension. MAXSIZE Taillemaximaledufichier,ventuellementnonlimite(UNLIMITED). Touteslestaillespeuventtreexprimesenoctets(pasdesymbole),Ko(symboleK),Mo(symboleM),Go(symboleG) ouTo(symboleT).LestaillesenTonesontautorisesquepourlestablespacesBIGFILE. Si le fichier de donnes nest pas autoextensible, un message derreur se produira si un segment stock dans le tablespaceconcernnapassuffisammentdespacelorsdesacrationinitialeoudesonextension.Rendrelefichier dedonnesautoextensiblepermetdesaffranchirdecegenredeproblme,jusqulataillelimiteautorisepourle fichier.Silefichierestautoextensible,latailleminimumdextensionestspcifieparloptionNEXT.Lataillerellede chaqueextensionseragaleNEXTsilatailledemandeestinfrieureNEXTetgalelatailledemandedansle cascontraire. ExempleavecunNEXTde500K :
q

tailledemande=200Ko : 500Koallousaufichier

- 2-

ENI Editions - All rights reserved - Algeria Educ

tailledemande=750Ko : 750Koallousaufichier.

AttentionloptionUNLIMITED.Ledisquedurnestpas"illimit".Danslapratique,ilestprfrabledavoirun messagederreurdOracleindiquantquilaatteintlalimitespcifiepluttquedobtenirunmessagederreur dOraclerpercutantunmessagederreurdusystmeindiquantqueledisqueestplein.

EXTENTMANAGEMENT... Cetteclausepermetdedfinirlemodedegestiondesextensionslintrieurdutablespace(parledictionnaireou localement).Lorganisationdustockagedansuntablespaceestprsenteplusloin. SEGMENTSPACEMANAGEMENT{MANUAL|AUTO} Cetteclausepermetdedfinirlemodedegestiondelespacelibredessegmentsstocksdansletablespace(voirle chapitreGestiondestablesetdesindex).Cetteclausenestvalidequepouruntablespacegrlocalement. MINIMUMEXTENTvaleur[K|M] Cetteclausepermetdedfinirlatailleminimaledesextensionsdansletablespace.Touteslesextensionsalloues dansletablespaceaurontunetaillemultipledelatailleminimale.Cetteclausenestvalidequepouruntablespace grparledictionnaire(unpeuplusloindanscechapitreOrganisationdustockagelintrieurduntablespace). DEFAULT[COMPRESS|NOCOMPRESS]clause_stockage Cette clause permet de dfinir une clause de stockage par dfaut pour les segments qui seront crs dans le tablespace sans clause de stockage. La partie clause_stockage (STORAGE...) nest valide que pour un tablespace grparledictionnaire lapartieclause_compressionestvalidequelquesoitlemodedegestiondutablespace. Lorganisation du stockage dans un tablespace est prsente au point Organisation du stockage lintrieur dun tablespace.LestockagedessegmentsestdtaillauchapitreGestiondestablesetdesindex. BLOCKSIZEvaleur[K] Cetteclausedfinitlatailledeblocutiliseparletablespace.Lesvaleursautorisessont2 Ko,4Ko,8 Ko,16Koet 32Ko(certainesplatesformessontplusrestrictives).Lavaleurpardfautestlatailledeblocstandarddfinieparle paramtreDB_BLOCK_SIZE.Pourutiliserunetailledeblocnonstandardpouruntablespace,vousdevezconfigurerun poolpourcettetailledeblocdansleBufferCache,grceundesparamtresDB_nK_ CACHE_SIZEnvalant2,4,8,16ou 32).Sicenestpaslecas,vousobtiendrezlerreursuivante ORA-29339: la taille de bloc de tablespace nnnn ne correspond pas aux tailles de blocs configures LOGGING|NOLOGGING Cetteclausedfinitlemodedejournalisationpardfautdessegmentsquiserontstocksdansletablespaceetpour lesquelsaucunmodedejournalisationnauratdfini.NOLOGGINGsupprimelajournalisationdecertainesoprations (insertionparchargementdirect,crationdetablepartirdunerequte,crationoureconstructiondindex).LOGGING est loption par dfaut. LoptionNOLOGGING est ignore si le tablespace ou la base de donnes sont dans le mode FORCE LOGGING. FORCELOGGING CetteclauseplaceletablespacedanslemodeFORCE LOGGING,cequipermetdegarantirquetouteslesmodifications seront enregistres dans les fichiers de journalisation, mme si lopration concerne est effectue dans le mode NOLOGGING. FLASHBACK{ON|OFF} Cette clause indique si le tablespace participe ou non aux oprations de FLASHBACK DATABASE (voir le chapitre Sauvegardeetrcupration). ONLINE|OFFLINE CetteclauseindiquesiletablespaceestcrONLINE(dfaut)ouOFFLINE. Depuislaversion11,untablespacepeuttrechiffr(clauseENCRYPTION).Cettefonctionnalit,quincessite loption Advanced Security, nest pas prsente dans cet ouvrage. Pour plus dinformations, consultez la
ENI Editions - All rights reserved - Algeria Educ - 3-

openmirrors.com

documentation"OracleDatabaseAdvancedSecurityAdministratorsGuide".

2.RemarquessurlestablespacesBIGFILE
LestablespacesBIGFILEsimplifientladministrationenoffrantunetransparencedufichierdedonnes.Commenous le verrons par la suite, certaines oprations peuvent tre ralises directement sur le tablespace BIGFILE (par un ordreSQLALTER TABLESPACE)etnonsurlesfichiersdedonnes,commecestlecaspouruntablespaceSMALLFILE. LestablespacesBIGFILEsontforcmentgrslocalement(EXTENT MANAGEMENT LOCAL)avecunegestionautomatique delespacedanslessegments(SEGMENT SPACE MANAGEMENTAUTO). ExempledetablespaceBIGFILE CREATE BIGFILE TABLESPACE je_suis_gros DATAFILE e:\oradata\hermes\je_suis_gros.dbf SIZE 10G; LestablespacesBIGFILEsontpluttdestinstreutilissavecungestionnairedevolumeslogiquesquisupportele stripingouleRAID.Sicenestpaslecas,ilestpossiblederencontrerdesproblmesdeperformanceaveclexcution enparallledesrequtesoulaparalllisationdessauvegardesRMAN. UntypepardfautSMALLFILEouBIGFILEpeuttredfiniauniveaudelabasededonnes,soitlorsdelacrationde labasededonnes(clauseSET DEFAULT TABLESPACE de lordreSQLCREATE DATABASE voirlasectionCrationdela basededonneslamainduchapitreCrationdunenouvellebasededonnes),soitultrieurementgrcelordre SQLALTER DATABASE. Syntaxe : ALTER DATABASE SET DEFAULT { SMALLFILE | BIGFILE } TABLESPACE ; LetypepardfautactuelpeuttreconsultdanslavueDATABASE_PROPERTIESpourlapropritDEFAULT_TBS_TYPE : SQL> SELECT property_value FROM database_properties 2 WHERE property_name = DEFAULT_TBS_TYPE; PROPERTY_VALUE--------------------------------------------------SMALLFILE

3.Tablespacepermanentpardfaut
Lorsquun utilisateur cre un segment sans prciser de tablespace (voir la section Organisation du stockage lintrieurduntablespace),Oraclestockelesegmentdansletablespacepardfautdelutilisateur. CetablespacepardfautestdfinigrcelaclauseDEFAULT TABLESPACEdesordresSQLCREATE USERetALTER USER (voirlechapitreGestiondesutilisateursetdeleursdroits).Sicetteclauseestomise,cestletablespaceSYSTEMqui estaffectcommetablespacepardfautlutilisateur.Danslapratique,cecomportementpardfautneposepasde problmecarlesutilisateursnonDBAnont pas (normalement cestlecaspardfaut)dequotassurletablespace SYSTEM,etnepeuventycrerdesegments(voirlechapitreGestiondesutilisateursetdeleursdroits). Depuis la version 10, dans le but de simplifier la gestion des utilisateurs, il est possible de dfinir un tablespace permanentpardfaut.Cetablespaceestaffectpardfautauxutilisateurslorsdeleurcration,lorsquelaclause DEFAULT TABLESPACE de lordre SQL CREATE USER est omise. Cette technique nempche pas dutiliser dautres tablespacespermanentsaffectsspcifiquementdesutilisateurspourdesbesoinsparticuliers. Le tablespace permanent par dfaut peut tre dfini lors de la cration de la base de donnes, grce la clause DEFAULT TABLESPACEdelordreSQLCREATE DATABASE. Syntaxe [ DEFAULT TABLESPACE nom [ DATAFILE spcification_fichier [,...] ] [ clause_extent_management ] ] Exemple : DEFAULT TABLESPACE deftbs DATAFILE e:\oradata\hermes\deftbs01.dbf SIZE 10M AUTOEXTEND ON NEXT 10M MAXSIZE 500M

- 4-

ENI Editions - All rights reserved - Algeria Educ

EXTENT MANAGEMENT LOCAL AUTOALLOCATE NotezqueletablespaceainsidfiniestobligatoirementdetypeSMALLFILE. Pourcreretdfiniruntablespacepermanentpardfautaprslacrationdelabasededonnes,vousdevez :


q

creruntablespacepermanent,grcelordreSQLCREATE TABLESPACEprsentprcdemment ledfinircommetablespacepermanentpardfaut,grcelaclauseDEFAULT TABLESPACEdelordreSQLALTER DATABASE.

Syntaxe ALTER DATABASE DEFAULT TABLESPACE nom ; nomdoitdsigneruntablespacepermanentquiexistedj. LorsquecetordreSQLestexcut,touslesutilisateursquilancientablespacepermanentpardfauttaitaffect sevoientautomatiquementattribuerlenouveau. Pourretrouverlenomdutablespacepermanentpardfaut,vouspouvezinterrogerlavueDATABASE_PROPERTIESpour lapropritDEFAULT_PERMANENT_TABLESPACE : SQL> SELECT property_value FROM database_properties 2 WHERE property_name = DEFAULT_PERMANENT_TABLESPACE ; PROPERTY_VALUE -----------------------------DEFTBS

4.Modificationduntablespacepermanent
a.Vuedensemble
Aprscration,ilestpossibledemodifieruntablespace,notammentpour :
q

lerenommer luiallouerdelespacesupplmentaire dplacerle(s)fichier(s)dedonnes lepasserOFFLINE / ONLINE lepasserREAD ONLY / READ WRITE modifiercesautrescaractristiques(LOGGING / NOLOGGING, FORCE LOGGING, FLASHBACK ON / OFF,etc.).

CesoprationsseffectuentselonlescasaveclordreSQLALTER TABLESPACEouALTER DATABASE. Ilestpossibledallouerdelespacesupplmentaireunebasededonnes :


q

enajoutantunnouveautablespace(avecunouplusieursfichiersdedonnes) enajoutantunfichierdedonnesuntablespaceexistant enaugmentantlatailledunfichierdedonnesduntablespace.

La syntaxe complte de lordre SQL ALTER TABLESPACE est "excessivement longue" nous nallons donc pas la prsenterdanssonintgralitmaisindiquerlasyntaxeutiliserpourdiffrentesoprations.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

b.Renommeruntablespace
RenommeruntablespaceseffectueaveclordreSQLALTER TABLESPACE.Cettepossibilitestapparueenversion10. Syntaxe ALTER TABLESPACE ancien_nom RENAME TO nouveau_nom; Exemple : ALTER TABLESPACE deftbs RENAME TO tbsdef; LestablespacesSYSTEMetSYSAUX,ainsiquelestablespacesOFFLINE,nepeuventpastrerenomms. Notez que dans le cas du tablespaceOFFLINE, le message derreur indique en fait, que le fichier de donnes est "hors ligne" (OFFLINE), ce qui empche Oracle de modifier lentte du fichier de donnes pour y enregistrer le nouveaunomdutablespace.Unproblmesimilairepourraitseposeravecuntablespaceenlectureseule,maisce nest pas le cas Oracle ne cherche pas modifier lenttedufichierdedonnesetenregistrejustelenouveau nomdanslefichierdecontrle(lentteseramodifilorsqueletablespacerepasseraenlecture/criture).

c.Ajouterunfichierdedonnesuntablespace
AjouterunfichierdedonnesuntablespaceseffectueaveclordreSQLALTER TABLESPACE. Syntaxe ALTER TABLESPACE nomADD DATAFILE spcification_fichier [,...]; Exemple : ALTER TABLESPACE data ADD DATAFILE f:\oradata\hermes\data02.dbf SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE 500M; Ajouter un fichier de donnes un tablespace est un premier moyen pour lui allouer de lespace supplmentaire gnralement,cettemthodeestutilisepourallouerunnouveaufichierdedonnessurunautre disque que le disque actuellement utilis par le tablespace (sinon, autant modifier la taille du fichier de donnes existant voirciaprs).CetteoprationestinterditepouruntablespaceBIGFILE. Laspcificationdufichierdedonnes(spcification_fichier)estlammequelorsdelacrationdutablespace (sectionCrationduntablespacepermanent).

d.Modifierlatailledunfichierdedonnes
ModifierlatailledunfichierdedonnesseffectueaveclordreSQLALTER DATABASE,oulordreSQLALTER TABLESPACE danslecasduntablespaceBIGFILE. Syntaxe ALTER DATABASE DATAFILE nom_complet | numro_fichier [,...] RESIZE valeur [K|M|G|T]; ALTER TABLESPACE nom_tablespace_bigfile RESIZE valeur [K|M|G|T]; Exemple :
q

Touttypedetablespace ALTER DATABASE DATAFILE f:\oradata\hermes\data02.dbf RESIZE 200M;

TablespaceBIGFILEuniquement ALTER TABLESPACE je_suis_gros RESIZE 1T;

LaclauseRESIZEdonnelanouvelletaillesouhaite(lahausseoulabaisse)pourlefichierdedonnes.

- 6-

ENI Editions - All rights reserved - Algeria Educ

Modifierlatailledunfichierdedonnespermet :
q

danslecasdunediminution,dercuprerdelespaceinutilisallouautablespace danslecasduneaugmentation,dallouerdelespacesupplmentaireuntablespace.

Danslecasdunediminution,latailledufichierdedonnesnepeutpasdescendreendessousdelapositiondela dernire extension occupe par un segment dans le tablespace (visible dans la vue DBA_EXTENTS). En cas de tentativedecettesorte,unmessagederreurestaffichetlatailledufichierestinchange : ORA-03297: le fichier contient des donnes utilises au-del de la valeur RESIZE requise

e.Modifierlextensionautomatiquedunfichierdedonnes
ModifierlextensionautomatiquedunfichierdedonnesseffectueaveclordreSQLALTER DATABASE,oulordreSQL ALTER TABLESPACEdanslecasduntablespaceBIGFILE. Syntaxe ALTER DATABASE DATAFILE nom_complet | numro_fichier[,...] clause_auto_extension; ALTER TABLESPACE nom_tablespace_bigfile clause_auto_extension; Laspcificationdelaclausedextensionautomatique(clause_auto_extension)estlammequelorsdelacration dutablespace(sectionCrationduntablespacepermanent). Exemple :
q

DsactivationdelaclauseAUTOEXTEND ALTER DATABASE DATAFILE e:\oradata\hermes\data01.dbf AUTOEXTEND OFF;

Activation(oumodification)delaclauseAUTOEXTEND ALTER DATABASE DATAFILE e:\oradata\hermes\data01.dbf AUTOEXTEND ON NEXT 200M MAXSIZE 800M;

ExempleavecuntablespaceBIGFILE ALTER TABLESPACE je_suis_gros AUTOEXTEND ON NEXT 1G MAXSIZE 100G;

Activerlextensionautomatiquedunfichierdedonnespermetcedernierdegrossirautomatiquementencasde besoin despace supplmentaire pour un segment (nouveau ou dj prsent) dans le tablespace cest un bon moyen pour viter les problmes et ne pas avoir augmenter soimme la taille dun fichier de donnes (voir prcdemment).Dsactiverlextensionautomatiquedunfichierdedonnespeuttreenvisag(etmmeconseill) silnyaplusdespacedisponiblesurundisque.

f.PasseruntablespaceOFFLINE/ONLINE
PasseruntablespaceOFFLINE / ONLINEseffectueaveclordreSQLALTER TABLESPACE. Syntaxe ALTER TABLESPACE nom ONLINE | OFFLINE; Exemple :
q

Dsactivation

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

ALTER TABLESPACE data OFFLINE;


q

Activation ALTER TABLESPACE data ONLINE;

Dsactiver un tablespace peut tre ncessaire pour effectuer certaines oprations dadministration sur le tablespace (par exemple, dplacer un de ces fichiers de donnes) ou tout simplement pour rendre certaines donnestemporairementinaccessibles. Le tablespace SYSTEM ne peut pas tre mis OFFLINE un message derreur saffiche en cas de tentative. Le tablespaceSYSAUXpeuttrepassOFFLINEmaiscertainesfonctionnalitsrisquentdeneplusfonctionner. Le statut dun tablespace (OFFLINE / ONLINE)estconservlorsdelarrt au prochain dmarrage de la base de donnes,letablespaceseradansltatoiltaitlorsdelarrt. IlexistedesoptionssurleOFFLINEquidoiventtreutilisessiletablespacedsactiverestendommag(voirle chapitreSauvegardeetrcupration).

g.Renommeroudplacerunfichierdedonnes
RenommeroudplacerunfichierdedonnesseffectueaveclordreSQLALTER TABLE- SPACEouALTER DATABASE. Dans le cas de lutilisation de lordre SQL ALTER TABLESPACE, la base de donnes doit tre ouverte mais le tablespace concern doit tre OFFLINE. Dans le cas de lutilisation de lordre SQL ALTER DATABASE, le tablespace concerndoittreOFFLINEoulabasededonnesentatMOUNT.LutilisationdelordreSQLALTER DATABASE,base monte,estncessairepourdplacerunfichierdedonnesdutablespaceSYSTEMpuisquecederniernepeutpas tremisOFFLINE. CesdeuxordresSQLnemanipulentpasphysiquementlefichier.Ilssecontententdemettrejourlefichier decontrle.Lefichierdedonnesdoittrerenomm/copi/dplaclaidedunecommandedusystme dexploitation,avantdexcuterlordreSQL. Syntaxe - ALTER TABLESPACE ALTER TABLESPACE nom RENAME DATAFILE ancien_nom_complet TO nouveau_nom_complet; - ALTER DATABASE ALTER DATABASE RENAME FILE ancien_nom_complet TO nouveau_nom_complet; "Renommer"unfichierdedonnesestsurtoututilispourdplacerlefichier.Cettepossibilitestintressantesile tablespace est plein et quil ne reste plus despace disponible sur le disque sur lequel il est actuellement situ danscecas,ilestenvisageablededplacerlefichierdedonnesdutablespaceversundisqueoilrestede lespacedisponiblepuisdefairegrossirlefichier(oulautorisergrossir). Lemodeopratoire,lorsdelutilisationdelordreSQLALTER TABLESPACE,estlesuivant :
q

SeconnecterentantqueDBA : SQL> CONNECT system/xxxx

PasserletablespaceOFFLINE : SQL> ALTER TABLESPACE data OFFLINE;

Parunecommandedusystmedexploitation,renommer,copieroudplacerlefichier : SQL> HOST move e:\oradata\hermes\data01.dbf > f:\oradata\hermes\data01.dbf

ExcuterlordreSQLALTER TABLESPACE :

- 8-

ENI Editions - All rights reserved - Algeria Educ

SQL> ALTER TABLESPACE data 2 RENAME DATAFILE e:\oradata\hermes\data01.dbf 3 TO f:\oradata\HErmes\data01.dbf;


q

RepasserletablespaceONLINE : SQL> ALTER TABLESPACE data ONLINE;

Lemodeopratoire,lorsdelutilisationdelordreSQLALTER DATABASE,estlesuivant :
q

SeconnecterAS SYSDBA : SQL> CONNECT / AS SYSDBA

PasserlabasededonnesentatMOUNT : SQL> SHUTDOWN IMMEDIATE SQL> STARTUP MOUNT

Parunecommandedusystmedexploitation,renommer,copieroudplacerlefichier : SQL> HOST move e:\oradata\hermes\system01.dbf > f:\oradata\hermes\system01.dbf

ExcuterlordreSQLALTER DATABASE : SQL> ALTER DATABASE 2 RENAME FILE e:\oradata\hermes\system01.dbf 3 TO f:\oradata\hermes\system01.dbf;

Ouvrirlabasededonnes : SQL> ALTER DATABASE OPEN;

h.Supprimerunfichierdedonnes
SupprimerunfichierdedonnesduntablespaceseffectueaveclordreSQLALTER TABLESPACE. Syntaxe ALTER TABLESPACE nom DROP DATAFILE nom_complet | numro_fichier; Exemple ALTER TABLESPACE data DROP DATAFILE E:\ORADATA\HERMES\DATA02.DBF; LefichierdedonnesestphysiquementsupprimparOracle.Lesrestrictionssuivantessappliquent :
q

Lefichierdedonnesdoittrevide(nedoitconteniraucuneextension) Lefichierdedonnesnepeutpastrelepremierfichiercrpourletablespace Lefichierdedonnesnedoitpasapparteniruntablespaceenlectureseule Lefichierdedonnesdoittreenligne(ONLINE) LefichiernedoitpasappartenirautablespaceSYSTEM.

i.Autresoprations

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

LordreSQLALTER TABLESPACEpeuttreutilispourmodifierlescaractristiquesdutablespace : - READ ONLY / READ WRITE ALTER TABLESPACE nom { READ ONLY | READ WRITE } ; - LOGGING / NOLOGGING ALTER TABLESPACE nom LOGGING | NOLOGGING ; - FORCE LOGGING ALTER TABLESPACE nom [NO] FORCE LOGGING ; - FLASHBACK ON / OFF ALTER TABLESPACE nom FLASHBACK ON | OFF ;

5.Suppressionduntablespacepermanent
LordreSQLDROP TABLESPACEpermetdesupprimeruntablespacepermanent. Syntaxe DROP TABLESPACE nom [ INCLUDING CONTENTS [ AND DATAFILES ] [ CASCADE CONSTRAINTS ] ]; Exemple : DROP TABLESPACE data INCLUDING CONTENTS AND DATAFILES ; Cest un ordre DDL (Data Definition Language) : il ny a pas de ROLLBACK. La seule solution est de repartir dune sauvegarde lefichierphysique,mmesilnestpassupprim,nestpasrcuprable. Letablespace SYSTEMetletablespacepermanentpardfautnepeuventpastresupprims.Ilestrecommandde passerletablespaceOFFLINEavantdelesupprimer. LesoptionsdelordreSQLDROP TABLESPACEsont : INCLUDINGCONTENTS Cetteclauseestncessairesiletablespacenestpasvide,pourforcerlasuppressionpralabledessegmentsquiy sontstocks.Siletablespacenestpasvideetqueloptionnestpasutilise,lerreurORA-01549estretourne : ORA-01549: le tablespace nest pas vide ; utiliser loption INCLUDING CONTENTS ANDDATAFILES Cetteoptiondelaclauseprcdentepermetenplus,desupprimerlesfichiersphysiquesdutablespace.Unmessage estcritdanslefichierdalertedelinstancepourchaquefichierphysiquesupprimparOracle. Sinon,ilsnesontpassupprims.

CASCADECONSTRAINTS Cette clause permet en plus, de supprimer les contraintes dintgrit rfrentielle dfinies sur des tables hors du tablespaceetquirfrencentdestableslintrieurdutablespace.Sidetellescontraintesexistentetqueloption nestpasutilise,lerreurORA-02449estretourne : ORA-02449: cls uniques/primaires de la table rfrences par des cls trangres<$I[]ORA-02449>

- 10 -

ENI Editions - All rights reserved - Algeria Educ

Organisationdustockagelintrieurduntablespace
1.Principes
Lorganisationdustockagelintrieurduntablespacepeuttrersumeparleschmaciaprs.

lintrieurduntablespace,lestockageestorganisensegmentscontenantuneouplusieursextensions(extents), uneextensiontantunensembledeblocsOraclecontigus. Lorsquunsegmentestcrdansuntablespace,Oracleluialloueune(ouplusieurs)extension(s)dansundesfichiers de donnes du tablespace. Lorsque lespace initialement allou est plein (suite linsertion de donnes par exemple),Oraclealloueunenouvelleextensionausegment,etainsidesuite.Touteslesextensionsallouesun segment sont dans le tablespace de cration du segment, mais pas forcment cte cte, ni forcment dans le mme fichier de donnes (si le tablespace est compos de plusieurs fichiers de donnes). Lorsquun segment est supprim, les extensions quil occupe sont libres et rendues disponibles pour dautres segments. Des crations/suppressionsfrquentesdesegmentsdansuntablespacepeuventdoncconduireunefragmentationde lespacedisponibledanscetablespace. Pourmmoire,ilexistequatretypesprincipauxdesegments :
q

lessegmentsdetable : espaceoccupparlestables lessegmentsdindex : espaceoccupparlesindex lessegmentsdannulation : espacetemporaireutilispourstockerlesinformationspermettantdannulerune transaction lessegmentstemporaires : espacetemporaireutilisnotammentlorsduntri.

Lapremireextensiondunsegmentcontientauminiumdeuxblocs,lepremiertantrservlenttedusegment (ne contient pas de donnes utiles mais la carte des extensions alloues au segment). Il en est de mme pour chaquefichierdedonnesdutablespace lepremierblocestunblocdentte(nousverronsbienttquelenttedu fichierpeutcontenirdavantagedeblocs). NousverronsauchapitreGestiondestablesetdesindexquilestpossible,souscertainesconditions,delibrerdes extensionssanssupprimerlesegment. Untablespacepeuttre"grparledictionnaire"ou"grlocalement". Dans un tablespace "gr par le dictionnaire", les informations relatives la gestion de lespace (extensions libres/alloues)sontenregistresdansledictionnairededonnes.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Dansuntablespace"grlocalement",lesinformationsrelativeslagestiondelespace(extensionslibres/alloues) sont enregistres dans une bitmap, dans lentte de chaque fichier de donnes du tablespace. Chaque bit de la bitmapcorresponduneextensionetvaut0ou1selonquelextensionestlibreoualloue. Les tablespaces grs localement sont apparus dans Oracle8i. Depuis Oracle9i, les tablespaces sont, par dfaut, grslocalement(saufletablespaceSYSTEMquiest,pardfaut,grparledictionnaire voirplusloin). Oraclerecommandefortementdutiliserdestablespacesgrslocalement.Cestleseultypedetablespace quiseratudidanscetouvrage.Ilestfortprobablequelestablespacesgrsparledictionnairenesoient plussupportsparOracledansuneprochaineversion. Oracleproposedeuxvariantespourlestablespacesgrslocalement :
q

Unegestiondite"automatique" : latailledesextensionsestdtermineautomatiquementparOracle. Une gestion dite "uniforme" : la taille des extensions est uniforme, gale une valeur dfinie lors de la crationdutablespace.

Par dfaut, un tablespace permanent gr localement est en gestion automatique des extensions la gestion uniformedoittrespcifie. Un tablespace temporaire gr localement est obligatoirement en gestion uniforme des extensions (dtaill ultrieurement).

2.Spcifierlestockagedunsegment
LesclausesTABLESPACEetSTORAGEpeuventtreutilisesdanslesordresdecrationdessegmentspourspcifierle stockagedusegment. SyntaxedelaclauseTABLESPACE TABLESPACE nom_tablespace SyntaxedelaclauseSTORAGE STORAGE ( [ [ [ [ [ INITIAL valeur [K|M] ] NEXT valeur [K|M] ] MINEXTENTS valeur ] MAXEXTENTS { valeur | UNLIMITED } ] PCTINCREASE valeur ] )

Exemplepourunetable : CREATE TABLE categorie ( identifiant NUMBER(6), intitule VARCHAR2(20) ) TABLESPACE data STORAGE (INITIAL 500K) ; LesoptionsdelaclauseSTORAGEsont : INITIAL Tailledelapremireextensionalloue. NEXT Tailledeladeuximeextensionalloue. MINEXTENTS Nombreinitialdextension(s)alloue(s).

- 2-

ENI Editions - All rights reserved - Algeria Educ

MAXEXTENTS Nombremaximaldextensionsallouables. PCTINCREASE Pourcentage daugmentation (0 100) de la taille des extensions, partir de la troisime, par rapport la prcdente. LamaniredontlaclauseSTORAGEestutiliseparOracledpenddumodedegestiondesextensionslintrieurdu tablespace. LaclauseSTORAGEavraimentbeaucoupdimportancepourlestockagedessegmentsdansuntablespacegrparle dictionnaire,puisquellepermetdespcifierprcismentlestockagedusegment.Siuneclause MINIMUM EXTENTest dfinieauniveaudutablespace,latailledesextensionsestventuellementajustepourdevenirunmultipledecette tailleminimum.EncasdabsencedeclauseSTORAGE,lesegmenthritedelaclauseDEFAULT STORAGEventuellement dfinie au niveau du tablespace. Si cette dernire est ellemme absente, Oracle utilise des valeurs par dfaut (INITIAL=5blocsOracle,NEXT=5blocsOracle,PCTINCREASE=50).Danslecasduntablespacegrlocalement,la clauseSTORAGEabeaucoupmoinsdimportancecar,deparsadfinition,letablespaceimposedescontraintessurla tailledesextensions(taillechoisieparOracleoutailleuniforme).Danslapratique,seuleloptionINITIALarellement delimportancepuisquelleindiqueOraclelatailleinitialesouhaitepourlesegment.

3.Spcifierlemodedegestionduntablespace
La clause EXTENT MANAGEMENT de lordre SQL CREATE TABLESPACE permet de spcifier le mode de gestion dun tablespace. Syntaxe : EXTENT MANAGEMENT DICTIONARY | LOCAL [ AUTOALLOCATE | UNIFORM [ SIZE valeur [K|M] ] ] Exemple :
q

Tablespacegrlocalementavecdesextensionsuniformes CREATE TABLESPACE tbs_local_uniform DATAFILE e:\oradata\hermes\tbs_local_uniform.dbf SIZE 10M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

TablespacegrlocalementavecdesextensionsgresparOracle CREATE TABLESPACE tbs_local_auto DATAFILE d:\oradata\hermes\tbs_local_auto.dbf SIZE 10M EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

LesoptionsdelaclauseEXTENT MANAGEMENTsont : DICTIONARY Indiquequeletablespaceestgrparledictionnaire.DesclausesDEFAULT STORAGEetMINIMUM EXTENTpeuventtre indiquesencomplment. LOCAL Indiquequeletablespaceestgrlocalement.LesclausesDEFAULT STORAGEetMINIMUM EXTENTsontinterdites. AUTOALLOCATE IndiquequelesextensionssontautomatiquementgresparOracle. UNIFORM

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

IndiquequelesextensionsontunetailleuniformedfinieparlaclauseSIZE.SilaclauseSIZEnestpasspcifie,la taillepardfautest1Mo. SIZE Spcifie la taille des extensions pour les tablespaces LOCAL UNIFORM. La taille peut tre donne en octets (pas de symbole),enKo(symboleK)ouenMo(symboleM). Par dfaut (clause EXTENT MANAGEMENT absente), un tablespace permanent est gr localement avec une gestion automatiquedesextensions(AUTOALLOCATE). Comme nous le verrons ultrieurement, un tablespace temporaire gr localement est obligatoirement en gestion uniformedesextensions(UNIFORM). Lorsquun tablespace permanent est gr localement, la gestion automatique de lespace libre lintrieur des segments est, par dfaut, active (clause SEGMENT SPACE MANAGEMENT AUTO implicite dans lordre SQL CREATE TABLESPACE) noustudieronscemodedegestionplusendtaildanslechapitreGestiondestablesetdesindex. Compte tenu de ce mode de gestion, les extensions doivent contenir au minimum cinq blocs dans le cas dun tablespacegrlocalementavecunegestionuniformedesextensions,ilfautentenircomptedanslaspcificationde laclauseSIZE,souspeinedobtenirlerreursuivante : ORA-03249: UNIFORM SIZE pour le tablespace gr par un espace de segment AUTO doit avoir au moins 5 blocs Lentte de chaque fichier de donnes dun tablespace gr localement utilise au minimum trois blocs (contre un pouruntablespacegrparledictionnaire).Latailledufichierdedonnesdoitdonctreauminimumgaletrois blocspluslatailleduneextension(valeurexpliciteoupardfautdelaclauseSIZEpouruntablespaceUNIFORM,64Ko pouruntablespaceAUTOALLOCATE).Silatailleinitialedufichierdedonnesestsuprieure64 Kopluslatailledune extension,unenttede64Koestenfaitallouaufichier,cequipermetdestockerunebitmapplusgrandeetdonc degrerdentredejeu,unplusgrandnombredextensions. Le package DBMS_SPACE_ADMIN <propose diffrentes procdures qui permettent de diagnostiquer et rparer les tablespacesgrslocalement(encasdendommagementdelabitmapparexemple),oudeffectuerunemigrationde tablespace gr par le dictionnaire en tablespace gr localement (et rciproquement). Dans ce dernier cas, le rsultat obtenu est meilleur en crant un nouveau tablespace gr localement et en transfrant les segments de lancientablespacedanslenouveau parcontre,loprationestpluslongue.

4.Gestiondesextensionslintrieurduntablespacegrlocalement
Dans le cas dune gestion automatique des extensions, Oracle utilise un petit nombre de tailles dextension diffrentes (64 Ko, 1 Mo, 8 Mo, 64 Mo) et tente dallouer ct cte des extensions de mme taille, en nombre suffisantpouroccuperdelespacepotentiellementutilisablepouruneextensiondetaillesuprieure(16extensions de 64 Ko = une extension potentielle de 1 Mo). Cette technique permet de limiter les risques de fragmentation de lespace disponible : si un segment contenant de nombreuses extensions est supprim, lespace libr peut tre rutilisdediffrentesmanires.Latailledextensioninitialementchoisiepourunsegmentdpenddelatailleinitiale dusegment :
q

64Kopourunsegmentdemoinsde1Mo 1Mopourunsegmentdemoinsde64Mo 8Mopourunsegmentdemoinsde1024Mo,etc.

LalgorithmeutilisparOraclepourcalculerlatailledesextensionsdansuntablespacegrlocalement,avec une gestion automatique des extensions, nest pas document. Les valeurs indiques ici sont des valeurs constatespourlacrationdunetabledansuntablespacevide. DanslecasdunegestionuniformedesextensionstouteslesextensionsontlammetailledfinieparloptionSIZE delaclauseEXTENT MANAGEMENT(1Mopardfaut). Latailleinitialedusegmentestcalculelaidedesvaleurs INITIAL,NEXT,MINEXTENTS etPCTINCREASEdelaclause STORAGE :
q

siMINEXTENTS = 1alorsINITIAL(cestlecasleplusfrquent)

- 4-

ENI Editions - All rights reserved - Algeria Educ

siMINEXTENTS = 2alorsINITIAL+NEXT siMINEXTENTS = 3alorsINITIAL+NEXT+NEXT*(1+PCTINCREASE/100),etc.

LavaleurcalculedevientlanouvellevaleurINITIAL,tellequenregistredansledictionnairededonnes. Oracle alloue alors une ou plusieurs extensions (sans tenir compte du MINEXTENTS initial), de taille uniforme (cas UNIFORM)oudetailledtermineeninterne(casAUTOALLOCATE),pourobtenirunetailleinitialegaleousuprieure lataillecalculeprcdemment. titre dexemple, supposons que la table suivante soit cre dans un tablespace gr localement avec des extensionsuniformesde128Ko : CREATE TABLE adherent (...) TABLESPACE tbs_local_uniform STORAGE (INITIAL 400K NEXT 100K PCTINCREASE 0 MINEXTENTS 2); Oraclealloue(400+100)/128=3,5arrondilentiersuprieur=4extensionsde128 Kopourlatable. Si la mme table est cre dans un tablespace gr localement, avec une gestion automatique des extensions, Oracle alloue (400+100)/64 = 7,8 arrondi lentier suprieur = 8 extensions de 64 Ko pour la table (une taille dextensionde64KoestchoisieparOraclecarlatailleinitialedusegmentestinfrieure1Mo). Lesinformationsenregistresdansledictionnairededonnes(vueDBA_TABLESetconsoeurs)sontlessuivantes :
s

LesvaleursMINEXTENTSetMAXEXTENTSsontignoresetforcesrespectivement1(mmesiplusieursextensions onttallouesausegment)etUNLIMITED. LavaleurcalculepourlatailleinitialedevientlanouvellevaleurINITIAL(mmesilespacerellementallouest suprieur,comptetenudelarrondisurlenombredextensions). PouruntablespaceAUTOALLOCATE,lesvaleursNEXTetPCTINCREASEsontignoresetmisesNULL(cestOraclequi dcide). Pour un tablespaceUNIFORM,NEXTestmisgallatailledesextensionsdutablespace(optionSIZEdelaclause UNIFORMdutablespace)etPCTINCREASEestmisgal0(touteslesextensionsontlammetaille).

Conclusion : les options NEXT, PCTINCREASE, MINEXTENTS et MAXEXTENTS ne sont pas dune grande utilit pour un tablespacegrlocalement. Lorsque lespace initialement allou au segment est plein, des extensions supplmentaires sont alloues au segment. SilesegmenteststockdansuntablespaceUNIFORM,touteslesextensionscomplmentairesallouesausegment ontlammetaille. Si le segment est stock dans un tablespace AUTOALLOCATE, cest Oracle qui dtermine la taille des nouvelles extensionsallouesausegment,selonunalgorithmenondocument,Visiblement,lefonctionnementestlesuivant lorsquune taille initiale de 64 Ko a t utilise : tant que le segment a moins de 16 extensions, Oracle alloue des extensions de 64 Ko, puis il passe des extensions de 1 Mo, jusqu 64 Mo, puis des extensions de 8 Mo. Par ailleurs, Oracle tente dallouer conscutivement des extensions de mme taille, jusqu obtenir un nombre dextensionsconscutivesoccupantunespacegallatailledextensionsuprieure. Exemple : SQL> -- cration dun tablespace gr localement avec SQL> -- une gestion automatique des extensions SQL> CREATE TABLESPACE test 2 DATAFILE e:\oradata\hermes\test01.dbf SIZE 10M 3 EXTENT MANAGEMENT LOCAL AUTOALLOCATE; Tablespace cr. SQL> -- cration de trois tables : deux "petites" et une "grosse" SQL> CREATE TABLE table200k(c NUMBER) 2 TABLESPACE test 3 STORAGE(INITIAL 200K); Table cre. SQL> CREATE TABLE tablexk(c NUMBER) sans clause STORAGE

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

2 TABLESPACE test; Table cre. SQL> CREATE TABLE table2M(c NUMBER) 2 TABLESPACE test 3 STORAGE(INITIAL 2M); Table cre. SQL> -- supervision du stockage dans le tablespace SQL> @info_stockage_tablespace BLOCK_ID EXTENT_ID SEGMENT_NAME BLOCKS TAILLE_KO ---------- ---------- --------------- ---------- ---------9 0 TABLE200K 8 64 17 1 TABLE200K 8 64 25 2 TABLE200K 8 64 33 3 TABLE200K 8 64 41 0 TABLEXK 8 64 49 *** LIBRE *** 88 704 137 0 TABLE2M 128 1024 265 1 TABLE2M 128 1024 393 *** LIBRE *** 888 7104 Cetexempleillustrelespointssuivants:
q

Oracleachoisidesextensionsde64Kopourles"petites"tablesetdesextensionsde1 Mopourla"grosse" table. Oraclealaissdelespacelibreentrelespetitestablesetlagrossetable : 704Ko,soit11extensionsde64 Ko. Cet espace est plutt rserv des extensions de 64 Ko, ce qui lui permet davoir un total de 16 extensions de 64 Ko conscutives (soit potentiellement une extension de 1 Mo en cas de libration de ces extensions).

5.CasdestablespacesSYSTEMetSYSAUX
Depuis Oracle9i release 2 (version 9.2), le tablespaceSYSTEM peut tre gr localement, et dans ce cas, forcment avecunegestionautomatiquedesextensions(EXTENT MANAGEMENT LOCAL AUTOALLOCATE)etunegestionmanuellede lespacedanslessegments(SEGMENT SPACE MANAGEMENT MANUAL).Pardfaut,ilestgrparledictionnaire.Crerun tablespaceSYSTEMgrlocalementalesconsquences(positives)suivantes :
q

Touslestablespacesdoiventtregrslocalement(conseillparOracle) Untablespacetemporairepardfautdoittrecrdslacrationdelabase(conseillparOracle) Si la gestion automatique des segments dannulation est active (conseill par Oracle), un tablespace dannulationdoittrecrdslacrationdelabasededonnes(conseillparOracle).

Danslordre SQLCREATE DATABASE, la clauseEXTENT MANAGEMENT LOCALpermetdespcifierqueletablespaceSYSTEM estgrlocalement : CREATE DATABASE hermes ... DATAFILE e:\oradata\hermes\system01.dbf SIZE 200M AUTOEXTEND ON NEXT 10M EXTENT MANAGEMENT LOCAL ... Le tablespace SYSAUX est obligatoirement gr localement avec une gestion automatique des extensions (EXTENT MANAGEMENT LOCAL AUTOALLOCATE) et une gestion automatique de lespace dans les segments (SEGMENT SPACE MANAGEMENT AUTO) ilnyarienspcifierlorsdelacrationdelabasededonnes. Encasdemiseniveaudunebasededonnes,letablespaceSYSAUXestcrparunordreSQLCREATE TABLESPACE. Lasyntaxesuivantedoittreutilise : CREATE TABLESPACE sysaux

- 6-

ENI Editions - All rights reserved - Algeria Educ

DATAFILE spcification_fichier EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

Tablespacetemporaire
1.Rledutablespacetemporaire
Lorsquunerequtencessiteuntri(clauseORDER BYparexemple),Oracletentedefaireletrienmmoire,dansla PGAduprocessusserveurquiexcutelarequte. Siletrinetientpasenmmoire,Oracleledcoupeenmorceauxettriechaquemorceauindividuellementenstockant desrsultatsintermdiairessurdisquedansdessegmentstemporaires. Un segment temporaire peut tre cr dans nimporte quel tablespace mais ce nest pas souhaitable pour les performances. Oraclerecommandedoncdecreruntablespaceddi,detypeTEMPORARY,pourstockerlessegmentstemporaires, etdeprfrenceuntablespacetemporairegrlocalement.Ilestpossibledecreruntablespacetemporairegr parledictionnairemaislesperformancessontalorslimitesetcechoixestdprciparOracle cestpourquoinous nelvoqueronspasdavantage. Lesrequtesquipeuventdemanderuntrisontlessuivantes :
q

SELECT ... ORDER BY SELECT ... GROUP BY SELECT DISTINCT ... requtesensemblistes(UNION, INTERSECT, MINUS) CREATE INDEX calculdesstatistiques jointurespartrifusion(sortmergejoin).

Utiliser un tablespace permanent comme tablespace temporaire est possible (cest ce qui passe par dfaut avec le tablespace SYSTEM) mais ce nest pas conseill, notamment du point de vue des performances. En effet, dans un tablespace permanent, les segments temporaires sont allous et librs chaque tri cest mauvais pour les performances et cela risque de fragmenter lespace disponible du tablespace. Dans le cas de lutilisation dun tablespacetemporaire,unseulsegmentdetriestcr,parlepremiertri,etrutilisparlestrissuivants. Lesegmenttemporairepeuttrepartagparplusieurstris(maispaslesextensions)etilestlibruniquementlors delarrtdelinstance decettemanire,ilyamoinsdallocationdynamiquedextensions,etlesperformancessen trouventoptimises. Untablespacepermanentgrlocalementnepeutpastreutiliscommetablespacetemporaire cenest paslecasduntablespacepermanentgrparledictionnaire. Les tablespaces temporaires sont aussi utiliss pour le stockage des tables temporaires cres par lordre SQL CREATE GLOBAL TEMPORARY TABLE.

2.Groupedetablespacestemporaires
Avantlaversion10,unerequtenepouvaitutiliserquunseultablespacetemporaire,cequiposaitdesproblmesde performancesilarequtesexcutaitenparallle.Danscecas,plusieursprocessusserveurtraitaientlarequteen parallle et chaque processus pouvait solliciter un accs au tablespace temporaire, ce qui posait parfois des problmesdecontentionsauniveaudesentres/sorties. Depuis la version 10, il est possible de dfinir des groupes de tablespaces temporaires. Dans le cas de lexcution dunerequteenparallle,lesdiffrentstablespacestemporairesdugroupepourronttreutilissparlesdiffrents processusserveurquitraitentlarequte.Celaneprsenterellementunintrtdupointdevuedesperformances quesilesfichiersdedonnesdesdiffrentstablespacestemporairessontstockssurdesdisquesdiffrents.

ENI Editions - All rights reserved - Algeria Educ

- 1-

Le nom dungroupedetablespacestemporairespeuttreutilispartoutounnomdetablespacetemporaireest employ. Lespace de nommage des groupes de tablespaces temporaires est dailleurs celui des tablespaces un groupedetablespacetemporairesnepeutpasporterlemmenomquuntablespace. Ungroupedetablespacestemporairesnestpasexplicitementcrousupprim.Ilestimplicitementcrlorsquun premier tablespace temporaire est affect au groupe et implicitement supprim, lorsque le dernier tablespace temporaireestretirdugroupe.

3.Crationduntablespacetemporairegrlocalement
LordreSQLCREATE TEMPORARY TABLESPACEpermetdecreruntablespacetemporairegrlocalement. Syntaxe CREATE [ BIGFILE | SMALLFILE ] TEMPORARY TABLESPACE nom TEMPFILE spcification_fichier [,...] [ EXTENT MANAGEMENT LOCAL ] [ UNIFORM [ SIZE valeur [K|M] ] ] [ TABLESPACE GROUP nom_groupe ] ; - spcification_fichier nom_fichier [ SIZE valeur [K|M|G|T] ] [REUSE] [ clause_auto_extend ] - clause_auto_extend AUTOEXTEND { OFF | ON [ NEXT valeur [K|M|G|T] ] [ MAXSIZE { UNLIMITED | valeur [K|M|G|T] } ] } Exemple : CREATE TEMPORARY TABLESPACE tempo TEMPFILE e:\oradata\hermes\tempo01.dbf SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1G ; LesoptionsdelordreSQLCREATE TEMPORARY TABLESPACEontlammesignificationquelesoptionsdemmenomde lordreSQLCREATE TABLESPACE(voirlasectionTablespacepermanent). Vouspouveznanmoinsnoterlespointssuivants :
q

UntablespacetemporairegrlocalementpeuttreuntablespaceBIGFILE danscecas,unseulfichierde donnespeuttrespcifi. LesfichiersdedonnesduntablespacetemporairegrlocalementsontspcifisparlemotclTEMPFILEet nonDATAFILE. Untablespacetemporairegrlocalementprsenteforcmentunegestionuniformedesesextensions.Les clausesEXTENT MANAGEMENT LOCALetUNIFORMsontdoncoptionnelles.Pardfaut,latailledesextensionsest de 1 Mo elle est satisfaisante dans une grande majorit des cas. La clause SIZE peut tre utilise pour spcifieruneautretaille danscecas,lemotclUNIFORMdoittrementionn. Un tablespace temporaire gr localement utilise obligatoirement la taille de bloc standard il nest pas possibledemployeruneautretailledebloc. UntablespacetemporairegrlocalementestobligatoirementONLINE. Les clausesLOGGING, NOLOGGING,FORCE LOGGINGet FLASHBACK sont interdites pour un tablespace temporaire grlocalement.

LaclauseTABLESPACE GROUPpermetdaffecterletablespacetemporaireungroupe silegroupenexistepas,ilest implicitementcr.Pardfaut,letablespacetemporairenappartientaucungroupe.

4.Tablespacetemporairepardfaut
Un tablespace temporaire nest rellement utilis que lorsquil est "affect" aux utilisateurs, grce la clause TEMPORARY TABLESPACEdesordresSQLCREATE USERetALTER USER(voirlechapitreGestiondesutilisateursetdeleurs droits). Si cette clause est omise, cest le tablespace SYSTEM qui est affect comme tablespace temporaire
- 2 ENI Editions - All rights reserved - Algeria Educ

openmirrors.com

lutilisateur,cequiestmauvaispourlesperformances. Pourrsoudreceproblmeetfaciliterlagestiondesutilisateurs,ilestpossiblededfiniruntablespacetemporaire par dfaut, ds la cration de la base de donnes, ou ultrieurement. Cette technique nempche pas dutiliser dautrestablespacestemporairesaffectsspcifiquementdesutilisateurspourdesbesoinsparticuliers. Un tablespace SYSTEM gr localement ne peut pas tre utilis comme tablespace temporaire par dfaut, do la ncessit,danscecas,decreretdfiniruntablespacetemporairepardfautdslacrationdelabase. Si le tablespaceSYSTEM est gr par le dictionnaire, et sil est utilis comme tablespace temporaire par dfaut, un messageestcritdanslefichierdalertedelinstance. Pour crer et dfinir un tablespace temporaire par dfaut lors de la cration de la base de donnes, vous devez utiliserlaclauseDEFAULT TEMPORARY TABLESPACEdelordreSQLCREATE DATABASE. Syntaxe [ BIGFILE | SMALLFILE ] DEFAULT TEMPORARY TABLESPACE nom TEMPFILE spcification_fichier [,...] [ EXTENT MANAGEMENT LOCAL ] [ UNIFORM [ SIZE valeur [K|M] ] ] Exemple : DEFAULT TEMPORARY TABLESPACE temp TEMPFILE e:\oradata\hermes\temp01.dbf SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1024M CetteclausedoittreprsentesiletablespaceSYSTEMestgrlocalement. La syntaxe est la mme que celle de lordre SQL CREATE TEMPORARY TABLESPACE. Un tablespace temporaire gr localement est cr selon la spcification et dfini comme tablespace temporaire par dfaut. Notez bien que le tablespacetemporairepardfautainsicrestforcmentgrlocalement(cequiestconseillparOracle). Letablespacetemporaireainsicrestprisencomptedslacrationdelabasededonnes,etdoncaffectcomme tablespacetemporaireauxutilisateurscrsdurantcetteopration(notammentSYSetSYSTEM). Pourcreretdfiniruntablespacetemporairepardfautaprslacrationdelabasededonnes,vousdevez :
q

creruntablespacetemporaire,grcelordreSQLCREATE TEMPORARY TABLESPACEprsentprcdemment le dfinir comme tablespace temporaire par dfaut, grce la clause DEFAULT TEMPORARY TABLESPACE de lordreSQLALTER DATABASE.

Syntaxe ALTER DATABASE DEFAULT TEMPORARY TABLESPACE nom ; nomdoitdsigneruntablespacetemporaireouungroupedetablespacestemporairesquiexistedj. LorsquecetordreSQLestexcut,touslesutilisateursquiavaientlancientablespacetemporairepardfautcomme tablespacetemporairesevoientautomatiquementattribuerlenouveau. Pourretrouverlenomdutablespacetemporairepardfaut,vouspouvezinterrogerlavueDATABASE_PROPERTIESpour lapropritDEFAULT_TEMP_TABLESPACE : SQL> SELECT property_value FROM database_properties 2 WHERE property_name = DEFAULT_TEMP_TABLESPACE ; PROPERTY_VALUE -----------------------------TEMP

5.Administrationdestablespacestemporairesgrlocalement
Ladministration dun tablespace temporaire gr localement seffectue avec les ordres SQL prsents pour les tablespacespermanents,avecquelquesrestrictions :ALTER TABLESPACE,ALTER DATABASEpourlagestiondesfichiers dedonnesetDROP TABLESPACE.

ENI Editions - All rights reserved - Algeria Educ

- 3-

Les fichiers de donnes dun tablespace temporaire gr localement sont particuliers Oracle les appelle dailleurs "fichiersdedonnestemporaires".Lesdiffrencesavecunfichierdedonnesordinairesontlessuivantes :
q

IlssonttoujoursenmodeNOLOGGING Ilsnepeuventpastredsactivs Ilsnepeuventpastrepasssenlectureseule.

Les fichiers de donnes temporaires des tablespace temporaires grs localement tant en mode NOLOGGING, les modifications ne sont pas enregistres dans les fichiers de journalisation (intressant pour les performances). Par contre,encasdeperteoudendommagementdundecesfichiers,larcupration(RECOVER) nestpaspossible.Ce nest pas trs grave puisquun tablespace temporaire ne contient pas de donnes permanentes en cas de problme,ilsuffitdesupprimerletablespace,oplussimplementlefichierdedonnes,puisdelerecrer. LesfichiersdedonnestemporairessontadministrsaveclesordresSQLALTER TABLESPACEet ALTER DATABASE,en remplaantlemotclDATAFILEparlemotclTEMPFILE. Lesoprationssuivantessontautorises :
q

Ajoutdunfichierdedonnestemporaireuntablespacetemporairegrlocalement ALTER TABLESPACE nom_tablespace ADD TEMPFILE spcification_fichier ;

Modificationdelatailledunfichierdedonnestemporaire
q

Touttypedetablespace ALTER DATABASE TEMPFILE nom_complet [,...] RESIZE valeur [K|M|G|T] ;

TablespaceBIGFILEuniquement ALTER TABLESPACE nom_tablespace_bigfile RESIZE valeur [K|M|G|T];

ModificationdelaclauseAUTOEXTENDdunfichierdedonnestemporaire
q

Touttypedetablespace ALTER DATABASE TEMPFILE nom_complet [,...] clause_auto_extension;

TablespaceBIGFILEuniquement ALTER TABLESPACE nom_tablespace_bigfile clause_auto_extension;

Parcontre,untablespacetemporairegrlocalementnepeutpastrepassOFFLINE. Demme,unfichierdedonnestemporairenepeutpastrerenommparlordreSQLALTER TABLESPACE ... RENAME DATAFILE(puisquilnepeutpastrepassOFFLINE).Parcontre,renommerunfichierdedonnestemporaireavecun ALTER DATABASE RENAME FILE est possible (base monte). Pour renommer un fichier de donnes temporaire base ouverte,etdoncaussipourledplacer,ilfautlesupprimeretlercrer. Exemple : -- supprimer le fichier de donnes temporaire SQL> ALTER DATABASE<$IALTER DATABASE;TEMPFILE DROP> 2 TEMPFILE e:\oradata\hermes\temp01.dbf DROP 3 INCLUDING DATAFILES; Base de donnes modifie. -- le recrer SQL> ALTER TABLESPACE temp ADD

openmirrors.com

- 4-

ENI Editions - All rights reserved - Algeria Educ

2 TEMPFILE f:\oradata\hermes\temp01.dbf SIZE 100M 3 AUTOEXTEND ON NEXT 10M MAXSIZE 1G; Tablespace modifi. NotezlutilisationdeloptionINCLUDING DATAFILESquipermetdesupprimerphysiquementlefichier. UnfichierdedonnestemporairepeutaussitresupprimparunordreSQLALTER TABLESPACE ... DROP TEMPFILE. Parailleurs,depuislaversion11,ilestpossibledertrciruntablespacetemporairegrlocalement. Syntaxe ALTER TABLESPACE nom SHRINK SPACE [ KEEP taille [K|M|G] ] ; ALTER TABLESPACE nom SHRINK TEMPFILE nom_complet | numro_fichier [ KEEP taille [K|M|G] ] ; Cette commande est intressante pour librer lespace utilis, par exemple, par un tri volumineux qui vient de se terminer.Lapremiresyntaxepermetdertrcirtouslesfichiersdedonnestemporairesdutablespacealorsquela deuxime syntaxe travaille sur un fichier spcifique. La clause KEEP dfinit une taille minimum conserver pour le tablespaceoulefichier sicetteclauseestabsente,Oracletentedelibrerlemaximumdespace.SilaclauseKEEP esttropbasse,uneerreurestretourne : ORA-03214: La taille de fichier indique est infrieure au minimum requis Curieusement,cetteerreurestaussiretournesilaclauseKEEPestabsenteetquOracletentedertrcirlefichier unetailleinfrieureauminimumrequis. Enfin, le tablespace temporaire par dfaut ne peut pas tre supprim. Il en est de mme pour tout tablespace temporaire appartenant un groupe de tablespaces temporaires utilis comme tablespace temporaire par dfaut. Pourplaceruntablespacetemporairedansungroupedetablespacestemporaires,lechangerdegroupeouleretirer dungroupe,vouspouvezutiliserlaclauseTABLESPACE GROUPdelordreSQLALTER TABLESPACE. Syntaxe : ALTER TABLESPACE nom_tablespace TABLESPACE GROUP nom_groupe | ; Vous pouvez utiliser une chane vide pour naffecter le tablespace aucun groupe. Lors de laffectation dun tablespace temporaire un groupe, le groupe est implicitement cr sil nexiste pas. Lorsquun tablespace temporaire est retir dun groupe, le groupe est implicitement supprim sil ne contient plus de tablespace temporaire. Vousnepouvezpasretirerlederniertablespacetemporairedungroupesicegroupeestutiliscommetablespace temporairepardfaut.

ENI Editions - All rights reserved - Algeria Educ

- 5-

Conclusions
1.Avantagesdestablespacesgrslocalement
Lestablespacesgrslocalementprsententdenombreuxavantages :
q

moinsdeSQLrcursif,voiredegestionrcursivedelespace,lilamisejourdudictionnairededonnes extensionsadjacenteslibresautomatiquementidentifies,cequiliminelesoprationsdefusion(coalesce) desextensionsadjacenteslibres limitation,voiredisparition,desproblmesdefragmentationdelespacedisponible.

Avecuntablespacegrparledictionnaire,lorsquelinstancealloueoulibreuneextension,elledoitlirepuismettre jour le dictionnaire de donnes, par lintermdiairedordre SQL SELECT, INSERT, UPDATEou DELETE ces diffrents ordres sont appels "SQL rcursif" et sont susceptibles dutiliser de lespace dannulation dans le segment dannulation SYSTEM. Lors de la mise jour du dictionnaire, Oracle peut manquer de place dans la table du dictionnaire ou dans le segment dannulation : il en rsulte une allocation rcursive despace, pnalisante pour les performances.Cesproblmesdisparaissentengrandepartieaveclestablespacesgrslocalement. Dansuntablespacegrparledictionnaire,lorsquuneextensionestlibre,Oracleneregardepasimmdiatement si elle est adjacente une extension dj libre. Plus tard, en tche de fond ou en cas de recherche dunegrande extension, le processus SMON fusionnera les extensions adjacentes libres du tablespace : cest lopration de coalesce. Cette opration peut prendre beaucoup de temps sil y a un grand nombre dextensions libres dans le tablespace.Dansuntablespacegrlocalement,cetteoprationnestpasncessairecarlesextensionsadjacentes libressontautomatiquementidentifiesdanslabitmap(zrosquisesuivent). Undesobjectifsdestablespacesgrslocalementestderationaliserlutilisationdelespacedanslestablespaceset dviter le phnomne de fragmentation de lespace disponible. Cette fragmentation de lespace disponible peut survenir suite une forte activit dallocation/librationdextensions : il peut y avoir beaucoup despace disponible dans le tablespace mais sous la forme dune multitude de petites extensions non adjacentes. Le risque de fragmentation disparat compltement dans un tablespace gr localement avec une gestion uniforme des extensions : touteslesextensionsallouesdansletablespaceontforcmentlammetailleetuneextensionlibre pourraobligatoirementtrerutilise. Lorsque les extensions sont gres par Oracle, linstance utilise un algorithme qui vise rduire le risque de fragmentation,dunepartenutilisantunpetitnombredetaillesdiffrentesdextensions,etdautrepartenallouant conscutivementdesextensionsqui,regroupes,peuventconstitueruneextensiondetaillesuprieure.

2.Recommandations
Oraclerecommandedutiliserdestablespacesgrslocalement :
q

pourletablespaceSYSTEM pour le tablespace temporaire, en le crant ds la cration de la base de donnes, pour avoir en plus un tablespacetemporairepardfaut pourlessegmentsdannulation(chapitreGestiondesinformationsdannulation) pourlestablespacesdestablesetdesindex.

Quel mode de gestion choisir pour les extensions des tablespaces de tables et dindex ? Prfrez une gestion automatiquedesextensions,sivousnavezpasunebonnevisiondesbesoinsenespaceetquevousnesouhaitiez exercer aucun contrle sur lallocation des extensions. Choisissez une gestion uniforme des extensions si vous souhaitezcontrlerlallocationdesextensionsetquevousayezunebonnevisiondevosbesoinsenespace. Les tablespaces grs localement avec une gestion automatique des extensions sont intressants lorsque la volumtrie des segments est compltement inconnue ils permettent une gestion plus saine de lespace que les tablespaces grs par le dictionnaire. Si les besoins sont connus avec prcision, utiliser des tablespaces grs localementavecunegestionuniformedesextensionsnestpasforcmentimmdiat,notammentpourdterminerla bonnetailledextension danscecas,ilfautsansdouteemployerplusieurstablespacespoursparerlessegments engrandescatgories.Exemple :
ENI Editions - All rights reserved - Algeria Educ - 1-

openmirrors.com

les"petits"(parex.entre0et2Mo) : untablespaceavecdesextensionsde64 Ko les"moyens"(parex.entre2Moet64Mo) : untablespaceavecdesextensionsde2 Mo les"gros"(parex.audelde64Mo) : untablespaceavecdesextensionsde64 Mo(etsansdouteplusieurs tablespaces).

Dans le chapitre Gestion des tables et des index, nous verrons comment estimer la taille des segments une chancedonne.

- 2-

ENI Editions - All rights reserved - Algeria Educ

Trouver des informations sur les tablespaces et les fichiers de donnes


1.Tablespacesetfichiersdedonnes
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlestablespacesetlesfichiersde donnes :
q

DBA_TABLESPACESouV$TABLESPACE : informationssurlestablespaces DBA_DATA_FILES ou V$DATAFILE : informations sur les fichiers de donnes <(sauf ceux des tablespaces temporairesgrslocalement) DBA_TEMP_FILESouV$TEMPFILE : informationssurlesfichiersdedonnesdestablespacestemporairesgrs localement DBA_TABLESPACE_GROUPS : informationssurlesgroupesdetablespacestemporaires DATABASE_PROPERTIES : proprits de la base de donnes, dont le tablespace temporaire par dfaut, le tablespacepermanentpardfautetletypedetablespacepardfaut(BIGFILEouSMALLFILE).

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs. DBA_TABLESPACES TABLESPACE_NAME Nomdutablespace. CONTENTS Typedutablespace(PERMANENTouTEMPORARYouUNDO). EXTENT_MANAGEMENT DICTIONARY : letablespaceestgrparledictionnaire. LOCAL : letablespaceestgrlocalement. ALLOCATION_TYPE USER : gestion des extensions par "lutilisateur" (tablespace gr par le dictionnaire). SYSTEM : gestionautomatique des extensions (tablespace gr localement). UNIFORM : gestion uniforme des extensions (tablespace gr localement). STATUS Statutdutablespace(ONLINE, OFFLINEouREAD ONLY). BLOCK_SIZE Tailledeblocdutablespace. LOGGING Modedejournalisationpardfaut(LOGGINGouNOLOGGING). FORCE_LOGGING IndiquesiletablespaceestenFORCE LOGGING(YESouNO).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

SEGMENT_SPACE_MANAGEMENT Indiquesilespacelibredanslessegmentsestgrmanuellement(MANUAL)ouautomatiquement(AUTO). BIGFILE IndiquesiletablespaceestuntablespaceBIGFILE(YESouNO). Exemple : SQL> SELECT tablespace_name,contents,extent_management, 2 allocation_type,bigfile,block_size,status 3 FROM dba_tablespaces; TABLESPACE_NAME CONTENTS EXTENT_MAN ALLOCATIO BIG BLOCK_SIZE --------------- --------- ---------- --------- --- ---------SYSTEM PERMANENT LOCAL SYSTEM NO 8192 UNDOTBS UNDO LOCAL SYSTEM NO 8192 SYSAUX PERMANENT LOCAL SYSTEM NO 8192 TEMP TEMPORARY LOCAL UNIFORM NO 8192 DEFTBS PERMANENT LOCAL SYSTEM NO 8192 DATA PERMANENT LOCAL UNIFORM NO 8192 INDX PERMANENT LOCAL SYSTEM NO 8192 JE_SUIS_GROS PERMANENT LOCAL SYSTEM YES 8192 DBA_DATA_FILES etDBA_TEMP_FILES FILE_NAME Nomdufichierdedonnes(chemincomplet). FILE_ID Identifiantdufichierdedonnes. TABLESPACE_NAME Nomdutablespaceauquellefichierdedonnesappartient. BYTES Tailledufichierenoctets. BLOCKS TailledufichierenblocsOracle. STATUS Statutdufichier(INVALIDouAVAILABLE). RELATIVE_FNO Numrorelatifdufichierparrapportautablespace. AUTOEXTENSIBLE Indicateurdautoextensibilit(YESouNO). MAXBYTES Taillemaximumdufichierenoctets. MAXBLOCKS

STATUS -----ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE ONLINE

- 2-

ENI Editions - All rights reserved - Algeria Educ

TaillemaximumdufichierenblocsOracle. INCREMENT_BY TailledelincrmentdelautoextensionenblocsOracle. USER_BYTES Tailleutiledufichierenoctets(gnralementtailledufichiermoinslesblocsdentte). USER_BLOCKS TailleutiledufichierenblocsOracle(gnralementtailledufichiermoinslesblocsdentte). Exemple : SQL> SELECT tablespace_name,file_name,status,autoextensible, 2 blocks,user_blocks,maxblocks 3 FROM ( SELECT * FROM dba_data_files 4 UNION ALL SELECT * FROM dba_temp_files); TABLESPACE_NAME FILE_NAME STATUS --------------- ---------------------------------------- --------BLOCKS USER_BLOCKS MAXBLOCKS ---------- ----------- ---------SYSTEM F:\ORADATA\HERMES\SYSTEM01.DBF AVAILABLE 29440 29432 4194302 UNDOTBS E:\ORADATA\HERMES\UNDOTBS01.DBF AVAILABLE 20480 20472 131072 SYSAUX E:\ORADATA\HERMES\SYSAUX01.DBF AVAILABLE 14080 14072 4194302 DEFTBS E:\ORADATA\HERMES\DEFTBS01.DBF AVAILABLE 6400 6392 64000 DATA F:\ORADATA\HERMES\DATA01.DBF AVAILABLE 64000 62720 102400 INDX E:\ORADATA\HERMES\INDX01.DBF AVAILABLE 64000 63992 102400 DATA F:\ORADATA\HERMES\DATA02.DBF AVAILABLE 25600 24320 64000 JE_SUIS_GROS E:\ORADATA\HERMES\JE_SUIS_GROS.DBF AVAILABLE 128 112 0 TEMP F:\ORADATA\HERMES\TEMP01.DBF AVAILABLE 12800 12672 131072 V$TABLESPACE TS# Numrodutablespace. NAME Nomdutablespace. BIGFILE IndiquesiletablespaceestuntablespaceBIGFILE (YESouNO). V$DATAFILEetV$TEMPFILE TS# Numrodutablespaceauquellefichierdedonneappartient. FILE# Identifiantdufichierdedonnes.
ENI Editions - All rights reserved - Algeria Educ - 3-

AUT ---

YES YES YES YES YES YES YES NO YES

openmirrors.com

NAME Nomdufichierdedonnes(chemincomplet). STATUS Statutdufichierdedonnes(OFFLINE,ONLINE,SYSTEMouRECOVER). ENABLED Disponibilitdufichierdedonnes(DISABLED,READ ONLY,READ WRITE). BYTES Tailledufichierenoctets. CREATE_BYTES Tailledufichiersacrationenoctets. BLOCKS TailledufichierenblocsOracle. BLOCK_SIZE Tailledeblocdufichierdedonnes. CREATION_TIME Dateetheuredecrationdufichier. CHECKPOINT_CHANGE# NumroSCNdudernierpointdereprise(nexistepasdansV$TEMPFILE). CHECKPOINT_TIME Dateetheuredudernierpointdereprise(nexistepasdansV$TEMPFILE). Exemple : SQL> SELECT file#,name,status,enabled,checkpoint_change# 2 FROM v$datafile ; FILE# NAME STATUS ENABLED CHECKPOINT ----- ----------------------------------- ------- ---------- ---------1 F:\ORADATA\HERMES\SYSTEM01.DBF SYSTEM READ WRITE 421362 2 E:\ORADATA\HERMES\UNDOTBS01.DBF ONLINE READ WRITE 421362 3 E:\ORADATA\HERMES\SYSAUX01.DBF ONLINE READ WRITE 421362 4 E:\ORADATA\HERMES\DEFTBS01.DBF ONLINE READ WRITE 421362 5 F:\ORADATA\HERMES\DATA01.DBF ONLINE READ WRITE 421362 6 E:\ORADATA\HERMES\INDX01.DBF ONLINE READ WRITE 421362 8 F:\ORADATA\HERMES\DATA02.DBF ONLINE READ WRITE 421362 9 E:\ORADATA\HERMES\JE_SUIS_GROS.DBF ONLINE READ WRITE 421362 DBA_TABLESPACE_GROUPS GROUP_NAME Nomdugroupe. TABLESPACE_NAME

- 4-

ENI Editions - All rights reserved - Algeria Educ

Nomdutablespace. DATABASE_PROPERTIES PROPERTY_NAME Nomdelaproprit : DEFAULT_TBS_TYPE : typedetablespacepardfaut(SMALLFILEouBIGFILE). DEFAULT_TEMP_TABLESPACE : tablespacetemporairepardfaut(peuttreungroupedetablespacestemporaires). DEFAULT_PERMANENT_TABLESPACE : tablespacepermanentpardfaut. PROPERTY_VALUE Nomdutablespace. Exemple SQL> SELECT property_name,property_value 2 FROM database_properties 3 WHERE property_name IN (DEFAULT_TEMP_TABLESPACE, 4 DEFAULT_PERMANENT_TABLESPACE, 5 DEFAULT_TBS_TYPE); PROPERTY_NAME PROPERTY_VALUE ------------------------------ ---------------DEFAULT_TEMP_TABLESPACE TEMP DEFAULT_PERMANENT_TABLESPACE DEFTBS DEFAULT_TBS_TYPE SMALLFILE

2.Supervisiondustockagedanslestablespaces
Plusieurs vues du dictionnaire de donnes permettent dobtenir des informations sur le stockage lintrieur des tablespaces :
q

DBA_FREE_SPACE : informationssurlespacedisponiblelintrieurduntablespace DBA_SEGMENTS : informationssurlessegmentsallouslintrieurduntablespace DBA_EXTENTS : informationssurlesextensionsalloueslintrieurduntablespace V$SORT_SEGMENT : supervisiondustockagedessegmentstemporaires V$SYSAUX_OCCUPANTS : informationssurlescomposantsquiutilisentdelespacedansletablespaceSYSAUX.

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs. DBA_SEGMENTS OWNER Nomdupropritairedusegment. SEGMENT_NAME Nomdusegment. SEGMENT_TYPE Typedusegment(TABLE, INDEX, ROLLBACK, TYPE2 UNDO,etc.).
ENI Editions - All rights reserved - Algeria Educ - 5-

openmirrors.com

TABLESPACE_NAME Nomdutablespacequicontientlesegment. BYTES Tailledusegmentenoctets. BLOCKS TailledusegmentenblocsOracle. EXTENTS Nombredextensionsallouesausegment. INITIAL_EXTENT Tailleinitialedusegment. Exemple : SQL> SELECT segment_name,segment_type, 2 initial_extent/1024 initial_ko,blocks,extents 3 FROM dba_segments WHERE tablespace_name=TEST; SEGMENT_NAME SEGMENT_TYPE INITIAL_KO BLOCKS EXTENTS --------------- ------------------ ---------- ---------- ---------TABLE2M TABLE 2048 256 2 TABLE200K TABLE 200 32 4 DBA_FREE_SPACE TABLESPACE_NAME Nomdutablespacequicontientlextensionlibre. FILE_ID Identifiantdufichierdedonnesquicontientlextensionlibre. BLOCK_ID Numrodupremierblocdelextensionlibre. BYTES Tailledelextensionlibreenoctets. BLOCKS TailledelextensionlibreenblocsOracle.

UntablespacequinapasdextensionlibrenapasdelignedansDBA_FREE_SPACE.

DBA_EXTENTS OWNER Nomdupropritairedusegmentauquellextensionappartient. SEGMENT_NAME Nomdusegmentauquellextensionappartient.


- 6 ENI Editions - All rights reserved - Algeria Educ

SEGMENT_TYPE Typedusegment(TABLE,INDEX,ROLLBACK, TYPE2 UNDO,etc.). TABLESPACE_NAME Nomdutablespacequicontientlextension. EXTENT_ID Numrodelextension(0pourlapremire). FILE_ID Identifiantdufichierdedonnesquicontientlextension. BLOCK_ID Numrodupremierblocdelextension. BYTES Tailledelextensionenoctets. BLOCKS TailledelextensionenblocsOracle. Encomplment,plusieursvuespossdentunecolonneTABLESPACEindiquantlenomdutablespacedestockage,par exempleDBA_INDEXESetDBA_TABLES. Exemple : SQL> SELECT block_id,extent_id,segment_name, 2 blocks,bytes/1024 taille_ko 3 FROM dba_extents WHERE tablespace_name=TEST 4 UNION 5 SELECT block_id,NULL,*** LIBRE ***, 6 blocks,bytes/1024 size_ko 7 FROM dba_free_space WHERE tablespace_name=TEST; BLOCK_ID EXTENT_ID SEGMENT_NAME BLOCKS TAILLE_KO ---------- ---------- --------------- ---------- ---------9 0 TABLE200K 8 64 17 1 TABLE200K 8 64 25 2 TABLE200K 8 64 33 3 TABLE200K 8 64 41 *** LIBRE *** 96 768 137 0 TABLE2M 128 1024 265 1 TABLE2M 128 1024 393 *** LIBRE *** 888 7104 V$SORT_SEGMENT TABLESPACE_NAME Nomdutablespace. EXTENT_SIZE Tailledesextensions. TOTAL_EXTENTS

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

Nombretotaldextensionsdanslesegment. TOTAL_BLOCKS NombretotaldeblocsOracledanslesegment. USED_EXTENTS Nombredextensionsactuellementallouesdestrisactifs. USED_BLOCKS NombretotaldeblocsOracleactuellementallousdestrisactifs. MAX_USED_SIZE Nombremaximumdextensionsutilisespartouslestris(simultanment). MAX_USED_BLOCKS Nombremaximumdeblocsutilisspartouslestris(simultanment). MAX_SORT_SIZE Nombremaximumdextensionsutilisesparuntri(leplusgrostri). MAX_SORT_BLOCKS Nombremaximumdeblocsutilissparuntri(leplusgrostri). Exemple : SQL> SELECT tablespace_name,total_blocks,used_blocks, 2 max_used_blocks,max_sort_blocks 3 FROM v$sort_segment; TABLESPACE_NAME TOTAL_BLOCKS USED_BLOCKS MAX_USED_BLOCKS MAX_SORT_BLOCKS --------------- ------------ ----------- --------------- --------------TEMP 256 0 256 64 Ilexisteaussiunevue,V$TEMPSEG_USAGE,quipeuttreutilepouridentifierlessessions(etlesrequtes)quiutilisent actuellementdelespacetemporaire. Exemple : SQL> SELECT t.username,t.tablespace,t.segtype,t.extents,t.blocks, 2 s.sql_text 3 FROM v$tempseg_usage t,v$sql s 4 WHERE t.sql_id = s.sql_id; USERNAME TABLESPACE SEGTYPE EXTENTS BLOCKS ---------- ---------- --------- ---------- ---------SQL_TEXT ----------------------------------------------------OHEU TEMP SORT 2 256 SELECT * FROM t ORDER BY c1,c2,c3 V$SYSAUX_OCCUPANTS OCCUPANT_NAME Nomducomposant. OCCUPANT_DESC Descriptionducomposant.
- 8 ENI Editions - All rights reserved - Algeria Educ

SCHEMA_NAME Nomduschmadanslequellecomposanteststock. MOVE_PROCEDURE Nomdelaprocdurepermettantdedplacerlecomposantdansunautretablespace. MOVE_PROCEDURE_DESC Descriptiondelaprocdurededplacement. SPACE_USAGE_KBYTES Espaceactuellementutilisparlecomposant(enKo). Exemple : SQL> SELECT occupant_desc,space_usage_kbytes 2 FROM v$sysaux_occupants WHERE space_usage_kbytes <0>; OCCUPANT_DESC SPACE_USAGE_KBYTES ---------------------------------------------------- -----------------LogMiner 7744 Logical Standby 1024 Transaction Layer - SCN to TIME mapping 448 PL/SQL Identifier Collection 384 Oracle Streams 1024 Analytical Workspace Object Table 1408 OLAP API History Tables 1408 Server Manageability - Automatic Workload Repository 29184 Server Manageability - Advisor Framework 7744 Server Manageability - Optimizer Statistics History 4608 Server Manageability - Other Components 5952 Enterprise Manager Repository 127424 Enterprise Manager Monitoring User 1536 Oracle Transparent Session Migration User 256 SQL Management Base Schema 1728 Automated Maintenance Tasks 320 Unified Job Scheduler 384 Dansuneinstallationdebase,sansoptionsparticulires,deuxcomposantsutilisentunespaceimportant :
q

lerfrentieldesfonctionnalitsdegestionautomatiquedelabasededonnes(SM/AWR) lerfrentielduDatabaseControl(EM).

SiuncomposantutilisebeaucoupdeplacedansletablespaceSYSAUX,ilestpossibledenvisagerdeledplacerdans un autre tablespace. Cette opration seffectue gnralement laide dune procdure dun package dont les rfrences sont donnes dans la colonne MOVE_PROCEDURE de la vue V$SYSAUX_OCCUPANTS. Certains composants ne peuventpastredplacs(parexemplelescomposantsrelatifslagestionautomatiquedelabasededonnes).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

Conventionsdcriture
Cet ouvrage utilise les conventions dcriture suivantes pour les ordres SQL, les commandes SQL*Plus et les commandesRMAN : MOT EN MAJUSCULES Motsclsdelacommande(CREATETABLE).Danslapratique,ilspeuventtresaisisindiffremmentenmajusculesou enminuscules. mot en minucules Valeurssaisir,relativeslabasededonnesoulapplication(nomdetable,nomdecolonne,etc).Danslapratique, elles peuvent tre saisies indiffremment en majuscules ou en minuscules, sauf si elles figurent entre apostrophes (danscecas,ellessontsensibleslacasse). [] Clauseoptionnelle. [,...] Laclauseprcdentepeuttrerpteplusieursfois. | Indiqueunchoixentreplusieursoptions. {} Dlimiteunelistedoptions. mot soulign Valeurpardfaut. Parailleurs,louvragefaittrssouventrfrencedesvariablesdenvironnementdusystmedexploitation.Dansce cas,lesnotationsWindowsetUnix/Linuxsontutilises :
q

Windows :%VARIABLE% Unix/Linux :$VARIABLE

Parfois,louvragefaitaussirfrencedeschemins,desnomsdefichiers,desnomsdemenusquipeuventcontenir unechanedecaractrescorrespondantunevaleurspcifiquedevotreenvironnement,quevousavezpudfinirpar exemplelorsduneinstallation.Danscecas,lachanesubstitueraveclavaleurcorrespondantvotreenvironnement estmiseenitalique,etparfoismmeentrelessignes<et>silyaambigut. Exemple :OracleServiceSID ouOracleService<SID> Etpourterminer,lternellequestion :quefautilfairedestermestechniquesenanglais ?Lestraduireoupas ?Dans les commandes, les termes techniques sont en anglais, do la ncessit de les connatre. Si vous utilisez les outils graphiquesenfranais,vousconstaterezquebeaucoupdecestermesontttraduits,cequiestparfoisdroutant (dautant que certaines traductions sont un peu "bizarres"). Dans cet ouvrage, jai donc tent de donner les correspondancessystmatiquement,maisenessayantdenepastropalourdirmonpropos.

ENI Editions - All rights reserved - Algeria Educ

- 1-

UtiliserleDatabaseControl
1.Espacedisquelogique(tablespace)
DansleDatabaseControl,cliquezsurlelienServeursurlapagedaccueilpuissurlelienEspacesdisquelogiques (cadreStockage)pouraccderlapagedegestiondestablespaces :

partirdecettepage,vouspouvezeffectuerdiversesactionssurlestablespaces :

crerunnouveautablespace(boutonCreroumenuCrercomme) supprimeruntablespace(boutonSupprimer) modifieruntablespace(boutonModifier) ajouterunfichierdedonnesuntablespace(menuAjouterunfichierdedonnes)

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

placer un tablespace en lecture seule (menu Mettre en lecture seule), en lecture criture (menu Rendre accessibleencriture),lactiver(menuMettreenligne),ledsactiver(menuMettrehorsligne).

En cliquant sur le lien du nom de tablespace, ou en cliquant sur les boutons Crer, Modifier ou Visualiser, vous arrivezsurlapagededfinitionduntablespace.

LongletGnralpermetdedfinirlenometlescaractristiquesgnralesdutablespace : modedegestion,type, statut. LongletStockagepermetdeprciserdesinformationsrelativesaustockage : gestionuniformeouautomatiquedes extensions,modedegestiondelespacedanslessegments,tailledebloc. DanslaterminologieduDatabaseControl,enfranais,un"ensembledeblocscontigus"estuneextension. Longlet Seuils permet de dfinir des seuils dalerte sur le remplissage du tablespace<, cet onglet est prsent uniquement lors de la consultation ou modification duntablespace.Pardfaut,leDatabaseControlutiliseunseuil davertissement85 %etunseuilcritique97 %.LesalertessontvisiblesurlapagedaccueilduDatabaseControl.

2.Fichierdedonnes
DansleDatabaseControl,cliquezsurlelienServeursurlapagedaccueilpuissurlelienFichiersdedonnes(cadre Stockage)pouraccderlapagedegestiondesfichiersdedonnes :

- 2-

ENI Editions - All rights reserved - Algeria Educ

partirdecettepage,vouspouvezeffectuerdiversesactionssurlesfichiersdedonnes :

ajouterunfichierdedonnesuntablespace(menuCrercomme) modifierlefichierdedonnes(boutonModifier) supprimerlefichierdedonnes(boutonSupprimer).

En cliquant sur le lien du nom du fichier de donnes, ou en cliquant sur les boutons Modifierou Visualiser, vous arrivezsurlapagededfinitiondunfichierdedonnes:

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Si vous modifiez le nom dun fichier de donnes, ou si vous le changez de rpertoire, le Database Control va simplement raliser un ALTER DATABASE RENAME FILE il ne va effectuer aucune action sur le fichier physique. Loprationchouerasilefichierdedonnesnapastaupralablerenommet/oudplac.

3.Groupedetablespacetemporaire
DansleDatabaseControl,cliquezsurlelienServeursurlapagedaccueilpuissurlelienGroupesdespacesdisque logiquestemporaires(cadreStockage)pouraccderlapagedegestiondesgroupesdetablespacestemporaires.

Pourcrerunnouveaugroupe,cliquezsurleboutonCrer vousarrivezsurlapagededfinitiondungroupe :

- 4-

ENI Editions - All rights reserved - Algeria Educ

Indiquez le nom du groupe puis cliquez sur le bouton Ajouter/Enlever pour ajouter un tablespace temporaire au nouveaugroupe. LeDatabaseControlexcuteratoutsimplementunordreSQLALTER TABLESPACE ... TABLESPACE GROUPquiaurapour effet,decrerimplicitementlegroupesilnexistaitpas.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

Problmescourantsetsolutions
Ce nest quun dbut. Nous verrons dautres problmes possibles, relatifs au stockage dans un tablespace danslechapitreGestiondestablesetdesindex(stockagedestablesetdesindex).

ORA-01652: impossible dtendre le segment temporaire deN dans le tablespace X Explication Lesegmenttemporairenarrivepasstendre(lorsduntriparexemple). Cause(s) Le segment temporaire narrive pas stendre car le tablespace dans lequel il est stock na pas suffisamment despacedisponibleetnepeutluimmestendre. Action(s) Ilfautaugmenterlespacedisponibledansletablespace : soitenluiallouantunnouveaufichierdedonnes(ALTER TABLESPACE... ADD TEMPFILE ...) soitenaugmentantlatailledunfichierdedonnesdutablespace(ALTER DATABASE TEMPFILE ... RESIZE ...) soitenautorisantunfichierdedonnesdutablespacestendreautomatiquement(ALTER DATABASE TEMPFILE ... AUTOEXTEND ON ...). En cas de besoin, la vue V$TEMPSEG_USAGE peut tre employe pour superviser en temps rels les oprations qui utilisentdelespacetemporaire. Ceproblmepeutseproduiresurtouterequtequisolliciteuntri. ORA-01630: nbre max. densembles de blocs contigus (N) atteint dans segment temp, tablespace X Explication Lesegmenttemporairenarrivepasstendre(lorsduntriparexemple). Cause(s) Le segment temporaire narrive pas stendre car il atteint son nombre maximum dextensions, dfini par le MAXEXTENTSdelaclauseDEFAULT STORAGEdutablespacedanslequelileststock.Nepeutseproduirequelorsquele tablespaceutilispourstockerlessegmentstemporairesestpermanent(SYSTEM,parexemple). Action(s) InterrogerlacolonneCONTENTSdelavueDBA_TABLESPACESpoursavoirsilexisteuntablespacetemporairedanslabase dedonnes.Sioui,laffecterauxutilisateurs(chapitreGestiondesutilisateursetdeleursdroits)et/ouledfinircomme tablespace temporaire par dfaut (ALTER DATABASE DEFAULT TEMPORARY TABLESPACE...). Si non, en crer un (CREATE TEMPORARY TABLESPACE...)etlaffecterauxutilisateurs(cf.ChapitreGestiondesutilisateursetdeleurdroits)et/oule dfinircommetablespacetemporairepardfaut.

ENI Editions - All rights reserved - Algeria Educ

- 1-

Vuedensemble
1.Dfinitions
Lorsque des modifications de donnes sont en cours, Oracle gnre des informations dannulation qui seront utilises, si ncessaire, pour annuler les modifications. Ces informations dannulationcontiennentessentiellementla valeur prcdente des donnes qui sont modifies par la transaction ("image avant", "before image" en anglais) et lidentificationdesblocsconcerns. Lesinformationsdannulationsontstockesdansdessegmentsdannulation. Ellessontprincipalementutilisespour :
q

lannulationdelatransaction(ROLLBACK) lalecturecohrente certainesfonctionnalitsdeflashback larcuprationdelabasededonnes(RECOVER).

LesegmentdannulationestunestructureutiliseparOraclepourstockertemporairementlaversionprcdentedes donnes en cours de modification dans une transaction. Si la transaction est valide (COMMIT),lespace occup sera libr si la transaction est annule (ROLLBACK), la version prcdente des donnes sera remise la place de la nouvelle. LessegmentsdannulationsontparailleursutilissparOraclepourlemcanismedelecturecohrente.Lanotionde lecturecohrentecorrespondaufaitquelesdonnesencoursdemodificationdansunetransactionnesontpasvues des autres utilisateurs tant que la transaction nest pas valide les autres utilisateurs voient les donnes telles quelles taient avant le dbut de la transaction, dans un tat cohrent visvis des transactions et des rgles de gestion. Si un utilisateur interroge une table en cours de mise jour dans une autre transaction, Oracle utilisera la valeurprcdentedesdonnes,stockedanslessegmentsdannulation,pourrpondrelarequte. Les segments dannulation sont aussi utiliss par certaines fonctionnalits de flashback qui permettent de lire (et rcuprer) les donnes telles quelles taient un instant donn dans le pass (voir chapitre Sauvegarde et rcupration). Enfin, les segments dannulation sont utiliss lors dune rcupration de la base de donnes pour annuler les modifications non valides qui avaient dj t crites dans les fichiers de donnes (voir les principes au chapitre Sauvegardeetrcupration). Les besoins en informations dannulation varient normment, en fonction de la nature de la mise jour et de la prsence ou non dindex (les valeurs prcdentes des entres dindex sont aussi stockes dans les informations dannulation). Cequilfautretenir :
q

Un INSERT est peu coteux en espace dannulation : cest normal, il ny a pas dimage avant, juste des informationsdecontrle. UnUPDATEouun DELETEestpluscoteuxenespacedannulationetdautantpluscoteuxquelimageavant (lesvaleursprcdentesdescolonnesmisesjourpourunUPDATEetlalignecompltepourunDELETE)estde tailleimportante.

2.Gestion
Avant Oracle9i, les segments dannulation devaient tre grs par le DBA. Pour dimensionner correctement les segmentsdannulation(nombreettaille),leDBAdevaitpossderuneconnaissanceassezprcisedufonctionnement de la base de donnes et des besoins de lapplication. Cette connaissance tait gnralement difficile matriser a priori,etiltaitsouventncessairederedimensionnerlessegmentsdannulationencoursdexploitation.Unmauvais dimensionnement pouvait tre lorigine derreurs (ORA-01552, ORA-01562, ORA-01555, etc.) ou de problmes de performance. Depuis Oracle9i, Oracle propose une gestion "automatique" des informations/segments dannulation, laide dun tablespacedannulation(tablespacedetypeUNDO).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Pourdesraisonsdecompatibilitascendante,ilesttoujourspossibledutiliserunegestion"manuelle"dessegments dannulation,maiscenestpasrecommandparOraclequiconseillevivementlemploidelagestionautomatique. Seulelagestionautomatiqueestprsentedanscetouvrage.Cestlemodepardfautdepuislaversion11. Dans la documentation Oracle, en anglais, cette fonctionnalit est appele Automatic Undo Management et souvent dsigneparlesigleAUM laterminologieSystemManagedUndo(SMU)estaussiutilise.

3.Structure
Commetouslessegments,unsegmentdannulationeststockdansuntablespaceetest,composdextensions. Ilestimportantdecomprendrequelessegmentsdannulationcorrespondentavanttoutunestructurephysique(un segment) dont les blocs sont chargs en mmoire (dans le Database Buffer Cache) en fonction des besoins si linstance a besoin despace dans le Database Buffer Cache, les blocs de segments dannulations sont susceptibles dtrecritssurdisque. Pour mmoire (chapitre Les bases de larchitecture Oracle), les modifications apportes aux blocs de segments dannulationsdansleDatabaseBufferCachesontenregistresdanslesfichiersdejournalisation.Decettemanire,en cas de restauration dinstance ou de restauration de mdia, Oracle est en mesure de reconstituer les segments dannulation et dannuler les modifications dj crites dans les fichiers de donnes, pour des transactions non validesaumomentdelincident.

4.LesegmentdannulationSYSTEM
Quel que soit le mode de gestion des informations dannulation, il existe toujours un segment dannulation nomm SYSTEM,crlorsdelacrationdelabasededonnes,etstockdansletablespaceSYSTEM. CesegmentdannulationestutilispourlestransactionssurlessegmentsstocksdansletablespaceSYSTEM. Lexistencedecesegmentdannulationpermettoujourslabasededonnesdedmarrer,mmesilesstructures adaptesaumodedegestionchoisi(tablespacedannulationdanslecasdelagestionautomatique)nexistentpas. Cependant, les structures adaptes doivent tre cres pour permettre lexcution de transactions dans dautres tablespaces que le tablespace SYSTEM. Si la base de donnes ne contient que le segment dannulationSYSTEM, une erreur(ORA-01552)seproduiralorsdelapremiretransactiondansuntablespaceautrequeletablespaceSYSTEM.

5.Duredertentiondesinformationsdannulation
Lorsquunetransactionsetermine,lesinformationsdannulationlaconcernantnesontplusncessairespoureffectuer uneannulationdelatransaction(ROLLBACK).Parcontre,cesinformationspeuventencoretreutilespourunelecture cohrente. Eneffet,unelecturecohrentelonguequiacommencavantoupendantunetransactionpeutencoreavoirbesoinde limage avant, aprs la fin de la transaction. Si cette image avant ancienne nest plus disponible (lespace a t rutilisparuneautretransaction),uneerreurORA-01555(la"fameuse"erreursnapshottooold)estretourne. De mme, une oprationflashback peut avoir besoin dinformations dannulationanciennes.Pourcesdeuxraisons,il estsouhaitabledeconserverlesinformationsdannulationaussilongtempsquepossibleaprslafindelatransaction. Avec la gestion automatique de lannulation, il existe une dure de conservation (rtention) des informations dannulation (undo retention period) cest la dure minimale pendant laquelle Oracle tente de conserver les informations dannulation des transactions valides, avant de rutiliser lespace. Les informations dannulation des transactionsvalidessontditesexpires(expired)siellessontplusanciennesquelapriodedeconservationactuelle, etlespacequellesoccupentpeuttrerutilispardenouvellestransactions.linverse,lesinformationsdannulation des transactions valides sont dites non expires (unexpired) si elles sont plus rcentes que la priode de conservationactuelle,etOracletentedeprserverlespacequellesoccupentpoursatisfaireleslecturescohrentes etlesoprationsflashback. En version 9, la dure de conservation des informations dannulation tait dfinie par le paramtre UNDO_RETENTION.Depuis la version 10, la dure de conservation des informations dannulation est rgle automatiquementparOracle.Deuxcasseprsentent :
q

Si le tablespace dannulation est autoextensible, Oracle rgle la dure de conservation une valeur lgrementsuprieureladuredelarequtelapluslongue.Danscecas,sileparamtreUNDO_RETENTION estdfini,ilimposeunevaleurminimumOracle. Siletablespacedannulationestdetaillefixe,Oraclergleladuredeconservationlaplusgrandevaleur

- 2-

ENI Editions - All rights reserved - Algeria Educ

possible, compte tenu de la taille du tablespace et de lactivit de la base de donnes. Dans ce cas, si le paramtreUNDO_RETENTIONestdfini,ilestignor(saufsiletablespacedannulationestdfiniaveclagarantie dertentionvoircidessous).Ilfautnoterquepourlecalcul,Oracleutiliseleseuildalerteduremplissagedu tablespace dannulation (85% par dfaut) et non 100% de la taille du tablespace. Modifier la taille du tablespacedannulationousonseuildalerteadonc,unimpactdirectsurladuredeconservation. Danslepremiercas,lerreursnapshottoooldnedoitnormalementjamaisseproduirelorsdunelecturecohrente.Par contre, une erreur est toujours possible lors dune oprationflashback dans ce cas, il faut augmenter la valeur du paramtreUNDO_RETENTIONpourconserverpluslongtempslesinformationsdannulation.Sincessaire,Oracleagrandit automatiquementletablespacedannulationpourhonorerladuredeconservation.Siunetaillemaximumestdfinie pour le tablespace et que cette taille maximum soit atteinte, Oracle est susceptible de ne plus pouvoir satisfaire la duredeconservation,etlerreursnapshottoooldpeutsurvenir. Dansledeuximecas,lerreursnapshottoooldpeutseproduiresiletablespacedannulationesttroppetitetdoncla duredeconservationtropfaible.Demme,cetteduredeconservationpeuttreinsuffisantepourlesoprations flashback. Dans les deux configurations, en cas de manque despace dans le tablespace dannulation (taille fixe trop faible ou taillemaximumatteinte),laprioritestdonnepardfautauxtransactions Oracleestalorssusceptiblederutiliser lespaceoccuppardesinformationsdannulationnonexpires,cequipeutprovoquerlapparitionderreurssnapshot tooold. Pour rsoudre ce problme, depuis la version 10, il est possible dactiver une "garantie de rtention" au niveau du tablespacedannulation.Danscecas,ilestgarantiquuneinformationdannulationneserapascrasetantquelle nest pas expire (sa dure de conservation nest pas coule). Si Oracle manque de place dans le tablespace dannulation,ilferachouerlesordresdemisesjourpourgarantirladuredertention.Laprioritestenquelque sortedonneauxlectures.

6.Fonctionnementdunsegmentdannulation
Lorsquunetransactiondmarre,unsegmentdannulationluiestautomatiquementattribuparOracle.Lessegments dannulation sont utiliss de manire concurrente par lensemble des transactions de la base de donnes. Lorsque une transaction commence utiliser un segment dannulation, elle inscrit son identifiant dans lentte du segment puisutiliselesblocsdontelleabesoindanslerestedusegment.partirdumomentounetransactionestinscrite dansunsegmentdannulation,ellenepeutpasenchangernienutiliserundeuxime.Danslamesuredupossible, Oracle sarrange pour avoir un nombre suffisants de segments dannulation afin dy rpartir les transactions (dans lidaluneseuletransactionparsegmentdannulation).Siaucunsegmentdannulationnestlibre(pasdetransaction active),Oracletenteradactiverunsegmentdannulationinactifoucreraunnouveausegmentdannulationsilnyen apas.Uneextensiondunsegmentdannulationpeutavoirtroistats :
q

active : lextensioncontientdesinformationsdannulationdaumoinsunetransactionactive. nonexpire : lextensionnestplusactivemaisellecontientdesinformationsdannulationnonexpires. expire : lextensionnestplusactiveetellecontientdesinformationsdannulationexpires.

Siunsegmentdannulationestplein,etquunetransactionaencorebesoindespacedanscesegment,Oracletentera dalloueruneextensionausegmentenrespectantlordresuivant :
q

Utilisationduneextensionexpiredusegmentdannulation. Allocationduneextensionlibre(alloueaucunsegment)dutablespacedannulation. Acquisition(transfert)duneextensionexpiredunautresegmentdannulation. Extension dun fichier de donnes du tablespace dannulation (si possible) puis allocation dune extension libre. Utilisationduneextensionnonexpiredusegmentdannulation,siletablespacedannulationnestpasdfini aveclagarantiedertention. Acquisition (transfert) dune extension non expire dun autre segment dannulation, si le tablespace dannulationnestpasdfiniaveclagarantiedertention.

Siaucuneextensionnepeuttrealloueausegment,uneerreur(ORA-30036)estgnre.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Ilfautnoterquaveclagestionautomatiquedelannulation,uneextensionexpire(voirenonexpire)dunsegment dannulation peut tre transfre un autre segment dannulation qui a besoin despace supplmentaire. Ce mcanismenexistepasaveclagestionmanuelle.Ilpermetderetarderlemomentoletablespacedannulationest agrandioulemomentouneerreurestgnre.Lesextensionsnonexpiressontrutilisesleplustardpossible poursatisfaireladuredeconservation. Un segment dannulation qui a grossi pourra rtrcir quand lactivit transactionnelle diminuera. Pour rtrcir, le segmentdannulationlibredesextensionsexpiresencommenantparlesplusanciennes.

- 4-

ENI Editions - All rights reserved - Algeria Educ

Miseenuvredelagestionautomatique
1.Principe
Pourmettreen uvrelagestionautomatiquedesinformationsdannulation,ilfaut :
q

positionner le paramtre UNDO_MANAGEMENT AUTO, et ventuellement affecter des valeurs aux paramtres UNDO_TABLESPACEetUNDO_RETENTION creraumoinsuntablespacedannulation,lorsdeladfinitiondelabasededonnes,ouultrieurement.

2.Lesparamtresdinitialisation
UNDO_MANAGEMENT Ce paramtre indique le mode de gestion souhait pour les informations dannulation. Les valeurs possibles sont AUTO(valeurpardfaut)ouMANUAL.Ceparamtreeststatique ilfautredmarrerlabasededonnespourchanger lemodedegestiondesinformationsdannulation. UNDO_TABLESPACE Ce paramtre spcifie le nom du tablespace dannulation utiliser lors du dmarrage de linstance. Le nom de nimportequeltablespacedannulationpeuttreindiqu.Pardfaut,ceparamtreestvideetlepremiertablespace dannulation trouv dans la base de donnes est utilis (voir plus loin) le paramtre UNDO_TABLESPACE est alors renseignparOracle.Ceparamtreestdynamique. Le paramtre UNDO_TABLESPACE est surtout intressant si la base de donnes dispose de plusieurs tablespaces dannulation il permet dindiquer le nom du tablespace dannulation utiliser lors du dmarrage de linstance. Ce paramtreestparticulirementutileenconfigurationRealApplicationClusterspourquechaqueinstancequiouvrela basededonnesutiliseuntablespacespcifique. Enconfigurationstandard,ilestpluttraredavoirplusieurstablespacesdannulationdanslabasededonnes,sauf silabasededonnesadesbesoinsspcifiquesdesmomentsparticuliersdesonfonctionnement.Danscecas,le paramtre peut tre utilis pour indiquer le tablespace dannulation utiliser au dmarrage de linstance. Ultrieurement,enmodifiantdynamiquementlavaleurdeceparamtre(ALTER SYSTEM),ilserapossibledechanger detablespacedannulationactifsansredmarrerlabasededonnes. UNDO_RETENTION Ce paramtre spcifie, en secondes, la dure de rtention des <informations dannulation dans les segments dannulation.Lavaleurdoittrecompriseentre0et2^321(plusde49 000jours) lavaleurpardfautestde900 (soit15minutes).Ceparamtreestdynamique. Commeindiquprcdemment,depuislaversion10,laduredertentiondesinformationsdannulationestrgle automatiquement par Oracle. Si le tablespace dannulation est de taille fixe, ce paramtre est ignor (sauf si le tablespacedannulationestdfiniaveclagarantiedertention) siletablespacedannulationestautoextensible, ce paramtre spcifie une limite infrieure pour la dure de rtention des informations dannulation. La dure de rtentionactuellementutilisepeuttreconsultedanslacolonneTUNED_ UNDORETENTIONdelavueV$UNDOSTAT. Aveclerglageautomatiquedeladuredertention,dfinirceparamtreneprsenterellementunintrtquesi voussouhaitezutiliserlesfonctionnalitsdeflashbackousiletablespacedannulationestdfiniaveclagarantiede rtention. Parexemple,sivoussouhaitezpouvoirinterrogerlesdonnestellesquellestaient24heuresplusttlaidedune requteflashback,vousdevezpositionnerleparamtreUNDO_RETENTIONaumoins86400(secondes)etprvoirde lespacedansletablespacedannulation. En cas de ncessit, le paramtre UNDO_RETENTION peut tre modifi dynamiquement (pas besoin de redmarrer la basededonnes).

3.Dmarragedelabasededonnesenmodeautomatique
Si le paramtreUNDO_TABLESPACE est dfini, le tablespace indiqu est utilis. Si le tablespace nexistepas(ounest

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

pascorrectouindisponible),ledmarragechoueaveclerreurORA-01092 : ORA-01092: instance ORACLE interrompue. Dconnexion impose Lacausedelerreurestindiquedanslefichierdesalertes : ORA-30012<: tablespace dannulation xxx inexistant ou de type erron Conclusion : si le paramtre UNDO_TABLESPACE est spcifi au dmarrage de linstance, il est important que le tablespaceindiquexisteetsoitcorrect. Si le paramtre UNDO_TABLESPACE nest pas dfini ou est vide, linstance utilise le premier tablespace dannulation disponible et indique son nom dans le paramtre UNDO_ TABLESPACE. Si elle nen trouve aucun, linstance dmarre quandmmeetouvrelabasededonnes,maisuniquementaveclesegmentdannulationSYSTEM.Danscecas,lors delapremiretransactionportantsurunsegmentstockdansuntablespaceautrequeletablespaceSYSTEM,vous obtiendrezlerreurORA-01552 : ORA-01552: imposs util. segment dannul. systme pour le tablespace non syst. DATA Conclusion : engestionautomatique,noubliezpasdecreruntablespacedannulation.

- 2-

ENI Editions - All rights reserved - Algeria Educ

Gestiondutablespacedannulation
1.Caractristiquesdutablespacedannulation
Le tablespace dannulation est obligatoirement gr localement, avec une gestion automatique des extensions (EXTENT MANAGEMENT LOCAL AUTOALLOCATE).IlpeuttreSMALLFILEouBIGFILE,etutilisernimportequelletailledebloc (pasuniquementlatailledeblocstandard).Parcontre,ilestforcmentREAD WRITE,LOGGINGetPERMANENT. Il est impossible et interdit de crer dautres segments (table, index) dans un tablespace dannulation. Plusieurs tablespaces dannulation (contenant leurs propres segments dannulation) peuvent tre crs dans la base de donnes mais seulement un est actif (utilis), un instant donn par linstance. Il est possible de changer de tablespacedannulationdynamiquement.Letablespacedannulationactifnepeutpastredsactiv(passOFFLINE) ousupprim.

2.Fonctionnementdutablespacedannulation
Dansuntablespacedannulation,dessegmentsdannulationsontautomatiquementcrsetgrsparOracle(etpar lui seul). Ils sont nomms sous la forme_SYSSMU*, et dimensionns (nombre et taille) automatiquement en fonction desbesoins. Enfonctiondesbesoins,lessegmentsdannulationstocksdansletablespacedannulationactuellementactifsont automatiquement activs. Oracle cre automatiquement de nouveaux segments dannulation dans le tablespace dannulation actif, sil le juge ncessaire. Les segments dannulation ainsi crs ne sont pas supprims si Oracle estime ne plus en avoir besoin (baisse de lactivit transactionnelle), il les passe OFFLINE. Si linstance en a de nouveaubesoinultrieurement,ellelesrepasseraONLINE. Tenter de grer directement les segments dannulation (ajout, suppression, activation, dsactivation, dimensionnement,etc.)estsanseffet.Oracleneretournepasderreurmaisnefaitrien.Detoutefaon,pourquoile fairepuisquetoutestautomatique. En version 9, Oracle retournait une erreur si une opration interdite tait tente. Il tait possible de faire disparatre ces erreurs en mettant le paramtre UNDO_SUPPRESS_ ERRORS TRUE. Depuis la version 10, ce paramtrenexisteplusettoutsepassecommesiltaitTRUE.

3.Crationduntablespacedannulation
Vous pouvez crer le tablespace dannulation lors de la cration de la base de donnes grce la clause UNDO TABLESPACEdelordreSQLCREATE DATABASE. Syntaxe [ BIGFILE | SMALLFILE ] UNDO TABLESPACE nom [ DATAFILE spcification_fichier [,...] ] Exemple : SMALLFILE UNDO TABLESPACE undotbs DATAFILE e:\oradata\hermes\undotbs01.dbf SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 1024M SiunnomatindiqudansleparamtredinitialisationUNDO_TABLESPACE,utilisezlemmenomdanslaclauseUNDO TABLESPACE. Autrement, la base sera bien cre avec le tablespace spcifi dans la clause UNDO TABLESPACE, mais Oracleretournerauneerreurlouverturedelabase(voirlasectionMiseen uvredelagestionautomatique). Si le paramtre dinitialisation UNDO_MANAGEMENT est positionn AUTO et que la clause UNDO TABLESPACE nest pas prsente, Oracle cre un tablespace dannulation par dfaut, nomm SYS_UNDOTBS, avec un fichier de donnes de 10 Mo,positionnenAUTOEXTEND. VouspouvezcrerletablespacedannulationaprsladfinitiondelabasededonnesgrcelordreSQLCREATE UNDO TABLESPACE. Syntaxe

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

CREATE [ BIGFILE | SMALLFILE ] UNDO TABLESPACE nom DATAFILE spcification_fichier_data [,...] [ RETENTION GUARANTEE | NOGUARANTEE ] [ BLOCKSIZE valeur [K] ] ; Exemple(iciutilisationduntablespaceBIGFILE) : CREATE BIGFILE UNDO TABLESPACE bigundotbs DATAFILE e:\oradata\hermes\bigundotbs.dbf SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE 1024G RETENTION GUARANTEE ; Les options des deux syntaxes ont la mme signification que les options de mme nom de lordre SQL CREATE TABLESPACE(voirlasectionTablespacepermanentduchapitreGestiondestablespacesetdesfichiersdedonnes). Danslesdeuxcas,laclauseEXTENT MANAGEMENTnestpasutile.Ellepeuttreindique,maislaseulevaleurautorise est EXTENT MANAGEMENT LOCAL AUTOALLOCATE : le tablespace dannulation est forcment gr localement, avec une gestionautomatiquedesextensions. LaclauseRETENTIONindiquesilartentionestgarantie(GUARANTEE)ounon(NOGUARANTEE) NOGUARANTEEestloption pardfaut.UtilisezloptionGUARANTEEenconnaissancedecause : encasdeproblmedespace,Oracleferachouer les mises jour pour garantir la dure de rtention des informations dannulation.Loption GUARANTEE est gnralement utilise en conjonction avec les fonctionnalits de flashback elle permet de garantir la capacit interroger les donnes telles quelles taient tout instant dans le pass, dans la limite du paramtre UNDO_RETENTION. Siladuredertentionestleveetquilyauneforteactivitdemisejoursurlabasededonnes,lessegments dannulation vont grossir. Il est donc trs important de dimensionner en consquence le tablespace dannulation et/ou de lui permettre de grossir en cas de besoin (clause AUTOEXTEND ON sur un des fichiers de donnes du tablespace).

4.Changementdetablespacedannulationactif
Silabasedisposedeplusieurstablespacesdannulation,ilestpossibledechangerdetablespaceactifenmodifiant lavaleurduparamtreUNDO_TABLESPACE(paramtredynamique). Syntaxe ALTER SYSTEM SET UNDO_TABLESPACE = nom [ clause_SCOPE ]; Silamodificationestimmdiate(SCOPE = MEMORYou BOTH),nomdoittrelenomdun tablespace dannulationvalide (doit treONLINE notamment). Si la modification est diffre (SCOPE = SPFILE),aucunevrificationnest faite sur le nomindiqu,maisuntablespacedannulationportantcenomdevraexisterlorsduprochainredmarrage(souspeine derreurORA-01092,voirlasectionMiseen uvredelagestionautomatique). Si nomestunechanevide(), le tablespace dannulation courant est dsactiv mais aucun nest activ la place. Cette situation, normalement temporaire, peut tre utilise pour effectuer des oprations dadministration sur le tablespacedannulation(voirplusloin). Lorsdunchangementdetablespacedannulationactif,lessegmentsdannulationstocksdanslancientablespace dannulation sont dsactivs (passs OFFLINE). Si un des segments dannulation est utilis par des transactions actives,ilnestpasimmdiatementpassOFFLINEmaismisPENDING OFFLINE(vueV$ROLLSTAT) ilnestplusutilisable pourdenouvellestransactionsetilpasseradfinitivementOFFLINElorsquilnecontiendraplusdetransactionactive. Lessegmentsdannulationstocksdanslenouveautablespacedannulationsontactivs(passsONLINE). Lancien tablespace reste ONLINE ce sont les segments dannulation quil contient qui sont OFFLINE. Il nest simplementplusletablespaceactifpourlannulation(dfiniparleparamtreUNDO_TABLESPACE).Ilpeuttredsactiv (passOFFLINE)sincessaire. Un tablespace dannulation actif ou un tablespace dannulation qui a des segments dannulation PENDING OFFLINEnepeuttrenisupprim,nidsactiv(passOFFLINE).

5.Modificationduntablespacedannulation
Le tablespace dannulation peut tre modifi avec les ordres SQL habituels ALTER TABLESPACE ou ALTER DATABASE

- 2-

ENI Editions - All rights reserved - Algeria Educ

(pourlagestiondesfichiersdedonnes). Encomplment,vouspouvezmodifierlaclauseRETENTION : ALTER TABLESPACE nom_tablespace RETENTION GUARANTEE | NOGUARANTEE ; UntablespacedannulationactifouuntablespacedannulationquiadessegmentsdannulationPENDING OFFLINEne peutpastredsactiv(passOFFLINE). Un tablespace dannulation peut tre pass OFFLINE mme sil contient des informations dannulation qui nontpasencoreexpires(visvisdelavaleurduparamtreUNDO_RETENTION),celammesiletablespace dannulationatdfiniaveclaclauseRETENTION GUARANTEE.

6.Suppressionduntablespacedannulation
LasuppressionduntablespacedannulationseffectueaveclordreSQLhabituelDROP TABLESPACE. La clause INCLUDING CONTENTS est implicite les segments dannulation stocks dans le tablespace sont automatiquementsupprims.Parcontre,laclausedoittrementionneavecloptionAND DATAFILESpoursupprimer lesfichiersdedonnesassocis. UntablespacedannulationactifouuntablespacedannulationquiadessegmentsdannulationPENDING OFFLINEne peutpastresupprim. Untablespacedannulationpeuttresupprimmmesilcontientdesinformationsdannulationquinontpas encore expires (visvis de la valeur du paramtre UNDO_RETENTION), cela mme si le tablespace dannulationatdfiniaveclaclauseRETENTION GUARANTEE.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Trouverdesinformationssurlagestiondelannulation
1.Trouverdesinformationssurletablespacedannulation
Les vues prsentes au chapitre Gestion des tablespaces et des fichiers de donnes peuvent tre utilises pour retrouverdesinformationssurlestablespacesdannulationetleursfichiersdedonnes :
q

DBA_TABLESPACESouV$TABLESPACE : informationssurlestablespaces DBA_DATA_FILESouV$DATAFILE : informationssurlesfichiersdedonnes DBA_FREE_SPACE : informationssurlespacedisponiblelintrieurduntablespace DBA_SEGMENTS : informationssurlessegmentsallouslintrieurduntablespace DBA_EXTENTS : informationssurlesextensionsalloueslintrieurduntablespace.

En complment, la vue DBA_UNDO_EXTENTS donne plus spcifiquement des informations sur les extensions alloues danslestablespacesdannulation : DBA_UNDO_EXTENTS SEGMENT_NAME Nomdusegmentdannulationauquellextensionappartient. TABLESPACE_NAME Nomdutablespacedannulationquicontientlextension. EXTENT_ID Numrodelextension(0pourlapremire). FILE_ID Identifiantdufichierdedonnesquicontientlextension. BLOCK_ID Numrodupremierblocdelextension. BYTES Tailledelextensionenoctets. BLOCKS TailledelextensionenblocsOracle. STATUS Statut des informations dannulation stockes dans lextension, visvis des transactions : ACTIVE, EXPIRED, UNEXPIRED. Exemple : SQL> SELECT tablespace_name,segment_name,extent_id,blocks,status 2 FROM dba_undo_extents

ENI Editions - All rights reserved - Algeria Educ

- 1-

3 ORDER TABLESPACE ---------UNDOTBS UNDOTBS UNDOTBS UNDOTBS ... UNDOTBS UNDOTBS UNDOTBS UNDOTBS ...

BY tablespace_name,segment_name,extent_id; SEGMENT_NAME EXTENT_ID BLOCKS ------------------------- ---------- ---------_SYSSMU10_1216212870$ 0 8 _SYSSMU10_1216212870$ 1 8 _SYSSMU10_1216212870$ 2 128 _SYSSMU10_1216212870$ 3 128 _SYSSMU7_1216212870$ _SYSSMU7_1216212870$ _SYSSMU7_1216212870$ _SYSSMU8_1216212870$ 0 1 2 0 8 8 128 8

STATUS --------UNEXPIRED UNEXPIRED UNEXPIRED UNEXPIRED EXPIRED UNEXPIRED ACTIVE UNEXPIRED

2.Trouverdesinformationssurlessegmentsdannulation
Plusieursvuesdudictionnairepermettentdobtenirdesinformationssurlessegmentsdannulation :
q

DBA_ROLLBACK_SEGS : informationssurlessegmentsdannulation V$ROLLNAME : listedessegmentsdannulationactuellementONLINEouPENDING OFFLINE V$ROLLSTAT : statistiquessurlessegmentsdannulationactuellementONLINEouPENDING OFFLINE.

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs. DBA_ROLLBACK_SEGS SEGMENT_NAME Nomdusegmentdannulation. TABLESPACE_NAME Nomdutablespacequicontientlesegmentdannulation. SEGMENT_ID Numrodusegmentdannulation. STATUS Statutdusegmentdannulation. V$ROLLNAME USN Numrodusegmentdannulation. NAME Nomdusegmentdannulation. V$ROLLSTAT USN Numrodusegmentdannulation. EXTENTS

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

Nombredextensionsdanslesegmentdannulation. RSSIZE Tailleactuelleutile(sansleblocdentte)enoctetsdusegmentdannulation. WRITES Nombredoctetscritsdanslesegmentdannulation. HWMSIZE Plus grande taille jamais atteinte en octets par le segment dannulation (High Water Mark "ligne de plus hautes eaux"). SHRINKS Nombredefoisolesegmentdannulationartrci. WRAPS Nombre de fois o le segment dannulation a "tourn" (i.e. nombre de fois o les transactions ont pu changer dextensionsansallocationdunenouvelleextension). EXTENDS Nombredefoisolesegmentdannulationsesttendu(allocationdunenouvelleextension). AVEACTIVE Taillemoyenneactivedusegmentdannulation. STATUS Statut(ONLINEouPENDING OFFLINE). Cettevuetaittrspratiquepoursuperviserlefonctionnementdessegmentsdannulationengestionmanuelle elle prsentemoinsdintrtengestionautomatique.

3.Sedocumentersurlesinformationsdannulationetlestransactions
LavueV$UNDOSTATpermetdetrouverdesinformationssurlesinformationsdannulation.Lescolonnesintressantes delavueV$UNDOSTATsontlessuivantes : V$UNDOSTAT BEGIN_TIME Date/heurededbutdelaplage. END_TIME Date/heuredefindelaplage. UNDOBLKS Nombredeblocsdannulationutilissencumulsurlapriode. TXNCOUNT Nombredetransactionstotalessurlapriode.

ENI Editions - All rights reserved - Algeria Educ

- 3-

MAXQUERYLEN Dureensecondesdelarequtelapluslonguesurlapriode. MAXCONCURRENCY Nombremaximumdetransactionssimultanessurlapriode. TUNED_UNDORETENTION Duredertentioncomptetenudurglageautomatiqueralisparlinstance. La vue V$UNDOSTAT donne des statistiques sur les informations dannulation gnres sur les 4 derniers jours. La collecte est effectue par plages de 10 minutes la vue contient donc 576 lignes, une pour chaque plage de 10 minutessurles4derniersjours.Lapremirelignedelavuecorrespondlaplageencours(peutfairemoinsde10 minutes).Ilpeutexistermoinsdelignessilinstanceadmarrdepuismoinsde4jours.Unhistoriqueaudelde4 joursestdisponibledanslavueDBA_HIST_UNDOSTAT. Cette vue est utile pour estimer la taille du tablespace dannulation (voir la section Dimensionner le tablespace dannulation).Encomplment,lavueV$TRANSACTIONpeuttreutilisepouridentifierlestransactionscourantes. Exemple SQL> SELECT se.username,tr.start_time,tr.xidusn,tr.used_ublk, 2 sq.sql_text 3 FROM v$transaction tr,v$session se,v$sql sq 4 WHERE tr.ses_addr = se.saddr AND se.sql_id = sq.sql_id; USERNAME START_TIME XIDUSN USED_UBLK ------------------------- -------------------- ---------- ---------SQL_TEXT -------------------------------------------------------------------OHEU 07/19/08 17:24:04 5 268 DELETE FROM t

4.Dimensionnerletablespacedannulation
LavueV$UNDOSTATpeuttreutilisepourdimensionnerletablespacedannulation,etventuellementleparamtre UNDO_RETENTIONsivousavezdeserreurssnapshottooold. La quantit totale despace dannulation ncessaire pour satisfaire la dure de rtention peut tre estime par la formuleDR x QAS,DRtantladuredertentionetQASlaquantitdespacedannulationparseconde. LavaleurDRpeuttreestimeenanalysantlavaleurdelacolonneTUNED_ UNDORETENTIONdelavueV$UNDOSTAT,et ensassurantquecettevaleurestsuprieurelavaleurdelacolonneMAXQUERYLEN sicenestpaslecas,ilconvient peuttredepositionnerleparamtreUNDO_RETENTIONenconsquence. LavaleurQASpeuttreestimeenanalysantlavaleurdelacolonneUNDOBLKSdelavueV$UNDOSTAT cettecolonne donnelenombredeblocsdannulationutilisssurchaquepriodeanalyse(soitsur10minutes). SQL> SELECT 2 TO_CHAR(begin_time,DD/MM HH24:MI) begin_time, 3 TO_CHAR(end_time,DD/MM HH24:MI) end_time, 4 undoblks, 5 maxquerylen, 6 tuned_undoretention 7 FROM 8 v$undostat; BEGIN_TIME END_TIME UNDOBLKS MAXQUERYLEN TUNED_UNDORETENTION ----------- ----------- ---------- ----------- ------------------19/07 16:23 19/07 16:28 15 936 1656 19/07 16:13 19/07 16:23 37 635 1475 19/07 16:03 19/07 16:13 71 1239 2079 19/07 15:53 19/07 16:03 144 638 1479 19/07 15:43 19/07 15:53 38 1242 2082 19/07 15:33 19/07 15:43 268 641 1481 19/07 15:23 19/07 15:33 33 1244 2084

openmirrors.com

- 4-

ENI Editions - All rights reserved - Algeria Educ

19/07 15:13 19/07 15:23 40 643 19/07 15:03 19/07 15:13 31 1249 19/07 14:53 19/07 15:03 156 648 19/07 14:43 19/07 14:53 33 47 ... SQL> SELECT MAX(undoblks),MAX(tuned_undoretention) 2 FROM v$undostat; MAX(UNDOBLKS) MAX(TUNED_UNDORETENTION) ------------- ------------------------

1484 2088 1488 900

Surcetexemple,laduredertentionlapluslongueestde2261secondes. Lorsdunpicdactivit(traitementbatch ?),linstanceautilise79560blocsen10minutes,soitunpeumoinsde133 blocsparsecondes. Latailledebloctantde8Ko,laquantittotaledespacedannulationncessairepeuttreestime2261x133x 8Kosoit2,29Go.Letablespacedannulationpeuttredimensionnenconsquence,enprenantunpeudemarge (1020%).Cetteestimationestaprioriuneestimationhautequiconsidrequelepicdactivitdemisejourse produitaumomentoladuredertentionestlapluslongue(cequinestpasforcmentlecas).

ENI Editions - All rights reserved - Algeria Educ

- 5-

UtiliserleDatabaseControl
Le tablespace dannulationetsesfichiersdedonnessadministrent partir des pagesEspaces disque logiqueset Fichiersdedonnes(voirlasectionUtiliserleDatabaseControlduchapitreGestiondestablespacesetdesfichiersde donnes). Sur la page Serveur, le lien Segments dannulation (cadre Stockage) permet daccder la page de gestion des segmentsdannulationmanuels.Engestionautomatiquedessegmentsdannulation,cettepagenestdaucuneutilit. ToujourssurlapageServeur,lelienGestionautomatiquedelannulation(cadreConfigurationdebasededonnes) permetdaccderlapagedegestionautomatiquedelannulation. Lapremirepartiedelafentrevousdonnedesinformationssurlaconfigurationactuelle :

LeboutonModifierunespacedisquelogiquepermetdechangerdetablespacedannulationactif. LongletActivitdusystmeaffichedesinformationssurlactivitpassedusystme. Ladeuximepartiedelafentrevousfournitdesconseilssurlaconfiguration :

Le bouton Modifier lespace disque logique dannulation (undo tablespace) permet de modifier le tablespace dannulationactif(ajouterunfichierdedonnes,modifierlatailledunfichierdedonnes,etc.).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Le bouton Modifier la conservation pour annulation (undo) permet de modifier la valeur du paramtre UNDO_RETENTION. Lanalyseestbasesurunepriodedanalyse(pardfautlesseptderniersjours)etuneduredeconservationdes informationsdannulation.VouspouvezmodifiercesvaleursdanslecadrePriodedanalysepuiscliquersurlebouton Excuterlanalysepourmettrejourlesrsultats. Enrsultat,leconseillerproposeunetailleminimumetunetaillerecommandepourletablespacedannulation. Le lien Afficher le graphique permet dafficher un graphique qui donne une estimation de la taille du tablespace dannulation(enMo)enfonctiondeladuredeconservationdesinformationsdannulation(enminutes) :

Legraphiquemontrenotammentlespacedisquerequispourladuredertentionactuellergleautomatiquement (304Mopour31minutessurlexemplecidessus),maisaussiladuredertentionmaximalepossible("meilleurchoix possible") compte tenu de la taille maximale possible du tablespace dannulation (3371 minutes pour 1022 Mo sur lexemplecidessus). Si vous cliquez sur un point du graphique, le champ Dure (cadre Priode danalyse) et la taille minimale du tablespacedannulation(cadreRsultatsdanalyse)sontmisjourenconsquence. SivousavezmodifilechampDureducadrePriodedanalyse(manuellementouencliquantsurlegraphique),un bouton Appliquer saffiche dans la fentre. Si vous cliquez sur ce bouton, vous appliquez la nouvelle dure au paramtreUNDO_RETENTION(ALTER SYSTEM SET UNDO_RETENTION = ...). Pour les analyses, veillez utiliser une priode danalyse reprsentative de lactivit de votre base de donnes.

- 2-

ENI Editions - All rights reserved - Algeria Educ

Problmescourantsetsolutions
ORA-01552: imposs util. segment dannul. systme pour le tablespace non syst.XXXX Explication Il ny a pas de segment dannulation actif (ONLINE) autre que le segment dannulation SYSTEM (vrifiable dans V$ROLLNAME)etunetransactionconcerneletablespaceXXXX. Cause(s) La gestion automatique des segments dannulation nest pas active. La gestion automatique des segments dannulationestactivemaisilnyapasdetablespacedannulationactif. Action(s) Vrifiezsilabaseadmarrengestionautomatiquedessegmentsdannulation(paramtreUNDO_MANAGEMENT).Dansle cas contraire, redmarrez la base de donnes en activant la gestion automatique. Vrifiez sil existe un tablespace dannulation(danslavueDBA_TABLESPACES).Danslecascontraire,crezenun. ORA-30036: impossible dtendre le segment par N dans le tablespace dannulationXXXX Explication Unsegmentdannulationnarrivepasstendre. Cause(s) Le segment dannulation narrive pas stendre car le tablespace dans lequel il est stock na pas suffisamment despacedisponibleetnepeutluimmestendre. Action(s) Ilfautaugmenterlespacedisponibledansletablespace :soitenluiallouantunnouveaufichierdedonnes(ALTER TABLESPACE ... ADD DATAFILE ...) soit en augmentant la taille dun fichier de donnes du tablespace (ALTER DATABASE DATAFILE ... RESIZE ...) soit en autorisant un fichier de donnes du tablespace stendre automatiquement(ALTER DATABASE DATAFILE ... AUTOEXTEND ON ...). ORA-01555: clichs trop vieux : rollback segment no N, nomm "XXXX", trop petit Explication Cest la "fameuse" erreursnapshot too old ("clich trop vieux"). Une lecture cohrente na pas pu tre mene son terme,carellerequiertuneanciennevaleurquinestplusprsentedanslesegmentdannulation. Cause(s) LetablespacedannulationnestpasenRETENTION GUARANTEEetamanqudespace ilnapaspuhonorerladurede rtention. Action(s) Si le tablespace dannulation est trop petit par rapport la dure de rtention, augmentez sa taille (voir lerreur prcdentepourlesactionspossibles).Siletablespacedannulationestdjtrsvolumineux,vouspouvezenvisager delemettreenRETENTION GUARANTEE,aveclerisquedevoircertainesmisesjourchouer(gnralementavecune erreurORA-30036). Typiquement,ceproblmeseproduitlorsquilya,simultanmentsurunetable,uneforteactivitdemisejouretdes lectureslongues. Une autre approche pour rsoudre ce problme consiste essayer de sparer, dans le temps ou dans lespace, lactivitdemisejouretlactivitdelecture :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

dans le temps : par exemple, lancer ldition du volumineux rapport qui pose problme un moment plus propicedanslajourne dans lespace : par exemple, mettre en place un petit mcanisme de rplication et lancer ldition du volumineuxrapportquiposeproblmesurlestablesrpliques.

- 2-

ENI Editions - All rights reserved - Algeria Educ

Principes
Pourlagestiondelascurit,Oraclepermet :
q

de dfinir les utilisateurs qui peuvent se connecter la base de donnes (avec une identification par le systmedexploitationouparlabasededonnes) dedfinirdansquel(s)tablespace(s)unutilisateurpeutcrerdesobjets(ventuellementaucun) delimiterlutilisationdesressourcessystme dimposerunepolitiquedegestiondemotsdepasse(expirationpriodique,nonrutilisationavantuncertain temps,etc.) dedfinirlesdroitsdechaqueutilisateurlintrieurdelabasededonnes.

DansunebasededonnesOracle,lesdroitsdesutilisateurssontgrsaveclanotiondeprivilge. Unprivilgeestledroit :
q

dexcuterunordreSQLengnral(parexemple,crerunetable) : cestlanotiondeprivilgesystme daccderunobjetdunautreutilisateur(parexemple,mettrejourlesdonnesdelatableCLIENT) : cestla notiondeprivilgeobjet.

Les privilges peuvent tre attribus directement aux utilisateurs ou par lintermdiaire de rles. Un rleest un regroupement nomm de privilges (systmes et objets) qui peut tre attribu en tant que tel un utilisateur cet utilisateurreoitalorsautomatiquementlesprivilgescontenusdanslerle.Lesrlesfacilitentlagestiondesdroits. Oracle propose par ailleurs une fonctionnalit daudit qui permet de tracer lactivit des utilisateurs dans la base de donnes.Pourensavoirplus,vouspouvezconsulterladocumentationOracleDatabaseSecurityGuide.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Creretmodifierlesutilisateurs
1.Modedidentificationdelutilisateur
Un utilisateur peut tre identifi par Oracle ou par le systme dexploitation. Les deux modes didentification sont utilisablessimultanmentdanslammebasededonnes.

a.IdentificationparOracle
Lutilisateur se connecte la base en saisissant un nom et un mot de passe. Oracle vrifie le nom et le mot de passedelutilisateur. SQL> CONNECT oheu/rx239$ Connect. LesfonctionnalitsdegestiondesmotsdepasseproposesparOraclesontutilisables.

b.Identificationparlesystmedexploitation
Lutilisateurseconnectelabasesanssaisirdenomnidemotdepasse. SQL> CONNECT / Connect. Oraclenevrifiepaslemotdepassemaiscontrlesimplementquelenomdelutilisateur,auniveaudusystme dexploitation,correspondunnomdutilisateurdanslabasededonnes.Lidentificationinitialeatralisepar lesystmedexploitation. LesfonctionnalitsdegestiondesmotsdepasseproposesparOraclenesontpasutilisables(cenestpasOracle quigrelemotdepasse). Pourfairelelienentrelenomdelutilisateurdanslesystmedexploitationetlenomdelutilisateurdanslabase dedonnes,OracleutiliseunprfixedfiniparleparamtreOS_AUTHENT_PREFIX(pardfautgalOPS$). Parexemple,lutilisateurayantpournomvdepauniveaudusystmedexploitationpourraseconnecterlabase parunCONNECT /uniquementsilexisteuncompteOracleops$vdep. Sur plateforme Windows, le nom de domaine, ou dfaut, le nom de la machine, fait partie du nom de lutilisateur : SRVWINORA\VDEP par exemple. Cest ce nom complet qui doit tre prfix pour constituer le nom du compteOracle(letoutenmajuscules) :OPS$SRVWINORA\VDEPparexemple. Leprfixepeuttregalunechanevide(OS_AUTHENT_PREFIX = "") danscecas,lenomdelutilisateurauniveau dusystmedexploitationetlenomdelutilisateurdansOraclesontidentiques. LeparamtreREMOTE_OS_AUTHENTpeut,deplus,trepositionnTRUEpourindiquersilesutilisateursdistantssont identifiablesparcettemthode(FALSEpourinterdire,valeurpardfaut).MettreleparamtreREMOTE_OS_AUTHENT TRUEpeuttredangereuxsilerseaunestpasscuris.Ceparamtreestdprcienversion11.

2.Crationdunutilisateur
LordreSQLCREATE USERpermetdecrerunnouvelutilisateur. Syntaxe CREATE USER nom IDENTIFIED { BY mot_de_passe | EXTERNALLY } [ DEFAULT TABLESPACE nom_tablespace ] [ TEMPORARY TABLESPACE nom_tablespace ] [ QUOTA { valeur [K|M] | UNLIMITED } ON nom_tablespace [,...] ] [ PROFILE nom_profil ] [ PASSWORD EXPIRE ] [ ACCOUNT { LOCK | UNLOCK } ] ; Exemple :

ENI Editions - All rights reserved - Algeria Educ

- 1-

UtilisateuridentifiparlOSavecuniquementlesclausesobligatoires

CREATE USER "OPS$SRVWINORA\VDEP" IDENTIFIED EXTERNALLY;


q

UtilisateuridentifiparOracleavecdesclausessupplmentaires

CREATE USER oheu IDENTIFIED BY tempo DEFAULT TABLESPACE data QUOTA UNLIMITED ON data PASSWORD EXPIRE; Notez la syntaxe particulire pour spcifier le nom de lutilisateur OPS$SRVWINORA\ VDEP : les guillemets sont ncessairescarlenomcontientdescaractresnonautoriss(barreobliqueinverse).Parlasuite,ilfaudratoujours utiliserlammesyntaxepourgrercetutilisateur. Pourquun nouvel utilisateur puisse effectivement se connecter, il faut en plus lui donner le droit de le faire, en lui attribuantleprivilgesystmeCREATE SESSION(cf. Grerlesdroits). Il est donc possible davoir des comptes pour les utilisateurs sans que ces derniers aient le droit de se connecter. Cette fonctionnalit tait intressante en version 7 puisquelle permettait soit de prparer des comptes utilisateur sans les activer tout de suite, soit dinterdire temporairement un utilisateur de se connecter sans supprimer son compte. Cette fonctionnalit peut toujours tre utilise mais il est plus simple de verrouiller/dverrouiller explicitementlecompte(ACCOUNT LOCK | UNLOCK). LesoptionsdelordreSQLCREATE USERsont : nom Nomdelutilisateur.LenomdelutilisateurdoitrespecterlesrglesdenommagedOracleprsenteslasectionLa base de donnes du chapitre Les bases de larchitecture Oracle. Si ce nest pas le cas, il faut placer le nom entre guillemets. IDENTIFIED Cette clause indique si lutilisateur est identifi par le systme dexploitation (EXTERNALLY) ou par Oracle (BY mot_de_passe). DanslecasduneidentificationparOracle,lemotdepasseinitialdelutilisateurestspcifi. Pourlemotdepasse,lesrglesdenommagedOracledoiventtrerespectes,saufsilafonctionnalitdecontrle delacomplexitdesmotsdepasseestmiseen uvre(nouveautdelaversion8 voirplusloin). Depuislaversion11,lesmotsdepassesontpardfaut,sensibleslacasse(paramtreSEC_CASE_SENSITIVE_LOGON gal TRUE par dfaut). Si vous souhaitez avoir des mots de passe non sensibles la casse, il suffit daffecter la valeurFALSE auparamtreSEC_CASE_SENSITIVE_LOGON (maiscenestpasconseillpourlascurit). DEFAULTTABLESPACE Cetteclauseindiquedansqueltablespacelessegmentsdelutilisateursontcrspardfaut(cestdiresiaucune clauseTABLESPACEnestprsentelorsdelacrationdusegment). Silaclauseestomise,letablespacepermanentpardfautdelabasededonnesestaffectlutilisateur(voirla sectionTablespacepermanentduchapitreGestiondestablespacesetdesfichiersdedonnes). Lanotiondetablespacepardfautnempchepaslutilisateurdecrerdesobjetsdansunautretablespace(silaun quota sur le tablespace en question) elle permet simplement de spcifier un tablespace par dfaut si lutilisateur omet la clause TABLESPACE lors de la cration dun segment. Cette clause prsente surtout un intrt pour les utilisateursquipeuventcrerdessegments : lesdveloppeurs,lestesteurs,plusrarementlesutilisateursfinaux. TEMPORARYTABLESPACE Cette clause indique dans quel tablespace les segments temporaires de lutilisateur sont crs (lors dun tri, par exemple). Vous pouvez indiquer le nom dun tablespace temporaire, ou le nom dun groupe de tablespaces temporaires. Silaclauseestomise,letablespacetemporairepardfautdelabasededonnesestaffectlutilisateur(voirla sectionTablespacetemporaireduchapitreGestiondestablespacesetdesfichiersdedonnes). QUOTA Cetteclauseindiquedansquel(s)tablespace(s)lutilisateurpeutcrerdesobjets,etjusququellelimite.

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

LanotiondeQUOTApermetdelimiterlespacequunutilisateurpeutemployerdansuntablespaceaveclessegments quilcre. Cettefonctionnalitneconcernequelesutilisateursquipeuventcrerdessegments,etnonlesutilisateursfinaux dun applicatif qui se contentent demployer des objets dj existants et qui appartiennent gnralement un comptedistinct(enquelquesortele"propritaire"delapplication). Pardfaut,lesutilisateursnontaucunquotasuraucuntablespace,sauflesDBAquiontunquotaillimitsurtousles tablespaces. Si un utilisateur a le droit de crer des segments, il faut lui donner explicitement un quota sur au moins un tablespace. Le fait quune clause DEFAULT TABLESPACE ait t utilise ne donne aucun quota sur le tablespace en question cesontdeuxmcanismesdiffrents. Dans la pratique, il ne faut donner des quotas quaux utilisateurs qui en ont besoin (les dveloppeurs, le compte "propritaire" de lapplication) et uniquement sur les tablespaces strictement ncessaires et suffisants. En loccurrence,ilvautmieuxviterdedonnerdesquotascesutilisateurssurletablespaceSYSTEMouletablespace SYSAUX. Lanotiondequotaestsansobjetpourletablespacetemporaireetletablespacedannulation. Siunutilisateurcherchecrerunsegmentdansuntablespacesurlequelilnapasdequotaouquiauraitpoureffet dedpasserlequotaalloucetutilisateur,uneerreurestretourne :
q

Aucunquotasurletablespace ORA-01950: pas de privilges sur le tablespace DATA

Dpassementdequotasurletablespace ORA-01536: dpassement du quota despace affect au tablespace DATA

PROFILE Cetteclauseindiqueleprofilattribulutilisateur.LanotiondeprofilestprsentelasectionUtiliserlesprofils. PASSWORDEXPIRE Cetteclausepermetdeforcerunemodificationdumotdepasselorsdelapremireconnexion(lemotdepassede lutilisateurestexpir).Cetteclauseestsansobjetsilutilisateurestidentifiparlesystmedexploitation. SilecompteestcravecloptionPASSWORD EXPIRE,lutilisateur,lorsdesapremireconnexion,serainvitchanger lemotdepassequiluiatattribuinitialement. ACCOUNT LOCK : lecompteestverrouilletlaconnexioninterdite(erreurORA-28000: compte verrouill). UNLOCK : lecomptenestpasverrouilletlaconnexionautorise(valeurpardfaut). Si le compte est cr avec loption LOCK, le compte existe mais lutilisateur ne peut pas se connecter. Lordre SQL ALTER USER pourra tre utilis plus tard pour dverrouiller le compte de lutilisateur (cf. Crer et modifier les utilisateurs).

3.Modificationdunutilisateur
LordreSQLALTER USERpermetdemodifierunutilisateur. Syntaxe ALTER USER nom [ IDENTIFIED { BY mot_de_passe | EXTERNALLY } ] [ DEFAULT TABLESPACE nom_tablespace ] [ TEMPORARY TABLESPACE nom_tablespace ] [ QUOTA { valeur [K|M] | UNLIMITED } ON nom_tablespace [,...] ] [ PROFILE nom_profil ] [ PASSWORD EXPIRE ] [ ACCOUNT { LOCK | UNLOCK } ] ;

ENI Editions - All rights reserved - Algeria Educ

- 3-

Lesclausessontlesmmesquepourlacration. Exemples :
q

Modificationdumotdepassedunutilisateur ALTER USER oheu IDENTIFIED BY tempo PASSWORD EXPIRE;

Modificationdutablespacepardfautetattributiondequotas ALTER USER oheu DEFAULT TABLESPACE test QUOTA UNLIMITED ON test QUOTA 10M ON data;

Verrouillageduncompte ALTER USER oheu ACCOUNT LOCK;

Dverrouillageduncompte ALTER USER oheu ACCOUNT UNLOCK;

Le premier exemple permet de modifier le mot de passe dun utilisateur en le forant en changer lors de sa premireconnexion cettetechniquepeuttreemployesilutilisateuraperdusonmotdepasse(leDBAnaaucun moyendeconnatrelemotdepassedesutilisateurs). Ledeuximeexemplepermetdemodifierletablespacepardfautdelutilisateuretdeluiattribuerdesquotassur deuxtablespaces. Le troisime exemple peut tre utilis pour interdire temporairement un utilisateur de se connecter. Sil est actuellementconnect,ilnestpasdconnect. Lequatrimeexemplepeuttreutilispourautoriserdenouveauunutilisateurseconnecter. Diminuerunquota,oulemettre0,nesupprimepaslesobjetsdjcrsparlutilisateur. ModifierlemotdepassedeSYSmodifielemotdepassedeSYSDBAenregistrdanslefichierdemotdepasse (siunfichierdemotdepasseestutilis).

4.Suppressiondunutilisateur
LordreSQLDROP USERpermetdesupprimerunutilisateur. Syntaxe DROP USER nom [ CASCADE ] ; Exemple : DROP USER "OPS$SRVWINORA\VDEP" CASCADE; Si lutilisateur possde des objets, loption CASCADE doit tre prsente pour forcer la suppression pralable des objets.SilutilisateurpossdedesobjetsetqueloptionCASCADEsoitabsente,lerreurORA-01922estretourne : ORA-01922: CASCADE indiquer pour supprimer OPS$SRVWINORA\VDEP CestunordreDDL

openmirrors.com

- 4-

ENI Editions - All rights reserved - Algeria Educ

: ilnapasdeROLLBACKpossible. Unutilisateuractuellementconnectnepeutpastresupprim : ORA-01940: impossible de supprimer un utilisateur qui est connect Avant suppression dun utilisateur, il est possible dexporter les objets qui lui appartiennent ces objets pourront ultrieurementtrerimportsdansunautreschma.

5.Trouverdesinformationssurlesutilisateurs
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlesutilisateurs :
q

DBA_USERS : informationssurlesutilisateurs DBA_TS_QUOTAS : informationssurlesquotasdesutilisateurs.

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs. DBA_USERS USERNAME Nomdelutilisateur. USER_ID Identifiantdelutilisateur. PASSWORD Motdepasse(crypt)delutilisateur. ACCOUNT_STATUS Statutducompte(OPEN,LOCKED,UNLOCKED,EXPIRED,etc.). LOCK_DATE Dateduverrouillage(silecompteestverrouill). EXPIRY_DATE Datedexpirationdumotdepasse. DEFAULT_TABLESPACE Tablespacepardfautdelutilisateur. TEMPORARY_TABLESPACE Tablespacetemporairedelutilisateur. CREATED Datedecrationdelutilisateur. PROFILE Profil.

ENI Editions - All rights reserved - Algeria Educ

- 5-

DBA_TS_QUOTAS TABLESPACE_NAME Nomdutablespace. USERNAME Nomdelutilisateurquiaunquotadansletablespace. BYTES Espace,enoctets,actuellementutilisparlutilisateur. MAX_BYTES Quota,enoctets,delutilisateursurletablespace(1). BLOCKS Espace,enblocs,actuellementutilisparlutilisateur. MAX_BLOCKS Quota,enblocs,delutilisateursurletablespace(1). (1)1siquotaUNLIMITED

openmirrors.com

- 6-

ENI Editions - All rights reserved - Algeria Educ

Prsentationgnrale
1.Notionsdinstanceetdebasededonnes

UnserveurOraclecomportedeuxlmentsdistincts,linstanceetlabasededonnes. La base de donnes se compose dun ensemble de fichiers physiques qui contiennent notamment les donnes. Linstancesecomposedunestructuredemmoirepartageetdunensembledeprocessus.Cesdeuxlmentssont intimementlismaisdoiventtrebiendistingus. De manire image, il est possible de considrer que linstance reprsente une application (par exemple Microsoft Word) et la base de donnes, le document (par exemple un document Microsoft Word) pour pouvoir accder la basededonnes(lquivalentdudocumentMicrosoftWord),ilfautlouvriravecuneinstanceOracle(lquivalentde lapplicationMicrosoftWord). Une instance ne peut ouvrir quune base de donnes la fois et, dans la grande majorit des cas, une base de donnes est ouverte par une seule instance. Nanmoins, moyennant la mise en uvre de loption Real Application Clusters(RAC),unebasededonnespeuttreouverteparplusieursinstancessituessurdesn udsdistinctsdun clusterdeserveurs cetteoptionRACestintressantepourlahautedisponibilit. Unfichierdeparamtresestutilisparlinstancelorsdesondmarragepourseconfigureretfairelelienaveclabase dedonnes. En dehors des processus de linstance, il existe des processus utilisateurs correspondant lapplication utilise par lutilisateur pour se connecter la base de donnes (SQL*Plus, un progiciel, un logiciel spcifique, etc.). Dans une architectureclient/serveur,cesprocessusutilisateurssontsitussurlepostedelutilisateuretcommuniquentavecle serveur traverslerseaugrcelacoucheOracleNet(voirlechapitreOracleNetpouruneprsentationdOracle Net).

2.Labasededonnes

Unebasededonnesestconstitue :

ENI Editions - All rights reserved - Algeria Educ

- 1-

Dunoudeplusieursfichiersdedonnesquicontiennentlesdonnesproprementdites. Dauminimumunfichierdecontrlequicontientdesinformationsdecontrlesurlabasededonnes. Dauminimumdeuxgroupesdefichiersdejournalisationquienregistrenttouteslesmodificationsapportes labase.

Nous verrons ultrieurement que les fichiers de journalisation peuvent tre archivs ces fichiers de journalisation archivsnefont,proprementparler,paspartiedelabasededonnes. Chaquebasededonnesporteunnomdfinilorsdesacrationcenomestdfiniparleparamtredinitialisation DB_NAME<dufichierdeparamtres(hermesparexemple).Encomplment,lemplacementdelabasededonnessurle rseau peut tre dfini grce au paramtreDB_DOMAIN (olivier-heurtel.fr par exemple). La base de donnes peut alors tre aussi identifie par son nom global dfini par DB_NAME.DB_DOMAIN (hermes. olivier-heurtel.fr par exemple). Le rle des diffrents fichiers de la base de donnes est dcrit plus en dtail dans le titre La base de donnes.

3.Linstance

Uneinstanceestconstitue :
q

DunezonedemmoirepartageappeleSystemGlobalArea(SGA) Dunensembledeprocessusdarrireplan(backgroundprocess)ayantchacununrlebienprcis Dunensembledeprocessusserveur(serverprocess)chargsdetraiterlesrequtesdesutilisateurs.

TouteslescomposantesdelaSGAnesontpasreprsentessurleschmacidessus(cf.sectionLinstance LaSGAdanscechapitre).Demme,lalistedesprocessusdarrireplanprsentesurleschmanestpas complte(cf.sectionLinstance Lesprocessusdarrireplandanscechapitre). Parailleurs,chaqueprocessusadelammoirepriveappelePGA(ProgramGlobalArea).Plusieursinstancespeuvent tre lances simultanment sur le mme serveur dans ce cas, chaque instance a sa propre SGA et ses propres processus. Lors de ladministration, le DBA dsigne linstance sur laquelle il souhaite travailler grce la variable denvironnementORACLE_SID cest particulirement important si plusieurs instances sont lances sur le serveur. Le nom(identifiant)delinstanceestsouventdsignparletermeSID. Selon la plateforme, les processus sont effectivement des processus (process) du systme dexploitation (cest le cas des platesformes Unix en gnral) ou des threads dun unique processus (cest le cas de la plateformeWindows). LesdiffrentescomposantesdelinstancesontdcritesplusendtaildanslasectionLinstance.

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

4.Lesdiffrentescatgoriesdebasededonnes
Trs souvent, dans la documentation, Oracle fait la distinction entre les bases de donnes "transactionnelles" (ou OLTP pour OnLine Transaction Processing) et les bases de donnes "dcisionnelles" (ou DSS pour Decision Support Systems). Unebasededonnestransactionnellesecaractrisepar :
q

uneforteactivitdemisejour(INSERT/UPDATE),gnralementsouslaformedepetitestransactions unnombreplusoumoinsimportantdutilisateursconcurrents uneexigencedetempsderponsecourt.

Unebasededonnesdcisionnellesecaractrisepar :
q

uneforteactivitdinterrogation(SELECT)gnralementsurdesgrosvolumesdedonnes(cetteactivitpeut treinteractiveet/oubatch) unemisejourpriodiquesousformedebatchavecdesgrostraitementsdemisejour uneexigencedetempsderponseraisonnablementcourt.

Etpuis,ilyalesbasesdedonnes"mixtes"quisontlafoistransactionnellesetdcisionnelles,lepoidsrespectifde chaqueactivittantvariable. Beaucoupderglagesdpendentdelacatgoriedelabasededonnes,lesbasesdedonnesmixtestantlesplus difficilesrgler danscecas,ilfautparfoisfairedescompromisetdterminerdespriorits.

ENI Editions - All rights reserved - Algeria Educ

- 3-

Utiliserlesprofils
1.Prsentation
Unprofilestunensemblenommdelimitationsderessourcesquipeuttreattribuunutilisateur. Lesressourcessuivantespeuventtrelimites :
q

tempsCPUparappelet/ouparsession nombredelectureslogiquesparappelet/ouparsession nombredesessionsouvertessimultanmentparunutilisateur tempsdinactivitparsession duretotaledelasession quantitdemmoireprivedanslaSGA(configurationserveurspartagsuniquement).

Unelecturelogiquecorrespondunelecturedebloclorsdunerequte,queceblocsoitdjprsentenmmoire (dans le Database Buffer Cache) ou lu sur disque (dans ce cas, la lecture logique correspond aussi une lecture physique). Depuislaversion8,lesprofilspeuventaussitreutilisspourmettreen uvreunepolitiquedegestiondesmotsde passe. Lesfonctionnalitssuivantespeuventtremisesenoeuvre :
q

verrouillage de compte (et dure de verrouillage) audel dun certain nombre dchecs de tentative de connexion duredeviedesmotsdepasse(avecventuellementunepriodedegrce) nonrutilisationdunmotdepasseavantuncertaintempsouavantuncertainnombredechangements complexitdumotdepasse.

Leprofilnomm DEFAULTestautomatiquementcrlorsdelacrationdelabasededonnes.Ceprofilestattribu par dfaut aux utilisateurs. Par dfaut, ce profil DEFAULT nimpose aucune limite pour les ressources par contre, depuislaversion11,ceprofilcomportedeslimitespourlesmotsdepasse(voirciaprs). La limitation des ressources laide des profils noffre pas de nombreuses possibilits. Si vous souhaitez contrler plus prcisment lattribution de ressources (CPU, espace dannulation, dure dinactivit) des utilisateurs ou groupesdutilisateurs,vouspouvezutiliserleDatabase Resource Manager.Lamiseenoeuvredecettefonctionnalit seffectue grce au packageDBMS_RESOURCE_MANAGER. Pour en savoir plus, consultez la documentation Oracle DatabaseAdministratorsGuide.

2.Crationdunprofil
LordreSQLCREATE PROFILEpermetdecrerunnouveauprofil. Syntaxe CREATE PROFILE nom LIMIT [ SESSIONS_PER_USER { valeur | UNLIMITED | DEFAULT } ] [ CPU_PER_SESSION { valeur | UNLIMITED | DEFAULT } ] [ CPU_PER_CALL { valeur | UNLIMITED | DEFAULT } ] [ CONNECT_TIME { valeur | UNLIMITED | DEFAULT } ] [ IDLE_TIME { valeur | UNLIMITED | DEFAULT } ]

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

[ [ [ [ [ [ [ [ [ [ [

LOGICAL_READS_PER_SESSION { valeur | UNLIMITED | DEFAULT } ] LOGICAL_READS_PER_CALL { valeur | UNLIMITED | DEFAULT } ] COMPOSITE_LIMIT { valeur | UNLIMITED | DEFAULT } ] PRIVATE_SGA { valeur [K|M] | UNLIMITED | DEFAULT } ] FAILED_LOGIN_ATTEMPTS { valeur | UNLIMITED | DEFAULT } ] PASSWORD_LIFE_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_REUSE_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_REUSE_MAX { valeur | UNLIMITED | DEFAULT } ] PASSWORD_LOCK_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_GRACE_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_VERIFY_FUNCTION { nom_fonction | NULL | DEFAULT } ] ;

Exemple : CREATE PROFILE exploitation LIMIT SESSIONS_PER_USER 3 IDLE_TIME 30 FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LIFE_TIME 30 PASSWORD_REUSE_TIME 180 PASSWORD_LOCK_TIME UNLIMITED PASSWORD_GRACE_TIME 3 PASSWORD_VERIFY_FUNCTION verif_mdp_exploitation ; Leslimitationsderessourcessontlessuivantes : SESSIONS_PER_USER Nombredesessionssimultanes. CPU_PER_SESSION CPUtotaleparsession(1/100s). CPU_PER_CALL CPUtotaleparappel(1/100s). CONNECT_TIME Duretotaledeconnexion(minutes). IDLE_TIME Duredinactivit(minutes). LOGICAL_READS_PER_SESSION Nombredelectureslogiquesparsession. LOGICAL_READS_PER_CALL Nombredelectureslogiquesparappel. PRIVATE_SGA QuantitdemmoireprivedanslaSGA. COMPOSITE_LIMIT SommepondredeCPU_PER_SESSION,CONNECT_TIME,LOGICAL_READS_PER_SESSIONetPRIVATE_SGA. Pour la limiteCOMPOSITE_LIMIT, la vue RESOURCE_COST permet de consulter les pondrations utilises et lordre SQL ALTER RESOURCE COSTdemodifierlespondrations. Leslimitationsrelativesauxmotsdepassesontlessuivantes :
- 2 ENI Editions - All rights reserved - Algeria Educ

FAILED_LOGIN_ATTEMPTS Nombredchecsdetentativedeconnexionautorissavantverrouillageducompte,10dansleprofilDEFAULT. PASSWORD_LOCK_TIME Dureduverrouillage(jours),1dansleprofilDEFAULT. PASSWORD_LIFE_TIME Duredeviedumotdepasse(jours),180dansleprofilDEFAULT. PASSWORD_GRACE_TIME Priodedegrceaprsexpirationdumotdepasse(jours),7dansleprofilDEFAULT. PASSWORD_REUSE_TIME Nombredejourspendantlequelunmotdepassenepeutpastrerutilis. PASSWORD_REUSE_MAX Nombredechangementsdemotdepasseavantquunmotdepassepuissetrerutilis. PASSWORD_VERIFY_FUNCTION Fonctiondevrificationdelacomplexitdumotdepasse. LeslimitesPASSWORD_REUSE_TIMEetPASSWORD_REUSE_MAXnepeuventpastrespcifiessimultanment : lecontrlede larutilisationdunmotdepasseestindiqusoitparunedure,soitparunnombredechangements.Silunedes deuxlimitesaunevaleur(diffrentedeUNLIMITED),lautrelimitedoittreUNLIMITED. Pour les diffrentes limites spcifies en jours, il est possible dutiliser des nombres dcimaux reprsentant des fractionsdejour(parexemple1/24=uneheure). LalimitePASSWORD_VERIFY_FUNCTIONpermetdespcifierunefonctionPL/SQLquiserautilisepourvrifier,silemotde passesaisiparlutilisateurrespectebiencertainesrgles.UnevaleurNULLpermetdenepasutiliserdefonctionde vrification. Cette fonction doit accepter trois paramtres en entre (le nom de lutilisateur, son nouveau mot de passeetsonancienmotdepasse)etretournerunboolen. Lescriptutlpwdmg.sql(rpertoire%ORACLE_HOME%\rdbms\adminou$ORACLE_ HOME/rdbms/admin)contientunexemplede fonctiondevrificationquiestaffecteauprofilDEFAULTsilescriptestexcut. Desmotsclspeuventtreutilisspourspcifierlavaleurdunelimite :
q

UNLIMITED : aucunelimitation. DEFAULT : leparamtrehritedelavaleurduprofilnommDEFAULT.

UnelimitenonspcifiedansunprofilprendlavaleurDEFAULT.

3.Modificationdunprofil
LordreSQLALTER PROFILEpermetdemodifierunprofil. Syntaxe ALTER PROFILE nom LIMIT [ SESSIONS_PER_USER { valeur | UNLIMITED | DEFAULT } ] [ CPU_PER_SESSION { valeur | UNLIMITED | DEFAULT } ] [ CPU_PER_CALL { valeur | UNLIMITED | DEFAULT } ] [ CONNECT_TIME { valeur | UNLIMITED | DEFAULT } ] [ IDLE_TIME { valeur | UNLIMITED | DEFAULT } ]

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

[ [ [ [ [ [ [ [ [ [ [

LOGICAL_READS_PER_SESSION { valeur | UNLIMITED | DEFAULT } ] LOGICAL_READS_PER_CALL { valeur | UNLIMITED | DEFAULT } ] COMPOSITE_LIMIT { valeur | UNLIMITED | DEFAULT } ] PRIVATE_SGA { valeur [K|M] | UNLIMITED | DEFAULT } ] FAILED_LOGIN_ATTEMPTS { valeur | UNLIMITED | DEFAULT } ] PASSWORD_LIFE_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_REUSE_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_REUSE_MAX { valeur | UNLIMITED | DEFAULT } ] PASSWORD_LOCK_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_GRACE_TIME { valeur | UNLIMITED | DEFAULT } ] PASSWORD_VERIFY_FUNCTION { nom_fonction | NULL | DEFAULT } ] ;

Exemple :
q

ModificationduprofilDEFAULT

ALTER PROFILE default LIMIT SESSIONS_PER_USER 3 IDLE_TIME 30 FAILED_LOGIN_ATTEMPTS 5; -- les autres paramtres gardent la valeur par dfaut (UNLIMITED) Modificationdunautreprofil

ALTER PROFILE exploitation LIMIT SESSIONS_PER_USER 5 -- passe de 3 5 IDLE_TIME UNLIMITED -- suppression de la limite FAILED_LOGIN_ATTEMPTS DEFAULT; -- prend la valeur par dfaut (5) -- le reste est inchang LesoptionssontlesmmesquepourlordreSQLCREATE PROFILE. La modification dun profil naffecte les utilisateurs qu leur prochaine connexion elle nest pas prise en compte immdiatementpourlesutilisateursdjconnects. ModifierleprofilDEFAULTaffecteaussilesprofilsquiontdeslimitesspcifiesDEFAULT.

4.Affectationdunprofilunutilisateur
Unprofilpeuttreattribuunutilisateur :
q

lorsdelacrationdelutilisateur(CREATE USER) lorsdunemodificationdelutilisateur(ALTER USER).

Exemples : Lorsdelacrationdelutilisateur CREATE USER xgeo IDENTIFIED BY tempo TEMPORARY TABLESPACE temp PROFILE exploitation PASSWORD EXPIRE; Lorsdunemodificationdelutilisateur
q

Affectationdunprofil ALTER USER oheu PROFILE exploitation;

RaffectationduprofilDEFAULT

- 4-

ENI Editions - All rights reserved - Algeria Educ

ALTER USER oheu PROFILE DEFAULT; Laffectationdunnouveauprofildesutilisateursneprendeffetquleurprochaineconnexion. Pardfaut,unutilisateurestcravecleprofilDEFAULT.

5.Activationdelalimitationdesressources
Pardfaut,lecontrledelalimitationdesressourcesnestpasactiv.Crerdesprofilsetlesaffecterauxutilisateurs naaucuneffet. Pouractiverlecontrledelalimitationdesressources,ilfautpasserleparamtreRESOURCE_LIMITTRUE(FALSEpar dfaut) : ALTER SYSTEM SET RESOURCE_LIMIT = TRUE [ clause_SCOPE ]; Noubliezpasdutiliser la clauseSCOPE = BOTHpourrendrelamodificationpersistanteencasderedmarragedela basededonnes. LesfonctionnalitsdegestiondesmotsdepassefonctionnentmmesileparamtreRESOURCE_LIMITestFALSE.

6.Suppressiondunprofil
LordreSQLDROP PROFILEpermetdesupprimerunprofil. Syntaxe DROP PROFILE nom [ CASCADE ] ; Exemple : DROP PROFILE exploitation CASCADE; Sileprofilestattribudesutilisateurs,loptionCASCADEdoittreprsente.Sileprofilestattribudesutilisateurs etqueloptionCASCADEsoitabsente,lerreurORA-02382estretourne : ORA-02382<: Le profil EXPLOITATION a des utilisateurs, impossible deffectuer la suppression sans CASCADE Le profil DEFAULT est affect en remplacement aux utilisateurs concerns.La suppression dun profil naffecte les utilisateursquleurprochaineconnexion.LeprofilDEFAULTnepeutpastresupprim.

7.Trouverdesinformationssurlesprofils
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlesprofils :
q

DBA_USERS : informationssurlesutilisateurs,dontleprofilattribu(colonnePROFILE) DBA_PROFILES : informationssurlesprofils.

LescolonnesintressantesdelavueDBA_PROFILESsontprsentesciaprs. DBA_PROFILES PROFILE Nomduprofil. RESOURCE_NAME Nomdelaressourcecontrle.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

RESOURCE_TYPE Typedelaressourcecontrle(KERNELouPASSWORD). LIMIT Limitedelaressource.

- 6-

ENI Editions - All rights reserved - Algeria Educ

Grerlesdroits
1.Privilgesystme
a.Dfinition
UnprivilgesystmeestledroitdexcuterunordreSQLengnral,parexemplecrerunetable. ChaqueordreSQLagnralement,aumoins,unprivilgesystmeassociquiportelemmenomquelordreSQL. Parexemple,lordreSQLCREATE TABLEpossdeunprivilgesystmeassociCREATE TABLE(donneledroitdecrer unetabledanssonpropreschma). CertainsprivilgessystmereprennentlenomdelordreSQLaveclemotclANY.Danscecas,leprivilgesystme permet dexcuterlordre dans nimporte quel schma de la base de donnes. Par exemple, le privilge systme CREATE ANY TABLEdonneledroitdecrerunetabledansnimportequelschmadelabasededonnes. LorsquelordreSQLconcernnestpasrelatifauxobjetsdunschma,ilny a pas de privilgeANY(ANY veut dire dans nimporte quel schma) : par exemple, le privilge pour crer un tablespace estCREATE TABLESPACE ilny a pasdeCREATE ANY TABLESPACE(untablespacenappartientpasunschma). Lesprivilgessystmesontsourcedepouvoiretdedanger,surtoutceuxquiconcernentlagestiondesutilisateurs etdesdroits(CREATE USER,ALTER USER,DROP USER,GRANT ANY PRIVILEGE,GRANT ANY ROLE)etceuxquipermettentde supprimerdesobjets(DROP ANY TABLE,DROP TABLESPACE,etc.) lesprivilgessystmedoiventdonctreattribus avecparcimonie(notammentlesprivilgesANY). PensezquesivousdonnezleprivilgeALTER USERunutilisateur,ilpourramodifierlescomptesutilisateur (changerlesmotsdepasseparexemple),dontlevtre. Quelquesprivilgessystmeparticuliers : CREATE SESSION Donneledroitlutilisateurdeseconnecter. SELECT ANY DICTIONARY Donne le droit lutilisateurdinterroger nimportequelobjetdudictionnairededonnesdansleschma SYS.Ce privilgeestncessairepourlesutilisateursnonDBAquisouhaitentemployerleDatabaseControl. Si un utilisateur na pas le privilge CREATE SESSION, lerreur ORA-01045 est retourne lors dune tentative de connexion : ORA-01045: lutilisateur OHEU na pas le privilge CREATE SESSION ; connexion refuse LeprivilgeSELECT ANY DICTIONARYestintressantcarilpermetdedonnerunutilisateurledroitdelirelesvues DBAsanspourautanttreDBA.Enversion8ou8i,lerleSELECT_CATALOG_ROLEpeuttreutilispouratteindrele mmeobjectif cerleexistetoujoursenversion10pourdesraisonsdecompatibilitascendante.Enversion7,il fallait donner aux utilisateurs le privilge SELECT ANY TABLE, ce qui tait susceptible de poser des problmes de scuritpuisquelutilisateurpouvaitallerliredansnimportequelschma. LesprivilgessystmesontprincipalementutilisspourcontrlerlemploidesordresDDLetdonc,pluttdestins auxadministrateurs,auxdveloppeurs,aucomptepropritaireduneapplicationettrsrarementlutilisateurfinal duneapplication. Siunutilisateurnapasleprivilgencessairepourraliseruneaction,lerreurORA-01031estretourne : ORA-01031: privilges insuffisants LavueSYSTEM_PRIVILEGE_MAPdonnelalistedetouslesprivilgessystme.

b.Attributiondunprivilgesystmeunutilisateur

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

LordreSQLGRANTpermetdattribuerunprivilgesystme. Syntaxe GRANT nom_privilge [,...] TO { nom_utilisateur | PUBLIC } [,...] [ WITH ADMIN OPTION ] ; Exemple : GRANT CREATE SESSION, CREATE TABLE TO oheu; Leprivilgepeuttreattribuunutilisateuroutouslesutilisateurs(PUBLIC). LaclauseWITH ADMIN OPTIONdonneaubnficiaireledroitdetransmettreleprivilgesystme. Leprivilgeattribuestimmdiatementactif. Pourattribuerunprivilgesystme,ilfautavoirreu :
q

leprivilgeenquestionaveclaclauseWITH ADMIN OPTION ouleprivilgesystmeGRANT ANY PRIVILEGE.

Plusieurs privilges peuvent tre attribus plusieurs utilisateurs en un seul ordre. Tous les privilges systme peuvent tre attribus dun seul coup avec le mot cl ALL PRIVILEGES (GRANT ALL PRIVILEGES TO ...). Cette possibilitestmanipuleravecbeaucoupdeprcautions.

c.Rvocationdunprivilgesystmeunutilisateur
LordreSQLREVOKEpermetdervoquerunprivilgesystme. Syntaxe REVOKE nom_privilge [,...] FROM { nom_utilisateur | PUBLIC } [,...] ; Exemple : REVOKE CREATE TABLE FROM oheu; Leprivilgeestimmdiatementrvoquetnepeutplustreexerc. Pourrvoquerunprivilgesystme,ilfautavoirreu :
q

leprivilgeenquestionaveclaclauseWITH ADMIN OPTION ouleprivilgesystmeGRANT ANY PRIVILEGE.

IlnyapasdecascadedanslarvocationdunprivilgesystmequiattransmisgrcelaclauseWITH ADMIN OPTION. Si un privilge a t attribu Pierre avec loption WITH ADMIN OPTION et que Pierre laittransmisPaul, rvoquerleprivilgedePierreestsanseffetsurleprivilgetransmisparPierrePaul.LaclauseWITH ADMIN OPTION estdoncdoublementdangereuse. LordreREVOKE permet de rvoquer uniquement les privilges quunutilisateurareuendirect(nonlesprivilges quilaimplicitementviaPUBLIC).IlenestdemmepourPUBLIC : vousnepouvezpasrvoquerPUBLICunprivilge nonattribuPUBLICenpensantlenleverainsitoutlemonde. SiunprivilgeatattribuunutilisateuretPUBLIC,larvocationdelutilisateurestsanseffetsurlapossibilit pourlutilisateurdecontinuerexercerleprivilge : illepossdetoujoursviaPUBLIC. Tous les privilges systme peuvent tre rvoqus dun seul coup avec le mot cl ALL PRIVILEGES (REVOKE ALL PRIVILEGES FROM ...). SivousavezattribuunprivilgeavecloptionWITH ADMIN OPTIONetquevoussouhaitiezenlevercettepossibilit detransmission,ilfautrvoquerleprivilgeetlattribuerdenouveausansloption.

- 2-

ENI Editions - All rights reserved - Algeria Educ

d.LesprivilgessystmeSYSDBAetSYSOPER
Nous avons dj vu que les privilgesSYSDBA et SYSOPER taient ncessaires pour raliser certaines oprations dadministration(dmarrage/arrt/crationdebase). Cesprivilgespeuventtrecontrls,soitparuneappartenanceungroupeparticulierdusystmedexploitation, soitparunfichierdemotdepasse. Danslecasdelutilisationdunfichierdemotdepasse,pardfaut,seulSYSareulesprivilgesSYSDBAetSYSOPER. Si le fichier de mot de passe< est exclusivement associ la base (paramtre REMOTE_ LOGIN_PASSWORDFILE=EXCLUSIVE),ilestpossibledattribuerlunoulautredecesprivilgesdautresutilisateurs. LattributionetlarvocationseffectuentaveclesordresSQLGRANTetREVOKE. Danslapratique,ilesttrsraredattribuerlesprivilgesSYSOPERetsurtoutSYSDBA(quidonneuncontrletotalsur labase)dautresutilisateurs lecompteSYSDBA/SYSOPERhabituellementutilisestlecompteSYS(ilestdestin cela). Pour attribuer le privilge SYSDBA, il faut tre connectAS SYSDBA pour attribuer le privilge SYSOPER, il faut tre connectAS SYSDBAouAS SYSOPER. LavueV$PWFILE_USERS<permetdelisterlesutilisateursquiontreulesprivilgesSYSDBAouSYSOPER cettevueest toujoursvidesiREMOTE_LOGIN_PASSWORDFILE= NONE.

2.Privilgeobjet
a.Dfinition
Unprivilgeobjetestledroitdaccderunobjetdunautreutilisateur : parexemple,mettrejourlesdonnesde latableCLIENT. Pardfaut,seullepropritairedunobjetaledroitdyaccder.Pourquunautreutilisateurpuisseaccderlobjet, lepropritairedelobjetdoitluidonnerunprivilgeobjet. Lesprincipauxprivilgesobjetsontlessuivants : Privilge SELECT INSERT UPDATE DELETE EXECUTE Table x x x x Vue x x x x x Squence x Programme

Dansletableau,lacolonne"Programme"dsignelesprocduresetfonctionsstockesetlespackages. Cesprivilgesdonnentlesdroitssuivants : SELECT Droitdelecturedesdonnes(excutiondelordreSQLSELECT). INSERT Droitdecrationdesdonnes(excutiondelordreSQLINSERT). UPDATE Droitdemisejourdesdonnes(excutiondelordreSQLUPDATE). DELETE


ENI Editions - All rights reserved - Algeria Educ - 3-

openmirrors.com

Droitdesuppressiondesdonnes(excutiondelordreSQLDELETE). EXECUTE Droitdexcutionduprogramme(appelerlaprocdure,lafonctionoulepackagepartirdunautreprogramme). Avoirundroitsurunobjetnedispensepasdedevoirqualifierlobjetparlenomdupropritairesilonsouhaitey accder(sinon,Oraclepensequevouscherchezaccderunobjetdansvotreschma).Pourfaciliterlcriture desrequtesetrendreleschmapropritairedesobjetstransparent,ilfaututiliserdessynonymes,enloccurrence pluttdessynonymespublics. Rciproquement,lexistencedunsynonyme,mmepublic,nedonneaucundroitsurlobjetsousjacent. Lesprivilgesobjetsontdestinscontrlerlaccsdesobjetsbienidentifis.Parexemple : ledroitdecrerune commande(i.e.ledroitdefaireunINSERTdanslatableCOMMANDE),ledroitdesupprimeruneficheclient(i.e.ledroit defaireunDELETEdanslatableCLIENT). Ilssontprincipalementemployspourpermettreauxutilisateursfinauxduneapplicationdaccder,directementou viauneinterfaceutilisateur,auxobjetsdelapplicationcrsdansuncompte"propritaire"delapplication(carpar dfaut,seullepropritairedunobjetaledroitdyaccder). LemessagederreurretournparOracle,lorsquunutilisateurnapasleprivilgerequispourraliseruneactionsur unobjet,estdtermindiffremmentsilutilisateurpossdeounonaumoinsunprivilgesurlobjet :
q

Silutilisateurnaaucunprivilgesurlobjet,OracleretournelerreurORA-00942: Table ou vue inexistante. Si lutilisateur a au moins un privilge sur lobjet, Oracle retourne lerreur ORA-01031: insuffisants. privilges

Danslepremiercas,Oracleconsidrequelutilisateurnanormalementaucunmoyendesavoirquelobjetaccd existe : ilindiquedoncquelobjetnexistepas.Dansledeuximecas,Oracleconsidrequelutilisateurpeutsavoir quelobjetexiste : ilindiquedoncqueleprivilgeestinsuffisant.

b.Attributiondunprivilgeobjetunutilisateur
LordreSQLGRANTpermetdattribuerunprivilgeobjet. Syntaxe GRANT { nom_privilge[(liste_colonnes)] [,...] | ALL [PRIVILEGES] } ON [nom_schma.]nom_objet TO { nom_utilisateur | PUBLIC } [,...] [ WITH GRANT OPTION ] ; Exemple : GRANT SELECT, INSERT, UPDATE(nom,prenom) ON adherent TO oheu; Pour les privilges INSERT et UPDATE, une liste de colonnes peut tre spcifie afin de limiter le privilge aux colonnesindiques. LaclauseWITH GRANT OPTIONdonneaubnficiaireledroitdetransmettreleprivilgeobjet. LemotclALLpermetdattribuertouslesprivilges.Danslecasolutilisateurquiattribuetouslesdroitsnestpas lepropritairedelobjet,maisunutilisateurquiareu certainsprivilgessurlobjetavecledroitdelestransmettre (clauseWITH GRANT OPTION),lemotclALLdsigneuniquementtouslesprivilgesquelutilisateurareus. Leprivilgepeuttreattribuunutilisateuroutouslesutilisateurs(PUBLIC). Plusieurs privilges peuvent tre attribus plusieurs utilisateurs en un seul ordre par contre, lattribution des privilgesobjetseffectueobjetparobjet. Leprivilgeattribuestimmdiatementactif. Pourattribuerunprivilgeobjet,ilfaut :
q

trepropritairedelobjet

- 4-

ENI Editions - All rights reserved - Algeria Educ

avoirreuleprivilgeenquestionaveclaclauseWITH GRANT OPTION ouavoirreuleprivilgesystmeANY OBJECT PRIVILEGE.

UnutilisateurquiretransmetunprivilgequilareuavecloptionWITH GRANT OPTIONdoitqualifierlenomdelobjet aveclenomdupropritaire(carlobjetneluiappartientpas),saufsilexisteunsynonymesurlobjet. Certains privilges systme donnent implicitement des privilges objet sur tous les objets. Exemple : SELECT ANY TABLE. Le DBA a les privilges systme ANY indiqus prcdemment cest la raison pour laquelle il peut accder nimportequelobjetsansprivilgeobjet.Depuislaversion9,ilaaussileprivilgesystmeANY OBJECT PRIVILEGE quiluipermetdattribuerunprivilgeobjetsurnimportequelobjet,sansavoirreuleprivilgeenquestionWITH GRANT OPTION.Avantlaversion9,centaitpaspossible.

c.Rvocationdunprivilgeobjetunutilisateur
LordreSQLREVOKEpermetdervoquerunprivilgeobjet. Syntaxe REVOKE { nom_privilge [,...] | ALL [PRIVILEGES] } ON [nom_schma.]nom_objet FROM { nom_utilisateur | PUBLIC } [,...] ; Exemple : REVOKE INSERT, UPDATE ON client FROM oheu; Lordre REVOKE permet de rvoquer un utilisateur uniquement ce quil a reu en direct (pas les privilges quila implicitementviaPUBLIC).IlenestdemmepourPUBLIC : vousnepouvezpasrvoquerPUBLICunprivilgenon attribuPUBLICenpensantlenleverainsitoutlemonde. Si un privilge a t attribu un utilisateur et PUBLIC, le rvoquer lutilisateur est sans effet lutilisateur continuedexercerleprivilge : illatoujoursviaPUBLIC.Touslesprivilgesobjetpeuventtrervoqusdunseul coupaveclemotclALL(REVOKE ALL ON ... FROM ...).SivousavezattribuunprivilgeavecloptionWITH GRANT OPTIONetquevoussouhaitiezenlevercettepossibilitdetransmission,ilfautrvoquerleprivilgeetlattribuerde nouveausansloption.Leprivilgeestimmdiatementenlevetnepeutplustreexerc. Pourenleverunprivilgeobjet,ilfaut :
q

trepropritairedelobjet avoirreuleprivilgeenquestionaveclaclauseWITH GRANT OPTION ouavoirreuleprivilgesystmeANY OBJECT PRIVILEGE.

IlyacascadedanslarvocationdunprivilgeobjetquiattransmisgrcelaclauseWITH GRANT OPTION.Siun privilge a t attribu Pierre avec loption WITH GRANT OPTION et que Pierre lait transmis Paul, rvoquer le privilgedePierrervoquegalementceluidePaul.Lefonctionnementnestpaslemmequepourlesprivilges systme.

d.Privilgessurlesvuesetlesprogrammesstocks
Unutilisateurquiaundroitsurunevuenapasbesoindavoirlesdroitssurlesobjetsmanipulsparlavue. Il en est de mme par dfaut pour les programmes stocks : le programme stock sexcute avec les droits du propritaire (definer rights). Au besoin, le programme stock peut tre conu pour sexcuter avec les droits de lappelant(invokerrights). LecomportementsouhaitsedfinitlorsdelacrationduprogrammestockgrcelaclauseAUTHID. Syntaxe AUTHID { CURRENT_USER | DEFINER }

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

Lemodedefonctionnementpardfaut(droitsdupropritaire)esttrsintressantcarilpermetdutiliserlesvueset lesprogrammesstockscommecoucheintermdiairepourlaccsauxobjetsdelabasededonnes.Ilestpossible deconstruireuneapplicationdanslaquellelapartieclientenaccdejamaisdirectementauxtablesdelabasede donnesmaispassepardesvueset/oudesprogrammesstocks.Cegenredapprochepermetprincipalement :


q

de masquer la structure relle des tables et de pouvoir la faire voluer avec le minimum dimpacts sur la partiecliente dimplmenterdesrglesdegestion(contrles,calculs,scurit,etc.)ctserveur.

e.Nommerunobjetdunautreschma
Mmesiunutilisateuraunprivilgesurunobjetdunautreschma,ildoitprfixerlenomdelobjetparlenomde sonpropritairepourpouvoiryaccder : SELECT * FROM diane.adherent; Dessynonymespublicspeuventtredfinispoursimplifierlcrituredesrequtesetlesrendreindpendantesdu nomdupropritaire : CREATE PUBLIC SYNONYM adherent FOR diane.adherent; LorsquelarequteSELECT * FROM adherentestexcute,Oracleregardedaborddansleschmacourantsilexiste unobjetnommadherent.Sicestlecas,illutilise.Sicenestpaslecas,ilrechercheunsynonymepublicportantce nom.Silentrouveun,ilremplacelesynonymeparsadfinition. Depuislaversion8i, Il est aussi possible de "placer" sa session dans le schma dunautreutilisateur.Lorsquun objet est rfrenc dans un ordre SQL, Oracle regardera si un tel objet existe dans lautre schma avant de rechercherunventuelsynonymepublic. Exemple : ALTER SESSION SET CURRENT_SCHEMA = diane;

Ilfautbiennoterquelesdeuxtechniquesnedonnentpasdedroitensoi cesontjustedestechniquesde rsolutiondenom.Unefoisquelenomestrsolu,Oracleregardesilutilisateuralesprivilgesncessaires pouraccderlobjet.

f.Allerplusloinsurlagestiondesdroits
OracleproposedesfonctionnalitsdeVirtualPrivateDatabase(VPD)etdeFineGrainedAccess(FGA)quipermettent de placer des mcanismes de filtres sur les lignes des tables. Ces fonctionnalits sont dcrites dans la documentationOracleDatabaseSecurityGuide ellessontbasessurlutilisationdupackageDBMS_RLS.

3.Rle
a.Dfinition
Unrleestunregroupementnommdeprivilges(systmeetobjet)quipeuttreattribuunutilisateur.Tous les privilges regroups dans le rle sont alors simultanment attribus lutilisateur. Les rles permettent de simplifierlagestiondesdroits. Lesprincipalescaractristiquesdesrlessontlessuivantes :
q

Unrlepeuttreattribuunautrerle. Unutilisateurpeutavoirplusieursrles. Unrlenappartientpersonne.

- 6-

ENI Editions - All rights reserved - Algeria Educ

Lamiseen uvreseffectueentroistapes :
q

crationdurle attributiondesprivilges(systmeetobjet)aurle attributiondurleauxutilisateurs.

b.Crationdunrle
LordreSQLCREATE ROLEpermetdecrerunrle. Syntaxe CREATE ROLE nom [ IDENTIFIED { BY mot_de_passe | EXTERNALLY | USING nom_package} | NOT IDENTIFIED ]; Exemple : CREATE ROLE mailing; Lesoptionssont : IDENTIFIED BY mot_de_passe Indiquequunmotdepasseestncessairepouractiverlerle. IDENTIFIED EXTERNALLY Indiquequuneidentificationexterneestncessairepouractiverlerle. IDENTIFIED USING nom_package Indiquequeseullepackagepeutactiverlerle. NOT IDENTIFIED Indiquequaucuneidentificationnestncessairepouractiverlerle.Cestlavaleurpardfaut. Pourcrerunrle,ilfautavoirleprivilgesystmeCREATE ROLE. Lorsdelacrationdunrle,ilestpossibledeprciserparquelmcanismelerlepourratreactiv : unmotde passe,uneidentificationexterne(systmedexploitation)ouunpackage.Lemcanismedactivationseraprsent danscechapitre,sectionRleActivationoudsactivationdunrle. LordreSQLALTER ROLE>permetdemodifierunrle,enloccurrencelemodedidentificationpourpouvoirlactiver. Syntaxe ALTER ROLE nom [ IDENTIFIED { BY mot_de_passe | EXTERNALLY | USING nom_package} | NOT IDENTIFIED ];

c.Attributiondunprivilgeunrle
LordreSQLGRANTpermetdattribuerdesprivilgessystmeoudesprivilgesobjetunrle. Syntaxepourlesprivilgessystme GRANT nom_privilge [,...] TO nom_rle [,...] [ WITH ADMIN OPTION ] ;

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

Syntaxepourlesprivilgesobjet GRANT { nom_privilge[(liste_colonnes)] [,...] | ALL [PRIVILEGES] } ON [nom_schma.]nom_objet TO nom_rle [,...] ; Exemple : GRANT CREATE SESSION, CREATE TABLE TO mailing; GRANT SELECT, INSERT ON adherent TO mailing; Les syntaxes sont les mmes que pour lattribution directe un utilisateur, lexceptiondelaclause WITH GRANT OPTIONquinestpaspermisepourlattributiondunprivilgeobjetunrle. Lesprivilgesattribussontimmdiatementactifspourlesutilisateursconnectsquiontlerleactif.Lanotionde rle actif sera prsente un peu plus loins dans ce chapitre Grer les droits, section Rle Activation ou dsactivationdunrle. Toututilisateuraledroitdattribuerunprivilgeunrle,dumomentquilaledroitdattribuerleprivilge cesten celaquelerlenappartientpersonne.Enloccurrence,pourattribuerunprivilgesystmeunrle,ilfautavoir reuleprivilgeenquestionaveclaclauseWITH ADMIN OPTIONouavoirleprivilgesystmeGRANT ANY PRIVILEGE. Pourattribuerunprivilgeobjetunrle,ilfauttrepropritairedelobjet,avoirreuleprivilgeenquestionavec laclauseWITH GRANT OPTION,ouavoirleprivilgesystmeANY OBJECT PRIVILEGE.

d.Rvocationdunprivilgeunrle
LordreSQLREVOKEpermetdervoquerdesprivilgessystmeoudesprivilgesobjetunrle. Syntaxepourlesprivilgessystme REVOKE nom_privilge [ ,...] FROM nom_rle [,...] ; Syntaxepourlesprivilgesobjet REVOKE { nom_privilge [,...] | ALL [PRIVILEGES] } ON [nom_schma.]nom_objet FROM nom_rle [,...] ; Exemple : REVOKE CREATE TABLE FROM mailing; REVOKE UPDATE ON adherent FROM mailing; Les syntaxes sont les mmes que pour la rvocation directe un utilisateur.Dune manire gnrale, lordreSQL REVOKEnepermetdenleverune"cible"(utilisateur,rleouPUBLIC)quecequiatattribuexplicitementcette "cible". Par exemple, si un privilge a t attribu un rle, il nest pas possible de lenlever directement un utilisateurquiareulerle. Attentionaumlangeattributiondirecteetattributionunrle : siunprivilgeestattribuunrleetlerle lutilisateuretquenparallleleprivilgeestattribuendirectlutilisateur,rvoquerleprivilgedelutilisateurne lempcherapasdepouvoircontinuerlexercer(vialerle). Lesprivilgessontimmdiatementrvoqusetnepeuventplustreexercsparlesutilisateursconnectsquiont le rle actif. La notion de rle actif sera prsente un peu plus loin dans ce chapitre, section Rle Activation ou dsactivationdunrle. Toututilisateuraledroitdervoquerunprivilgedunrle,dumomentquilaledroitdervoquerleprivilge(le rle nappartient personne). En loccurrence, pour rvoquer un privilge systme dun rle, il faut avoir reu le privilge en question avec la clause WITH ADMIN OPTION ou avoir le privilge systme GRANT ANY PRIVILEGE. Pour rvoquerunprivilgeobjetdunrle,ilfauttrepropritairedelobjet,avoirreuleprivilge en questionavecla clauseWITH GRANT OPTION,ouavoirleprivilgesystmeANY OBJECT PRIVILEGE.

e.Attributiondunrleunutilisateurouunrle
LordreSQLGRANTpermetdattribuerunrleunutilisateurouunrle. Syntaxe

- 8-

ENI Editions - All rights reserved - Algeria Educ

GRANT nom_rle [,...] TO { nom_utilisateur | PUBLIC | nom_rle } [,...] [ WITH ADMIN OPTION ] ; Exemple : GRANT mailing TO oheu; Lasyntaxeestlammequepourlattributiondunprivilgesystme. Pourattribuerunrle,ilfautavoirreulerleenquestionaveclaclause WITH ADMIN OPTIONouavoirleprivilge systme GRANT ANY ROLE. Le crateur dun rle nest pas propritaire du rle mais le rle lui est attribu avec loptionWITH ADMIN OPTION ilpeutdoncattribuerlerlequilacr. Lerleattribunestpasimmdiatementactifsilutilisateurestdjconnect. LaclauseWITH ADMIN OPTIONdonneaussiledroitdemodifier(ordreSQLALTER ROLE)etdesupprimerlerle(ordre SQLDROP ROLE). Unutilisateurpeutavoirplusieursrles danscecas,lesprivilgessecumulent(ilnyapasdeprivilge"ngatif").

f.Rvocationdunrleunutilisateurouunrle
LordreSQLREVOKEpermetdervoquerunrle. Syntaxe REVOKE nom_rle [,...] FROM { nom_utilisateur | PUBLIC | nom_rle } [,...] ; Exemple : REVOKE mailing FROM oheu; Lasyntaxeestlammequepourlarvocationdunprivilgesystme.Pourenleverunrle,ilfautavoirreulerle en question avec la clauseWITH ADMIN OPTION ou avoir le privilge systmeGRANT ANY ROLE. Le crateur du rle ayantreucedernieraveclaclauseWITH ADMIN OPTION,ilpeutdoncenleverlerle. Lorsquun rle est rvoqu, les utilisateurs connects avec le rle actif peuvent continuer exercer les privilges associs,jusqulafindelasessionoujusquladsactivationdurle.

g.Suppressiondunrle
LordreSQLDROP ROLEpermetdesupprimerunrle. Syntaxe DROP ROLE nom_rle ; Exemple : DROP ROLE mailing; Poursupprimerunrle,ilfautavoirreulerleenquestionaveclaclauseWITH ADMIN OPTIONouavoirleprivilge systmeDROP ANY ROLE. Lerleestimmdiatementenlevauxutilisateurs lesprivilgesassocisnepeuventplustreexercs.

h.Activationoudsactivationdunrle
Unrleattribuunutilisateur(directementouviaunautrerle)estpardfautautomatiquementactivlorsdela connexiondelutilisateur. Si lutilisateur est connect au moment de lattribution, lactivation immdiate nest pas automatique. Lutilisateur peutactiverlerlegrcelordreSQLSET ROLE. De plus, parmi les rles attribus lutilisateur, il est possible de dfinir ceux qui sont effectivement

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

automatiquementactivslorsdelaconnexiondelutilisateur.CesontlesrlespardfautdfinisparunordreSQL ALTER USER.LutilisateurpeutensuiteactiverlesautresgrcelordreSQLSET ROLE. Utiliserplusieursrlessansquilssoienttousactifssimultanmentprsentedeuxintrts :


q

Il existe un paramtre, MAX_ENABLED_ROLES (30 par dfaut), qui limite le nombre de rles actifs simultanmentpourunutilisateur.Siunutilisateurestsusceptibledemployerunnombrederlessuprieur cettelimite,ilestpossibledendsactivercertainspourenactiverdautres. Des rles, protgs par des mots de passe, peuvent tre attribus des utilisateurs, mais inactifs par dfaut,etsansdonnerlemotdepasselutilisateur cesontalorslesapplicationsquiactiventlesrles dont elles ont besoin, en fournissant le mot de passe. De cette manire, en dehors de lapplication en question,lutilisateurnaaucunmoyendactiveretdutiliserlerle(etventuellementdefairedeserreurs).

LordreSQLALTER USERpermetdedfinirlesrlespardfautdunutilisateur. Syntaxe ALTER USER nom_utilisateur DEFAULT ROLE { nom_rle [,...] | ALL [ EXCEPT nom_rle [,...] ] | NONE } ; Exemple : ALTER USER oheu DEFAULT ROLE mailing; ALTER USER vdep DEFAULT ROLE ALL EXCEPT mailing; Lesoptionssont : ALL Touslesrlesattribuslutilisateursontactivspardfaut.LaclauseEXCEPTpermetdenenlevercertains. NONE Aucundesrlesattribuslutilisateurnestactivpardfaut. CetordreSQLannuleetremplacelasituationactuelledesrlespardfaut ellenajoutepasounenlvepasles rleslalisteactuelle.Lesrlesattribusunutilisateurquiadjdesrlespardfaut,nesontpasdfinispar dfaut. LordreSQLSET ROLEpermetdactiveroudedsactiverunrle. Syntaxe SET ROLE { nom_rle [ IDENTIFIED BY mot_de_passe ] [,...] | ALL [ EXCEPT nom_rle [,...] ] | NONE } ; Exemple : -- Lutilisateur VDEP active le rle MAILING SET ROLE mailing; Lesoptionssont : IDENTIFIED BY Donnelemotdepassequipermetdactiverlerle. ALL Touslesrlesattribuslutilisateursontactivs.LaclauseEXCEPTpermetdenenlevercertains. NONE Aucundesrlesattribuslutilisateurnestactiv(dsactivedonctouslesrles).

- 10 -

ENI Editions - All rights reserved - Algeria Educ

Lesrlesdoiventavoirpralablementtattribusunutilisateur ilnestdoncpaspossibledesautoattribuerun rleenlactivant(heureusement). CetordreSQLannuleetremplacelesrlesactuellementactifs(pasdajout). LoptionALLnepeutpastreutilisesurdesrlesprotgsparunmotdepasse. Les rles dfinis avec loption IDENTIFIED USING nom_package ne peuvent tre activs de la sorte qu partir du packagespcifi. La procdure SET_ROLE du package DBMS_SESSION permet de faire la mme chose (voir la documentation "PL/SQL PackagesandTypesReference").

i.Limitationdesrles
Pourdvelopperunobjet(unevueouunprogrammestock)quiutilisedesobjetsdunautreschma,ilfautavoir reudesdroitsendirectsurlesobjets,pastraversunrle. Par ailleurs, lors de lexcution dun programme stock, les rles activs de lutilisateur appelant ne sont pris en compte que si le programme stock est conus pour sexcuter avec les droits de lappelant (clause AUTHID CURRENT_USER).

j.Rlesprdfinis
Oracleproposeenstandardungrandnombrederleprdfinis,parmilesquels : CONNECT Autoriselaconnexion(contientuniquementleprivilgesystmeCREATE SESSION). RESOURCE Permetlacrationdesprincipauxobjetsdunschma(table,vue...). DBA DonnetouslesprivilgessystmeavecloptionWITH ADMIN OPTION. MGMT_USER PermetdutiliserleDatabaseControlentantquadministrateur. Les vues DBA_SYS_PRIVS et DBA_TAB_PRIVS permettent de connatre les privilges regroups dans ces rles prdfinis.OracleprconisedenepasutiliserlesrlesprdfinisCONNECT,RESOURCEetDBAmaisdecrersespropres rles.Depuis la version 10.2 (10 g Release 2), le rle CONNECT ne contient plus que le privilge systme CREATE SESSION. Avant cette version, ce rle contenait dautres privilges qui permettaient de crer les principaux objets dunschma(table,vue,etc.)oudemodifierlasession(privilgesystmeALTER SESSION).Depuislaversion10.2,si vousavezbesoindattribuerdetelsdroitsunutilisateur,lerleCONNECTnesuffitpas parcontre,vouspouvez attribuercesdroitsdirectementlutilisateurouviaunrlespcifiquequevouscrez.

4.Trouverdesinformationssurlesdroits
a.Privilgessystme
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlesprivilgessystme :
q

DBA_SYS_PRIVS : privilgessystmeattribusauxutilisateurs(ouauxrles) SESSION_PRIVS : privilges systme actuellement actifs dans la session (obtenus directement ou via un rle) SYSTEM_PRIVILEGE_MAP : listedetouslesprivilgessystme.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 11 -

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs. DBA_SYS_PRIVS GRANTEE Nomdelutilisateuroudurlequiareuleprivilgesystme. PRIVILEGE Privilgesystmereu. ADMIN_OPTION PrivilgereuaveclaclauseWITH ADMIN OPTION(YESouNO). SESSION_PRIVS PRIVILEGE Nomduprivilge. SYSTEM_PRIVILEGE_MAP NAME Nomduprivilge.

b.Privilgesobjet
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlesprivilgesobjet :
q

DBA_TAB_PRIVS : privilgesobjetattribusauxutilisateurs(ouauxrles)surlatotalitdelobjet DBA_COL_PRIVS: privilges objet attribus aux utilisateurs (ou aux rles) sur certaines colonnes de lobjet uniquement TABLE_PRIVILEGE_MAP : listedetouslesprivilgesobjet.

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs. DBA_TAB_PRIVS GRANTEE Nomdelutilisateuroudurlequiareuleprivilgeobjet. OWNER Nomdelutilisateurpropritairedelobjet. TABLE_NAME Nomdelobjet(pasforcmentunetable,malgrlenom). GRANTOR Nomdelutilisateurquiaattribuleprivilge. PRIVILEGE

- 12 -

ENI Editions - All rights reserved - Algeria Educ

Privilgeobjetreu. GRANTABLE PrivilgereuaveclaclauseWITH GRANT OPTION(YESouNO). DBA_COL_PRIVS GRANTEE Nomdelutilisateuroudurlequiareuleprivilgeobjet. OWNER Nomdelutilisateurpropritairedelobjet. TABLE_NAME Nomdelobjet(tableouvue). COLUMN_NAME Nomdelacolonne. GRANTOR Nomdelutilisateurquiaattribuleprivilge. PRIVILEGE Privilgeobjetreu. GRANTABLE PrivilgereuaveclaclauseWITH GRANT OPTION(YESouNO). TABLE_PRIVILEGE_MAP NAME Nomduprivilge.

c.Rles
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlesrles :
q

DBA_ROLES : listedesrlesexistantdanslabase DBA_APPLICATION_ROLES : descriptiondesrlesayantuneactivationparunpackage DBA_SYS_PRIVS : privilgessystmeattribusauxrles(ouauxutilisateurs),voirprcdemment DBA_TAB_PRIVS : privilges objet attribus aux rles (ou aux utilisateurs) sur la totalit de lobjet, voir prcdemment DBA_COL_PRIVS : privilges objet attribus aux rles (ou aux utilisateurs) sur certaines colonnes de lobjet uniquement,voirprcdemment DBA_ROLE_PRIVS : rlesattribusauxutilisateursouauxrles

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 13 -

ROLE_SYS_PRIVS : privilgessystmeattribusauxrles(uniquementpourlesrlesauxquelslutilisateura accs) ROLE_TAB_PRIVS : privilges objet attribus aux rles (uniquement pour les rles auxquels lutilisateur a accs) ROLE_ROLE_PRIVS : rles attribus dautres rles (uniquement pour les rles auxquels lutilisateur a accs) SESSION_ROLES : rlesactuellementactifsdanslasession.

Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs. DBA_ROLES ROLE Nomdurle. PASSWORD_REQUIRED Indiquesiunmotdepasseestncessairepouractiverlerle(YES,NOouGLOBAL). DBA_APPLICATION_ROLES ROLE Nomdurle. SCHEMA Schmadupackageutilispourlactivation. PACKAGE Nomdupackageutilispourlactivation. DBA_ROLE_PRIVS GRANTEE Nomdelutilisateuroudurlequiareulerle. GRANTED_ROLE Nomdurlereu. ADMIN_OPTION RlereuaveclaclauseWITH ADMIN OPTION(YESouNO). ROLE_SYS_PRIVS ROLE Nomdurle. PRIVILEGE Nomduprivilgesystmereuvialerle.
- 14 ENI Editions - All rights reserved - Algeria Educ

ADMIN_OPTION PrivilgereuaveclaclauseWITH ADMIN OPTION(YESouNO). ROLE_TAB_PRIVS ROLE Nomdurle. OWNER Nomdelutilisateurpropritairedelobjet. TABLE_NAME Nomdelobjet(pasforcmentunetable,malgrlenom). COLUMN_NAME Nomdelacolonne(siapplicable). PRIVILEGE Privilgeobjetreu. ROLE_ROLE_PRIVS ROLE Nomdurle. GRANTED_ROLE Nomdurleattribuaurle. ADMIN_OPTION RlereuaveclaclauseWITH ADMIN OPTION(YESouNO). SESSION_ROLES ROLE Nomdurle.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 15 -

Synthse
1.Lesdiffrentstypesdecomptes
UnebaseOraclecontientengnralquatretypesdecomptes. Administration Untelcompteatouslesprivilgessystmencessaires,notammentpourlagestiondesstructuresdestockageetla gestiondesutilisateurs.Lescomptesdadministrationont,deplus,unaccscompletaudictionnairededonnes. CesprivilgespeuventtreobtenusparlintermdiairedurleDBAoudunrlequivalent. Dveloppement/Hbergementduschmaapplicatif Un tel compte a les privilges systme ncessaires pour la cration des diffrents types dobjets (tables, vues, procdures...)etilpossdeunquotasuraumoinsuntablespace.Lesprivilgessystmerequispeuventtreobtenus parlintermdiairedesrlesCONNECTetRESOURCE,oudunrlequivalentquevousavezcr(conseill). Pour les comptes de dveloppement, il peut tre judicieux de prvoir un tablespace ddi et de dfinir un quota uniquement sur ce tablespace. Dans lidal, il est prfrable dutiliser une base de donnes part pour le dveloppement. Le compte "propritaire" dune application a gnralement des quotas illimits sur les tablespaces (de tables et dindex)ddislapplication. Utilisateurfinal Un tel compte a besoin de trs peu de privilges systme : CREATE SESSION (obligatoire), ALTER SESSION (parfois ncessaire), et cest gnralement tout. Par contre, il possde des privilges objet sur les objets du schma applicatif,gnralementparlintermdiairedunrle. Les comptes des utilisateurs finaux nont besoin daucun quota dans les tablespaces. Ils accdent aux objets du schma applicatif grce aux privilges objet et lcriture des requtes est simplifie par lutilisation de synonymes publicsouparlexcutiondelordreSQLALTER SESSION SET CURRENT_SCHEMA. Lesprofilspeuventtreutilissenplus,pourcontrlerlutilisationdecertainesressourcesoumettreen uvreune politiquedegestiondesmotsdepasse.

2.Quelquesconseilspourscuriservotrebasededonnes
Voiciquelquesconseilssimples(souventdebonsens)quipermettentdescuriservotrebasededonnes :
q

Limitezlesaccsauserveur(notammentaufichierdemotdepasse,aufichierdeparamtreetauxfichiers detraceoudalertedechaqueinstanceOracle). Interdisezlauthentificationparlesystmedexploitationtraverslerseau(leparamtreREMOTE_OS_AUTHENT doittreFALSE). Verrouillez et expirez le mot de passe des comptes par dfaut qui ne sont pas utiliss (cest le cas, par dfaut, lorsque vous crez une base de donnes avec lassistant graphique Configuration de base de donnes). Les seuls comptes par dfaut qui doivent tre obligatoirement ouverts sont SYS etSYSTEM, ainsi queSYSMANetDBSNMPsivousutilisezleDatabaseControl. Modifiezlesmotsdepassepardfautdescomptespardfautquevousutilisez(aupremierrangdesquels SYS,SYSTEM,SYSMANet DBSNMP).VouspouvezinterrogerlavueDBA_USERS_WITH_DEFPWDpouravoirlalistedes utilisateursquiontencoreleurmotdepassepardfaut. Utilisez des mots de passe complexes (10 caractres au minimum, avec des lettres majuscules, des lettres minuscules,deschiffresetdescaractresspciaux). Utilisezunepolitiquedegestiondemotdepasseavecunnombrelimitdchecsdetentativedeconnexion autorissetdesrglessurlacomplexitdesmotsdepasse.

ENI Editions - All rights reserved - Algeria Educ

- 1-

Nestockezpaslesmotsdepasseenclairdansdestablesoudesscripts. Attribuezlemoinsdeprivilgespossibleauxutilisateurs(notammentlesprivilgessystmeANY). Utilisez des rles pour grer les droits. Si le rle est activ par une application, protgezle par un mot de passe. DfinissezvospropresrlesetnutilisezpaslesrlesprdfinisparOracle. Attribuezunrleunutilisateurquesilarellementbesoindetouslesprivilgescontenusdanslerle.Si cenestpaslecas,crezunautrerleplusrestrictif. NattribuezaucunprivilgesystmePUBLIC(ilnyenaaucunpardfaut). NattribuezaucunprivilgeobjetPUBLIC(autrequeceuxattribuspardfaut). Rvoquez les privilges EXECUTE attribus par dfaut PUBLIC sur plusieurs packages potentiellement dangereux pour la scurit : DBMS_LOB, DBMS_JOB, UTL_FILE, UTL_HTTP, UTL_TCP, UTL_SMTP, DBMS_SYS_SQL. Ce pointestassezcomplexecarcespackagessontutilisspardenombreuxcomptesOracle(SYSnotamment).Si vousenlevezleprivilge EXECUTEattribusPUBLICsurcespackages,vousserezamensrattribuerles droits ncessaires directement aux utilisateurs concerns (vous pouvez interroger la vue DBA_DEPENDANCIES pourconnatrelescomptesquiutilisentcespackages).

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

Superviserlesutilisateursconnects
LavueV$SESSIONpermetdidentifierlesutilisateursactuellementconnects : SQL> SELECT sid,serial#,username,osuser,status FROM SID SERIAL# USERNAME OSUSER ---- --------- ---------- ------------------------1 3 SYSTEM ... 10 10494 VDEP vdep 14 450 SYSTEM Administrateur v$session; STATUS -------ACTIVE INACTIVE ACTIVE LessessionssansvaleurdanslacolonneUSERNAMEsontcellesdesprocessusdarrireplan. LescolonnesintressantesdelavueV$SESSIONsontlessuivantes : SID Identifiantdelasession. SERIAL# Numrodesriedelasession. USERNAME Nomdelutilisateur(compteOracle). SCHEMANAME Nomduschmadelutilisateur(peuttrediffrentdeUSERNAMEsilasessionaexcutlordreSQLALTER SESSION SET CURRENT_ SCHEMA). STATUS Statutdelasession(ACTIVE,INACTIVEouKILLED). LOGON_TIME Dateetheuredeconnexion. OSUSER Nomdelutilisateurauniveaudusystmedexploitation. MACHINE Nomdelamachinedelutilisateurauniveaudusystmedexploitation. TERMINAL Nomduterminaldelutilisateurauniveaudusystmedexploitation. PROGRAM Nomduprogrammeemployparlutilisateurpourseconnecterlabasededonnes. SERVER Typedeprocessusserveur(DEDICATEDouSHARED).

ENI Editions - All rights reserved - Algeria Educ

- 1-

SQL_ID IdentifiantdelarequteSQLencoursdexcution(unejointureavecV$SQLouV$SQLAREAsurlammecolonnepermet devoirlordreSQLenquestion). SERVICE_NAME Nomdeservicedelasession(serviceauquellutilisateursestconnect). Au besoin, vous pouvez aussi interroger la vueV$SESSION_LONGOPS pour obtenir des informations sur les oprations longues(encoursdepuisplusde6secondes).Pourdconnecterunutilisateur,vouspouvezutiliserlordreSQLALTER SYSTEM. Syntaxe ALTER SYSTEM KILL SESSION sid,serial#; ou ALTER SYSTEM DISCONNECT SESSION sid,serial# { IMMEDIATE | POST_TRANSACTION}; Exemple : ALTER SYSTEM KILL SESSION 10,10494; LesordresSQLALTER SYSTEM KILL SESSIONetALTER SYSTEM DISCONNECT SESSION ... IMMEDIATEsontquivalents : ils ferment la session immdiatement, sans attendre la fin dune ventuelle transaction en cours (cette dernire est annule).Parcontre,lordreSQLALTER SYSTEM DISCONNECT SESSION ... POST_TRANSACTIONattendquelatransaction encourssetermine. Un utilisateur en train dexcuter une requte a un statut ACTIVE (INACTIVE sinon). Si un utilisateur est dconnect alors quil est actif, sa requte est interrompue, un message derreur lui indiquant quil a t dconnect, lui est retourn(ORA-00028<$I[]ORA-00028>:votresessionatferme)etlasessiondisparatdeV$SESSION.Silestinactif, laconnexionestfermemaislasessionrestevisibledansV$SESSIONaveclestatutKILLEDjusqucequelutilisateur aittnotifideladconnexionlorsdesaprochaineaction(aveclammeerreurORA-00028).

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

UtiliserleDatabaseControl
1.Utilisateurs
Surlapagedaccueil,cliquezsurlelienServeurpuissurlelienUtilisateurs(cadreScurit)pouraccderlapage degestiondesutilisateursciaprs.

partirdecettepage,vouspouvezeffectuerdiversesactionssurlesutilisateurs :

crerunnouvelutilisateur(boutonCreroumenuCrercomme) supprimerunutilisateur(boutonSupprimer) modifierunutilisateur(boutonModifier) faireexpirerlemotdepasse(menuExpirationdumotdepasse) verrouilleroudverrouillerlecompte(menusVerrouillerlutilisateurouDverrouillerlutilisateur).

En cliquant sur le lien du nom de lutilisateur, ou en cliquant sur les boutons Crer, Modifier ou Visualiser, vous arrivezsurlapagededfinitiondunutilisateur :

ENI Editions - All rights reserved - Algeria Educ

- 1-

Les onglets (sous forme de liens) de cette page permettent de grer les diffrentes proprits de lutilisateur : identification,droits,quotas.

2.Rles
Surlapagedaccueil, cliquez sur le lien Serveur puis sur le lienRles (cadreScurit) pour accder la page de gestiondesrles :

partirdecettepage,vouspouvezeffectuerdiversesactionssurlesrles :

crerunnouveaurle(boutonCreroumenuCrercomme)

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

supprimerunrle(boutonSupprimer) modifierunrle(boutonModifier) voirlesutilisateursquiontlerle(menuAfficherlesbnficiaires).

Encliquantsurleliendunomderle,ouencliquantsurlesboutonsCrer,ModifierouVisualiser,vousarrivezsur lapagededfinitiondunrle :

Les onglets (sous forme de liens) de cette page permettent de grer les diffrentes proprits du rle : authentification,rlesattribus,privilgesattribus.

3.Profils
Surlapagedaccueil,cliquezsurlelienServeurpuissurlelienProfils(cadreScurit)pouraccderlapagede gestiondesprofils :

partirdecettepage,vouspouvezeffectuerdiversesactionssurlesprofils :

Crerunnouveauprofil(boutonCreroumenuCrercomme) Supprimerunprofil(boutonSupprimer)

ENI Editions - All rights reserved - Algeria Educ

- 3-

Modifierunprofil(boutonModifier) Voirlesutilisateursquiontleprofil(menuAfficherlesdpendances).

Encliquantsurleliendunomdeprofil,ouencliquantsurlesboutonsCrer,ModifierouVisualiser,vousarrivezsur lapagededfinitiondunprofil :

Lesdeuxonglets(sousformedeliens)decettepagepermettentdegrerlesdeuxaspectsduprofil : limitationdes ressourcesetgestiondesmotsdepasse.

openmirrors.com

- 4-

ENI Editions - All rights reserved - Algeria Educ

Vuedensemble
Parmi les principaux types dobjets dun schma, seuls les tables et les index occupent de lespace de stockage en dehorsdeleurdfinitiondansledictionnaire. Cet espace de stockage doit tre planifi correctement pour viter les erreurs lies au manque despace ou les problmesdeperformance. Lestablesetlesindexsontdessegments lestockageestdoncorganisenextensions,pilotparlaclauseSTORAGE etparlescaractristiquesdutablespace.Parailleurs,lorganisationdustockagedanslesblocsadelimportance. Ilexistedautrestypesdobjetsquioccupentdelespacedestockage,maiscesdernierssortentduprimtredecet ouvrage :
q

Vuesmatrialises : structureanalogueunetableetdontlecontenuestpriodiquementmisjourpartir dunerequteSELECT. IOT(IndexOrganisedTable tableorganiseenindex) : tabledontlestockageestorganisdanslindexdela clprimairedelatable. Clusters : structures qui permettent de stocker physiquement ensemble des tables frquemment interroges parjointure. Tables et index partitionnes : depuis la version 8, loption partitionnement permet de dcouper le stockage physiquedestablesetdesindexenmorceauxpluspetitsappelspartitions.

Demme,ilexisteplusieurstypesdindex :
q

IndexBtree : indexclassiquequiseratudidanscetouvrage. IndexBitmap :indexdontlestockageestorganisdiffremmentdesindexBtreeetquiestpluttdestin lindexation des colonnes faible cardinalit dans un environnement dcisionnel (lindex bitmap est trs coteuxenmisejour). Index cl inverse : index Btree qui indexe non pas la valeur de la colonne mais une valeur rsultant de linversion des octets de la colonne (intressant pour lindexation de colonnes qui sont insres en ordre croissantetinterrogespargalit). Index bas sur des fonctions : index Btree qui indexe non pas la valeur de la colonne mais le rsultat de lapplication dune fonction SQL (UPPER, LOWER, etc.) la valeur de la colonne. Il est intressant lorsque la colonnenestpasinterrogedirectement(colonne oprateur valeur)maisaveclafonction(fonction(colonne) oprateur valeur).

ENI Editions - All rights reserved - Algeria Educ

- 1-

Gestiondestables
1.Organisationdustockagedanslesblocs
a.Principes

Structuredubloc Lenttedubloccontientladressedubloc,letypedesegment,unrpertoiredestables,unrpertoiredesligneset desentrespourlestransactions.Latailledelenttedublocestvariable,delordrede100octets200octets.Le restedubloccontientlesdonnes(uneplusieurslignesdelatable)etdelespacelibre. Lentte est stock dans la partie haute du bloc et les donnes sont insres partir du bas. Lentte est susceptible de grossir (vers le bas) en fonction de lactivitdanslebloc ilnertrcitjamais.Parexemple,si100 lignes sont insres dans le bloc, le rpertoire des lignes situ dans lentte grossit si les lignes sont ensuite supprimes,lerpertoiredeslignesnertrcitpas(lespaceestconservetpourratrerutilissideslignessont denouveauxinsresdanslebloc). Structureduneligne Lenttedunelignecontientquelquesinformationssurlaligne(nombredecolonnes,chanageventuel,verrou).La tailledelenttedelignesestvariable(3octetsminimum).Ensuite,chaquecolonneeststockeavecunenttede colonne(quidonnelalongueurdelacolonnesur13octets)suividelavaleurdelacolonne. La longueur totale dune ligne dpend du nombre de colonnes et de la valeur stocke dans chaque colonne, la longueurdelacolonnedpendantdutypededonnes. Exemple : Type CHAR(n) Longueurdustockage Longueurfixe(noctets),quellequesoitlavaleurstockedansla colonne.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

VARCHAR2(n)

Longueurvariable(0noctets),dpendantdelavaleurstockedansla colonne. Longueurvariable(entre1et21octets)dpendantdelavaleurstocke danslacolonne. Longueurfixe(8octets). Longueurvariable,jusqu2^32blocsOracle.

NUMBER(x,y)

DATE CLOB, BLOB

UnevaleurNULLoccupeunoctetenmilieudeligneetaucunenfindeligne. Les fonctions SQL VSIZE et DUMP appliques une valeur (colonne, rsultat dune expression) permettent de connatrerespectivementlatailleenoctetsdustockageinternedelavaleuretlareprsentationinternedelavaleur. Ce quil faut retenir, cest que le bloc ne contient pas que des donnes utiles il y a des donnes de contrle,desurcharge,utiliseseninterneparOracle. titredexemple,unelignecomprenant3colonnes stockant 30 octets de donnes utiles emploiera en moyenne 35 octets despace dans le bloc et une ligne comprenant15colonnesstockant145octetsdedonnesutilesemploieraenmoyenne160octetsdespacedans lebloc.

b.Gestiondelespacedanslesblocs
Lespacelibrelintrieurdusegmentpeuttregrautomatiquementoumanuellement. Dans le cas de la gestion "manuelle", pour chaque segment, Oracle gre une liste de blocs disponibles pour linsertiondelignes(freelist).Ladisponibilitoulanondisponibilitdunblocpourlinsertionestcontrlepardeux paramtresdeladfinitiondelatable :PCTFREEetPCTUSED. Danslecasdelagestion"automatique",pourchaquesegment,Oracleutiliseunebitmapafindeconnatreletauxde remplissagedechaqueblocallouausegmentetendduireceuxdanslesquelsilpeutinsrerdesdonnes.Dans cecas,leparamtrePCTUSEDestsansobjet.Lagestionautomatiqueestapparueenversion9. Lagestionautomatiquedelespacedanslessegments(AutomaticSegmentSpaceManagement ASSM)prsentede nombreux avantages : facilit dutilisation (pas de paramtre PCTUSED spcifier), meilleure utilisation de lespace, meilleure concurrence daccs pour les insertions simultanes. La gestion automatique de lespace dans les segments est disponible uniquement dans les tablespaces grs localement et spcifie au niveau du tablespace (pasdusegmentindividuel)parlaclauseSEGMENT SPACE MANAGEMENT AUTO(voirlechapitreGestiondestablespaces etdesfichiersdedonnes) elleestactivepardfaut. PCTFREE Dansladfinitiondunetable,leparamtrePCTFREEspcifielepourcentagedelespacedubloclaisslibrepourles modificationsdeslignesstockesdanslebloc :

LaclausePCTFREEpermetdenepasremplirlesblocs100 %etdeconserverdelespacedisponiblelintrieurdu bloc,pourlesfuturesmisesjourdeslignesstockesdanslebloc.Eneffet,lorsquuneligneestmodifie,Oracle chercheraliserlamodificationenconservantlalignelintrieurdublocoelleeststocke : celaneposepasde problmesilalongueurglobaledelalignediminue(remplacementdePIERREparPAULdansunecolonne)maispeut enposersilalignegrossit(remplacementdePAULparPIERREdansunecolonne).Danscederniercas,silnyapas suffisamment despace disponible lintrieur du bloc, Oracle va dplacer la ligne dans un autre bloc avec des impactsngatifssurlesperformancesquenousverronsdanslasuitedecetouvrage. Gestionmanuelle : PCTUSED Dans la dfinition dune table, en gestion manuelle uniquement, le paramtre PCTUSED spcifie le pourcentage

- 2-

ENI Editions - All rights reserved - Algeria Educ

doccupationauquelleblocdoitredescendreavantderedevenircandidatlinsertion :

Lorsque le bloc atteint un taux de remplissage correspondant la clausePCTFREE, aucune insertion nestpossible avant que de lespace dans le bloc soit libr, par suppression de ligne ou diminution de la taille dune ligne lors dune modification. Le paramtre PCTUSED permet de contrler le moment o le bloc redeviendra candidat linsertion, suite la libration despace. Ce paramtre permet dviter que le bloc ne redevienne immdiatement candidatlinsertiondsquelemoindreoctetselibre,dunepart,carlespacelibrnestpeuttrepassuffisant pour rellement insrer une ligne et dautre part, car le bloc risque de redevenir non disponible ds la premire insertion or,cettegestioninternedubloc(disponibleounonpourlinsertion)estcoteuseentempsdetraitement. PCTUSED va donc permettre dattendre que suffisamment despace ait t libr dans le bloc avant dautoriser de nouvellesinsertionsdanslebloc. Gestionautomatique Engestionautomatique,Oracleutiliseune bitmappourconnatreletauxderemplissagedechaqueblocallouau segment : 0 % despace libre (plein), entre 0 et 25 % despace libre, entre 25 et 50 % despace libre, entre 50 et 75 %despacelibre,entre75et100 %despacelibre. Lors de linsertion dune nouvelle ligne, Oracle utilisera la bitmap pour dterminer dans quel bloc il peut insrer la ligne. Danslasuitedecechapitre,nousconsidreronsquelagestionautomatiqueestutilise.Nousnvoquerons pasPCTUSEDetnedonneronsaucunconseilsursavaleur.

c.Compressiondesdonnesdanslesblocs
DepuisOracle9iRelease2,ilestpossibledecompresserlesdonnesdanslesblocsdestables. Avant la version 11, la compression seffectue uniquement au moment de la cration du bloc, lors doprations comme la cration dune table partir dune requte (ordre SQL CREATE TABLE ... AS SELECT), la reconstruction dune table (ordre SQL ALTER TABLE ... MOVE) ou les insertions en chemin direct (ordre SQL INSERT /*+ APPEND */ ...).Pourlesinsertionsoumodificationsindividuellesultrieures(ordresSQLINSERTetUPDATE),lesdonnesne sontpascompresses.Danscecas,lacompressionestpluttdestinedestablesaccdesenlecture,unefois quellesonttconstruitesoureconstruites(parexemple,dansunebasedcisionnelle). Depuislaversion11,ilestpossibledactiverlacompressionpourtouteslesoprations,ycomprislesinsertionsou modifications individuelles. Ce type de compression peut donc aussi tre utilis dans une base transactionnelle. Cettefonctionnalit,intitulOLTPTableCompression,ncessiteloptionAdvancedCompression. Oraclecompresselesdonnesauniveaudublocenfactorisantdansunetabledesymboles,lesvaleursrptes stockesdanslebloc.UnexempleestdonnlasectionRorganiserlestockagedunetable.

2.LeROWID
LeROWIDestunecolonnevirtuelleprsentedanschaquetablequidonneladressephysiquedestockagedelaligne. Cettecolonnevirtuellepeuttreinterrogecommelesautrescolonnesdelatable : SQL> SELECT ROWID, numero, nom, prenom FROM adherent; SQL> UPDATE adherent SET prenom = Olivier 2 WHERE ROWID = AAAER2AACAAADdiAAA; LeROWIDpermetdelocaliserphysiquementlaligne ilestutiliseninterneparOracledanslesindex.Silestconnu, cestlemoyenleplusrapidepouraccderuneligne. DanslastructureinterneduROWID,Oracleatouteslesinformationsncessaireslalocalisationphysiquedelaligne dans un fichier de donnes (fichier, numro de bloc, position dans le bloc). Un ROWID nest pas directement comprhensible parcontre,lepackageDBMS_ROWIDoffreplusieursfonctionsquipermettentdextrairelesdiffrentes

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

composantesduROWID. UtiliserleROWIDdansuneapplication(danslesclausesWHEREdesordresSQL)servletrsintressantdupointde vue des performances : Oracle obtient directement ladresse physique de la ligne lire ou modifier, sans devoir lire toutelatablenipasserparunindex. LeROWIDdunelignenechangejamais,tantquelalignenestpassupprime.Modifierunelignenechangepasson ROWIDpuisquelaligneest,apriori,modifielintrieurdublocoelleatinsre ceseraaussilecassilaligne estmigreversunautreblocparmanquedespacedisponible(cequinestpasbnfiquecommenousleverronsci aprs).

3.Chanageetmigration
En rgle gnrale, une ligne dune table est stocke en totalit lintrieur dun bloc. Pour lire la ligne, Oracle na besoindelirequunseulbloc. Silaligneestintrinsquementtropgrandepourtenirdansunseulbloc,Oraclelastockedansplusieursblocschans par des pointeurs : cest le phnomne de chanage dune ligne. Pour lire cette ligne, Oracle a alors besoin de lire plusieursblocs. Si une ligne grandit suite une modification, et quil ne reste plus suffisamment despace libre dans le bloc, Oracle dplacelalignedansunautreblocpointparlenttedelalignerestdansleblocdorigine : cestlephnomnede migration dune ligne. Le ROWID de la ligne modifie et migre na pas chang, mais pour lire cette ligne, Oracle a besoin de lire deux blocs, ce qui dgrade les performances des accs par index. Lintrt de cette technique est quOraclenapasbesoindemodifierleROWIDdelalignedanslesindexlorsdunemisejourdelaligne. Lephnomnedechanageestdifficilementvitable,saufenaugmentantlatailledesblocs.Ilfautdoncypenserlors delacrationdelabasededonnesoudutablespace.Celapeuttreinsuffisantpourlestrsgrandeslignes. Le phnomne de migration peut (et mme doit) tre vit, en laissant suffisamment despace disponible dans les blocspourlesmisesjour.LeparamtrePCTFREEseradoncpositionnavecsoinsurlestablespourlesquelleslataille deslignesinsresestsensiblementinfrieurelatailledeslignesaprsmodification(s).

4.Spcifierlestockagedunetable
Lestockagedunetablepeuttrespcifilorsdelacrationdelatable,danslordreSQLCREATE TABLE. Syntaxesimplifie CREATE TABLE nom_table (spcification des colonnes) [ TABLESPACE nom_tablespace ] [ PCTFREE valeur ] [ PCTUSED valeur ] [ clause_stockage ] [ NOCOMPRESS | COMPRESS [ FOR { ALL | DIRECT_LOAD } OPERATIONS ]] [ LOGGING | NOLOGGING ] ; - clause_stockage STORAGE ( [ INITIAL valeur [K|M] ] [ NEXT valeur [K|M] ] [ MINEXTENTS valeur ] [ MAXEXTENTS { valeur | UNLIMITED } ] [ PCTINCREASE valeur ] ) Exemple : CREATE TABLE adherent (numero NUMBER(6), nom VARCHAR2(40), prenom VARCHAR2(30)) TABLESPACE data PCTFREE 30 STORAGE ( INITIAL 10M ) ; Les clauses TABLESPACEet STORAGE ont dj t prsentes au chapitre Gestion des tablespaces et des fichiers de donnes. Noubliez pas que la clause STORAGE est traite diffremment selon que le tablespace est gr par le dictionnaireoulocalement.Dansuntablespacegrlocalement,seuleloptionINITIALestutile. LaclausePCTFREEdonnelavaleurduPCTFREE(entre0et99,10pardfaut).

- 4-

ENI Editions - All rights reserved - Algeria Educ

LaclausePCTUSEDdonnelavaleurduPCTUSED(entre0et99,40pardfaut).Cetteclauseestignoresilatableest stockedansuntablespacegrlocalementavecunegestionautomatiquedelespacedanslessegments. Pardfinition,PCTFREE+PCTUSEDdoittrestrictementinfrieur100. LaclauseCOMPRESS permetdecompresserlesdonnesdanslesblocs.LoptionDIRECT_LOADindiquequelesblocssont compresss,uniquementlorsdesoprationsdechargementdirect(crationdelatablepartirdunesousrequte, reconstructiondelatableouchargementpardesinsertionsenchemindirect) cestlavaleurpardfaut.LoptionALL indique que les blocs sont compresss pour toutes les oprations (y compris les insertions ou modifications individuelles). Par dfaut, la table hrite de loption COMPRESS ou NOCOMPRESS, ventuellement dfinie au niveau du tablespacedanslequelelleeststocke. LaclauseNOLOGGINGpermetdenepasjournalisercertainesoprationseffectuessurlatable(crationpartirdune sousrequteetinsertionenchemindirectessentiellement) lesmisesjourindividuellessont,parcontre,toujours journalises. La clause NOLOGGING est sans effet si la table est stocke dans un tablespace dfini en mode FORCE LOGGING, ou si la base de donnes ellemme est en mode FORCE LOGGING. Par dfaut, la table hrite de loption LOGGING ou NOLOGGING, ventuellement dfinie au niveau du tablespace dans lequel elle est stocke. La clause NOLOGGINGestintressantepouramliorerlesperformancesdecertainesoprationsmaisrendlatableirrcuprable encasdincident aprsuneoprationNOLOGGING,ilestsouventpertinentderaliserunesauvegardedelabasede donnes.LordreSQLALTER TABLEpeuttreutilispourmodifiercertainescaractristiquesdustockagedelatable. Syntaxesimplifie ALTER TABLE nom_table [ PCTFREE valeur ] [ PCTUSED valeur ] [ NOCOMPRESS | COMPRESS [ FOR { ALL | DIRECT_LOAD } OPERATIONS ] ] [ LOGGING | NOLOGGING ] [ clause_stockage_restreinte ] ; clause_stockage_restreinte STORAGE ( [ NEXT valeur [K|M] ] [ MAXEXTENTS { valeur | UNLIMITED } ] [ PCTINCREASE valeur ] ) LordreSQLALTER TABLEnapasdeffetrtroactifsurlestockagedjalloulatable.Ilnestdoncpaspossible,de cettemanire,dechangerlatabledetablespace,demodifierlespaceinitialementalloulatableouleremplissage oulacompressiondesblocsdjutiliss. Les caractristiques modifies sont prises en compte uniquement pour les futures oprations. Plus tard, nous tudierons la clause MOVE de lordre SQL ALTER TABLE qui permet de reconstruire physiquement le stockage dune table.

5.Recommandationspourlestockagedestables
a.Vuedensemble
La recommandation numro un est de stocker les tables dans un ou plusieurs tablespaces ddis, de prfrence grslocalement(cestlecaspardfaut)avecunegestionautomatiquedelespacedanslessegments(cestlecas pardfaut). Si cette recommandation numro un est respecte, vous allez bnficier de nombreux mcanismes de gestion automatiquedustockagequipermettentventuellementdenerienfairedeplus.Danscecas,utilisezdeprfrence des tablespaces grs localement avec une gestion automatique de la taille des extensions (EXTENT MANAGEMENT LOCAL AUTOALLOCATE,cestlecaspardfaut). Nanmoins, si vous le souhaitez ou le pouvez, deux recommandations supplmentaires peuvent tre tudies, au moinspourlestableslesplusimportantesdelapplication :
q

recommandationnumrodeux : rglerPCTFREEavecsoin(voirEstimationdePCTFREE) recommandation numro trois : allouer un espace initial la table, adapt la volumtrie estime une chancedonne,sipossiblelointaine(6mois,1an,2ansouplus).

Si vous souhaitez contrler plus prcisment le stockage des tables (ou de certaines tables), vous pouvez utiliser destablespacesgrslocalementavecunegestionuniformedelatailledesextensions(EXTENT MANAGEMENT LOCAL UNIFORM)et/ouspcifieravecsoinloptionINITIALdelaclauseSTORAGE. Lide est de choisir des caractristiques de stockage adaptes la nature de la table (petite, volumineuse,

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

statique, croissance rgulire, etc.) et danticiper une chance suffisamment lointaine pour tre tranquille pendantquelquetemps,etdoncavoirletempsncessairepourragirsilestimationinitialeestmauvaise. Lefaitquunetablesoitstockedansungrandnombredextensionsneposepasdeproblmedupointde vuedesperformances. Parailleurs,ilnefautpashsiterddierdestablespacesaustockagedestablesvolumineuses. Dans un tablespace gr localement avec une gestion automatique de lespace dans les segments, les extensionsdoiventavoirunetailledaumoins5blocs.

b.Estimerlavolumtriedunetableunechancedonne
Lamthodelaplussimple(etlapluspragmatique)pourestimerlavolumtriedunetableunechancedonne consiste :
q

estimerlenombredelignesattendues crerlatabledanslesconditionsdexploitation(tailledeblocetPCTFREEnotamment) chargerlatableavecunjeudedonnesreprsentatives calculerlenombredeblocsoccupsparcejeudessai(parexemplepartirdesstatistiquesdelatableou laidedupackageDBMS_SPACE voirciaprs) endduirelenombredeblocspourlenombredelignesattendues(rgledetrois).

Cette mthode ne donne quune estimation, pas un rsultat exact loctet prs, car il y a de nombreuses incertitudes :
q

surlenombredelignesestimlchance(N+/10%parexemple) surlareprsentativitdujeudedonnes,notammentsurlalongueurmoyennedesdonnessaisies(lenom duclientstocksouslaformedunVARCHAR2(80)comprendratilenmoyenne40caractres,50,60?).

SupposonsparexemplequelatableADHERENT(schmaDIANE)aittchargeavec10 000lignesetquelledoiveen contenir1 000 000unechancede2ans.Nouspouvonsraliserlecalculsuivant : SQL> EXEC dbms_stats.gather_table_stats(DIANE,ADHERENT) Procdure PL/SQL termine avec succs. SQL> SELECT blocks FROM dba_tables 2 WHERE table_name=ADHERENT; BLOCKS ---------138 SQL> SELECT 138/10000*1000000 estimation FROM dual; ESTIMATION ---------13800 Le jeu de donnes utilise 138 blocs, donc, par rgle de trois, nous pouvons estimer que la table utilisera 13 800 blocsdansdeuxans. LutilisationdupackageDBMS_STATSseraprsentlasectionSuperviserlespaceoccupparunetable. Enproduction,uncalculdecegenrepeuttreeffectuintervallesrgulierspourvoirlatendanceetvrifier sileshypothsesdedparttaientbonnes.

- 6-

ENI Editions - All rights reserved - Algeria Educ

c.EstimationdePCTFREE
Aveccalcul LavaleuroptimaledePCTFREEpeuttreestimeparlaformulesuivante : PCTFREE = 100 x (1 -Ti / Tf) Ti=taillemoyenneinitialedelaligneenoctets(aumomentdelinsertion) Tf=taillemoyennefinaledelaligneenoctets(aprslesmisesjour). LesvaleursdeTietTfpeuventtreestimespartirdesstatistiquesdelatable(AVG_ROW_LEN).Cetteformuleest surtout destine calculer la valeur dePCTFREEconcernantlestablespourlesquelles,latailledeslignesinsres initialement nest pas reprsentative de la taille finale de la ligne aprs modification(s). Pour les autres tables, lestimationsanscalcul,prsenteciaprs,peuttreutilise. Sanscalcul Pour une table "statique" ou faisant uniquement lobjet dinsertions,mettreun PCTFREEfaiblepourobtenirunbon remplissagedesblocs(05).Pourunetablefaisantlobjetdinsertionetdemisesjour,mettreunPCTFREEplus levpourviterlesphnomnesdemigration(1050enfonctiondurisquequelesmisesjourfassentgrossir plusoumoinsleslignes).

6.Surveillerlutilisationdunetable
Enversion9,Oracleaintroduitunefonctionnalitpermettantdemettreunetable"soussurveillance".Danscemode, OracletracelenombreapproximatifdordresSQLINSERT,UPDATEetDELETEexcutssurlatable. Enversion9,cettefonctionnalitdevaittreactiveexplicitement depuislaversion10,lestablessont,pardfaut, soussurveillance(saufsileparamtreSTATISTICS_LEVELestgalBASIC,cequiestdconseill). Ce mcanisme de surveillance est avant tout destin la fonctionnalit de calcul automatique des statistiques les informationsainsicollectespermettentOraclededterminerlestablesdontlesstatistiquesnesontplusjour. Cemcanismedesurveillancepeutaussitreutilispouranalyserlactivitsurlestablesetidentifierlestablesles plus sollicites en mise jour ce sont les tables sur lesquelles vous devez plus particulirement porter votre attentionencequiconcernelestockage(rglagedePCTFREEnotamment). Les informations sur les tables surveilles peuvent tre consultes dans la vue DBA_TAB_ MODIFICATIONS (et cons urs). Lesprincipalescolonnesdelavuesontlessuivantes : TABLE_OWNER propritairedelatable. TABLE_NAME nomdelatable. INSERTS nombreapproximatifdelignesinsres. UPDATES nombreapproximatifdelignesmodifies. DELETES nombreapproximatifdelignessupprimes. TIMESTAMP date/heuredeladerniremisejourdelastatistique.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

TRUNCATED indicationpoursavoirsilatableattronque(YESouNO). Les statistiques sur lutilisation dune table ne sont pas dverses en temps rel dans le dictionnaire. Le dlai annonc est entre quelques secondes et plusieurs heures. La colonne TIMESTAMP de la vue DBA_TAB_MODIFICATIONS permetdeconnatrelafracheurdelinformation. Aubesoin,laprocdureFLUSH_DATABASE_MONITORING_INFOdupackageDBMS_ STATSpeuttreutilisepourforcerlamise jourimmdiatedudictionnaire. Il faut bien noter que les statistiques de surveillance sont supprimes lors de la gnration des statistiques. Les statistiquesdesurveillancesontdonccollectesetcumulesdepuisladerniregnrationdestatistiquessurlatable (voirlacolonneLAST_ANALYZEDdelavueDBA_TABLES). Pour une bonne analyse, il est important de raliser des relevs priodiques afin de voir lvolution de lactivit et identifierdventuellespriodesdepointes.

7.Superviserlespaceoccupparunetable
a.Vuedensemble
LesvuesDBA_SEGMENTS etDBA_EXTENTSprsentesauchapitreGestiondestablespacesetdesfichiersdedonnes permettentdevoirlespaceglobalalloulatable,maisellesnedonnentpasdinformationssurlenombredeblocs rellementutiliss. Pourchaquetable(etplusgnralementchaquesegment),Oracleconnatledernierblocutilisparlatable : cestla highwatermark(HWM "lignedeplushauteseaux"). LaHWMaugmentelorsdesinsertionsmaisnediminuepaslorsdessuppressions :

LaHWMpermetdoncdeconnatrelenombretotalmaximumdeblocsutilissparlatabledanstoutesonexistence, maispaslenombredeblocsactuellementutiliss,nileurremplissage. LaHWMmarquepourOraclelemplacementdudernierblocoilestsusceptibledetrouveruneligne audeldela HWM,uneseulechoseestsre,ilnyapasdeligne.LorsqueOracleraliseunparcourscompletdelatable,ilne parcourtpastouslesblocsallouslatablemaisuniquementceuxsitussouslaHWM. Pourobtenirdesinformationsplusdtaillessurlestockagedunetable,vouspouvezutiliserlepackageDBMS_SPACE. Cedernierproposeplusieursprocduresquipermettentnotammentdecalculerdesinformationssurlespacelibreet lespaceutilislintrieurdunsegment. Par ailleurs, pour les besoins de loptimiseur, Oracle calcule priodiquement des statistiques sur les tables (et les index), laide du package DBMS_STATS certaines de ces statistiques donnent des informations relatives au stockage. Pourobtenirdesinformationsplusdtaillessurlestockagedunetable,vouspouvezutiliserlesstatistiquesdela table,gnresparlepackageDBMS_STATSoucalculerdesinformationslaidedupackageDBMS_SPACE.

b.LepackageDBMS_SPACE
Lepackage DBMS_SPACE propose plusieurs procdures qui peuvent tre utilises pour superviser le stockage dune table(plusgnralementdunsegment) : FREE_BLOCKS informationssurlesblocslibresdansunsegmentdontlespaceestgrmanuellement. SPACE_USAGE informationssurloccupationdesblocsdansunsegmentdontlespaceestgrautomatiquement.

- 8-

ENI Editions - All rights reserved - Algeria Educ

UNUSED_SPACE informationssurlesblocsinutilissdunsegment. Lepackage DBMS_SPACE possde dautresprocduresoufonctionsquipermettentdestimerlatailledune table ou dun index ou la tendance de croissance dun segment. Ces procdures et fonctions, plus complexes utiliser, ne sontpasprsentesdanscetouvrage.Parcontre,nousprsenteronsleurutilisationtraverslinterfacegraphique duDatabaseControl. PourplusdinformationssurlepackageDBMS_SPACE, reportezvousladocumentationPL/SQLPackagesandTypes Reference. Exemple : SQL> SET SERVEROUTPUT ON SQL> DECLARE 2 v_unformatted_blocks NUMBER; 3 v_unformatted_bytes NUMBER; 4 v_fs1_blocks NUMBER; 5 v_fs1_bytes NUMBER; 6 v_fs2_blocks NUMBER; 7 v_fs2_bytes NUMBER; 8 v_fs3_blocks NUMBER; 9 v_fs3_bytes NUMBER; 10 v_fs4_blocks NUMBER; 11 v_fs4_bytes NUMBER; 12 v_full_blocks NUMBER; 13 v_full_bytes NUMBER; 14 PROCEDURE p(v_texte VARCHAR2) IS 15 BEGIN 16 dbms_output.put_line(v_texte); 17 END; 18 BEGIN 19 dbms_space.space_usage 20 ( 21 segment_owner => DIANE, 22 segment_name => ADHERENT, 23 segment_type => TABLE, 24 unformatted_blocks => v_unformatted_blocks, 25 unformatted_bytes => v_unformatted_bytes, 26 fs1_blocks => v_fs1_blocks, 27 fs1_bytes => v_fs1_bytes, 28 fs2_blocks => v_fs2_blocks, 29 fs2_bytes => v_fs2_bytes, 30 fs3_blocks => v_fs3_blocks, 31 fs3_bytes => v_fs3_bytes, 32 fs4_blocks => v_fs4_blocks, 33 fs4_bytes => v_fs4_bytes, 34 full_blocks => v_full_blocks, 35 full_bytes => v_full_bytes 36 ); 37 p(Blocs :); 38 p(. Pleins = ||v_full_blocks); 39 p(. 0 25% despace libre = ||v_fs1_blocks); 40 p(. 25 50% despace libre = ||v_fs2_blocks); 41 p(. 50 75% despace libre = ||v_fs3_blocks); 42 p(. 75 100% despace libre = ||v_fs4_blocks); 43 p(. Non formats = ||v_unformatted_blocks); 44 END; 45 / Blocs : . Pleins = 128 . 0 25% despace libre = 0 . 25 50% despace libre = 40 . 50 75% despace libre = 4 . 75 100% despace libre = 33 . Non formats = 0 Procdure PL/SQL termine avec succs.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

SQL> DECLARE 2 v_total_blocks NUMBER; 3 v_total_bytes NUMBER; 4 v_unused_blocks NUMBER; 5 v_unused_bytes NUMBER; 6 v_last_extent_file NUMBER; 7 v_last_extent_block NUMBER; 8 v_last_used_block NUMBER; 9 PROCEDURE p(v_texte VARCHAR2) IS 10 BEGIN 11 dbms_output.put_line(v_texte); 12 END; 13 BEGIN 14 dbms_space.unused_space ( 15 segment_owner => DIANE, 16 segment_name => ADHERENT, 17 segment_type => TABLE, 18 total_blocks => v_total_blocks, 19 total_bytes => v_total_bytes, 20 unused_blocks => v_unused_blocks, 21 unused_bytes => v_unused_bytes, 22 last_used_extent_file_id => v_last_extent_file, 23 last_used_extent_block_id => v_last_extent_block, 24 last_used_block => v_last_used_block 25 ); 26 p(Blocs :); 27 p(. Total = ||v_total_blocks); 28 p(. Inutiliss = ||v_unused_blocks); 29 p(. Utiliss = ||(v_total_blocks-v_unused_blocks)); 30 END; 31 / Blocs : . Total = 224 . Inutiliss = 7 . Utiliss = 217 Procdure PL/SQL termine avec succs. SQL> SELECT blocks FROM dba_segments 2 WHERE segment_name=ADHERENT AND owner=DIANE; BLOCKS -----------224 Surcetexemple,nousvoyonsquelatableADHERENTa224blocsallous.Surces224blocs,217sontutiliss(cestla HWM)et7sontinutiliss(jamaisaucunligneinsrelintrieur).Surlesblocsutiliss,ilyena128quisontpleins, 40quiontentre25et50%despacelibre,4quiontentre50et75%despacelibreset33quiontentre75et100% despace libre, soit un total de 205 blocs. Les 12 blocs manquants pour arriver 217 sont des blocs de bitmap utilisspourlagestionautomatique(ilsnesontpascomptabilissparlaprocdureSPACE_USAGE).

c.Lesstatistiquessurunetable
LaprocdureGATHER_TABLE_STATSdupackageDBMS_STATSpermetdecalculerdesstatistiquessurunetable. Cetteprocdureadeuxparamtresobligatoiresenentre : ownname Nomduschmapropritairedelatable. tabname Nomdelatable. Exemple : EXECUTE dbms_stats.gather_table_stats(DIANE,ADHERENT) La procdure GATHER_TABLE_STATS a beaucoup dautres paramtres dont la valeur par dfaut est gnralement
- 10 ENI Editions - All rights reserved - Algeria Educ

adapte. AupointLesstatistiquesetloptimiseur Oracle, nous verrons que les statistiques sont calcules automatiquement parOracleintervallesrguliers.Entempsnormal,ilnestdoncpasncessairedutilisercetteprocdure.Gnrer manuellement des statistiques peut, par contre, savrer utile si vous venez de crer et de charger une table, ou aprsunemisejourmassivedesdonnesdunetable(insertion,modification,suppression). Le calcul de statistiques est effectu sur un chantillon des donnes. La taille de lchantillon est choisie automatiquement par Oracle en fonction des caractristiques de la table (au besoin, la taille de lchantillon peut trespcifiegrceauparamtreestimate_percent). Historiquement, les statistiques peuvent aussi tre calcules laide des clauses COMPUTE ouESTIMATE de lordre SQL ANALYZE TABLE. Cette possibilit est maintenue pour des raisons de compatibilit ascendante. Pourcalculerlesstatistiquessurlestablesetlesindex,ilfaututiliserlepackageDBMS_STATS(depuisOracle8i). LesstatistiquesdunetablepeuventtreconsultesdanslavueDBA_TABLES(et"cons urs") : NUM_ROWS Nombredelignesdanslatable. BLOCKS NombredeblocssouslaHighWaterMark(HWM). AVG_ROW_LEN Longueurmoyenneduneligne,ycomprislesinformationsdentte. SAMPLE_SIZE Nombredelignesdanslchantillonutilispourlecalculdesstatistiques. LAST_ANALYZED Date/heuredeladernireanalysedelatable.

La valeur BLOCKS est toujours exacte, mme si les statistiques ne sont pas calcules sur la totalit de la table. Exemple : SQL> EXEC dbms_stats.gather_table_stats(DIANE,ADHERENT) Procdure PL/SQL termine avec succs. SQL> SELECT num_rows,blocks,avg_row_len,sample_size, 2 TO_CHAR(last_analyzed,DD/MM HH24:MI) last_analyzed 3 FROM dba_tables WHERE table_name=ADHERENT and owner=DIANE; NUM_ROWS BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED ---------- ---------- ----------- ----------- ------------11488 217 91 11488 20/07 15:47 Nousretrouvonsles217blocsutiliss,calculslaidedupackageDBMS_SPACE.

d.Problmespossiblessurlestockage
Lesproblmespossiblessurlestockagedunetablesontlessuivants :
q

espaceinutilisallouunetable faibletauxdoccupationmoyendesblocs.

Espaceinutilisallouunetable
ENI Editions - All rights reserved - Algeria Educ - 11 -

openmirrors.com

Il y a de lespace inutilis allou la table si le nombre de blocs occups (sous la HWM) est faible par rapport au nombredeblocsallous,etsilatablenevaplusgrossir(oupeu). LenombredeblocsoccupsestdonnparlavaleurdelacolonneBLOCKSdelavueDBA_TABLES(ouparuncalcul laide du package DBMS_SPACE) et le nombre de blocs allous par la valeur de la colonne BLOCKS de la vue DBA_SEGMENTS. Exemple : SQL> SELECT t.blocks "occups",s.blocks "allous" 2 FROM dba_tables t, dba_segments s 3 WHERE s.segment_name=t.table_name 4 AND s.owner=t.owner 5 AND t.table_name=ADHERENT AND t.owner=DIANE; occups allous ---------- ---------217 224 Cepremierproblmenapasdincidencesurlesperformances(lesblocsaudeldelaHWMnesontjamaislus) il conduitjusteungaspillagedespacedisque. Faibletauxdoccupationmoyendesblocs Pourlestablesdontlespaceestgrautomatiquement,letauxdoccupationmoyendesblocspeuttreanalys laidedursultatdonnparlaprocdureSPACE_USAGEdupackageDBMS_SPACE. Exemple : Blocs : . Pleins . 0 25% despace libre . 25 50% despace libre . 50 75% despace libre . 75 100% despace libre . Non formats

= = = = = =

71 0 38 31 65 0

Dans cet exemple, nous voyons que la table a 71 blocs pleins, 38 blocs moyennement remplis et 96 faiblement remplis. Silaproportiondeblocsmoyennementremplisoufaiblementremplisestimportante,sileslignesactuellesnevont pas grossir, et si peu de nouvelles lignes vont tre insres, nous pouvons considrer quil y a un problme de remplissagedesblocs. CemauvaisremplissagedesblocspeuttreliunevaleurinadaptedePCTFREEouunesuppressionimportante dedonnes. CedeuximeproblmeadesincidencessurlesperformancesetsurlutilisationdelespacedansleDatabaseBuffer Cache.Pourunnombredelignesdonn,untauxderemplissagelevncessitemoinsdeblocspourlestockage, doncmoinsdeblocslireetmoinsdeblocsdansleDatabaseBufferCache.

8.Dtecterlesproblmesdemigrationoudechanage
LaclauseLIST CHAINED ROWSdelordreSQLANALYZE TABLEpermetdidentifierleslignesmigresouchanes. Syntaxe ANALYZE TABLE nom_table LIST CHAINED ROWS; Aupralable,latableCHAINED_ROWSdoittrecrelaide du scriptutlchain.sql,quisetrouvedanslerpertoire% ORACLE_HOME%\rdbms\admin ou $ORACLE_ HOME/rdbms/admin. Aprs excution de lordre SQL ANALYZE, cette table contientlesROWIDdeslignesmigresouchanes. Exemple : SQL> @?\rdbms\admin\utlchain.sql Table cre. SQL> ANALYZE TABLE diane.adherent LIST CHAINED ROWS; Table analyse.

- 12 -

ENI Editions - All rights reserved - Algeria Educ

SQL> SELECT COUNT(head_rowid) FROM chained_rows 2 WHERE table_name=ADHERENT AND owner_name=DIANE; COUNT(HEAD_ROWID) ----------------16 SQL> SELECT head_rowid FROM chained_rows 2 WHERE table_name=ADHERENT AND owner_name=DIANE 3 AND ROWNUM = 1; HEAD_ROWID -----------------AAACmIAAKAAAA3sAAf SQL> SELECT * FROM diane.adherent 2 WHERE ROWID = AAACmIAAKAAAA3sAAf; ... LatableCHAINED_ROWScontientnotammentlescolonnessuivantes : OWNER_NAME Nomduschmapropritairedelatableanalyse. TABLE_NAME Nomdelatableanalyse. HEAD_ROWID ROWIDdelalignequiaunproblmedemigrationoudechane. ANALYZE_TIMESTAMP Date/heuredelanalyse. DanslatableCHAINED_ROWS,lanalysestockeleROWIDdeslignesquiontunproblmedechanageoudemigration laide dune sousrequte, il est possible de lister les lignes proprement dites. Les rsultats saccumulent dans la table lorsdunenouvelleanalysedunetablepralablementanalyse,ilconvientdontdesupprimerdeCHAINED_ROWS lancienrsultatoudutiliserlacolonneANALYZE_TIMESTAMPpourextrairelersultat. Poursavoirsilsagitdunproblmedechanageoudemigration,ilfautinterrogerlaligne.Silaligneestpluscourte que la taille du bloc, il sagit dun problme de migration (la ligne pourrait tenir dans un bloc) si la ligne est plus longue que la taille du bloc, il sagit dun problme de chanage. La statistiqueAVG_ROW_LEN dansDBA_TABLES donne une indication a priori si la longueur moyenne des lignes est assez largement infrieure la taille de bloc, il sagit srementdunproblmedemigration. Dterminerpartirdequelpourcentagedeligneschanesoumigresilfautagirnestpassimple.Lepourcentageen soi nest pas suffisant cela dpend aussi de lactivit qui existe sur les lignes en question. Sil y a 90 % de lignes migres ou chanes mais que ces lignes ne sont jamais interroges, il ny a pas de problme de performance linverse, sil ny a que 1 % de lignes migres ou chanes mais que ces lignes soient utilises dans toutes les requtes,ilrisquedyavoirunproblmedeperformance.

9.Rorganiserlestockagedunetable
a.Vuedensemble
Lesbesoinsderorganisationdunetablesontvaris :
q

librerdelespacelibreaudessusdelaHWM amliorerletauxderemplissagedesblocs corrigerunproblmedemigration

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 13 -

rorganiser plus globalement le stockage de la table : changement de tablespace, rduction du nombre dextensions,changementdePCTFREE,etc.

LibrerdelespacesituaudessusdelaHWMpermetdercuprerdelespacealloulatablemaisjamaisutilis (etestimjamaisutilisable). Amliorerletauxderemplissagedesblocspermetaussiventuellementdelibrerdelespaceinutilis(lespacelibre desblocs),situcettefoisaudessousdelaHWM. Plusieurstechniquessontnotredispositionpourrorganiserlestockagedunetable :


q

ordreSQLALTER TABLE ... DEALLOCATE UNUSED recrerlatable/deslignesdelatable export/import ordreSQLALTER TABLE ... SHRINK SPACE ordreSQLALTER TABLE ... MOVE.

Letableausuivantrsumelestechniquesenvisageables()etindiquelesquellessontlesmieuxadaptes()tel outelbesoin : DEALLOCATE Recrer Export/ Import SHRINK MOVE

Librerdelespaceau dessusdelaHWM Amliorerletauxde remplissagedesblocs Corrigerunproblme demigration Rorganisationplus globale

lexceptiondelordreSQLALTER TABLE ... DEALLOCATE UNUSED,lestechniquescitespeuventaprioritreutiliss indiffremment pour rgler les diffrents problmes nanmoins, certaines techniques sont mieux adaptes que dautresteloutelbesoin. Historiquement,lexport/importestlatechniquedebasepourlesrorganisationsunpeumassives cestdailleurs toujourslabonnetechniquepourunerorganisationcompltedelabase,notammentencasdechangementdela tailledubloc. Pourlereste,lesordresSQLALTER TABLE ... MOVE(depuisla8i)etALTER TABLE ... SHRINK SPACE(depuisla10) sontapriorilesbonsoutilspour"reconstruire"unetable.

b.LordreSQLALTERTABLE...DEALLOCATEUNUSED
LordreSQLALTER TABLE ... DEALLOCATE UNUSEDpermetdelibrerlespacedunetablesituaudessusdelaHWM. Syntaxe ALTER TABLE nom_table DEALLOCATE UNUSED [ KEEP valeur [K|M] ] ; Exemple : ALTER TABLE adherent DEALLOCATE UNUSED; ALTER TABLE adherent DEALLOCATE UNUSED KEEP 0; ALTER TABLE adherent DEALLOCATE UNUSED KEEP 1M; LoptionKEEPindiquelespaceconserveraudessusdelaHWM.

- 14 -

ENI Editions - All rights reserved - Algeria Educ

SansclauseKEEP,latailleinitialedelatableestprserve : lordrenelibrerapasdespacesilaHWMestinfrieure latailleinitialedelatable(valeurdelacolonneINITIAL_EXTENTdelavueDBA_SEGMENTS). AveclaclauseKEEP,lespacespcifiestconserv(ventuellementaucunavecKEEP 0)etlatailleinitialedelatable, ventuellementajustedansledictionnairededonnes. Par ailleurs, lorsque la table est stocke dans un tablespace gr localement, avec une gestion uniforme des extensions,Oraclenelibreraquedesextensionsentires uneextensionnepeutpastre"coupe"endeux.Sila tableeststockedansuntablespacegrlocalement,avecunegestionautomatiquedesextensions,Oraclepeut "couper"uneextensionentenantcomptedesrglesinternesquilappliquesurlatailledesextensions. Lespacelibrestrendudisponiblepourdautressegments(vueDBA_FREE_SPACE). Cet ordre ne peut pas tre utilis pour librer de lespace audessous de la HWM (espace potentiel libre suitedessuppressionsdelignes,parexemple).

c.Recrerlatableoudeslignesdelatable
Supprimerlatablepuislarcrerpermetvidemmentdenrorganiserlestockage. Aupralable,ilfaudrasauvegarderlesdonnesdansunetabledetravail(ordreSQLCREATE TABLE ... AS SELECT). Cette mthode prsente un inconvnient majeur : les objets dpendants sont supprims (triggers, contraintes, privilges,index)ouinvalids(procduresstockes,vues).Ilfautdoncbienpensertoutrecreraveclatable. Exemple : -- crer une table de travail avec les bonnes clauses de stockage CREATE TABLE temp TABLESPACE ... PCTFREE ... STORAGE ... AS SELECT * FROM adherent; DROP TABLE adherent; RENAME temp TO adherent; -- recrer les objets dpendants La table tant recre avec de bonnes clauses de stockage, cette variante peut tre utilise pour rorganiser compltement le stockage de la table, amliorer le taux de remplissage des blocs, rsoudre un problme de migration. Par contre, il faut penser recrer tous les objets dpendants et remettre les droits. De plus, le traitementpeuttrelongsurunetablevolumineuse. Une premire variante possible consiste ne pas supprimer la table mais la tronquer (ordre SQL TRUNCATE TABLE) danscecas,lesobjetsdpendantssontprservs. Exemple : CREATE TABLE temp AS SELECT * FROM adherent; TRUNCATE TABLE adherent; INSERT INTO adherent SELECT * FROM temp; Cettevarianteoffremoinsdepossibilitspourlarorganisationpuisquelatablenestpasrecre nanmoins,elle permet damliorer le taux de remplissage des blocs (de librer de lespace sous la HWM) et de rsoudre un problmedemigration.Latablentantpassupprime,ilnyapasdedifficultaveclesobjetsdpendants. Par contre, il nest pas possible de tronquer une table qui possde une contrainte de cl primaire rfrence par ailleurs ilfautaupralabledsactiverlescontraintesdecltrangreconcernes.Deplus,lorsdelinsertion,les contraintes dintgrits sont vrifies et les triggers sont dclenchs, ce qui peut aussi poser des problmes : l encore,ilconvientdedsactiverlescontrainteset/oulestriggersquiposentdesdifficults. Uneautrevariante,utilisablepourcorrigerunproblmedemigrationsurunpetitnombredelignes,consistene supprimeretrecrerqueleslignesfautives.Latablentantpassupprime,ilnyapasdeproblmeaveclesobjets dpendants.Parcontre,lencore,cettemthodepeutposerdesdifficultsaveclescontraintesdecltrangreet lestriggers. Exemple : CREATE TABLE temp AS SELECT * FROM adherent WHERE ...; DELETE FROM TABLE adherent WHERE ...; INSERT INTO adherent SELECT * FROM temp; Pourcesdiffrentesvariantes,lesoutilsdexport/importpeuventtreutilisspoursauvegarderlesdonnespuisles
ENI Editions - All rights reserved - Algeria Educ - 15 -

openmirrors.com

rinsrer. Dans la pratique, aucune de ces diffrentes variantes nest vraiment simple mettre en uvre. De plus, avec les deuxpremiresvariantes,latablenestpasdisponiblependantlarorganisation.

d.LordreSQLALTERTABLE...SHRINKSPACE
LordreSQLALTER TABLE ... SHRINK SPACEpermetdecompacterleslignesdunetable,maisuniquementpourune tablestockedansuntablespacegrlocalementavecunegestionautomatiquedelespacedanslessegments.Par dfaut,Oraclecompacteaussilesegment,ajustelaHWMetlibrelespaceainsircupr. Syntaxe ALTER TABLE nom_table SHRINK SPACE [COMPACT] [CASCADE] ; Avec loption COMPACT, Oracle se contente de compacter les lignes, mais sans ajuster la HWM ni librer despace. LexcutionultrieuredunautreordreSQLALTER TABLE ... SHRINK SPACEpermettradeterminerlopration. Loption CASCADE permet de raliser la mme opration sur les segments dpendants de la table, notamment les index. Cetteoprationncessiteundplacementdeslignesetdoncunemodificationdu ROWIDdeslignesdplaces.Par dfaut, un tel dplacement nest pas autoris. Pour autoriser le dplacement des lignes de la table, vous pouvez excuter lordre SQL ALTER TABLE nom_table ENABLE ROW MOVEMENT. Lors du dplacement des lignes et de la modificationduROWID,Oraclemetjourlesindex. LoprationdeSHRINKpeuttreeffectueenligneetdesmisesjourparalllessontpossibles unverrouexclusif estpossurlatableuniquementaumomentducompactagedusegmentproprementdit(dplacementdelaHWMet librationdelespacercupr). Le compactage du segment peut poser des problmes si des longues requtes de lecture sont en cours sur la table cestlaraisonpourlaquelleilestpossiblededissocierlesdeuxphasesdutraitement. Exemple SQL> -- situation de dpart SQL> @dbms_space TEST Blocs : . Pleins = . 0 25% despace libre = . 25 50% despace libre = . 50 75% despace libre = . 75 100% despace libre = . Non formats = 0 Blocs : . Total = 256 . Inutiliss = 28 . Utiliss = 228

216 0 0 0 0

SQL> -- suppression dune ligne sur deux SQL> DELETE FROM test WHERE MOD(n,2) = 0; 7655 ligne(s) supprime(s). SQL> COMMIT; Validation effectue. SQL> -- la table est pleine de trous ! SQL> @dbms_space TEST Blocs : . Pleins = 0 . 0 25% despace libre = 0 . 25 50% despace libre = 2 . 50 75% despace libre = 214 . 75 100% despace libre = 0 . Non formats = 0 Blocs : . Total = 256 . Inutiliss = 28 . Utiliss = 228 SQL> -- tentative de SHRINK SQL> ALTER TABLE test SHRINK SPACE;

- 16 -

ENI Editions - All rights reserved - Algeria Educ

ALTER TABLE test SHRINK SPACE * ERREUR la ligne 1 : ORA-10636: ROW MOVEMENT is not enabled SQL> -- => erreur SQL> -- il faut autoriser le dplacement de ligne SQL> ALTER TABLE test ENABLE ROW MOVEMENT; Table modifie. SQL> -- cette fois cest bon SQL> ALTER TABLE test SHRINK SPACE; Table modifie. SQL> @dbms_space TEST Blocs : . Pleins . 0 25% despace libre . 25 50% despace libre . 50 75% despace libre . 75 100% despace libre . Non formats Blocs : . Total = 120 . Inutiliss = 2 . Utiliss = 118

= = = = = =

107 0 1 0 0 0

Lescript dbms_space.sqlappellelesprocdures SPACE_USAGEet UNUSED_SPACE du packageDBMS_SPACE pour afficher desinformationssurlespaceutilisdansunsegment,dontlenomestpassenparamtre. Surcetexemple,nousvoyonsqueleSHRINK SPACEabiencompactleslignesdansdesblocsetlibrlespace.

e.LordreSQLALTERTABLE...MOVE
Lordre SQL ALTER TABLE ... MOVEpermet de rorganiser compltement le stockage physique dune table sans la supprimer. Syntaxe ALTER TABLE nom_table MOVE [ TABLESPACE nom_tablespace ] [ PCTFREE valeur ] [ clause_stockage ] [ NOCOMPRESS | COMPRESS [ FOR { ALL | DIRECT_LOAD } OPERATIONS ] ] [ LOGGING | NOLOGGING ] ; - clause_stockage STORAGE ( [ INITIAL valeur [K|M] ] [ NEXT valeur [K|M] ] [ MINEXTENTS valeur ] [ MAXEXTENTS { valeur | UNLIMITED } ] [ PCTINCREASE valeur ] ) Exemple : ALTER TABLE adherent MOVE PCTFREE 20 STORAGE (INITIAL 10M) ; Les options sont les mmes que celles de lordre SQL CREATE TABLE.Lordre SQL ALTER TABLE ... MOVE est trs intressant car toutes les options de stockage peuvent tre modifies, dont le tablespace. De plus, les objets dpendantssontprservs. Leprincipemisen uvreestderecopierphysiquementlesdonnesdesextensionsactuellementallouesversune ouplusieursnouvellesextensionsallouesailleurs.Lesextensionsinitialessontlibreslafindutraitement : la tableinitialeestdoncintacteencasdchec,maisilfautunespacedisponibleaumoinsgallatailleinitialedela tablependantlareconstruction. Leslignestantphysiquementdplaces,lesROWIDchangentmaislesindexnesontpasmisjourentempsrel parOracle ilssontinvalids(statutUNUSABLE).Aprsavoirreconstruitlatable,ilfaudrareconstruirelesindex(ordre SQL ALTER INDEX ... REBUILD). De mme, les statistiques de la table deviennent invalides et de nouvelles
ENI Editions - All rights reserved - Algeria Educ - 17 -

openmirrors.com

statistiquesdoiventtrecollectes. Pendant le traitement, la table nest pas disponible en mise jour par contre, elle est accessible en lecture (le segmentinitialestprserv).Cettetechniquedereconstructionestplussimplemettreen uvre,etdoncmoins risque, que les techniques de recration. Cest sans conteste LA technique utiliser depuis la version 8i pour rorganiser le stockage dune table (ou dun tablespace, en ralisant lopration sur toutes les tables du tablespace). Exemple1
q

Situationdedpart

SQL> SELECT tablespace_name,blocks,extents FROM dba_segments 2 WHERE segment_name=ADHERENT AND owner=DIANE; TABLESPACE_NAME BLOCKS EXTENTS ------------------------------ ---------- ---------SYSTEM 768 21 SQL> SELECT num_rows,blocks,avg_row_len,sample_size, 2 TO_CHAR(last_analyzed,DD/MM HH24:MI) last_analyzed 3 FROM dba_tables WHERE table_name=ADHERENT and owner=DIANE; NUM_ROWS BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED ---------- ---------- ----------- ----------- ------------49907 659 86 49907 20/07 19:20 SQL> SELECT COUNT(head_rowid) FROM chained_rows 2 WHERE table_name=ADHERENT AND owner_name=DIANE; COUNT(HEAD_ROWID) ----------------5894 Reconstruction

SQL> ALTER TABLE diane.adherent MOVE 2 TABLESPACE data 3 PCTFREE 20; Situationlarrive(aprscalculdesstatistiquesetanalysedesligneschanesoumigres)

SQL> SELECT tablespace_name,blocks,extents FROM dba_segments 2 WHERE segment_name=ADHERENT AND owner=DIANE; TABLESPACE_NAME BLOCKS EXTENTS ------------------------------ ---------- ---------DATA 1280 1 SQL> SELECT num_rows,blocks,avg_row_len,sample_size, 2 TO_CHAR(last_analyzed,DD/MM HH24:MI) last_analyzed 3 FROM dba_tables WHERE table_name=ADHERENT and owner=DIANE; NUM_ROWS BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED ---------- ---------- ----------- ----------- ------------49907 751 86 49907 20/07 19:20 SQL> SELECT COUNT(head_rowid) FROM chained_rows 2 WHERE table_name=ADHERENT AND owner_name=DIANE; COUNT(HEAD_ROWID) ----------------0 Danslasituationdedpart,latableADHERENTprsentedeuxproblmesmajeurs :
q

ElleeststockedansletablespaceSYSTEM. Elle a plus de 10 % de lignes migres (les lignes sont petites donc il ne sagit pas dun problme de chanage).

- 18 -

ENI Editions - All rights reserved - Algeria Educ

Latableestdoncreconstruite :
q

dansletablespaceDATA avecunPCTFREEpluslev.

Parailleurs,letablespaceDATAestuntablespacegrlocalementavecunegestionuniformedesextensions(10Mo, soit 1 280 blocs) et une gestion automatique de lespace dans les segments il peut tre mieux adapt la volumtriefuturedelatable. Exemple2
q

Situationdedpart

SQL> SELECT num_rows,blocks,avg_row_len,sample_size, 2 TO_CHAR(last_analyzed,DD/MM HH24:MI) last_analyzed 3 FROM dba_tables WHERE table_name=ADHERENT and owner=DIANE; NUM_ROWS BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED ---------- ---------- ----------- ----------- -----------50966 602 86 50966 20/07 19:41 Reconstructionaveccompression

SQL> ALTER TABLE diane.adherent MOVE 2 COMPRESS;

Situationlarrive(aprscalculdesstatistiques)

SQL> SELECT num_rows,blocks,avg_row_len,sample_size, 2 TO_CHAR(last_analyzed,DD/MM HH24:MI) last_analyzed 3 FROM dba_tables WHERE table_name=ADHERENT and owner=DIANE; NUM_ROWS BLOCKS AVG_ROW_LEN SAMPLE_SIZE LAST_ANALYZED ---------- ---------- ----------- ----------- -----------50966 92 86 50966 20/07 19:41 Cetexempleillustrelegain,parfoisspectaculaire,obtenuaveclacompression.

10.Trouverdesinformationssurlestables
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlestables :
q

DBA_TABLES : informationssurlestables DBA_TAB_COLUMNS : informationssurlescolonnesdestables DBA_SEGMENTS :informationssurlessegments(dontceuxdetypetable) DBA_EXTENTS : informationssurlesextensionsallouesauxsegments(dontceuxdetypetable) DBA_TAB_MODIFICATIONS : informationssurlestablessurveilles.

LesvuesDBA_SEGMENTSetDBA_EXTENTSonttprsenteslasectionTrouverdesinformationssurlestablespaceset lesfichiersdedonnesduchapitreGestiondestablespacesetdesfichiersdedonnes. Lescolonnesintressantesdesdiffrentesvuessontprsentesciaprs. DBA_TABLES TABLE_NAME

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 19 -

Nomdelatable. OWNER Propritairedelatable. TABLESPACE_NAME Nomdutablespacedanslequellatableeststocke. PCT_FREE ValeurduPCTFREE. NUM_ROWS Nombredelignesdanslatable. BLOCKS NombredeblocssouslaHWM. AVG_ROW_LEN Longueurmoyenneduneligneenoctets,entenantcomptedesinformationsdecontrle. SAMPLE_SIZE Tailledelchantillonutilislorsducalculdesstatistiques. LAST_ANALYZED Dateetheuredeladernireanalyseralisesurlatable. LOGGING IndiquesilemodeLOGGINGestactifounonpourlatable(YESouNO). COMPRESSION Indiquesilatableestcompresse(DISABLEDouENABLED). TEMPORARY Indiquesilsagitdunetabletemporaire(YouN). ROW_MOVEMENT Indiquesiledplacementdelignesestautoris(ENABLEDouDISABLED). DBA_TAB_COLUMNS TABLE_NAME Nomdelatable. OWNER Propritairedelatable. COLUMN_NAME

- 20 -

ENI Editions - All rights reserved - Algeria Educ

Nomdelacolonne. DATA_TYPE Typededonnes. DATA_LENGTH Longueur. DATA_PRECISION Prcision. DATA_SCALE chelle. NULLABLE IndiquesilacolonneacceptelesvaleursNULL(YouN). COLUMN_ID Numrodelacolonne. DATA_DEFAULT Valeurpardfautdelacolonne. NUM_DISTINCT * Nombredevaleursdistinctesdanslacolonne. NUM_NULLS * NombredevaleursNULLdanslacolonne. AVG_COL_LEN * Longueurmoyennedelacolonne. LAST_ANALYZED * Tailledelchantillonutilislorsducalculdesstatistiques. SAMPLE_SIZE * Dateetheuredeladernireanalyseralisesurlatable. *Statistiquessurlescolonnes,calculespardfautlorsquelesstatistiquessontgnressurlatable. DBA_TAB_MODIFICATIONS TABLE_OWNER Propritairedelatable. TABLE_NAME Nomdelatable. INSERTS

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 21 -

Nombreapproximatifdelignesinsres. UPDATES Nombreapproximatifdelignesmodifies. DELETES Nombreapproximatifdelignessupprimes. TIMESTAMP Date/heuredeladerniremisejourdelastatistique. TRUNCATED Indiquesilatableattronque(YESouNO).

- 22 -

ENI Editions - All rights reserved - Algeria Educ

GestiondesindexBtree
1.Vuedensemble
Unindexestunestructuredfiniesuruneouplusieurscolonnesdunetable la(les)colonne(s)constitue(nt)lacl delindex. Lindex permet un accs rapide aux lignes de la table lors dune recherche base sur la cl de lindex. La notion dindexestanaloguecelledelindexdunlivre : pourrechercherunmotdansunlivre,ilestplusrapidederegarder daborddanslindex,cedernierdonnantlesnumrosdespagesquicontiennentlemot.Unindexestphysiquement etlogiquementindpendantdelatable.Ilpeuttrecr/supprimsansaffecterlatabledebase(saufimpactsurles performanceslorsquelindexestsupprim).Unindexncessitesonpropreespacedestockage. LesindexsontautomatiquementactualissetutilissparOracle :
q

utilisslorsdesrecherchessiunecldindexestmentionnedanslaclauseWHEREdunerequte actualisschaquemisejour(INSERT,UPDATE,DELETE).

La prsence ou labsencedun index est compltement transparente pour lapplication cest Oracle qui utilise (ou non)lesindexautomatiquement. Lamaintenancedesindexdgradelesperformancesdesmisesjour. Unindexpeuttreuniqueounonunique :
q

Unique: unevaleurdelacldindexnestprsentequunefoisdanslatable. Nonunique : unevaleurdelacldindexpeuttreprsenteplusieursfoisdanslatable.

Oracleprconisedenepascrerdindexuniqueexplicitementmaisdedfinirdescontraintesdintgrit(PRIMARY KEY ou UNIQUE) pour lesquelles Oracle cre automatiquement des index uniques. Les index non uniques, par contre, doiventtrecrsexplicitement. Unindexpeuttrecompos(concatn).Danscecas,lacldindexcontientplusieurscolonnesdelatable ellesne sontpastoujoursadjacentesdanslatable,niforcmentplacesdanslemmeordrequedanslatable. Les valeurs NULL ne sont pas stockes dans les index Btree et ne sont donc pas prises en compte visvis de lunicit : deuxlignesdelatablepeuventavoirlavaleurNULLdanslacolonneconcerne.

2.StructuredunindexBtree
Structuregnrale

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

LesdonnessontstockesdansdesblocsOracle. Lesblocsbranches(branchblocks)contiennentdesdonnesquipointentversdesblocsdeniveauinfrieur.Lesblocs branches permettent dassurer un aiguillage dun bloc racine vers les blocs feuilles, en liminant des branches chaqueniveau. Lesblocsfeuilles(leafblocks)contiennentlesdiffrentesvaleursdelacldindexaveclesROWIDdeslignesdelatable correspondante.Pourunindexunique,ilexisteunseulROWIDparvaleurdecl pourunindexnonunique,plusieurs ROWIDsontpossiblespourchaquevaleurdecl.Lesblocsfeuillespointentversleslignesdelatable. Lorsque lindex est utilis pour rechercher une valeur de cl, le bloc racine est lu, puis le bloc feuille de niveau infrieur correspondant la branche qui contient la valeur de cl est lu son tour, et ainsi de suite jusquau bloc feuillequicontientlavaleurdecl associcettevaleurdecl,Oraclevatrouverle(s)ROWID(s)delaouleslignes quicontiennentlavaleurdelacletpouvoirainsilesliredirectementdanslatable. Lesblocsfeuillessontdoublementchanspourfaciliterleparcoursdelindex. LesvaleursdeclNULLnesontpasprsentesdanslindex. Danslesblocsfeuillesdunindexnonunique,lesdonnessonttriessurlaclpuissurleROWID lavaleurdelacl estrptechaquefois. Structuredunbloc limage de la table, un bloc dindexcomprendlesdonnesproprementditesetdesinformationsdecontrle(en ttedebloc,enttedeligne,etc.). Le remplissage du bloc, la cration de lindex uniquement, peut tre contrl par le paramtrePCTFREE. Le paramtrePCTFREEestdoncimportantlorsdelacrationdunindexsurunecolonnenonvide.Danslesautrescas, oupourlasuitedelaviedelindex,leparamtrenestpasutilis. IlnyapasdePCTUSEDpourlesindex.

3.AvantagesetinconvnientsdesindexBtree
Avantages Lindexamliorelaperformancedesrequtes(SELECT,UDATE etDELETE)quiutilisentlacldelindexdanslaclause WHERE. Larbre est maintenu quilibr par Oracle. Dans "Btree", "B" signifie balanced (balanc), cestdire quOracle sarrangepourmaintenirsonarbrequilibraufuretmesuredesmisesjourdelindex.Pourcela,Oraclepeut couperdesblocsencasdebesoin(notiondesplit). Enconsquence,touteslesvaleursdelacldanslesblocsfeuillessontsitueslammeprofondeurdelarbreet donc accessibles en parcourant le mme nombre de blocs. La recherche de nimporte quelle valeur de cl prend toujourspeuprslemmetemps. PourquoiunindexBtreeestilperformant? Prenonslexempledunindexsurunedate :

- 2-

ENI Editions - All rights reserved - Algeria Educ

Lalongueurdunelignedelindexestgale8octets(longueurdutypeDATE)+6 octets(longueurduROWID) +quelquesoctetspourlesinformationsdecontrle(arrondi6octets)=20octets. Avec une taille de bloc (DB_BLOCK_SIZE) de 8 Ko, lespace disponible dans le bloc est gal 8 192 octets tailledelentte(entre100et200octets,prenons192octetspournotreexemple)=8000octets,rempli 90%=7200octets. Unblocpeutdoncstockerenviron7200/20=360cls. Unarbreduneprofondeurde3peutdoncgrer360x360x360=466millionsdecls. Pour retrouver une valeur parmi les 466 millions, 3 entres/sorties sont suffisantes dans lindex plus une entre/sortiedanslatableafindelirechaqueligne.

Deplus,silescolonnesutilisesdanslesdiffrentesclausesdelarequtesonttoutesprsentesdanslindex,Oracle napasbesoindaccderlatable.Siunindexcomposexistesurlescolonnes(NOM,PRENOM)delatableADHERENT,la requtesuivantenaccdepaslatable : SELECT nom, prenom FROM adherent WHERE nom = HEURTEL; Inconvnients Lepremierinconvnientdunindexestquilncessiteunvolumedestockageimportant.Lesecondinconvnientdun indexestquildgradelesperformancesdesmisesjour.Pourdesmisesjourunitaires,celanedevientsensible quesilatablecomprendungrandnombredindex pourunemisejourmassive,cettedgradationestsensibleds lexistence du premier index. Ces deux inconvnients sont deux bonnes raisons pour ne pas indexer toutes les colonnesdunetable.

4.DirectivespourlacrationdesindexBtree
a.Principesgnraux
Les colonnes candidates lindexation sont les colonnes frquemment prsentes dans les clausesWHERE, comme critredeslectionoudejointure. Encomplment,ilfautsassurerquelesrequtescorrespondantessontslectivesetramnentmoinsde510 % deslignesdelatable.Celaimpliquedonc,quelesvaleursdelacolonnesoientrelativementuniques(beaucoupde valeursdistinctes),etquelesconditionsquilesutilisentsoientellesmmesslectives.Ilnefautdoncpasindexer lescolonnesayantpeudevaleursdistinctes(lacolonnesexeparexemple). Ilestinutiledindexerlespetitestables. Pourtrouverlesbonnescolonnescandidateslindexation,ilfautanalyserlesrequtesSELECT,UPDATEetDELETE, etrechercherlescolonneslesplusfrquemmentutilisesdanslesclausesWHERE(critredeslectionetjointure). La performance dunindexdpenddesaslectivitintrinsqueetdelaslectivitdesrequtesquilutilisent.La slectivit peut tre dfinie comme, le nombre moyen de lignes ramenes par une requte divis par le nombre totaldelignes. Prenons lexemple de la table ADHERENT comprenant 100 000 personnes avec une rpartition homogne homme/femme.ConsidronslesclausesWHEREsuivantes : ClauseWHERE WHERE numero =12345 WHERE numero BETWEEN 1 AND 20000 WHERE sexe = F Slectivit 1/100000=0,001% 20000/100000=20% 50000/100000=50%

CesexemplesmontrentquelacolonneNUMEROestintrinsquementslectivemaisquecertainesrequtesbases surcettecolonnepeuventnepasltre parcontre,lacolonneSEXEnestpasintrinsquementslective.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Une colonne ayant peu de valeurs distinctes est intrinsquement non slective. Parmi les colonnes candidates lindexation, il faut donc identifier celles qui sont intrinsquement slectives et utilises dans des requtes elles mmes slectives une colonne sera effectivement une bonne candidate lindexation si la slectivit (de la colonneetdesrequtesquilutilisent)estinfrieureenviron510%.Danslesgrandeslignes,siunerequte utilisant un index ramne plus de 10 % des lignes, Oracle se rvlera plus performant en ralisant un parcours completdelatablequenpassantparlindex. Cettergledes510%nestpasensoiunegarantiedeperformanceeffectivedelindex denombreuxautres facteursentrentenlignedecompte.Cestnanmoinsunboncritrededpart,quilfautvaliderenralisantdes tests. Parmi les colonnes candidates, il faudra dabord identifier les colonnes qui sont systmatiquement prsentes ensembles dans la clause WHERE : ce sont de bonnes candidates la cration dun index compos qui est gnralement plus slectif quun index simple. En effet, si les colonnes C1 et C2 dune table sont frquemment utilisesensemblesdanslesclausesWHEREetquilexiste10valeursdistinctespourC1(slectivitde10%)et10 valeurs distinctes pour C2 (slectivit de 10 %), la slectivit thorique du couple (C1,C2) est de 1 % (dans lhypothseoilnyapasdecorrlationentreC1etC2). Indexerlespetitestablesnesertriencarlenombreminimumdentres/sortieslorsdunaccsparindexestde2 (1 entre/sortie au minimum pour lindex et 1 entre/sortie au minimum pour la table). Or, grce au paramtreDB_FILE_MULTIBLOCK_READ_COUNT (DBFMRCciaprs),OraclepeutlireDBFMRCblocsenuneentre/sortielors dun parcours complet de table. Donc, si la taille de la table est infrieure DBFMRC blocs, un index est moins performant que le parcours complet si la taille de la table est infrieure 2 x DBFMRC blocs, un index est aussi performant (mais pas plus) que le parcours complet. Ainsi, en gnral, indexer des tables comprenant quelques dizainesdeblocsnapporterien. Les valeurs NULL ne sont pas stockes dans les index Btree donc, indexer une colonne pour amliorer les recherches IS NULL ne sert rien. Hormis les index uniques, il nest jamais certain quun index soit rellement performant il faut donc le tester. Lors des tests sur les index, il ne faut pas oublier de vrifier si les index ne dgradentpastroplesperformancesdesmisesjour.

b.Complmentssurlesindexcomposs
Lordredescolonnesestimportantdansunindexcompos.Unindexcomposestutilissilescolonnesdettede lacldindexsontprsentesdanslacondition. Siunindexcomposexistesurlescolonnes(NOM,PRENOM)delatableADHERENT,lestroisrequtessuivantesutilisent lindex : SELECT * FROM adherent WHERE nom = HEURTEL AND prenom = Olivier; SELECT * FROM adherent WHERE prenom = Olivier AND nom = HEURTEL; SELECT * FROM adherent WHERE nom = HEURTEL; Parcontre,larequtesuivantenutilisepaslindex : SELECT * FROM adherent WHERE prenom = Olivier; LordredescolonnesnapasdimportancedanslaclauseWHERE. Danscertainscas,silapremirecolonnedelindexatrspeudevaleursdistinctes(parexemple2),Oracle estsusceptibledesubdiviserlindex en sousindex(unpourchaquevaleurdelapremirecolonne)etde parcourirchaquesousindex. Dans certaines situations, il peut tre intressant dajouter dans la cl dindex des colonnes prsentes dans la clauseSELECT,pourviterdaccderlatable. Pour la requte suivante, ajouter la colonne NUMERO_TELEPHONE dans lindex compos qui existe sur les colonnes (NOM,PRENOM)permetdviterlaccslatable SELECT numero_telephone FROM adherent WHERE nom = HEURTEL AND prenom = Olivier;

Abuser de cette astuce et placer de nombreuses colonnes dans la cl dindex peut rendre lindex moins performant. Plus la cl dindex est longue, moins il y a de cls par bloc, et plus lindex est volumineux et

- 4-

ENI Editions - All rights reserved - Algeria Educ

profond,cequiaugmentelenombredentres/sortiespourparcourirlindex.

c.Sassurerquelesrequtessontbiencrites
Parailleurs,ilfautsassurerquelcrituredesrequtesnempchepaslindexdtreutilis. ExemplesdeclausesWHEREolindexprsentsurlacolonnenomnestpasutilis : nom IS NULL LesvaleursNULLnesontpasdanslindex. nom NOT IN(DUPONT,DUPOND)nom < > HEURTEL Lesrecherches"diffrentde"nutilisentpaslindex. nom LIKE %TEL LesrecherchesLIKEnutilisentpaslindexsiledbutdelachanenestpasconnu(recherchesdutype"contient", "seterminepar"). SUBSTR(nom,1,1) =H Et plus gnralement, lorsquune fonction est applique la colonne, ou que la colonne est utilise dans une expression. Parcontre,exemplesdeclausesWHEREolindexestutilis : nom > HEURTEL Lesrecherchesdetype"infrieur","suprieur","entre"utilisentlindex. nom LIKE H% Ledbutdelachaneestconnu.

Cenestpasparcequunerequtenempchepaslutilisationdunindex,quelindexestrellementutilis. Cest loptimiseur Oracle qui dcidera dutiliser ou non un index, en fonction des caractristiques de la requte,delatableetdesindex(cestunvastesujet).

5.Spcifierlestockagedunindex
a.Indexindpendant
Lestockagedunindexpeuttrespcifilorsdelacrationdelindex,danslordreSQLCREATE INDEX. Syntaxesimplifie CREATE [UNIQUE] INDEX nom_index ON nom_table(liste_colonnes) [ TABLESPACE nom_tablespace ] [ PCTFREE valeur ] [ clause_stockage ] [ ONLINE ] [ NOCOMPRESS | COMPRESS [n] ] [ LOGGING | NOLOGGING ] ; - clause_stockage STORAGE ( [ INITIAL valeur [K|M] ] [ NEXT valeur [K|M] ] [ MINEXTENTS valeur ] [ MAXEXTENTS { valeur | UNLIMITED } ] [ PCTINCREASE valeur ] )

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

Exemple : CREATE INDEX adherent$nom#prenom ON adherent(nom,prenom) TABLESPACE indx PCTFREE 20 STORAGE ( INITIAL 2M ) ; LesclausesTABLESPACEetSTORAGEontdjtprsentesauchapitreGestiondestablespacesetdesfichiersde donnes. Noubliez pas que la clause STORAGE est traite diffremment selon que le tablespace est gr par le dictionnaireoulocalement.Dansuntablespacegrlocalement,seuleloptionINITIALestutile. LaclausePCTFREEdonnelavaleurduPCTFREE(entre0et99,10pardfaut). LaclauseONLINEpermetdautoriserlesmisesjoursurlatablependantlaconstructiondelindex. La clause COMPRESS [n] permet de compresser la cl dindex, uniquement dans le cas dun index compos. Pour compresser la cl dindex, Oracle limine les occurrences rptes des valeurs des colonnes de la cl. Loption n permetdeprciserlenombredecolonnesdelaclcompresser.Pardfaut, nestgalaunombredecolonnes moinsunpourunindexuniqueetaunombredecolonnespourunindexnonunique.Compresserlacldesindex composs peut permettre de rduire sensiblement la taille de lindex. Pour obtenir un rsultat optimal, il faut compressersurlaportiondettedelaclcomprenantleplusgrandnombrederptitions(cetteinformationpeut treobtenueaveclordreSQLANALYZE INDEX ... VALIDATE STUCTUREprsentplusloin). La clause NOLOGGING permet de ne pas journaliser la cration de lindex les mises jour individuelles sont, par contre,toujoursjournalises.Lesconsidrationssontlesmmesquepourunetable(cf.Gestiondestables)mais un index est moins critique quune table si un index nest pas rcuprable, il est toujours possible de le reconstruire. IlexisteaussiunordreSQLALTER INDEXmais,commepourunetable,ilnapasdeffetrtroactifsurcequiestdj allou gnralement,encasdebesoin,lindexserapluttreconstruit.

b.Indexdunecontraintedeclprimaireouunique
Lestockagedelindexduneclprimaireouuniquepeuttrespcifilorsdeladfinitiondelacontraintegrce loptionUSING INDEXdelaclauseCONSTRAINT. Syntaxe CONSTRAINT nom_contrainte { PRIMARY KEY | UNIQUE } (liste_colonnes) USING INDEX<$ICONSTRAINT;USING INDEX> [ spcification_stockage | nom_index | (ordre_cration_index) ] - spcification_stockage [ TABLESPACE nom_tablespace ] [ PCTFREE valeur ] [ clause_stockage ] [ ONLINE ] [ NOCOMPRESS | COMPRESS [n] ] [ LOGGING | NOLOGGING ] ;
q

nom_index:nomdunindexquiexistedj. ordre_cration_index:ordreSQLdecrationdindextelquevuprcdemment.

Exemple :
q

Dfinitiondesclausesdestockagedelindex

ALTER TABLE adherent ADD CONSTRAINT adherent$pk PRIMARY KEY(numero) USING INDEX TABLESPACE indx PCTFREE 0 STORAGE (INITIAL 2M) ;
q

Spcificationdunindexdjexistant

ALTER TABLE adherent ADD CONSTRAINT adherent$uk01 UNIQUE (nom,prenom,telephone) USING INDEX adherent$ix01 ;
- 6 ENI Editions - All rights reserved - Algeria Educ

Crationcompltedelindex

ALTER TABLE adherent ADD CONSTRAINT adherent$uk01 UNIQUE (nom,prenom,telephone) USING INDEX ( CREATE INDEX adherent$ix01 ON adherent(nom,prenom,telephone) TABLESPACE indx PCTFREE 25 STORAGE (INITIAL 10M) ) ; Pardfaut,lorsquunecontraintedeclprimaireoudecluniqueestcreouactive,Oracleregardesilexisteun index utilisable pour vrifier la contrainte. Cet index peut tre unique ou non unique, mais doit possder une cl galeoucommenantparlacldelacontrainte.Siuntelindexnexistepas,Oraclecreunindexuniquepour vrifierlacontrainte,indexdontlaclestgalelacldelacontrainte.Danscecas,loption USING INDEX de la clauseCONSTRAINTpermetdespcifierlescaractristiquesdestockagedecetindex. DepuisOracle9i,laclauseUSING INDEXpeut :
q

mentionnerexplicitementlenomdunindexutiliserpourvrifierlacontrainte inclureunordreSQLCREATE INDEXpourcrerexplicitementlindexassocilacontrainte.

Danslesdeuxcas,lesautresoptionsdelaclauseUSING INDEXsontinterdites. Lindexmentionnoucrpeuttreuniqueounonuniquemaisildoittre"compatible"aveclacontraintedecl primaireouunique.Silindexestunique,lacldelindexdoittregalelacldelacontrainte(mmescolonnes, dans le mme ordre). Si lindex est non unique, la cl de lindex doit tre gale ou commencer par la cl de la contrainte. Exemple : CREATE INDEX adherent$ix01 ON adherent(nom,prenom,telephone) TABLESPACE indx ; ALTER TABLE adherent ADD CONSTRAINT adherent$pk PRIMARY KEY (nom,prenom) USING INDEX adherent$ix01 ; Fonctionnellement, crer lindex avant la contrainte et le mentionner dans lordre de cration de la contrainte quivautstrictementcrerlindexdanslordrededfinitiondelacontrainte. UtiliserunedesdeuxclausesUSING INDEXapparuesdansOracle9ipermet :
q

dtreplusexplicite dedsignerunindexprcissiplusieursindexpeuventtreutilisspourvrifierlacontrainte decrerunautreindexqueceluiquiseraitutilispardfaut(avecuneautrecl) siaucunindexnexistedj,decrerunindexavecunnomprcis,suruneclprcise,gnralementplus "longue"quelacldelacontrainte decrerexplicitementunindexnonunique(voirlintrtciaprs).

LavueDBA_CONSTRAINTScontientdeuxcolonnes,INDEX_OWNER etINDEX_NAME,quipermettentdefairelelien entreunecontraintedeclprimaireoudecluniqueetsonindexassoci(vueDBA_INDEXES). Pardfaut,lorsquuneclprimaireouuniqueestsupprime :


q

Lindexassociestsupprimsilestunique.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

Lindexassociestconservsilestnonunique.

Loriginedelindex(crparOracle,djexistant,crdanslordrededfinitiondelacontrainte)napasdimpact. Depuis Oracle9i, il est possible dindiquer explicitement si lindex associ une contrainte supprime doit tre conservousupprim. Syntaxe ALTER TABLE DROP CONSTRAINT { nom_contrainte | PRIMARY KEY } KEEP INDEX | DROP INDEX ; A priori, conserver un index unique lors de la suppression dune contrainte de cl primaire ou unique na pas de sens : lunicitesttoujoursvrifieauniveaudelindex. Lapproche par dfaut dOracle est relativement logique. Si une contrainte de cl primaire ou de cl unique est supprime, cest notamment que lunicit nest plus souhaite supprimer lindex associ est donc logique. Par contre, un index non unique ne vrifie pas lunicit et peut donc tre conserv, mme lorsque la contrainte est supprime. Lanouvelleclauseestintressantepourallerlencontredufonctionnementpardfaut : supprimerunindexqui seraitconservouconserverunindexquiseraitsupprim.Ellepermetaussidtreplusexpliciteetdenepasse proccuperdufonctionnementpardfaut. Crersystmatiquementdesindexnonuniquespourgrerlescontraintesdeclprimaireetdeclunique estintressant,etlaisseentouttatdecauselechoixdeconserverounonlindexlorsdelasuppression oudeladsactivationdelacontrainte.

6.Recommandationspourlestockagedesindex
a.Vuedensemble
Lesrecommandationssontlesmmesquepourlestables(sectionGestiondestables) :
q

recommandationnumroun(fondamentale) : stockerlesindexdansunouplusieurstablespacesddis,de prfrence grs localement (cest le cas par dfaut) avec une gestion automatique de lespace dans les segments(cestlecaspardfaut) recommandation numro deux (moins importante) : rgler PCTFREE avec soin (voir Estimation de PCTFREE), aumoinspourlesindexlesplusimportants recommandationnumrotrois(moinsimportante) : allouerunespaceinitiallindex,adaptlavolumtrie estimeunechancedonne(pasforcmenttrslointaine,cartrssouvent,lesindexsontreconstruits intervallesrguliers).

Dfinir un index en spcifiant un INITIAL adapt la volumtrie estime de lindex, peut amliorer la performancedecrationdelindex,endiminuantlenombredextensionsallouespendantlopration.

b.Estimerlavolumtriedunindexunechancedonne
Lencore,leplussimpleetlepluspragmatiqueconsisteprocdercommepourunetable :
q

estimerlenombredelignesattendues crerlindexdanslesconditionsdexploitation(tailledeblocetPCTFREEnotamment) chargerlatableavecunjeudedonnesreprsentatives

- 8-

ENI Editions - All rights reserved - Algeria Educ

calculer le nombre de blocs dindex occups par ce jeu dessai (par exemple, partir des statistiques de lindexoulaidedupackageDBMS_SPACE,voirciaprs) endduirelenombredeblocspourlenombredelignesattendues(rgledetrois).

Supposons,parexemple,quelatableADHERENT(schmaDIANE)aittchargeavec10 000lignesetquelledoiten contenir250 000unechancede6mois.Nouspouvonsraliserlecalculsuivantpourundecesindex : SQL> ANALYZE INDEX adherent$ix01 VALIDATE STRUCTURE; Index analys. SQL> SELECT lf_blks+br_blks FROM index_stats 2 WHERE name=ADHERENT$IX01; LF_BLKS+BR_BLKS --------------59 SQL> SELECT 59/10000*250000 estimation FROM dual; ESTIMATION ---------1475 Lindexpourlejeudedonnesutilise59blocs,doncparrgledetrois,nouspouvonsestimerquelindexutilisera1 475blocsdans6mois. LemploidelordreSQLANALYZE INDEX ... VALIDATE STRUCTUREestprsentplusloin.

c.EstimationdePCTFREE
VousnavezpasbesoindevousproccuperdePCTFREEsilacolonneindexeestvidelorsdelacrationdelindex. Pourmmoire,PCTFREEestprisencompteuniquementlacrationdelindexetnesteffectivementutilisquesila colonneindexerestnonvide. VouspouvezpositionnerPCTFREEunevaleurfaible(ventuellement0)danslescassuivants :
q

Silindexestcrsurunecolonnequiserararementmisejour(niUPDATEniINSERT). Silindexestcrsurunecolonnequivacontinuerfairelobjetdinsertionsavecdesvaleursendehorsde laplagedesvaleursactuelles(cesentresdindexirontdansdenouveauxblocs).

Danslecasolindexestcrsurunecolonnenonvide,lobjectifdePCTFREEestsimple : rserverdelespacedans les blocs pour les ventuelles futures insertions de cls dans les blocs dindex initialement utiliss (les cls sont triesdanslesblocsfeuilles).Sipouruneraisonquelconque,lesfuturesinsertionsdeclsnerisquentpasdevenir danslesblocsdjutiliss,ilestpossibledemettreunPCTFREEfaibleounul. VousdevezparcontrepositionnerPCTFREEunevaleurlevedanslescassuivants :
q

Silindexestcrsurunecolonnequiserasouventmisejour(UPDATE). Silindexestcrsurunecolonnequivacontinuerfairelobjetdinsertionsavecdesvaleursappartenant laplagedesvaleursactuelles(cesentresviendrontsintercalerdanslesblocsexistants).

Danscecas,PCTFREEpeuttreestimparlaformulesuivante : PCTFREE = 100 x (1 -Ni / Nf) Ni=nombreinitialdelignes Nf=nombrefinaldelignes(unechancedonne). Nfestunevaleurrelativementarbitraire,Nf - Nitantlenombredelignesinsrerdanslindexavantquetout lespace laiss libre initialement soit occup (statistiquement), et que Oracle doit commencer rorganiser son arbredindex. Unevaleurarbitrairede PCTFREE peut tre utilise (10 20 %), sachant quil est facile de superviser le stockage dunindexetdelereconstruireencasdebesoin.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

Lorsquune cl dindex est modifie, lentre correspondante est supprime et recre. Lorsque des entressontsupprimesdansunblocdindex,lespacelibrnepeuttrerutilisquepourdesentres dontcestlaplace(lesdonnessonttriesdanslesblocsfeuilles).Pourpouvoirrutiliserunblocetyplacerdes valeurscompltementdiffrentes,ilfautqueleblocsoitcompltementvide.

7.Superviserlespaceoccupparunindex
a.Vuedensemble
Lencore,voustrouverezdenombreusessimilitudesaveclestables... LesvuesDBA_SEGMENTSetDBA_EXTENTSprsentesauchapitreGestiondestablespacesetdesfichiersdedonnes permettentdevoirlespaceglobalalloulindex,maisellesnedonnentpasdinformationssurlenombredeblocs rellementutiliss. Pourobtenirdesinformationsplusdtaillessurlestockagedunindex,vouspouvez :
q

utiliserlesinformationscalculesparlepackageDBMS_SPACE(voirlepointGestiondestables) employerlesstatistiquesgnresparlepackageDBMS_STATS utiliserdautresstatistiquescalculesparlordreSQLANALYZE INDEX ... VALIDATE STRUCTURE.

LesstatistiquesgnresparlepackageDBMS_STATSnesontpassuffisantespourraliseruneanalysedtailledu stockagedelindex(maisellessontsuffisantespourloptimiseur) nousnelesvoqueronsdonc,pasici(description delavueDBA_INDEXESaupointTrouverdesinformationssurlesindex). Nousallonsparcontre,prsenterlutilisationdelordreSQLANALYZE INDEX ... VALIDATE STRUCTURE.

b.LordreSQLANALYZEINDEX...VALIDATESTRUCTURE
Lordre SQL ANALYZE INDEX ... VALIDATE STRUCTURE permet de vrifier lintgrit de lindex et dobtenir des informationsdtaillessurlestockagedelindex. Syntaxe ANALYZE INDEX nom_index VALIDATE STRUCTURE; Exemple : ANALYZE INDEX adherent$ix01 VALIDATE STRUCTURE; LordreSQLANALYZE INDEX ... VALIDATE STRUCTUREnevrifiepaslacohrencedelindexvisvisdelatable pour vrifierunetellecohrence,ilfautajouterloptionCASCADE.LersultatpeuttreconsultdanslavueINDEX_STATS : NAME nomdelindex. HEIGHT hauteurdelarbre. BLOCKS nombredeblocsallousausegment. LF_BLKS nombredeblocsfeuillesdanslindex.
- 10 ENI Editions - All rights reserved - Algeria Educ

BR_BLKS nombredeblocsbranchesdanslindex. LF_ROWS nombredelignes(valeurs)danslindex. DEL_LF_ROWS nombredelignessupprimesdanslindex. PCT_USED pourcentagedelespacealloulindexquiestutilis(entre0et100). OPT_CMPR_COUNT Nombredecolonnesdelacldindexutiliserpouravoirunecompressionoptimale. OPT_CMPR_PCTSAVE Pourcentagedespacequipeuttreconomisencompressantlacldindexselonlenombredecolonnesindiqu. LavueINDEX_STATSnedonnequelersultatdudernierANALYZE INDEX ... VALIDATE STRUCTURE. Les statistiques gnres par lordre SQL ANALYZE INDEX ... VALIDATE STRUCTURE ne sont pas utilises par loptimiseur. La somme LF_BLKS+BR_BLKS donne le nombre de blocs utiliss par lindex, cestdire le nombre de blocs dans lequelilexisteaumoinsuneligne PCT_USEDdonnelepourcentagemoyendoccupationdesblocsutiliss. Exemple :
q

Situationdedpart(justeaprslacrationdelindex)

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used, 2 lf_rows,del_lf_rows 3 FROM index_stats WHERE name=ADHERENT$IX01; HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------- -------- -------- -------- -------- -------- ----------2 57 1 64 89 9949 0 Situationaprsuneforteactivitdemisesjour(uniquementUPDATE)surlatable

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used, 2 lf_rows,del_lf_rows 3 FROM index_stats WHERE name=ADHERENT$IX01; HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------- -------- -------- -------- -------- -------- ----------2 115 1 128 70 13177 3228 Dans cet exemple, nous voyons que des blocs supplmentaires ont t allous lindex et ont t utiliss, mais avecunedgradationdutauxdoccupation.LacolonneDEL_LF_ROWSmontrequedesentresonttsupprimes, alors quil ny a eu aucune suppression dans la table mais, comme nous lavions indiqu prcdemment, une modificationdecldindexsetraduitparunesuppression(dolesDEL_LF_ROWS)puisuneinsertion(dolutilisation ventuelledenouveauxblocs).

c.Problmespossiblessurlestockage
Lesproblmespossiblessurlestockagedunindexsontlessuivants :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 11 -

espaceinutilisalloulindex faibletauxdoccupationmoyendesblocset/ouprofondeurimportantedelarbre.

Espaceinutilisallouunindex Ilyadelespaceinutilisallouunindexsilenombredeblocsoccupsestfaibleparrapportaunombredeblocs allous,etsilindexnevaplusgrossir(oupeu). Le nombre de blocs occups est donn par la somme de la valeur des colonnes LF_BLKS et BR_BLKS de la vue INDEX_STATSetlenombredeblocsallousparlavaleurdelacolonneBLOCKSdelavueINDEX_STATS. Exemple : SQL> SELECT lf_blks+br_blks "occups",blocks "allous" 2 FROM index_stats WHERE name=ADHERENT$IX01; occups allous -------- -------116 128 Cepremierproblmenapasdincidencesurlesperformances(lesblocsaudeldelaHWMnesontjamaislus) il conduitjusteungaspillagedespacedisque. Faibletauxdoccupationmoyendesblocset/ouprofondeurimportantedelindex Le stockage interne dun index peut tre considr comme dgrad si une ou plusieurs des conditions suivantes sontvrifies :
q

LerapportDEL_LF_ROWS/LF_ROWSestlev(suprieur10%ou20%). Lepourcentagedoccupation(PCT_USED)estfaible(infrieur70%). Laprofondeurdelarbredindex(HEIGHT)estleve(strictementsuprieure5).

Un mauvais remplissage des blocs peut tre li une valeur inadapte de PCTFREE lors de la cration de lindex et/ou un index trs volatile (nombreuses mises jour). Ce deuxime problme a des incidences sur les performancesetsurlutilisation de lespacedansleDatabaseBufferCache.Moinslesblocssontpleins,pluslindex estvolumineuxetprofond,cequiaugmentelenombredentres/sortiespourleparcoursdelarbre. Un index cr sur une table trs volumineuse peut avoir un arbre profond. Ce quil faut donc surveiller, cest davantage la dgradation au fil du temps (surtout si la volumtrie de la table reste par ailleurs, stable) quune situationuninstantdonn. Exemple :
q

Avant

SQL SELECT height,pct_used,ROUND(del_lf_rows/lf_rows*100) PCT_DEL 2 FROM index_stats WHERE name=ADHERENT$IX01; HEIGHT PCT_USED PCT_DEL -------- -------- -------2 89 0 Aprs

SQL> SELECT height,pct_used,ROUND(del_lf_rows/lf_rows*100) PCT_DEL 2 FROM index_stats WHERE name=ADHERENT$IX01; HEIGHT PCT_USED PCT_DEL -------- -------- -------2 70 24 Sur cet exemple, le stockage de lindex sest dgrad au fil du temps (alors que la volumtrie de la table na pratiquementpaschang).

- 12 -

ENI Editions - All rights reserved - Algeria Educ

8.Rorganiserlestockagedunindex
a.Vuedensemble
Lesbesoinsderorganisationdunindexsontvaris :
q

librerdelespacelibreaudessusdelaHWM rorganiserunindexdontlastructuresestdgrade rorganiser plus globalement le stockage de lindex : changement de tablespace, rduction du nombre dextensions,changementdePCTFREE,etc.

LibrerdelespacesituaudessusdelaHWMpermetdercuprerdelespacealloulindexmaisjamaisutilis (etestimjamaisutilisable).Amliorerletauxderemplissagedesblocspermetaussiventuellementdelibrerde lespaceinutilis(lespacelibredesblocs)situcettefois,endessousdelaHWM. Plusieurstechniquessontnotredispositionpourrorganiserlestockagedunindex :


q

OrdreSQLALTER INDEX ... DEALLOCATE UNUSED OrdreSQLALTER INDEX ... COALESCE OrdreSQLALTER INDEX ... SHRINK SPACE OrdreSQLALTER INDEX ... REBUILD.

Ilestvidemmentaussipossibledesupprimerlindex (ordre SQLDROP INDEX)puisdelecrerdenouveau(ordre SQL CREATE INDEX), mais une reconstruction (ordre SQL ALTER INDEX ... REBUILD) se rvle gnralement plus intressante. Letableausuivantrsumelestechniquesenvisageables()etcellesquisontlesmieuxadaptes()teloutel besoin : DEALLOCATE Librerdelespaceaudessusdela HWM Amliorerletauxderemplissagedes blocs Rorganiserplusglobalement COALESCE SHRINK REBUILD

Rorganiserlestockagedunindexestmoinscompliququerorganiserlestockagedunetablecarlesdonnesne sontpasaffectesetlatableesttoujoursaccessibleetpleinementoprationnelle. Lorsduntraitementmassifsurunetable(chargement,purge),ilpeuttreintressantdesupprimertout oupartiedesindexdelatableavantletraitementetdelesrecrerensuite.Laperformanceglobaleest meilleureetlindexestneuf(nondgrad)larrive.

b.LordreSQLALTERINDEX...DEALLOCATEUNUSED
LordreSQLALTER INDEX ... DEALLOCATE UNUSEDpermetdelibrerlespacedunindexsituaudessusdelaHWM. Syntaxe ALTER INDEX nom_index DEALLOCATE UNUSED [ KEEP valeur [K|M] ] ; Exemple :

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 13 -

ALTER INDEX adherent$pk DEALLOCATE UNUSED; ALTER INDEX adherent$pk DEALLOCATE UNUSED KEEP 0; ALTER INDEX adherent$pk DEALLOCATE UNUSED KEEP 1M; Le fonctionnement est le mme que pour une table (Gestion des tables). Noubliez pas que lespace initialement allou est par dfaut prserv il faut utiliser la clause KEEP pour librer de lespace lintrieur de lespace initialementalloulindex.

c.LordreSQLALTERINDEX...COALESCE
LordreSQLALTER INDEX ... COALESCEpermetdefusionnerlecontenudeblocsfeuillesadjacentsquicontiennent delespacelibre.Grossomodo,deuxblocsfeuillesadjacentsquiont50 %despacelibrepeuventtrefusionnsen unseulbloc,cequilibreunbloc. Syntaxe ALTER INDEX nom_index COALESCE ; Lordre SQL ALTER INDEX ... COALESCE neffectue, par contre, aucune opration sur les blocs branches la profondeur de larbre ne change pas. Cette opration est relativement rapide et ne ncessite pas despace de stockagesupplmentaire. Exemple :
q

Situationdedpart

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used, 2 lf_rows,del_lf_rows 3 FROM index_stats WHERE name=ADHERENT$IX01; HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------- -------- -------- -------- -------- -------- ----------2 257 1 384 90 64000 0 Situationaprsdesmodificationsimportantesdanslatable : lindexestdgrad(laprofondeurachang)

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used, 2 lf_rows,del_lf_rows 3 FROM index_stats WHERE name=ADHERENT$IX01; HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------- -------- -------- -------- -------- -------- ----------3 580 3 640 78 83580 33785 OprationdeCOALESCE

SQL> ALTER INDEX diane.adherent$ix01 COALESCE; Situationlarrive(aprsANALYZE INDEX ... VALIDATE STRUCTURE)

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used, 2 lf_rows,del_lf_rows 3 FROM index_stats WHERE name=ADHERENT$IX01; HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------- -------- -------- -------- -------- -------- ----------3 370 3 640 88 49838 43 Lopration de COALESCE a permis de rduire le nombre de blocs utiliss, et de retrouver un pourcentage doccupation satisfaisant et un faible taux de lignes supprimes (il en reste quelquesunes). Par contre, la profondeurdelarbrenapaschang. Dans de nombreuses situations, cette simple opration de COALESCE est suffisante pour retrouver un index performant.

- 14 -

ENI Editions - All rights reserved - Algeria Educ

d.LordreSQLALTERINDEX...SHRINKSPACE
LordreSQLALTER INDEX ... SHRINK SPACEestanaloguelordreSQLALTER TABLE ... SHRINK SPACE : ilpermetde compacterleslignesdunindex,maisuniquementpourunindexstockdansuntablespacegrlocalementavec unegestionautomatiquedelespacedanslessegments.Pardfaut,Oraclecompacteaussilesegment,ajustela HWMetlibrelespaceainsircupr. Syntaxe ALTER INDEX nom_index SHRINK SPACE [COMPACT] ; Avec loption COMPACT, Oracle se contente de compacter les lignes, mais sans ajuster la HWM ni librer despace. LexcutionultrieuredunautreordreSQLALTER TABLE ... SHRINK SPACEpermettradeterminerlopration. LordreSQLALTER INDEX ... SHRINK SPACE COMPACTestquivalentlordreSQLALTER INDEX ... COALESCE. Exemple
q

Situationaprsdesmodificationsimportantesdanslatable : lindexestdgrad.

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used, 2 lf_rows,del_lf_rows 3 FROM index_stats WHERE name=ADHERENT$IX01; HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------- -------- -------- -------- -------- -------- ----------3 580 3 640 78 83580 33785 OprationdeSHRINK SPACE

SQL> ALTER INDEX diane.adherent$ix01 SHRINK SPACE; Situationlarrive(aprsANALYZE INDEX ... VALIDATE STRUCTURE)

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used, 2 lf_rows,del_lf_rows 3 FROM index_stats WHERE name=ADHERENT$IX01; HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------- -------- -------- -------- -------- -------- ----------3 374 3 400 87 49800 0 quelquesblocsprs,loprationdeSHRINK SPACEdonnelemmersultatqueloprationdeCOALESCE,saufsurles blocsutiliss(400contre640) lespaceatlibr. LoprationdeCOALESCEestlgrementplusrapidequeloprationdeSHRINK SPACE.

e.LordreSQLALTERINDEX...REBUILD
LordreSQLALTER INDEX ... REBUILDpermetdereconstruireentotalitunindex(blocsbranchesetblocsfeuilles) etdonc,derorganisersonstockage. Syntaxe ALTER INDEX nom_index REBUILD [ TABLESPACE nom_tablespace ] [ PCTFREE valeur ] [ clause_stockage ] [ ONLINE ] [ NOCOMPRESS | COMPRESS [n] ] [ LOGGING | NOLOGGING ] ; - clause_stockage STORAGE ( [ INITIAL valeur [K|M] ] [ NEXT valeur [K|M] ]

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 15 -

[ MINEXTENTS valeur ] [ MAXEXTENTS { valeur | UNLIMITED } ] [ PCTINCREASE valeur ] ) Exemple : ALTER INDEX adherent$pk REBUILD PCTFREE 40 STORAGE ( INITIAL 10M ) ; LesoptionssontlesmmesquecellesdelordreSQLCREATE INDEX. Sans option, lordreSQL ALTER INDEX ... REBUILD reconstruit lindex avec les mmes clauses de stockage. Cette syntaxe peut tre utilise pour reconstruire un index dont les clauses de stockage sont bonnes mais qui sest dgradaufildutemps,dufaitduneforteactivitdemisejour. LordreSQLALTER INDEX ... REBUILDestplusintressantquelarecration(DROP+CREATE)pourdeuxraisons :
q

Lindexestreconstruitpartirdelindexexistant : aucuntrinestncessaire. Lancienindexesttoujoursdisponible : lesrequtespeuventlutiliser.

Lesperformancessontdoncglobalementamliorespourtoutlemonde. Ces deux avantages disparaissent si lindex dorigine est UNUSABLE(suite lexcution dun ordre SQL ALTER TABLE ... MOVEparexemple). Linconvnient majeur par rapport une recration est quil faut de lespace disponible pour faire cohabiter temporairementlancienindexetlenouveau. Exemple1
q

Situationaprsdesmodificationsimportantesdanslatable : lindexestdgrad

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used, 2 lf_rows,del_lf_rows 3 FROM index_stats WHERE name=ADHERENT$IX01; HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------- -------- -------- -------- -------- -------- ----------3 580 3 640 78 83580 33785 OprationdeREBUILD

SQL> ALTER INDEX diane.adherent$ix01 REBUILD; Index modifi. Situationlarrive(aprsANALYZE INDEX ... VALIDATE STRUCTURE)

SQL> SELECT height,lf_blks,br_blks,blocks,pct_used, 2 lf_rows,del_lf_rows 3 FROM index_stats WHERE name=ADHERENT$IX01; HEIGHT LF_BLKS BR_BLKS BLOCKS PCT_USED LF_ROWS DEL_LF_ROWS -------- -------- -------- -------- -------- -------- ----------2 364 1 384 89 49805 0 Lindexatcompltementreconstruit : ilaretrouvuneprofondeurde2etutiliseunpeumoinsdeblocs. Exemple2
q

Situationdedpart : indexnoncompress

SQL> SELECT lf_blks,br_blks,blocks,opt_cmpr_count,opt_cmpr_pctsave 2 FROM index_stats WHERE name=ADHERENT$IX01; LF_BLKS BR_BLKS BLOCKS OPT_CMPR_COUNT OPT_CMPR_PCTSAVE -------- -------- -------- -------------- ---------------- 16 ENI Editions - All rights reserved - Algeria Educ

58

72

28

Compressionsurlesdeuxpremirescolonnes

SQL> ALTER INDEX diane.adherent$ix01 REBUILD COMPRESS 2; Situationlarrive(aprsANALYZE INDEX ... VALIDATE STRUCTURE)

SQL> SELECT lf_blks,br_blks,blocks,opt_cmpr_count,opt_cmpr_pctsave 2 FROM index_stats WHERE name=ADHERENT$IX01; LF_BLKS BR_BLKS BLOCKS OPT_CMPR_COUNT OPT_CMPR_PCTSAVE -------- -------- -------- -------------- ---------------41 1 48 2 0 Lindexatreconstruitavecunecompressionsurlesdeuxpremirescolonnes.Legainannonctaitde28% il estde28,8%.

f.Conclusion
Si le fait que leREBUILD ncessite temporairement de lespacenevousposepasdeproblme,utilisezenpriorit cettetechniquepourrorganiserlestockagedunindex : vousobtiendrezlemeilleurrsultat. Parcontre,sivousavezdesproblmesdeplace,vouspouvezemployerleCOALESCEpourunrsultatgnralement trssatisfaisant,maisvousnelibrezpasdespacepourdautressegments.Danscecas,leSHRINK SPACEpeuttre envisag ilprsentelavantagedelibrerlespacercupr.

9.Surveillerlutilisationdunindex
DepuisOracle9i,ilestpossibledesurveillerlesindexafindedterminersilssontutilissounon.Unindexnonutilis peuttresupprimpourlibrerdelespaceetamliorerlesperformancesdesmisesjour. LordreSQLALTER INDEXpermetdactiveroudedsactiverlasurveillancedunindex : ALTER INDEX nom_index MONITORING USAGE | NOMONITORING USAGE ; Exemple : ALTER INDEX adherent$ix01 MONITORING USAGE ; LaclauseMONITORING USAGEpeutaussitreutilisedanslordreSQLCREATE INDEXpouractiverlasurveillancedsla crationdelindex(NOMONITORINGpardfaut). La vue V$OBJECT_USAGE sera ensuite interroge pour dterminer si un index a t utilis pendant quil tait sous surveillance : INDEX_NAME Nomdelindex. TABLE_NAME Nomdelatablesurlaquellelindexestcr. MONITORING Indiquesilindexestactuellementsoussurveillance(YESouNO). USED Indiquesilindexatutilisaumoinsunefoispendantsasurveillance(YESouNO).
ENI Editions - All rights reserved - Algeria Educ - 17 -

openmirrors.com

START_MONITORING Date/heuredudbutdelasurveillancedelindex. END_MONITORING Date/heuredelafindelasurveillancedelindex(videsilasurveillanceestencours).

LavueV$OBJECT_USAGEdoittreinterrogesouslecomptedupropritairedelindex. Exemple : SQL> SELECT * FROM v$object_usage 2 WHERE index_name = ADHERENT$IX01 ; INDEX_NAME TABLE_NAME MONITORING USED --------------- --------------- ---------- ---START_MONITORING END_MONITORING ------------------- ------------------ADHERENT$IX01 ADHERENT YES YES 01/04/2005 10:37:40 Danscetexemple,lindexADHERENT$IX01crsurlatableADHERENTatutilisaumoinsunefoisdepuisquelindex estsoussurveillance lindexesttoujourssoussurveillance(lacolonneEND_MONITORINGestvide).

10.Trouverdesinformationssurlesindex
Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlesindex :
q

DBA_INDEXES : informationssurlesindex DBA_IND_COLUMNS : informationssurlescolonnesdesindex INDEX_STATS : rsultatdudernierANALYZE INDEX ... VALIDATE STRUCTURE DBA_SEGMENTS : informationssurlessegments(dontceuxdetypeindex) DBA_EXTENTS:informationssurlesextensionsallouesauxsegments(dontceuxdetypeindex)

LesvuesDBA_SEGMENTSetDBA_EXTENTSonttprsenteslasectionTrouverdesinformationssurlestablespaces etlesfichiersdedonnesduchapitreGestiondestablespacesetdesfichiersdedonnes. LavueINDEX_STATSatprsentelasectionGestiondesindexBtree.LordreSQLANALYZE INDEX ... VALIDATE STRUCTURE. Lescolonnesintressantesdesdiffrentesautresvuessontprsentesciaprs. DBA_INDEXES INDEX_NAME Nomdelindex. OWNER Nomdupropritairedelindex. TABLE_NAME Nomdelatablesurlaquellelindexestcr.
- 18 ENI Editions - All rights reserved - Algeria Educ

TABLE_OWNER Nomdupropritairedelatable. UNIQUENESS Naturedelindex(UNIQUEouNONUNIQUE). TABLESPACE_NAME Nomdutablespacedanslequellindexeststock. PCT_FREE ValeurduPCTFREE. COMPRESSION Indiquesilacompressiondelindexestactive(ENABLEDouDISABLED). PREFIX_LENGTH Nombredecolonnesdansleprfixedelacompression. LOGGING IndiquesilemodeLOGGINGestactifounonpourlindex(YESouNO). STATUS Statutdelindex(VALIDouUNUSABLE). BLEVEL * Profondeurdelarbreauniveaudesbranches(netientpascomptedesfeuilles).0sileblocracineestgalaubloc feuille. LEAF_BLOCKS * Nombredeblocsfeuillesdanslindex. NUM_ROWS * Nombredelignesdanslindex. CLUSTERING_FACTOR * Facteurderegroupementdesdonnesdanslatable. AVG_LEAF_BLOCKS_PER_KEY * Nombremoyendeblocsfeuillesparvaleurdelacl. AVG_DATA_BLOCKS_PER_KEY * Nombremoyendeblocsdedonnes(table)parvaleurdelacl. DISTINCT_KEYS * Nombredevaleursdistinctesdanslindex. SAMPLE_SIZE *

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 19 -

Tailledelchantillonutilislorsducalculdesstatistiques. LAST_ANALYZED * Dateetheuredeladernireanalyseralisesurlindex. *Statistiquessurlindex,calculespardfautlorsquelesstatistiquessontgnressurlatable.Cesderniressont utilisesparloptimiseur. DBA_IND_COLUMNS INDEX_NAME Nomdelindex. OWNER Nomdupropritairedelindex. TABLE_NAME Nomdelatablesurlaquellelindexestcr. TABLE_OWNER Nomdupropritairedelatable. COLUMN_NAME Nomdelacolonneutilisedanslacldelindex. COLUMN_POSITION Positiondelacolonnedanslacldelindex.

- 20 -

ENI Editions - All rights reserved - Algeria Educ

LesstatistiquesetloptimiseurOracle
LoptimiseurOracleestchargdedterminerleplandexcutiondesrequtes,cestdirelamaniredontOracleva excuterlarequte. Depuis maintenant plusieurs versions, Oracle recommande de faire fonctionner loptimiseur dans le mode CBO (Cost BasedOptimizer Optimiseur bas sur les cots). Depuis la version 10, seul le mode CBO est support le mode RBO (RuleBasedOptimizer Optimiseurbassurlesrgles)nestplussupport. Pourfonctionner,loptimiseurdanslemodeCBOabesoindestatistiquessurlestables,lescolonnesetlesindex.Ces statistiquessontcalculesaveclepackageDBMS_STATS. Danslesversionsprcdentes,iltaitdelaresponsabilitduDBAdeprogrammerunetchepriodiquedecollectedes statistiques,afinqueloptimiseurnetravaillepasavecdesdonnesobsoltes. Depuis la version 10, les statistiques sont automatiquement collectes par Oracle. En version 11, cette collecte seffectueparlintermdiairedunetchedemaintenanceautomatise(cf.OracleEnterpriseManagerDatabaseControl duchapitreLesOutilsdadministration). Pardfaut,cettetchedemaintenancecollectelesstatistiquessurlesobjetsdelabasededonnesquinontpasde statistiques ou qui ont des statistiques juges obsoltes (si plus de 10% des lignes de lobjet sousjacent ont t modifies) la procdure traite en priorit les objets qui en ont le plus besoin. Les paramtres de cette tche automatique peuvent tre configures dans le Database Control (cf. Oracle Enterprise Manager Database Control du chapitreLesOutilsdadministration). VouspouvezcollecterlesstatistiquesenexcutantmanuellementcertainesprocduresdupackageDBMS_STATS :
q

GATHER_TABLE_STATS(owname,tabname) : statistiquessurunetable(etpardfautsurlescolonnesetindexdela table) GATHER_INDEX_STATS(owname,indname) : statistiquessurunindex GATHER_SCHEMA_STATS(owname) : statistiquessurtouteslestablesetindexdunschma.

Lesparamtressontlessuivants : ownname Nomduschma(NULLpourleschmacourant). tabname Nomdelatable. indname Nomdelindex. Ces procdures ont dautres paramtres dont les valeurs par dfaut sont a priori satisfaisantes (au moins dans un premiertemps). LesstatistiquespeuventtresconsultesdanslesvuesDBA_TABLES, DBA_TAB_ COLUMNSetDBA_INDEXES. Exemple : SQL> EXEC dbms_stats.gather_schema_stats(DIANE) Procdure PL/SQL termine avec succs. SQL> SELECT num_rows,blocks,sample_size,last_analyzed 2 FROM dba_tables WHERE table_name=ADHERENT AND owner=DIANE; NUM_ROWS BLOCKS SAMPLE_SIZE LAST_ANA ---------- ---------- ----------- -------9964 137 9964 20/07/08 Le Database Control permet de grer les statistiques de loptimiseur. Pour accder la page de gestion des statistiques de loptimiseur,cliquezsurlelien Serveursurlapagedaccueil puis sur le lienGrer les statistiques de loptimiseur(cadreOptimiseurdinterrogation).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

UtiliserleDatabaseControl
1.Lestables
DansleDatabaseControl,cliquezsurlelienSchmasurlapagedaccueilpuissurlelienTables (cadreObjetsde basededonnes)pouraccderlapagedegestiondestables.

LasectionRechercherpermetderechercherdesobjetsselonleurtype,leurschmaouleurnom. partirdecettepage,vouspouvezeffectuerdiversesactionssurlestables :

crerunenouvelletable(boutonCreroumenuCrercomme) supprimerunetable(boutonSupprimeravecdesoptions) modifierunetable(boutonModifier) crerunindexsurunetable(menuCrerunindex) extraireladfinitiondunetable(menuGnrerducodeDDL) collecterlesstatistiquessurunetable(menuGrerlesstatistiquesdeloptimiseur)

ENI Editions - All rights reserved - Algeria Educ

- 1-

rorganiserunetable(menuRorganiser) excuterleconseillersurlessegments(menuExcuterlafonctiondeconseilsurlessegments) compacter(SHRINK)latable(menuRduirelesegment).

Encliquantsurleliendunomdetable,ouencliquantsurlesboutonsCrer,ModifierouVisualiser,vousarrivezsur lapagededfinitiondunetable :

Cettepageproposeplusieursonglets(sousformedeliens)permettantdegrerlesdiffrentescaractristiquesdela table. LongletSegmentspermetdevoirlespaceutilisparlatableetcesindex :

Le graphique donne la tendance dutilisation de lespace pour le segment slectionn dans la liste et la priode indiques.Ilpeuttreutilispourestimerlavolumtriedunetableoudunindexunechancedonne.

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

2.Lesindex
DansleDatabaseControl,cliquezsurlelienSchmasurlapagedaccueilpuissurlelienIndex(cadreObjetdebase dedonnes)pouraccderlapagedegestiondesindex.

LasectionRechercherpermetderechercherdesobjetsselonleurtype,leurschmaouleurnom. partirdecettepage,vouspouvezeffectuerdiversesactionssurlesindex :

crerunnouvelindex(boutonCreroumenuCrercomme) supprimerunindex(boutonSupprimer) modifierunindex(boutonModifier) extraireladfinitiondunindex(menuGnrerducodeDDL) collecterlesstatistiquessurlindex(menuGrerlesstatistiquesdeloptimiseur) rorganiserunindex(menuRorganiser) excuterleconseillersurlessegments(menuExcuterlafonctiondeconseilsurlessegments) compacter(SHRINK)unindex(menuRduirelesegment).

Encliquantsurleliendunomdindex,ouencliquantsurlesboutonsCrer,ModifierouVisualiser,vousarrivezsur lapagededfinitiondunindex :

ENI Editions - All rights reserved - Algeria Educ

- 3-

Cettepageproposeplusieursonglets(sousformedeliens)permettantdegrerlesdiffrentescaractristiquesde lindex.LongletSegmentspermetdevoirlespaceutilisparlindex(commepourunetable).

3.Rorganiserunetableouunindex
Le menu Rorganiser disponible sur les tables, les index et les tablespace permet dexcuter un assistant de rorganisationdustockagedesobjets.CetassistantpeutaussitreappelencliquantsurlelienRorganiserles objetsdanslecadreObjetsdebasededonnesdelongletSchma. Lesprincipalestapesdelassistantsontlessuivantes : Dfinirlalistedesobjetsrorganiser Surcettepage,vouspouvezdfinirlalistedesobjetsrorganiserencliquantsurlesboutonsAjouteretEnlever. Les boutons Dfinir les attributset Dfinir les attributs par type permettent de spcifier les caractristiques de stockage : nouveautablespace,tailleinitiale,PCTFREE,etc. Dfinirlescaractristiquesdelarorganisation Cettepagepermetnotammentdindiquersilarorganisationdoitseffectuerenligneouhorsligne.Larorganisation en ligne privilgie la disponibilit de lobjet au dtriment de la vitesse cest linverse pour la rorganisation hors ligne. Rapportdimpact Cettepagedonnedesinformationssurlesproblmespotentielsquipeuventsurveniraucoursdelarorganisation (manque despace par exemple) si cest le cas, il faut raliser les modifications ncessaires avant de lancer lopration. Programmation Cette page permet de nommer le travail, de fournir les informations didentification et de connexion, et de programmerlexcutiondutravail(maintenantouultrieurement). Rcapitulatif

openmirrors.com

- 4-

ENI Editions - All rights reserved - Algeria Educ

Cettepagedonneunrcapitulatifdutravailquivatreeffectu.EncliquantsurleboutonradioScriptcomplet,vous pouvez consulter (et rcuprer) le script complet de la rorganisation. Cliquez sur le bouton Soumettre un travail pourlancerlopration. Cetassistantutiliseunedestechniquessuivantes :
q

rorganisationdunindex : ordreSQLALTER INDEX ... REBUILD rorganisationdunetablehorsligne : ordreSQLALTER TABLE ... MOVE rorganisationdunetableenligne : packageDBMS_REDEFINITION.

LersultatdutravailpeuttreconsultencliquantsurlelienTravauxdelapagedaccueil(cadreLiensassocisen bas).

4.Leconseillersurlessegments
Le Database Control dispose dun conseiller sur les segments (Segment Advisor). Ce conseiller donne des recommandationssurlopportunitounondecompacter(SHRINK)unsegment. CetassistantpeuttreappelenutilisantlemenuExcuterlafonctiondeconseilsurlessegmentsdisponiblesur les tables, les index et les tablespace ou en cliquant sur le lien Fonction de conseil sur les segmentssurlapage Centredeconseil(accessibleparlelienCentredeconseilpartirdelapagedaccueil). Par dfaut, cet assistant est aussi programm pour sexcuter en tche de maintenance automatise (cf. Oracle Enterprise Manager Database Control du chapitre Les Outils dadministration). Vous serez donc rarement amen lancerleconseillermanuellement. SurlapagedaccueilduDatabaseControl,danslecadreRcapitulatifdelespace,pourpouvezvoirrapidementsily adesrecommandationssurlessegments :

ENI Editions - All rights reserved - Algeria Educ

- 5-

Encliquantsurlelienassoci,vouspouvezafficherlalistedesrecommandations :

SivouscliquezsurleboutonDtails des recommandations,vouspouvezconsulterledtaildelarecommandation slectionne :

Pour implmenter les recommandations, il vous suffit de slectionner une ou plusieurs tches dans la liste et de cliquersurleboutonImplmenter,oudecliquerdirectementsurleboutonRduiredunetche.LeDatabaseControl affichealorslapagesuivante :

Cettepagevouspermetdechoisiruneoptionderduction(SHRINK SPACE ouSHRINK SPACE COMPACT)etdesoumettre letravail(boutonImplmenter).LersultatdutravailpeuttreconsultencliquantsurlelienTravauxdelapage Serveur(cadreOracleScheduler). Dune manire plus gnrale, les rsultats des diffrents conseillers sont visibles lorsque vous affichez la page Centredeconseil :
- 6 ENI Editions - All rights reserved - Algeria Educ

openmirrors.com

Encliquantsurleliencorrespondantunetche,vouspouvezvisualiserlesrecommandationsduconseiller.

ENI Editions - All rights reserved - Algeria Educ

- 7-

Labasededonnes
1.Fichierdecontrle
Lefichierdecontrlecontientdesinformationsdecontrlesurlabasededonnes :
q

lenomdelabasededonnes ladate/heuredecrationdelabasededonnes lemplacementdesautresfichiersdelabasededonnes(fichiersdedonnesetfichiersdejournalisation) lenumrodesquenceactueldesfichiersdejournalisation desinformationssurlespointsdereprise(checkpoint), etc.

LefichierdecontrleestautomatiquementmisjourparOraclelorsdechaquemodificationdelastructuredelabase dedonnes(ajoutoudplacementdunfichierparexemple).LatailledufichierdecontrleestdtermineparOracle. Lorsquuneinstanceestlancepourouvrirunebasededonnes,lefichierdecontrleestlepremierfichierouvert.Il permetensuitelinstancedelocaliseretdouvrirlesautresfichiers delabasededonnes.Silefichierdecontrlene peutpastretrouv(ouestendommag),labasededonnesnepeutpastreouverte,mmesilesautresfichiers de la base de donnes sont prsents (linstance reste dans le statutNOMOUNT voir le chapitre Dmarrage et arrt). Diffrents scnarios de restauration sont alors disponibles en fonction de la situation (prsence ou non dune sauvegarde du fichier de contrle notamment) pour redmarrer la base de donnes, mais ce sont des scnarios relativementcomplexes. Pourdesraisonsdescurit,ilestdoncconseilldemultiplexerlefichierdecontrle,cestdiredenavoirplusieurs copiesgresenmiroir(multiplexes)parOracle.Techniquement,ilestpossibledecrerunebasededonnesavec un seul fichier de contrle mais il est vivement conseill dutiliser plusieurs copies, mme si le serveur ne comporte quundisque(celametlabridunesuppressionaccidentelle). Plusieurs fichiers de contrle peuvent tre spcifis lors de la cration de la base (chapitre Cration dune nouvelle basededonnes)ouultrieurement(chapitreGestiondesfichiersdecontrleetdejournalisation).

2.Fichierdejournalisation
Lesfichiersdejournalisation(redolog)enregistrenttouteslesmodificationsapporteslabasededonnes.Ilssont organissengroupescritsdemanirecirculaire lesinformationssauvegardessontdoncpriodiquementcrases. Les fichiers de journalisation sont utiliss pour la rcupration de linstance aprs un arrt anormal et pour la rcupration de mdia si un fichier de donnes est perdu ou endommag dans ce cas, ils sont appliqus une sauvegardedefichierdedonnes,pourrejouertouteslesmodificationssurvenuesentrelasauvegardeetlincident ayantendommaglefichier. Les fichiers de journalisation sont organiss en groupes (au minimum 2) composs dun ou de plusieurs membres (minimumun) ilssontcrslorsdelacrationdelabase(cf. Chapitre Crationdunenouvellebasededonnes). lintrieur dun groupe, les membres sont crits simultanment en miroir par linstance Oracle (processus LGWR) et contiennent la mme information. Tous les membres dun groupe ont la mme taille, dfinie lors de la cration du groupe un fichier de journalisation contient donc une quantit maximale dinformations. De mme, le nombre de groupesestdtermin ilnaugmentepasdynamiquement. Lorsquungroupeestplein(cestdirelorsquelesmembressontpleins),linstanceOraclepasseaugroupesuivantet ainsidesuitejusquaudernier lorsquelederniergroupeestplein,linstanceOraclerepasseaupremier.Lepassage dungroupeunautreestappelbasculement(switch).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Lorsque linstance Oracle revient dans le premier groupe, elle crase les informations qui y sont stockes ces informations ne sont donc plus disponibles en cas de besoin, par exemple pour une rcupration de mdia. Pour garantir cette possibilit deffectuer des rcuprations compltes, il faut activer le mcanisme darchivage (chapitre Sauvegardeetrcupration)quipermetdarchiverlesfichiersdejournalisation(enloccurrenceunmembredugroupe) lorsquilssontpleins,avantquelinstancenelesrutilise. Siungroupecomporteplusieursmembresetquundesmembresestindisponible,labasededonnespeutcontinuer fonctionner. Les fichiers de journalisation sont trs importants pour la scurit de la base de donnes. Il est donc conseill dutiliserauminimumdeuxoutroismembrespargroupe(multiplexage),sipossiblesurdesdisquesdiffrents. Les fichiers de journalisation seront abords dans les chapitres Cration dune nouvelle base de donnes (cration initiale)etGestiondesfichiersdecontrleetdejournalisation(manipulationultrieure).

3.Fichiersdedonnes
a.Dfinitions
Les fichiers de donnes contiennent les donnes proprement dites de la base de donnes (tables et index notamment).Ilssontlogiquementregroupsentablespaces :

Un tablespace est une unit logique de stockage compose dun ou plusieurs fichiers physiques. La quasitotalit desoprationsdadministrationrelativesaustockageseffectueentravaillantsurletablespaceetnonsurlefichier dedonnes. En version 10, Oracle a introduit la notion de tablespace bigfile. Un tablespace bigfile est un tablespace qui ne contientquunseulfichierdedonnes,maisquipeuttrebeaucoupplusgrosquunfichierdedonnestraditionnel. Lestablespacesbigfilepermettentdegrer desvolumesdedonnesbeaucoupplusimportants,toutensimplifiantla gestion du stockage (moins de fichiers, transparence du fichier de donnes). Par opposition, le tablespace traditionnelestmaintenant,parfoisappeltablespacesmallfile. Une base de donnes comporte au minimum deux fichiers de donnes appartenant deux tablespaces rservs pourOracle(letablespaceSYSTEMetletablespaceSYSAUX,apparuenversion10).LestablespacesSYSTEMetSYSAUX nedoiventnormalementconteniraucunedonneapplicative. Dans la pratique, une base de donnes comportera donc dautres fichiers de donnes appartenant dautres tablespaces. LagestiondestablespacesetdesfichiersdedonnesestprsentedanslechapitreGestiondestablespaceset desfichiersdedonnes.

b.Organisationdustockage

- 2-

ENI Editions - All rights reserved - Algeria Educ

Lesfichiersdedonnessontdcoupsenblocsdunetailledonne(4Ko,8Ko...). Lespace occup par un objet dans un tablespace est dsign par le terme gnrique desegment. Il y a quatre typesprincipauxdesegments :
q

lessegmentsdetable :espaceoccupparlestables lessegmentsdindex :espaceoccupparlesindex lessegmentsdannulation :espacetemporaireutilispourstockerlesinformationspermettantdannulerune transaction lessegmentstemporaires :espacetemporaireutilisnotammentlorsduntri.

Unsegmentappartientuntablespaceetestconstitudextensions(extents).Uneextensionestunensemblede blocscontigusdansunfichierdedonnes. DansOracleEnterpriseManager,lesextensionssontappeles"ensemblesdeblocscontigus". Lanotionde"blocOracle"estfondamentalenousallonslaretrouverpartout.UnblocOracleestlapluspetiteunit dentre/sortieutiliseparOracle.TouslesfichiersdedonnessontorganissenblocsOracleetontdoncunetaille multiple de la taille du bloc. Le bloc Oracle est aussi lunit dorganisation du cache de donnes (Database Buffer Cache) dans la SGA. Lorsquune instance Oracle lit un fichier de donnes, elle lit les blocs Oracle du fichier et les chargedansdesblocsOracleducachededonnes. Le segment dannulation est une structure utilise par Oracle pour stocker temporairement la version prcdente desdonnesencoursdemodificationdansunetransaction.Silatransactionestvalide(COMMIT),lespaceoccup seralibrsilatransactionestannule(ROLLBACK),laversionprcdentedesdonnesseraremiselaplacedela nouvelle. LessegmentstemporairesetlessegmentsdannulationseronttudisplusendtaildansleschapitresGestiondes tablespacesetdesfichiersdedonnesetGestiondesinformationsdannulation. Endehorsdestablespacesdestinsauxdonnesproprementditesdenotreapplication(tables,index),nousserons donc amens crer deux autres tablespaces "techniques", utiliss en interne par Oracle : le tablespace dannulation(pourlessegmentsdannulation)etletablespacetemporaire(pourlessegmentstemporaires). Lorsquunsegment(table,index,etc.)estcr,ilestplac(explicitementparlecrateurouimplicitementparOracle) dansuntablespacecestOracle,ensuite,quisechargedallouerdelespacecesegmentdanslundesfichiersde donnesdutablespace. Lorsdelacrationdunsegment,uneouplusieursextensionsluisontalloues.Lorsquecespremiresextensions sontpleines(suitelinsertiondedonnesparexemple),unenouvelleextensionestallouecetteextensionest situe dans le mme tablespace, mais pas forcment ct de la premire (dautressegmentsontpeuttre t crs entretemps), ni mme dans le mme fichier de donnes (si le tablespace a plusieurs fichiers de donnes). Lorsquecettenouvelleextensionestpleine,leprocessussereproduit.
ENI Editions - All rights reserved - Algeria Educ - 3-

openmirrors.com

DanslordreSQLdecrationdusegment,ilexistedesclausesquipermettentdindiquerdansqueltablespacecrer lesegmentetdedfinirlatailleinitialedusegment. CesdiffrentsmcanismesserontrevusdanslechapitreGestiondestablespacesetdesfichiersdedonnes. Depuislaversion9dOracle,ilestpossibledutiliserplusieurstaillesdeblocdanslabasededonnes :


q

Unetailledebloc"standard"estdfinieparleparamtredinitialisationDB_BLOCK_SIZE. Jusqu5autrestaillesdeblocpeuventtreutilises :lesvaleurspermisessont2Ko,4 Ko,8Ko,16Koet 32Ko(certainesplatesformessontplusrestrictives).

Cette possibilit dutiliser plusieurs tailles de bloc est surtout intressante pour la fonctionnalit de transport de tablespace. Cette fonctionnalit, apparue dans Oracle8i, permet de transporter un tablespace dune base de donnes source vers une base de donnes cible et de le rattacher la base de donnes cible cette opration seffectuegrcelutilitaireDataPump,avecloptionTRANSPORT_TABLESPACES.Undesprrequispourlutilisationde cettefonctionnalitdansOracle8iestquelesdeuxbasesdoiventutiliserlammetailledebloc.Cettelimitationest leve depuis Oracle9i puisque diffrents tablespaces dune mme base de donnes peuvent utiliser des tailles de blocdiffrentes:untablespaceayantunetailledeblocde4Kopeuttretransportdansunebasededonnes utilisantdesblocsde8ko.

4.Systmedestockage
Les fichiers de donnes dune base de donnes Oracle peuvent tre stocks dans un systme de fichiers (cas classique),dansdesrawdevice(directementdansdespartitions,sanssystmedefichier)oulaidedASM(Automatic StorageManagement). ASM,apparuenversion10,estenquelquesorteungestionnairedevolumesspcialementconupourOracle,quiva chercher exploiter au mieux les disques qui lui sont attribus (rpartition des entres/sorties notamment). Pour fonctionner,ASMutiliseuneinstancespciale(instanceASM). Lors de lutilisationdun systme de fichiers, il est conseill dutiliser plusieurs disques. Cela permet damliorer les performancesenrpartissantlesentres/sorties,etdamliorerlascuritenmultiplexantlesfichiersdecontrleet lesfichiersdejournalisation.Parailleurs,beaucoupdenouvellesfonctionnalitsapparuesenversion10,relativesla scurit des donnes, aux sauvegardes et aux restaurations, sont bases sur la mise en place dune zone de rcupration rapide (flash recovery area). Cette zone de rcupration rapide peut tre stocke dans un systme de fichiersoulaidedASM.Danslecasdelutilisationdunsystmedefichiers,ilestconseilldutiliserundisquespar desdisquescontenantlesdonnes,carcestladestinationpardfautdessauvegardes.

5.Notiondeschma
Letermeschmadsignelensembledesobjetsquiappartiennentunutilisateur. Lesprincipauxtypesdobjetssontlessuivants :
q

Table Vue Synonyme Index Squence ProgrammePL/SQL(procdure,fonction,package,trigger)

ChaqueutilisateurdunebasededonnesOracleaunschmapotentiel,maisseulslesutilisateurshabilitspourront effectivementcrerdesobjetsdansceschma.Cesdiffrentesnotionsseronttudiesplusendtaildanslechapitre Gestiondesutilisateursetdeleursdroits. Surlesdiffrentstypesdobjetsprsentscidessus,seulslestablesetlesindexstockentdesdonnesetoccupent de lespace de stockage dans des tablespaces. Les autres types dobjet nont quune dfinition stocke dans le dictionnairededonnesOracle.

- 4-

ENI Editions - All rights reserved - Algeria Educ

La notion de schma est une notion purement logique. Physiquement, les objets des diffrents schmas sont mlangs,soitdansledictionnairededonnesOracle,soitdanslestablespaces,maisOraclesaitsyretrouver. Des schmas dexemple sont fournis par Oracle, dont le fameux (mais rduit) schma SCOTT (mot de passe TIGER, propritairedestablesEMPetDEPT).DesschmasdexempleplusvolussontdcritsdansladocumentationOracle DatabaseSampleSchemas.Ilspeuventtreinstallslorsdelacrationdunebasededonnesouultrieurement.

6.Rglesdenommage
UnnomdestructureOracle(table,tablespace,etc.)doitrespecterlesrglessuivantes :
q

contenir30caractresmaximum doitcommencerparunelettre peutcontenirdeslettres,deschiffresettroiscaractresspciaux(_$#) nestpassensiblelacasse nedoitpastreunmotrservOracle.

Ilyavidemmentdesexceptionscesrglesdenommage,notammentpourlenomdelabasededonnes quiestlimit8caractres.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

Problmescourantsetsolutions
ORA-01653: impossible dtendre la table X. de N dans le tablespace Y ORA-01654: impossible dtendre lindex X. de N dans le tablespace Y Explication Unsegment(tableouindex)narrivepasstendre. Cause(s) Lesegment(tableouindex)narrivepasstendrecarletablespacedanslequelileststocknapassuffisamment despacedisponibleetnepeutpasstendreluimme. Action(s) Ilfautaugmenterlespacedisponibledansletablespace : soitenluiallouantunnouveaufichierdedonnes(ALTER TABLESPACE ... ADD DATAFILE ...) soitenaugmentantlatailledunfichierdedonnesdutablespace(ALTER DATABASE DATAFILE ... RESIZE ...) soitenautorisantunfichierdedonnesdutablespacestendreautomatiquement(ALTER DATABASE DATAFILE ... AUTO- EXTEND ON ...). ORA-01631: nbre max. densembles de blocs contigus (N) atteint dans table X. ORA-01632: nbre max. densembles de blocs contigus (N) atteint dans index X. Explication Unsegment(tableouindex)narrivepasstendre. Cause(s) Lesegment(tableouindex)narrivepasstendrecarileststockdansuntablespacegrparledictionnaireetila atteintsonnombremaximumdextensionsdfiniparMAXEXTENTS.Ceproblmenepeutpasseproduiresilesegment eststockdansuntablespacegrlocalement(nombredextensionsillimit). Action(s) Utilisezuntablespacegrlocalementetchoisissezventuellementunetailledextensionadaptelavolumtriedu segment. ORA-01502: lindex xxx.yyy ou sa partition est inutilisable Explication Unindexestinutilisable(UNUSABLE)etnepeutpastreutilispourexcuterunerequte. Cause(s) LatableapeuttretreconstruiteparunALTER TABLE MOVE,cequiarendulesindexdelatableinutilisables. noter que cette erreur se produit uniquement si le paramtre SKIP_UNUSABLE_INDEXES est FALSE. Sil est TRUE (valeurpardfaut),loptimiseurnetentepasdutiliserlesindexinutilisablesetlerreurneseproduitpas parcontre, lesperformancesrisquentdesedgraderfortement(parcourscompletdetable). Action(s) Reconstruisezlindex(ALTER INDEX REBUILD).

ENI Editions - All rights reserved - Algeria Educ

- 1-

SivousobtenezuneerreurORA-01630ouORA-01652lorsdelacrationoudelareconstructiondunindex,cest quilyaunproblmeaveclesegmenttemporairencessaireautri(voirlesproblmescourantsetsolutiondu chapitreGestiondestablespacesetdesfichiersdedonnes).

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

Principes
1.Vuedensemble
Assurerlascuritdesdonnesestunedestchesprincipalesdeladministrateur. Cettescuritestassurepar :
q

lamiseen uvreduneprotectiondesfichierssensiblesdelabase :
q

fichiersdecontrle fichiersdejournalisation.

lamiseenplacedunestratgiedesauvegarde/restauration :
q

adapteauxcontraintesdelentreprise testeetdocumente.

La protection des fichiers de contrle et des fichiers de journalisation seffectue par multiplexage (voir le chapitre Gestiondesfichiersdecontrleetdesfichiersdejournalisation). Lesquestionsseposerpourdfinirlastratgiesontlessuivantes :
q

Estilacceptabledeperdredesdonnes? Estilpossibledarrterpriodiquementlabase? Estilpossiblederaliserunesauvegardecompltedelabasependantlarrt?

Larponselaquestion"estilacceptabledeperdredesdonnes?"estrarement"oui".Siexceptionnellement,la rponseest"oui",ilfautdterminerjusququellelimite : 1jour,2 jours,1semaine? Ilestgalementncessairededterminerlanaturedelactivitsurlabase :


q

Lesdonnessontellesmisesjourquotidiennementparlesutilisateurs ?Cesttypiquementlecasdansune applicationtransactionnelle. Les donnes sontelles mises jour priodiquement (toutes les nuits, toutes les semaines) et simplement consultesdanslajourne ?Cesttypiquementlecasavecuneapplicationdcisionnelle.

2.Larchivagedesfichiersdejournalisation
Comme nous lavons dj vu, les fichiers de journalisation constituent un journal des modifications apportes la base.Ilssontorganissengroupescritsdemanirecirculaire : lesinformationssauvegardessontdoncpardfaut priodiquementcrases. Cesfichiersdejournalisationpeuventtrerappliqusunesauvegardedefichierdedonnes,pourrejouertoutes lesmodificationssurvenuesentrelasauvegardeetunincidentayantendommaglefichier(restaurationdemdia), condition davoir conserv tous les fichiers de journalisation ceci est possible en faisant fonctionner la base de donnes en mode ARCHIVELOG. Ce mode de fonctionnement permet de garantir zro perte de donnes en cas dincidentsurunfichierdedonnes. LeprincipedercuprationenmodeARCHIVELOGestlesuivant :

ENI Editions - All rights reserved - Algeria Educ

- 1-

uninstantT0,unesauvegardedunfichierdedonnesestralise.AprsT0,lactivitdemisejoursepoursuit, gnrantdesentresdanslesfichiersdejournalisation.Larchivagetantactiv,lesfichiersdejournalisationpleins sontarchivs. linstant T1, un incident se produit et le fichier de donnes est perdu. La rcupration du fichier de donnes consiste prendre la dernire sauvegarde du fichier (qui ne contient videmment pas les modifications effectues depuis)etappliquersurcettesauvegardelesfichiersdejournalisationarchivs(quieux,contiennentlatracedes modifications apportes depuis la dernire sauvegarde), afin de ramener le fichier de donnes dans ltat o il se trouvaitjusteavantlincident(pourtreplusprcis,dansltatdeladerniretransactionvalide).

3.Solutionsdesauvegardeetrcupration
Poureffectuerdessauvegardesetdesrcuprations,vousavezdeuxpossibilits :
q

utiliserloutilRecoveryManager(RMAN)fourniparOracle : cestlamthoderecommande procder"lamain"avecdescommandesdusystmedexploitationetdesscriptsSQL.

RMANestunoutillignedecommandequifacilitegrandementlesoprationsdesauvegardeetdercupration,en limitantnotammentlesrisquesdefaussemanoeuvre.RMANpeuttreutilistraversuneinterfacegraphiquedans le Database Control. Toutes les oprations de sauvegarde et de rcupration prsentes dans cet ouvrage sont basessurlutilisationduRecoveryManager.

4.Stratgiesdesauvegardedisponibles
Unesauvegardepeuttrecohrenteouincohrente. Une sauvegardecohrente est une sauvegarde de la totalit de la base de donnes aprs unarrt propre de la basededonnes(pasaprsunSHUTDOWN ABORTouunarrtanormaldelinstance) cetypedesauvegardeestaussi souventappel"sauvegardebaseferme".Aprsunarrtpropredelabasededonnes,touteslesmodifications onttcritesdanslesfichiersdedonnesquisontbiensynchrones.Unebasededonnesrestaurepartirdune sauvegardecohrentepeuttreouverteimmdiatement : ilestinutiledappliquerlesfichiersdejournalisation.Cest leseulmodedesauvegardedisponiblelorsquelabasededonnesfonctionneenmodeNOARCHIVELOG. Unesauvegardeincohrenteestunesauvegardeeffectuealorsquelabasededonnesestouverteetquelactivit de mise jour se poursuit pendant la sauvegarde ce type de sauvegarde est aussi souvent appel "sauvegarde base ouverte". Les fichiers sauvegards ne sont pas synchrones du point de vue des modifications enregistres. Lorsquune base de donnes est restaure partir dune sauvegarde incohrente, il faut appliquer les fichiers de journalisation pour rendre les fichiers cohrents. Les sauvegardes incohrentes ne sont possibles que lorsque la basededonnesfonctionneenmodeARCHIVELOG. Unesauvegardepeuttrecomplte,partielleouincrmentale.Unesauvegardecomplteestunesauvegardede latotalitdelabasededonnes.Unesauvegardepartielleestunesauvegardeincluantuniquementunepartiede

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

la base de donnes. Les sauvegardes partielles sont forcment incohrentes entre elles. Pour quelles soient exploitablesenrestauration(cequiestnormalementlobjectif),ilfautquelabasededonnesfonctionneenmode ARCHIVELOG. Une sauvegarde incrmentale est une sauvegarde qui ne contient que les blocs modifis depuis la derniresauvegarde unesauvegardeincrmentalepeuttrecomplteoupartielle. Unesauvegardecohrentecompltencessitedepouvoirarrterlabasededonnesetlasauvegarderentotalit pendantlarrt.

5.Quellestratgiepourlemodedefonctionnementdelabase ?
Letableausuivantrsumelespossiblits : Pertesdedonnesacceptables Oui Sauvegardebase fermepossible Oui ARCHIVELOG NOARCHIVELOG ARCHIVELOG Non ARCHIVELOG

Non

ARCHIVELOG

LemodeARCHIVELOGestobligatoiresiaumoinsunedescontraintessuivantesexiste :
q

Aucunepertededonnenestautorise. Labasededonnesnepeutpastrefermepourtresauvegarde.

LemodeNOARCHIVELOGestpossiblesi :
q

Despertesdedonnessontacceptables. Labasededonnespeuttrefermepourtresauvegarde.

UnautreavantagedumodeARCHIVELOGestquelabasededonnespeutresterouvertelorsquunincidentsurvient surunfichierdedonnesquinappartientniautablespaceSYSTEM,niautablespaceUNDOactif.

6.Quellestratgiepourlasauvegarde ?
Lapremirergleestderaliserdessauvegardesfrquentes(auminimumtouslesjours)etdeconserverplusieurs cyclesdesauvegarde(encasdeproblmeavecunesauvegarde). SilabasededonnesfonctionneenmodeARCHIVELOG,vouspouvezraliserdessauvegardesbasesouvertes ilny apasderaisondesenpriver. Siladuredesauvegardeetlatailledessauvegardesneposentpasdeproblme(mmeenconservantplusieurs sauvegardes),vouspouvezralisersystmatiquement(touslesjours)dessauvegardescompltes. Si la dure de sauvegarde et/ou la taille des sauvegardes posent un problme, vous pouvez raliser des sauvegardes incrmentales et/ou des sauvegardes partielles. Dans le cas de sauvegardes partielles, vous devez simplement tre trs rigoureux dans le suivi et veiller tout sauvegarder sur un cycle complet de sauvegardes partielles. Il est important de raliser des sauvegardes trs frquemment pour pouvoir procder une restauration en un temps raisonnable : partir dune sauvegarde datant dun mois et rappliquer tous les fichiers de journalisation archivsdepuisunmoisrisquedeservlertrslongsilabasededonnesestactivementmisejour.

ENI Editions - All rights reserved - Algeria Educ

- 3-

Archivagedesfichiersdejournalisation
1.Vuedensemble
Activer larchivage des fichiers de journalisation seffectue en mettant la base de donnes dans le modeARCHIVELOG : cemodepermetdegarantirquun groupe de fichiers de journalisation ne sera pas rutilis tant quilnapastarchiv. Depuis la version 10, placer la base de donnes en mode ARCHIVELOG dmarre automatiquement deux processus darchivage(ARC0etARC1)lorsdelouverturedelabasededonnes danslesversionsprcdentes,ilfallaitlefaire explicitement. Par contre, il est toujours opportun, mme en version 10, de positionner certains paramtres dinitialisationquiconcernentlesprocessusdarchivage. La base de donnes peut tre cre dentre de jeu en modeARCHIVELOG. Gnralement, la base de donnes est creenmodeNOARCHIVELOGpuispasseenARCHIVELOG.Archiverlesfichiersdejournalisationgnrsparlacration delabasededonnesprsenteunfaibleintrt(maisunvolumedarchivesimportant).

2.Modeopratoire
Lemodeopratoireestlesuivant :
q

Modifier dans le fichier de paramtres serveur les paramtres dinitialisation qui concernent les processus darchivage ALTER SYSTEM SET log_archive_format=redo_%S_%R_%T.arc SCOPE=SPFILE; ALTER SYSTEM SET log_archive_dest_1=LOCATION=h:\oradata\arch\HERMES SCOPE=SPFILE; Arrterproprementlabasededonnes(pasABORT)

SQL> 2 3 SQL> 2 3
q

SQL> SHUTDOWN IMMEDIATE


q

Monterlabasededonnes

SQL> STARTUP MOUNT


q

PasserlabasededonnesenmodeARCHIVELOG

SQL> ALTER DATABASE ARCHIVELOG;


q

Sauvegarder la base de donnes (permet une sauvegarde T0 du nouveau mode de fonctionnement de la basededonnes) Ouvrirlabasededonnes

SQL> ALTER DATABASE OPEN;

Le mode ARCHIVELOG/NOARCHIVELOG est une proprit de la base qui se modifie par lordre SQL ALTER DATABASE. Ce mode de fonctionnement est mmoris dans le fichier de contrle de la base de donnes il nestpasncessairedelereprciserchaquedmarrage. LordreSQLALTER DATABASE NOARCHIVELOGpermet,aubesoin,derepasserenmodeNOARCHIVELOG.

3.Lesparamtresduprocessusdarchivage
ENI Editions - All rights reserved - Algeria Educ - 1-

openmirrors.com

LOG_ARCHIVE_FORMAT Ceparamtredfinitleformatsouhaitpourlenomdesarchives. Leformatdoitinclurelesvariablessuivantes : %sou%S Numrodesquencedufichierdejournalisation. %tou%T Numrodinstance(thread). %rou%R Identifiantderemisezrodesfichiersdejournalisation(voirlasectionRcupration). Lorsquelenomdelavariableestenmajuscules,lenombreestcompltgauchepardes0. Exemple : LOG_ARCHIVE_FORMAT = "redo_%S_%R_%T.arc" LOG_ARCHIVE_DESTetLOG_ARCHIVE_DUPLEX_DEST Le paramtre LOG_ARCHIVE_DEST dfinit une premire destination de larchivage et le paramtre LOG_ARCHIVE_DUPLEX_DEST une deuxime destination darchivage (duplique). Ces paramtres sont utilisables en StandardEdition. Syntaxe LOG_ARCHIVE_[DUPLEX_]DEST = "chemin_local" Exemple : LOG_ARCHIVE_DEST = "h:\oradata\arch\HERMES" LOG_ARCHIVE_DEST_n(nde110) Ces paramtres dfinissent jusqu 10 destinations parallles darchivage. Ils sont utilisables uniquement en EnterpriseEdition. Syntaxesimplifiepourunedestinationlocale(aumoinsuneobligatoire) LOG_ARCHIVE_DEST_n = "LOCATION=chemin_local" Exemple : LOG_ARCHIVE_DEST_1 = "LOCATION=h:\oradata\arch\HERMES" Les paramtres LOG_ARCHIVE_DEST_n permettent de spcifier plusieurs destinations parallles pour les archives parmilesdestinations,uneaumoinsdoittrelocale.Endehorsdunedestinationdisqueoubande,ilest possiblededsignerunebasedesecourscommecible(configurationDataGuard) cettetechniqueavancepermet davoirunebasededonnessurundeuximeserveurverslaquelleilestpossibledebasculerencasdeproblme sur la base de donnes source : la base de donnes de secours est mise jour par transfert et application des fichiersdejournalisationarchivs. Dans la spcification de la destination, il ne faut pas mettre despace autour du signe = dans la clause LOCATION. Dautres paramtres permettent de piloter le fonctionnement des destinations multiples (destinations obligatoires, facultatives,nombreminimumdedestinationsrussies,etc.). Remarquessurlesdestinationsdarchivage

- 2-

ENI Editions - All rights reserved - Algeria Educ

Larchivage direct sur bande pouvant tre long (et bloquer >LGWR si larchivagedun fichier de journalisation nest pas termin), une technique classique consiste archiver sur disque, au niveau dOracle, puis transfrer les archivessurbandeauniveaudusystmedexploitation(parunprocessusnonOraclemettreenplace). LesrpertoiresdedestinationnesontpascrsparOracle cestvousdelefaire. Si aucune destination darchivage nest dfinie, mais quune zone de rcupration rapide soit spcifie (paramtre DB_RECOVERY_FILE_DEST),lazonedercuprationrapideestutilisecommedestinationdarchivage. ARCHIVE_LAG_TARGET Ceparamtrepermetdedfiniruneduremaximaleensecondesentredeuxarchivages. Unevaleurnulledsactivelafonctionnalit(valeurpardfaut).Lesvaleursautorisessontcomprisesentre60(une minute)et7 200(2heures).Ceparamtrepermetdeforcerlarchivagedefaonpriodiqueetdoncdegarantirune priodicitdarchivagestable,indpendantedelafrquencedebasculementdesfichiersdejournalisationquipeut varierenfonctiondumomentdelajourne. Exemple : ARCHIVE_LAG_TARGET = 1800 # 30 minutes Silnyarienarchiver,Oraclenegnrepasdarchive. lorigine,ceparamtreestdestinaufonctionnementdelinstancedansuneconfigurationDataGuard.Danscette configuration, le paramtre ARCHIVE_LAG_TARGET dtermine la dure maximale dinformations de journalisation qui seraientperdues(nontransfressurlabasededonnesdesecours)encasdeplantagedelabasededonnes principale. Le paramtre fonctionne mme si la configuration Data Guard nest pas utilise, et mme sil ny a pas archivage danscederniercas,leparamtreconditionnelafrquencedebasculementdesfichiersdejournalisation.

4.Trouverdesinformationssurlarchivage
DansSQL*Plus,vouspouvezutiliserlacommande ARCHIVE LOG LIST(dansuneconnexion SYSDBA)pourobtenirdes informationssurlarchivage SQL> CONNECT / AS SYSDBA Connect. SQL> ARCHIVE LOG LIST mode Database log mode Archive Archivage automatique Activ Destination de larchive h:\oradata\arch\HERMES Squence de journal en ligne la plus ancienne 19 Squence de journal suivante archiver 21 Squence de journal courante 21 Plusieursvuesdudictionnairededonnespermettentdobtenirdesinformationssurlarchivage :
q

V$DATABASE : modedefonctionnementdelabasededonnes(colonneLOG_MODE) > V$LOG : statutdesgroupesvisvisdelarchivage(colonneARCHIVED) < V$ARCHIVED_LOG : informationssurlesfichiersdejournalisationarchivs V$ARCHIVE_DEST : informationssurlesdestinationsdarchivage.

LescolonnesintressantesdelavueV$ARCHIVED_LOGsontlessuivantes : RECID Identifiantdelenregistrement. NAME Chemincompletdelarchive.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

SEQUENCE# Numrodesquencedufichierdejournalisationcorrespondant. FIRST_CHANGE# PluspetitnumroSCNcritdanslarchive. FIRST_TIME DateetheuredupluspetitnumroSCN. NEXT_CHANGE# PlusgrandnumroSCNcritdanslarchive. NEXT_TIME DateetheureduplusgrandnumroSCN. COMPLETION_TIME Dateetheuredelarchivage. LescolonnesintressantesdelavueV$ARCHIVE_DESTsontlessuivantes : DEST_NAME Nomdeladestination. DESTINATION Chemindeladestination. STATUS Statutdeladestination(VALID,ERROR,etc.). ERROR Messagederreur(encasderreur). Exemple : SQL> SELECT log_mode FROM v$database; LOG_MODE -----------ARCHIVELOG SQL> SELECT group#,sequence#,status,archived 2 FROM v$log; GROUP# SEQUENCE# STATUS ARC ---------- ---------- ---------------- --1 25 INACTIVE YES 2 26 CURRENT NO 3 24 INACTIVE YES SQL> SELECT sequence#,name FROM v$archived_log; SEQUENCE# NAME ---------- ---------------------------------------------------20 H:\ORADATA\ARCH\HERMES\REDO_00020_0545650779_001.ARC ... SQL> SELECT destination,status,error FROM v$archive_dest 2 WHERE dest_name=LOG_ARCHIVE_DEST_1;

- 4-

ENI Editions - All rights reserved - Algeria Educ

DESTINATION --------------------------------------------------------STATUS ERROR --------- ----------------------------------------------h:\oradata\arch\HERMES ERROR ORA-19504: chec de cration du fichier ""

5.Problmecourantetsolution
Larchivagepeuttrebloqulorsquilyaunproblmeavecladestinationdarchivage :
q

plusdespacedisponible destinationinaccessible.

CelapeutconduireunblocagedeLGWRsitouslesfichiersdejournalisationenligneontbesoindtrearchivs. UnetellesituationestdtectablegrcelavueV$ARCHIVE_DEST(colonneSTATUS)oupardesmessagesdanslefichier desalertesdelinstance : Sun Aug 3 12:43:25 2008 Errors in file d:\oracle\admin\hermes\bdump\hermes_arc1_1504.trc: ORA-19504: chec de cration du fichier "H:\ORADATA\ARCH\HERMES\ REDO_00029_0545650779_001.ARC" ORA-27044: impossible dcrire le bloc den-tte du fichier OSD-04008: chec de Writefile() ; criture impossible dans le fichier O/S-Error: (OS 112) Espace insuffisant sur le disque. Pourdbloquerlasituation,ilsuffitdersoudreleproblmequiexistesurladestinationdarchivage,parexempleen dplaantdesarchivesversuneautredestinationafindelibrerdelespace. Sivousnepouvezpasrsoudreleproblmeavecladestinationdarchivage,modifieztemporairementladestination darchivage : ALTER SYSTEM SET log_archive_dest_1=LOCATION=d:\temp SCOPE=MEMORY; Ilpeuttrencessaireensuitedexcuter lordreSQL ALTER SYSTEM ARCHIVE LOG START pour relancer le processus darchivage.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

PrsentationduRecoveryManager
1.Introduction
RMANestunoutillignedecommandequipermetderaliserdessauvegardesetdesrcuprationsdune base de donnesappelebasededonnescible(targetdatabase). RMANutiliseunrfrentiel(repository)pourstockerdesinformationssursaconfiguration,lessauvegardesralises, lastructuredelabasecible,lesfichiersdejournalisationarchivs,etc. Ce rfrentiel est toujours stock dans le fichier de contrle de la base cible. La dure de conservation des informations dans le fichier de contrle est dtermine par le paramtre dinitialisation CONTROL_FILE_RECORD_KEEP_TIME(7jourspardfaut). Lerfrentielpeutaussitrestockdansuncataloguedercupration (recoverycatalog)quisematrialiseparun schma dans une autre base de donnes. Un seul catalogue de rcupration peut tre utilis pour centraliser les rfrentiels RMAN de plusieurs bases de donnes cibles. Employer un catalogue de rcupration spar est intressantcarlesinformationsdesauvegardesontprservessitouslesfichiersdecontrledelabaseciblesont perdus. Les fichiers de contrle sont donc encore plus importants lorsque vous utilisez RMAN sans catalogue de rcupration.Sivousperdeztouslesfichiersdecontrledelabasecible,RMANnaplusdinformationssur les sauvegardes disponibles. Si vous repartez dune sauvegarde de fichier de contrle, RMAN naura pas dinformationssurlessauvegardesralisesaprslasauvegardedufichierdecontrle.Sivousnutilisezpasde catalogue de rcupration, vous avez galement intrt augmenter la valeur du paramtre CONTROL_FILE_RECORD_KEEP_TIME(aumoins1015jours). Si vous dfinissez une zone de rcupration rapide (flash recovery area), laide des paramtres DB_RECOVERY_FILE_DESTetDB_RECOVERY_FILE_DEST_SIZE,vouspouvezbnficierdesfonctionnalitsdesauvegardeet derestaurationautomatiquessurdisqueproposesparRMAN.Encomplment,vouspouvezdfinirunepolitiquede conservation (retention policy) indiquant combien de temps une sauvegarde doit tre conserve. RMAN se charge alorsdegrerlespacedelazonedercuprationrapideensupprimant,sincessaire,lessauvegardesobsoltesou lessauvegardesrecopiessurbande. Pour chaque opration de sauvegarde, copie, restauration, RMAN utilise un canal (channel). Un canal est une connexion entre le client RMAN et un processus serveur de la base de donnes cible qui accde un priphrique (disqueoubande). Une sauvegarde RMAN peut se faire sous la forme dune copie image (image copy) ou dun jeu de sauvegarde (backup set). Une copie image est une copie lidentique du fichier (analogue une copie par une commande du systmedexploitation).Unjeudesauvegardecontientunouplusieursfichierssauvegards.Unjeudesauvegarde comprend un ou plusieurs fichiers chaque fichier dun jeu est appel lment de sauvegarde (backup piece). Par dfaut,unjeudesauvegardecomprendunseullmentdesauvegarde,maisilestpossibledelimiterlatailledeces lments danscecas,unjeudesauvegardepeutcontenirplusieurslmentsdesauvegardesilatailletotaledela sauvegardeestsuprieurelalimite.LejeudesauvegardeaunformatpropritaireRMAN. Pourraliserdessauvegardessurbande,RMANsinterfaceavecunlogicieldegestiondemdiafourniparlevendeur dusystmedesauvegarde. RMANoffreuntrsgrandnombredefonctionnalitsetdoptionsetpeuttreutilisdediffrentesmanires.Danscet ouvrage, nous prsenterons les fonctionnalits de base de RMAN, ncessaires et suffisantes pour mettre en place des stratgies de sauvegarde/rcupration simples, adaptes un grand nombre de cas. Nous supposerons notamment quune zone de rcupration rapide a t dfinie, ce qui permet de simplifier un grand nombre doprations,etquaucuncataloguedercuprationsparnatmisenplace. LesfonctionnalitsdebasedeRMANsontdcritesdansladocumentation OracleDatabaseBackupandRecovery UsersGuide.

2.LancerRMAN
PourlancerRMAN,ilsuffitdexcuterlacommandermanlinvitedusystmedexploitation. Syntaxe rman [liste_options] Lesoptionssuivantespeuventtreutilises :
ENI Editions - All rights reserved - Algeria Educ - 1-

TARGET [=] connexion Chanedeconnexionlabasededonnescible. CATALOG [=] connexion Chanedeconnexionlabasededonnesducataloguedercupration. CMDFILE [=] fichier CheminversunfichiercontenantdescommandesRMANexcuter. LOG [=] fichier CheminversunfichierjournaldelactivitRMAN. APPEND Indiquequelefichierjournaldoittreouvertenmodeajout. USING valeur [...] Dfinit une ou plusieurs valeurs pour des variables de substitution qui peuvent tre utilises dans un fichier de commandesRMAN.DanslefichierdecommandeRMAN,lesvariablesdesubstitutionsontdfiniesparlasyntaxe&n (ventuellementsuividunpoint),ntantunentier.

Les principes de connexion la base cible sont les mmes quavec SQL*Plus : utilisation par dfaut des variables denvironnement (ORACLE_SID, LOCAL, TWO_TASK), utilisation dun nom de service rseau, etc. Les variablesdenvironnement commeNLS_DATE_FORMATetNLS_LANG influent aussi sur le format des dates et la langue desmessagesaffichsparRMAN.Parailleurs,laconnexionlabasecibleseffectueimplicitementAS SYSDBA. Exemple :
q

LancerRMANsansseconnecter

> rman Recovery Manager: Release 11.1.0.6.0 - Production on Lun. Aot 4 07:37:14 2008 Copyright (c) 1982, 2007, Oracle. All rights reserved. RMAN>
q

Lancer RMAN en se connectant la base cible (utilisation des variables denvironnement et authentification SYSDBAparlesystmedexploitation)

> rman target / Recovery Manager: Release 11.1.0.6.0 - Production on Lun. Aot 4 07:48:22 2008 Copyright (c) 1982, 2007, Oracle. All rights reserved. connect la base de donnes cible : H E R M E S ( D B I D = 3 5 3 5 8 9 2 6 4 7 )
q

Lancer RMAN en se connectant la base cible (utilisation dun nom de service rseau et authentification SYSDBAparunfichierdemotdepasse)

> rman target sys/wX#12@hermes ...


q

LancerRMANetexcuterunfichierdecommande(quieffectuelaconnexion)

> rman cmdfile=backup.rcv log=backup.log append ... Sivousnutilisez pas loptionCMDFILE,RMANestlancenmodeinteractif ilafficheuneinviteetvouspouvezsaisir

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

descommandes.AvecloptionCMDFILE,RMANestlancenmodebatch ilexcutelescommandescontenuesdansle fichierdecommandepuisquitte. ChaquebasededonnespossdeunidentifiantuniqueappelDBID.LeDBIDdelabasecibleestaffichpar RMAN lorsque vous vous connectez. Vous avez intrt noter ce DBID quelque part, il peut en effet se rvlerutilepourcertainesoprations.

3.Quelquescommandesutiles
Certaines commandes RMAN doivent se terminer par un pointvirgule, dautres non (pointvirgule optionnel). Les commandes RMAN ncessitant un pointvirgule peuvent tre saisies sur plusieurs lignes, les autres non. Les commandesRMANsontsaisiesindiffremmentenmajusculesouenminuscules. LescommandessuivantespeuventtreutilisesdansRMAN : @fichier Excuteunfichierdecommande. @@fichier Excuteunfichierdecommandedanslemmerpertoirequelefichierdecommandeactuel. SET ECHO ON | OFF Activeoudsactivelchodescommandes. SPOOL LOG TO fichier [APPEND] critlasortieRMANdansunfichier. SPOOL LOG OFF ArrtelcrituredelasortieRMANdansunfichier. STARTUP [option] Dmarrelabasededonnes lesoptionssontlesmmesquedansSQL*Plus. SHUTDOWN [option] Arrtelabasededonnes lesoptionssontlesmmesquedansSQL*Plus. ALTER DATABASE MOUNT | OPEN ; Monteououvreunebasededonnes. CONNECT CATALOG connexion tablituneconnexionlabasededonnesducatalogue. CONNECT TARGET connexion tablituneconnexionlabasededonnescible. HOST [commande] ; HOST ["commande"] ; Excute une commande du systme dexploitation ou ouvre une session du systme dexploitation (si aucune commandenestspcifie). SQL requte ; SQL "requte" ;

ENI Editions - All rights reserved - Algeria Educ

- 3-

ExcuteunerequteSQLsurlabasededonnescible.Larequtenedoitpasseterminerparunpointvirgule si ellecontientdesapostrophes,ellesdoiventtredoubles. EXITouQUIT QuitteRMAN. ExempledescriptRMAN: # ceci est un commentaire SPOOL LOG TO d:\rman.log SET ECHO ON CONNECT TARGET / SHUTDOW MOUNT SQL "ALTER DATABASE ARCHIVELOG"; ALTER DATABASE OPEN; SPOOL LOG OFF SET ECHO OFF Si vous souhaitez placer un commentaire en fin de ligne, vous devez terminer la commande par un pointvirgule (mmesilepointvirguleestoptionnelpourlacommande). Parailleurs,ilestpossibledegrouperdescommandesRMANdansunblocdlimitpardesaccoladesetdexcuterce blocaveclacommandeRUN : RUN { ... } Certaines commandes (ALLOCATE CHANNEL,SET) excutes lintrieurdun bloc ont une porte limite au bloc. Par ailleurs,siunecommandedublocchoue,lexcutiondublocsarrte. CertainescommandesRMANdoiventtreexcuteslintrieurdunbloc(ALLOCATE CHANNELparexemple) dautres nepeuventpastreexcutesdansunbloc(SPOOLparexemple).

4.ConfigurerRMAN
RMANdisposedeplusieursrglagespersistantsutilisspardfautlorsdesdiffrentesoprations. LaconfigurationactuellepeuttrevisualiseenexcutantlacommandeSHOW ALL. Exemple : RMAN> SHOW ALL ; utilisation du fichier de contrle de la base de donnes cible au lieu du catalogue de rcupration les paramtres de configuration RMAN de la base de donnes ayant le db_unique_name HERMES sont les suivants : CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default CONFIGURE BACKUP OPTIMIZATION OFF; # default CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO %F; # default CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE MAXSETSIZE TO UNLIMITED; # default CONFIGURE ENCRYPTION FOR DATABASE OFF; # default CONFIGURE ENCRYPTION ALGORITHM AES128; # default CONFIGURE COMPRESSION ALGORITHM BZIP2; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO D:\APP\ORACLE\PRODUCT\11.1.0\DB_1\ DATABASE\SNCFHERMES.ORA; # default Lecommentaire# defaultindiquequeleparamtreestgalsavaleurpardfaut.

openmirrors.com

- 4-

ENI Editions - All rights reserved - Algeria Educ

Lacommande CONFIGURE permet de modifier les rglages persistants la commande SHOW ALL montre la valeur des rglagesenutilisantlasyntaxedelacommandeCONFIGURE. Lesprincipauxrglagessontlessuivants : Configurerlescanauxetlespriphriques Par dfaut, le priphrique utilis est le disque (paramtre DEFAULT DEVICE TYPE), la destination par dfaut des sauvegardestantlazonedercuprationrapide.Sicettedernirenestpasdfinie,RMANutiliseunedestination pardfautquidpenddelaplateforme. Sivoussouhaitezconfigurerladestinationdesauvegarde,vouspouvezutiliserlacommandesuivante : CONFIGURE CHANNEL DEVICE TYPE DISK options ; Laclauseoptionspeutprendreuneouplusieursvaleursdont : FORMAT format Cheminetformatdenomdefichierpourlasauvegarde. MAXPIECESIZE taille [K|M|G] Taillemaximaledeslmentsdesauvegarde.Aucunelimitepardfaut. Exemple : CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT h:\backup\%U MAXPIECESIZE 2G ; Danscetexemple,latailledeslmentsdesauvegardeestlimite2Go.Silatailledelasauvegardeestsuprieure 2Go,lejeudesauvegardecontiendraplusieurslmentsdesauvegarde. Loptionformatcomprenduncheminetunformatdefichier.Leformatdefichierutilisegnralementuneouplusieurs desvariablessuivantes : %U Nomdefichieruniquedontlacompositiondpenddelanaturedelasauvegarde : %u_%p_%cpourunlmentdesauvegarde data-D-%d_id-%I_TS-%N_FNO-%f_%upourunecopieimagedunfichierdedonnes arch-D_%d-id-%I_S-%e_T-%h_A-%a_%upourunecopieimagedunfichierdejournalisationarchiv cf-D_%d-id-%I_%upourunecopieimagedufichierdecontrle. %d Nomdelabasededonnes. %I Identifiantdelabasededonnes(DBID). %h Numrodactivationdelabasededonnes. %N Nomdutablespace. %f Numrodefichierdedonnes.
ENI Editions - All rights reserved - Algeria Educ - 5-

%e Numrodesquencedufichierdejournalisationarchiv. %h Numrodinstance(thread)dufichierdejournalisationarchiv. %s Numrodujeudesauvegarde(backupset). %p Numrodellmentdesauvegarde(backuppiece)lintrieurdunjeudesauvegarde. %c Numro de copie de llment de sauvegarde (cas dune sauvegarde multiplexe). 1 si la sauvegarde nest pas multiplexe. %u Chaneuniquede8caractresbasesurlenumrodujeudesauvegardeoudelacopieimageetdeladate/heure delasauvegarde/copie.

Sivousutilisezdesformatspersonnaliss,assurezvousquelenomdefichiergnrestunique,souspeine dcraserdautressauvegardes. Dans la commande CONFIGURE CHANNEL DEVICE TYPE DISK, une option non spcifie est remise sa valeur par dfaut lavaleurprcdentenestpasconserve. Pourmodifierlataillemaximaledeslmentsdesauvegarde,enremettantleformatpardfaut,vouspouvezutiliser lacommandesuivante : CONFIGURE CHANNEL DEVICE TYPE DISK MAXPIECESIZE 4G ; Pourrevenirlaconfigurationpardfaut,vouspouvezemployerlacommandesuivante : CONFIGURE CHANNEL DEVICE TYPE DISK CLEAR ; Configurerlapolitiquedeconservation Lapolitiquedeconservationpeuttredfinieentermesdefentrederestaurationouderedondance. Une fentre de restauration indique jusqu combien de jours dans le pass vous souhaitez pouvoir revenir. Une redondanceindiquecombiendesauvegardesdechaquefichierdoiventtreconserves cestlapolitiquepardfaut (avecuneredondancede1). Pourdfinirlapolitiquedeconservation,utilisezunedescommandessuivantes :
q

Fentrederestauration

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS ;


q

Redondance

CONFIGURE RETENTION POLICY TO REDUNDANCY n ; Lorsquelazonedercuprationrapideestutilise,RMANsupprimeautomatiquementlessauvegardesobsoltes(sil a besoin de place), en sappuyant sur la politique de conservation par dfaut et sur la taille alloue la zone de rcuprationrapide(paramtreDB_RECOVERY_FILE_DEST_SIZE). Pourrevenirlaconfigurationpardfaut,vouspouvezutiliserlacommandesuivante :

openmirrors.com

- 6-

ENI Editions - All rights reserved - Algeria Educ

CONFIGURE RETENTION POLICY CLEAR ; Configurerlasauvegardeautomatiquedufichierdecontrle Lasauvegardeautomatiquedufichierdecontrlepeuttreactivegrcelacommandesuivante : CONFIGURE CONTROLFILE AUTOBACKUP ON ; Lorsque la sauvegarde automatique du fichier de contrle est active, le fichier de contrle est, par dfaut, sauvegarddanslazonedercuprationrapide. Si vous souhaitez dfinir une destination de sauvegarde par dfaut spcifique, vous pouvez utiliser la commande suivante : CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO format ; Loptionformatnepeutetnedoitinclurequelavariable%F(nomuniquebassurlidentifiantdelabasededonnes, ladateetunnumrodesquencehexadcimal).RemplacezTO formatparCLEARpourrevenirauformatpardfaut. Activer la sauvegarde automatique du fichier de contrle active aussi la sauvegarde automatique du fichier de paramtres serveur. Lorsque la sauvegarde automatique est active, ces deux fichiers sont automatiquement sauvegards chaque fois quune modification de structure de la base de donnes ou une sauvegarde RMAN est enregistredanslefichierdecontrle. Activerlasauvegardeautomatiquedufichierdecontrleestvivementconseill,surtoutsivousnutilisezpas de catalogue de rcupration spar pour RMAN. En cas de perte de tous les fichiers de contrle, RMAN pourrarestaurercesdernierspartirdunesauvegardeautomatique.

5.Utilisationdelazonedercuprationrapide
Oracle conseille vivement dutiliser une zone de rcupration rapide pour bnficier dun certain nombre de fonctionnalitsautomatiquesrelativesauxoprationsdesauvegardeetdercupration. Siunezonedercuprationrapideestconfigure,elleestutilisecommedestinationpardfautdessauvegardeset de plusieurs autres fichiers (par exemple, les fichiers de journalisation archivs si aucune destination darchivage nestdfinie). Le quota despace allou la zone de rcupration rapide (paramtre DB_RECOVERY_ FILE_DEST_SIZE) doit tre spcifi avec soin, en tenant compte de la taille des fichiers qui y sont stocks (sauvegardes notamment) et de la politiquedeconservationdessauvegardes. Du point de vue de la scurit, il est vivement conseill dutiliser un disque spar pour la zone de rcuprationrapide. Les fichiers gnrs par Orale dans la zone de rcupration rapide sont stocks dans diffrents sousrpertoires, avecdesformatsdenomdefichiersspcifiques.Cesontdesfichiers"grsparOracle"(OracleManagedFiles). Lesdiffrentsrpertoiressontdfinissouslaformesuivante :
q

<DB_UNIQUE_NAME>/<type>[/<date>](Unix/Linux) <DB_UNIQUE_NAME>\<TYPE>[\<date>](Windows).

Avec : <DB_UNIQUE_NAME> NomuniquedelabasededonnestelquedfiniparleparamtreDB_UNIQUE_NAME(pardfautgalauparamtre> DB_NAME). <type> Sousrpertoire correspondant au type de fichier : archivelog (fichier de journalisation archiv), autobackup (sauvegardeautomatiquedufichierdecontrleetdufichierdeparamtresserveur),backupset(jeudesauvegarde),

ENI Editions - All rights reserved - Algeria Educ

- 7-

controlfile(copieimagedefichierdecontrle),datafile(copieimagedefichierdedonnes). <TYPE> Identique<type>maisenmajuscules. <date> Sousrpertoire correspondant la date (au format AAAA_MM_JJ). Nexiste pas pour les rpertoires controlfile et datafile. LesrglesdenommagedesfichiersgrsparOraclesontlessuivantes : Typedefichier Fichierdejournalisationarchiv Copieimagedefichierdedonnes Copieimagedefichierdecontrle Jeudesauvegarde Sauvegardeautomatique Avec : <t> nomdutablespace <u> chanede8caractresquigarantitlunicit <g> numrodegroupepourlesfichiersdejournalisation <i> numrodinstance(thread)pourlesfichiersdejournalisationarchivs <s> numrodesquencepourlesfichiersdejournalisationarchivs <a> nomdonnlasauvegarde(optionTAGdelacommandeBACKUP) <c> chanede5caractrescorrespondantaucontenudujeudesauvegarde <h> horodatagedelasauvegardeautomatique(nombredesecondescoulesdepuisunedateinternefixe). Exemple : H:\ORADATA\FLASH_RECOVERY_AREA\HERMES ARCHIVELOG Format o1_mf_<i>_<s>_<u>_.log o1_mf_<t>_<u>_.dbf o1_mf_<a>_<u>_.ctl o1_mf_<c>_<a>_<u>_.bkp o1_mf_s_<h>_<u>_.bkp

openmirrors.com

- 8-

ENI Editions - All rights reserved - Algeria Educ

2008_08_05 O1_MF_1_35_49HPDHY8_.ARC AUTOBACKUP 2008_08_05 O1_MF_S_661934919_49HPX9N0_.BKP BACKUPSET 2008_08_05 O1_MF_NNNDF_TAG20080805T064838_49HPX6TV_.BKP CONTROLFILE O1_MF_TAG20080805T065123_49HQ2C9R_.CTL DATAFILE O1_MF_TEST_49HQ0498_.DBF La mme zone de rcupration rapide peut tre partage par plusieurs bases de donnes, sous rserve que ces derniresaientunnomuniquedebasededonnes(paramtreDB_UNIQUE_NAME)diffrent.

6.LacommandeVALIDATE
LacommandeVALIDATEpeuttreutilisedansdiffrentessituations(titreprventif,avantunesauvegarde,avant unerestauration,etc.)pourdtecterdventuelsproblmesdecorruptionoudefichiersmanquants. Syntaxesimplifie VALIDATE quoi ; Laclausequoipeutprendreunedesvaleurssuivantes(nonexhaustif) : DATABASE Vrification de la totalit de la base de donnes (fichiers de donnes, fichiers de contrle et fichier de paramtre serveur). TABLESPACE liste_noms Vrificationdunouplusieurstablespaces. DATAFILE liste_numros_ou_noms Vrification dunouplusieursfichiersdedonnes. CURRENT CONTROLFILE Vrificationdufichierdecontrlecourant. SPFILE Vrificationdufichierdeparamtresserveur. ARCHIVELOG ALL Vrificationdetouslesfichiersdejournalisationarchivs(ALLpeuttreremplacpardiffrentesclausespermettant deslectionnerlesfichiersdejournalisationarchivsvrifier). BACKUPSET liste_cls Vrificationdunouplusieursjeuxdesauvegarde. RECOVERY AREA Vrificationdetouslesfichiersstocksdanslazonedercuprationrapide. Exemples VALIDATE DATABASE ;

ENI Editions - All rights reserved - Algeria Educ

- 9-

VALIDATE DATAFILE 1,E:\ORADATA\HERMES\DATA01.DBF ; VALIDATE TABLESPACE system,sysaux ; VALIDATE BACKUPSET 47,52 ;

openmirrors.com

- 10 -

ENI Editions - All rights reserved - Algeria Educ

Sauvegarde
1.Gnralits
LacommandeBACKUPpermetdeffectuerunesauvegarde.Pourquecettecommandefonctionne,ilfautquelabasede donnessoitmonteououvertecarRMANabesoindaccderaufichierdecontrledelabasecible,notammentpour y enregistrer lexistence de la sauvegarde. Les sauvegardes base ouverte ne sont possibles que si la base de donnes fonctionne en mode ARCHIVELOG. Si la base de donnes fonctionne en mode NOARCHIVELOG, il faut au pralablearrterlabasededonnes(proprement)puislamonter : SHUTDOWN IMMEDIATES TARTUP MOUNT BACKUP ... ; RMANpeutsauvegarderdesfichiersdedonnes,desfichiersdecontrle,desfichiersdejournalisationarchivs,le fichier de paramtres serveur ou des lments de sauvegarde (dune sauvegarde prcdente). Comme indiqu prcdemment,unesauvegardeRMANpeuttreralisesouslaformedunecopieimage (imagecopy)oudunjeu desauvegarde(backupset).Pardfaut,lasauvegardeseffectuedansunjeudesauvegarde. LorsqueRMANeffectueunesauvegardedefichiersdedonnesdansunjeudesauvegarde,ilnesauvegardepasles blocsjamaisutilissdesfichiers,cequipermetdegagnerdelaplace.Encomplment,ilestpossibledecompresserle jeudesauvegarde celaralentitlgrementlasauvegarde,consommeunpeudeCPU,maisdiminuelatailledela sauvegarde de manire importante (typiquement, division par 5). Ces deux fonctionnalits ne sont pas disponibles danslecasdunecopieimage(copiebitbitdufichierdorigine). LasyntaxegnraledelacommandeBACKUPestlasuivante : BACKUP [comment] quoi [option]

LacommandeBACKUPproposeuntrsgrandnombredoptions.Danscetouvrage,nousneprsenteronsque lesoptionslespluscourammentutilises. Laclausecommentpeutprendreuneouplusieursdesvaleurssuivantes : INCREMENTAL LEVEL n [CUMULATIVE] Indiquequelasauvegardeestunesauvegardeincrmentale. VALIDATE Indique simplement de vrifier que la sauvegarde peut tre ralise (teste la prsence des fichiers et leur non corruption).CetteoptionestquivalentelutilisationdelacommandeVALIDATE. AS COPYouAS [COMPRESSED] BACKUPSET Indiquesilfautfaireunesauvegardesouslaformedunecopieimageoudunjeudesauvegarde,ventuellement compress. Laclausequoipeutprendreuneouplusieursdesvaleurssuivantes : DATABASE Sauvegardedelatotalitdelabasededonnes. TABLESPACE cible Sauvegardedunouplusieurstablespaces. DATAFILE cible Sauvegardedunouplusieursfichiersdedonnes. CURRENT CONTROLFILE
ENI Editions - All rights reserved - Algeria Educ - 1-

Sauvegardedufichierdecontrlecourant. SPFILE Sauvegardedufichierdeparamtresserveur. ARCHIVELOG cible Sauvegardedesfichiersdejournalisationarchivs. Laclauseoptionpeutprendreuneouplusieursdesvaleurssuivantes : INCLUDE CURRENT CONTROLFILE Inclurelefichierdecontrlecourantdanslasauvegarde. PLUS ARCHIVELOG Inclurelesfichiersdejournalisationarchivsdanslasauvegarde. DELETE [ALL] INPUT Supprimerleslmentssauvegards(valableuniquementpourunesauvegardedefichiersdejournalisationarchivs ouunesauvegardedejeudesauvegarde). FORMAT [=] format Spcifierunformatpourlasauvegarde(cheminetformatdenomdefichier). TAG [=] nom Associerunnomlasauvegarde. NOT BACKED UP clause_depuis Indiquerdenesauvegarderqueleslmentsquinontpastsauvegardsuncertainnombredefoisoudepuisun certaintemps. DanslacommandeBACKUP,laseuleclauseobligatoireestlaclausequoiquiindiquecequilfautsauvegarder.Toutes lesautresclausessontoptionnellesetontdesvaleurspardfaut. Certaines valeurs par dfaut proviennent de la configuration persistante de RMAN. Cest le cas notamment de la destinationdelasauvegardeetduformatdunomdesfichiers(canalpardfaut).LoptionFORMATdelacommande BACKUP permet de spcifier une destination diffrente pour la sauvegarde. Sauf modification de la configuration, la sauvegarde sur disque seffectue par dfaut dans un jeu de sauvegarde non compress (quivalent loption AS BACKUPSET). Pour effectuer une sauvegarde dans un jeu de sauvegarde compress, il faut utiliser loption AS COMPRESSED BACKUPSET(BACKUP AS COMPRESSED BACKUPSET ...). Pour effectuer une sauvegarde sous la forme dune copieimage,ilfaututiliserloptionAS COPY(BACKUP AS COPY ...). Avec loption VALIDATE, la commande BACKUP neffectue en fait aucune sauvegarde elle vrifie simplement quune sauvegarde pourrait tre ralise, cestdire que les fichiers sauvegarder sont bien accessibles et ne sont pas corrompus. LoptionTAG permet dassocier un nom la sauvegarde, ce qui permet par la suite didentifier facilement des sauvegardesoudescatgoriesdesauvegarde.CenomestinclusdanslesnomsdefichiersgnrsparRMANlors dunesauvegardedanslazonedercuprationrapide. LoptionNOT BACKED UPproposedeuxsyntaxes :
q

NOT BACKED UP SINCE TIME = date NOT BACKED UP n TIMES.

Lapremiresyntaxepermetdenesauvegarderqueleslmentsquinontpastsauvegardsdepuisuncertain temps.Loptiondatepeuttreuneconstanteconformeauformatdedatepardfaut(NLS_DATE_FORMATdelasession

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

RMAN)ouuneexpression(dutypeSYSDATE-1).Ladeuximesyntaxepermetdenesauvegarderqueleslments quinontpastsauvegardsuncertainnombredefois cettesyntaxenepeuttreutilisequepourlesfichiersde journalisationarchivs. Lesautresclausessontdtaillesdanslespointssuivants. Lorsdechaquesauvegarde,RMANaffichedenombreusesinformationssurlesoprationseffectues. Exemple RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE TAG=DBF; Dmarrage de backup dans 05/08/08 utilisation du canal ORA_DISK_1 canal ORA_DISK_1 : dmarrage de lensemble de sauvegarde compress de tous les fichiers de donnes canal ORA_DISK_1 : insertion du(des) fichier(s) de donnes dans lensemble de sauvegarde fichier de donnes en entre, numro=00001, nom=E:\ORADATA\HERMES\SYSTEM01.DBF fichier de donnes en entre, numro=00002, nom=E:\ORADATA\HERMES\SYSAUX01.DBF fichier de donnes en entre, numro=00003, nom=E:\ORADATA\HERMES\UNDOTBS01.DBF fichier de donnes en entre, numro=00005, nom=E:\ORADATA\HERMES\DATA01.DBF fichier de donnes en entre, numro=00006, nom=E:\ORADATA\HERMES\INDX01.DBF fichier de donnes en entre, numro=00004, nom=E:\ORADATA\HERMES\DEFTBS01.DBF canal ORA_DISK_1 : dmarrage de llment 1 dans 05/08/08 canal ORA_DISK_1 : lment 1 termin dans 05/08/08 descripteur dlment=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\BACKUPSET\ 2008_08_05\O1_MF_NNNDF_DBF_49HRPOC7_.BKP balise=DBF commentaire=NONE canal ORA_DISK_1 : ensemble de sauvegarde termin, temps coul : 00:00:55 Fin de backup dans 05/08/08 Dmarrage de Control File and SPFILE Autobackup dans 05/08/08 descripteur dlment=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\AUTOBACKUP\ 2008_08_05\O1_MF_S_661936812_49HRRFXS_.BKP commentaire=NONE Fin de Control File and SPFILE Autobackup dans 05/08/08 Danslecompterendudunesauvegarde,noustrouvonslesinformationssuivantes :
q

les fichiers sauvegards (par exemple "fichier de donnes en entre" pourunesauvegardedefichierde donnes) lenomcompletdufichierdesauvegardegnr(parexemple"descripteurdlment="pourunlmentde sauvegarde) le fait quil y ait eu ou non une sauvegarde automatique du fichier de contrle et du fichier de paramtres serveur.

Lesfichiersdedonnestemporaires(fichiersdedonnesdestablespacestemporairesgrslocalement)ne sontpassauvegards(cestinutile).

2.Sauvegardedelatotalitdelabasededonnes
Poursauvegarderlatotalitdelabase,ilsuffitdutiliserloptionDATABASEdanslacommandeBACKUP : BACKUP DATABASE ; RMAN utilise les informations du fichier de contrle de la base cible pour dfinir la liste des fichiers de donnes sauvegarder.Encomplment,ilsauvegardelefichierdecontrleetlefichierdeparamtresserveur(voirciaprs). La commande BACKUP VALIDATE DATABASE peut tre utilise pour vrifier que la base de donnes est en "bon tat"(aucunfichierinaccessible,aucunfichiercorrompu).
ENI Editions - All rights reserved - Algeria Educ - 3-

3.Sauvegardedetablespacesoudefichiersdedonnesindividuels
Pour sauvegarder individuellement quelques tablespaces ou quelques fichiers de donnes, vous pouvez utiliser les optionsTABLESPACEet/ouDATAFILEdanslacommandeBACKUP. Exemple : BACKUP TABLESPACE data,indx ; BACKUP DATAFILE 1,2,E:\ORADATA\HERMES\DEFTBS01.DBF ; BACKUP TABLESPACE system DATAFILE 5 ; Lesoptions TABLESPACEet DATAFILEpeuventtreutilisessimultanmentdanslammecommande.Untablespace est dsign par son nom et un fichier de donnes par son numro ou par son nom. Lors de la sauvegarde dun tablespace, RMAN utilise les informations du fichier de contrle de la base cible pour dfinir la liste des fichiers de donnesdutablespaceetlessauvegarder.

4.Sauvegardedufichierdecontrleetdufichierdeparamtresserveur
Lefichierdecontrleetlefichierdeparamtresserveursontsauvegardsautomatiquementdansdeuxcas :
q

Lorsquelasauvegardeautomatiquedufichierdecontrleatactive. Lorsquelefichierdedonnesnumro1(lepremierfichierdedonnesdutablespaceSYSTEM)estsauvegard.

Dans les autres cas, le fichier de contrle peut tre explicitement sauvegard en utilisant les options CURRENT CONTROLFILEouINCLUDE CURRENT CONTROLFILEdanslacommandeBACKUP.Demme,lefichierdeparamtresserveur peuttreexplicitementsauvegardenutilisantloptionSPFILE. Exemple : BACKUP TABLESPACE data,indx INCLUDE CURRENT CONTROLFILE ; BACKUP CURRENT CONTROLFILE ; BACKUP AS COPY CURRENT CONTROLFILE ;BACKUP SPFILE ; Silasauvegardeautomatiquedufichierdecontrleatactive,lefichierdecontrleoulefichierdeparamtres serveursontsauvegardsendoublelorsquilssontexplicitementsauvegards. Lefichierdecontrleetlefichierdeparamtresserveursontsauvegardsdansunjeudesauvegardespar. La sauvegarde automatique du fichier de contrle est plus intressante quune sauvegarde manuelle, notamment car RMAN peut la restaurer automatiquement en cas de besoin (ce nest pas le cas avec une sauvegarde manuelle). De plus, dans cette configuration, le fichier de contrle est automatiquement sauvegard lorsquelaconfigurationdesfichiersdelabasededonneschange.

5.Sauvegardedesfichiersdejournalisationarchivs
Si les fichiers de journalisation ne sont pas archivs en double sur des disques spars, ou ne sont pas archivs danslazonedercuprationrapide(quidoitnormalementtreundisquespar),ilestvivementconseilldeles sauvegarder cesonteuxeneffetquipermettentdegarantirunerestaurationcomplte. Les fichiers de journalisation archivs peuvent tre sauvegards en utilisant les options ARCHIVELOG ou PLUS ARCHIVELOGdanslacommandeBACKUP. Exemple : BACKUP ARCHIVELOG ALL ;<$IRMAN;BACKUP ARCHIVELOG> BACKUP ARCHIVELOG FROM TIME SYSDATE-1 DELETE ALL INPUT ; BACKUP AS COMPRESSED BACKUPSET ARCHIVELOG FROM TIME SYSDATE-7 NOT BACKED UP 2 TIMES ; BACKUP DATABASE PLUS ARCHIVELOG ; BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT ;

openmirrors.com

- 4-

ENI Editions - All rights reserved - Algeria Educ

Dans les deux cas, si les fichiers de journalisation sont archivs vers plusieurs destinations, une seule copie est sauvegardepourchaquenumrodesquencedejournalisation. LacommandeBACKUP ARCHIVELOG ciblepermetdesauvegarderlesfichiersdejournalisationdsignsparlaclause cible.Laclausecibleoffrediffrentespossibilitsparmilesquelles : ALL Touslesfichiersdejournalisationarchivs.Nepeutpastrecombineavecdautresoptions. FROM TIME date Touslesfichiersdejournalisationarchivsdepuisunecertainedate. UNTIL TIME date Touslesfichiersdejournalisationarchivsavantunecertainedate. TIME BETWEEN date1 AND date2 Touslesfichiersdejournalisationarchivsentredeuxdates. Silacommandeinclutlefichierdejournalisationleplusrcent(optionALLouabsencedoptionUNTIL)etquelabase dedonneestouverte,RMANcommencepararchivertouslesfichiersdejournalisationenlignequinontpasencore t archivs (et donc notamment le courant). De cette manire, toute lactivit de journalisation gnre avant le dbutdelacommandeestsauvegarde. La commande BACKUP ... PLUS ARCHIVELOG permet de sauvegarder les fichiers de journalisation en plus dautres lments(maisdansunjeudesauvegardespar).Cettecommandeeffectuelesoprationssuivantes :
q

archivagedufichierdejournalisationcourant sauvegarde de tous les fichiers de journalisation archivs (quivalent la commande BACKUP ARCHIVELOG ALL) sauvegardedesautreslments denouveau,archivagedufichierdejournalisationcourant sauvegardedesfichiersdejournalisationarchivsgnrsdepuisledbutdelasauvegarde.

De cette manire, toutes les sauvegardes de fichiers de donnes effectues pendant lopration (dans un tat incohrent)sontexploitablescartouslesfichiersdejournalisationncessairesonttsauvegards. UtilisationdeloptionNOTBACKEDUP LoptionNOT BACKED UPpeuttreutiliseenplus,pournesauvegarderquelesfichiersdejournalisationarchivsqui nontpasdjtsauvegardsuncertainnombredefoisoudepuisuncertaintemps. UtilisationdeloptionDELETE[ALL]INPUT Loption DELETE [ALL] INPUT peut tre utilise pour supprimer les fichiers de journalisation archivs qui viennent dtresauvegards. Si les fichiers de journalisation sont archivs dans une seule destination, il ny a pas de diffrence entre loption DELETE INPUTetloptionDELETE ALL INPUT. Silesfichiersdejournalisationsontarchivsversplusieursdestinations,ilyaunediffrenceentrelesdeuxoptions :
q

DELETE INPUTsupprimeuniquementlacopiedufichierdejournalisationquiatutilispourlasauvegarde. DELETE ALL INPUTsupprimetouteslescopiesdufichierdejournalisationsauvegard.

ENI Editions - All rights reserved - Algeria Educ

- 5-

6.Sauvegardeincrmentale
Avec RMAN, il est possible de raliser des sauvegardes incrmentales, de la totalit de la base de donnes, de tablespacesindividuelsoudefichiersdedonnesindividuels.Lobjectifestdenesauvegarderquelesblocsquiont t modifis depuis la dernire sauvegarde. Les sauvegardes incrmentales prsentent comme principal intrt de rduirelatailledessauvegardes,notammentlorsquelactivitdemisejourestrelativementfaiblesurlabasede donnes. Pour raliser une sauvegarde incrmentale, il suffit dinclure loption INCREMENTAL LEVEL n [CUMULATIVE] dans la commandeBACKUP. Exemple : BACKUP INCREMENTAL LEVEL 0 DATABASE TAG=dbinc0 ; BACKUP INCREMENTAL LEVEL 1 DATABASE TAG=dbinc1 ; Unesauvegardeincrmentalepeuttredeniveau0oudeniveau1,diffrentielleoucumulative :
q

Une sauvegarde incrmentale de niveau 0 sauvegarde toujours, tous les blocs utiliss des fichiers de donnes. Elle est quivalente une sauvegarde complte (mais une sauvegarde complte nest pas considreparRMANcommeunesauvegardeincrmentaledeniveau0). Une sauvegarde incrmentale diffrentielle de niveau 1 sauvegarde tous les blocs modifis depuis la derniresauvegardeincrmentaledeniveau0ou1.Cestlecomportementpardfaut.

Unesauvegardeincrmentalecumulativedeniveau1sauvegardetouslesblocsmodifisdepuisladernire sauvegardeincrmentaledeniveau0.

Les sauvegardes incrmentales cumulatives sont plus intressantes pour la rapidit de rcupration (moins de sauvegardesintermdiairesappliquer),maisncessitentplusdespacedisque. Lorsdunesauvegardeincrmentaledeniveau1,RMANestobligdeliretouslesblocsutilisspourtrouverceuxqui ont t modifis et doivent donc tre sauvegards. En consquence, la dure de la sauvegarde nest pas sensiblementrduiteparrapportunesauvegardedeniveau0(pasdegainsurlalecture,simplegainsurlcriture). Sivoussouhaitezrduireladuredelasauvegarde,vouspouvezactiverlafonctionnalitdetracedesblocsmodifis (block change tracking).Lorsquecettefonctionnalitestactive,Oraclegardeunetracedesblocsmodifisdansun fichier.Lorsdunesauvegardeincrmentaledeniveau1,RMANnaplusbesoindeparcourirtouslesblocsutiliss il emploielefichierdetracedesblocsmodifispouridentifierlesblocssauvegarder. Pouractiverlafonctionnalitdetracedesblocsmodifis,vouspouvezutiliserlordreSQLsuivant(cenestpasune commandeRMAN) : ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE fichier; fichierdonnelechemincompletetlenomdufichierdetrace.

openmirrors.com

- 6-

ENI Editions - All rights reserved - Algeria Educ

ExempledactivationpartirdeRMANenutilisantlacommandeSQL : RMAN> SQL "ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE F:\oradata\HERMES\block_change_tracking.trc"; Il ny a pas de recommandation particulire concernant lemplacement du fichier vous pouvez le placer dans lenvironnementdelabasededonnesoudanslazonedercuprationrapide. Lefichierdetracedesblocsmodifisnestpasspcialementvolumineux Oracleannonceunetaillede1/30000dela tailledetouslesblocstracer,indpendantedelafrquencedemisejour.Lefichieraunetailleminimumde10Mo etgrossitparpasde10Mo. LavueV$BLOCK_CHANGE_TRACKING<donnedesinformationssurlatracedesblocsmodifis : SQL> SELECT * FROM v$block_change_tracking; STATUS FILENAME BYTES ---------- ------------------------------------------- --------ENABLED F:\ORADATA\HERMES\BLOCK_CHANGE_TRACKING.TRC 11599872 Silefichierdetraceestperduouendommag,labasededonnesnepourrapastreouverte(elleresteraentat MOUNT). Pour ouvrir la base, il faut dsactiver la trace, et ventuellement la ractiver si vous souhaitez continuer utiliserlafonctionnalit.Ilnexistepasdepossibilitdesauvegardeetderestaurationdufichierdetrace. Pourdplacerlefichierdetrace,vouspouvezutiliserlordreSQLALTER DATABASE RENAME FILE,basemonte. Pourdsactiverlafonctionnalitdetracedesblocsmodifis,vouspouvezutiliserlordreSQLsuivant : ALTER DATABASE DISABLE BLOCK CHANGE TRACKING; Aprsactivationdelatrace,lapremiresauvegardeincrmentaledeniveau0devraparcourirtouslesblocsutiliss carlefichierdetracenerefltepasencorelestatutdesblocs.Ilenestdemmeaprsunerecrationdufichierde trace. Employer ou non un fichier de trace des blocs modifis ne change rien aux commandes utiliser pour raliser des sauvegardesincrmentales.Silafonctionnalitestactive,RMANlexploite sinonilsenpasse. Il existe une autre fonctionnalit intressante concernant les sauvegardes incrmentales : la possibilit de raliser une sauvegarde sous forme de copie image et de mettre cette copie image jour par application rgulire de sauvegardesincrmentales(IncrementallyUpdatedBackup).Pourensavoirplus,consultezladocumentationOracle DatabaseBackupandRecoveryUsersGuide.

7.Exemplesdescnario
a.Prambule
Lesscnariosprsentsicisappuientsurdeuxhypothses :
q

Unezonedercuprationrapideestutilise. Lasauvegardeautomatiquedesfichiersdecontrleatactive.

b.Sauvegardecompltebaseferme(cohrente)
Lescommandessuivantespermettentderaliserunesauvegardecompltebaseferme(donccohrente) : SHUTDOWN IMMEDIATE ; STARTUP MOUNT ; BACKUP DATABASE ; SQL "ALTER DATABASE OPEN" ; # # # # arrter la base monter la base sauvegarder la base ouvrir la base

CettesauvegardeestunexempletypiquedecequiestfaitlorsquelabasefonctionneenmodeNOARCHIVELOG.

c.Sauvegardecompltebaseouverte(incohrente)

ENI Editions - All rights reserved - Algeria Educ

- 7-

La commande suivante permet de raliser une sauvegarde complte base ouverte (donc incohrente), avec sauvegarde des fichiers de journalisation archivs, et suppression des fichiers de journalisation archivs sauvegards : BACKUP DATABASE PLUS ARCHIVELOG DELETE ALL INPUT; CettesauvegardenepeuttreeffectuequelorsquelabasefonctionneenmodeARCHIVELOG.

d.Sauvegardepartiellebaseouverte
Danscescnario,latotalitdelabaseestsauvegardeentroisfoissurtroisjours :
q

Sauvegarde1 : fichiersdedonnes1et2

BACKUP DATAFILE 1,2 PLUS ARCHIVELOG DELETE ALL INPUT;


q

Sauvegarde2 : fichiersdedonnes3et4

BACKUP DATAFILE 3,4 PLUS ARCHIVELOG DELETE ALL INPUT;


q

Sauvegarde3 : lereste

BACKUP DATABASE NOT BACKED UP SINCE TIME=SYSDATE-3 PLUS ARCHIVELOG DELETE ALL INPUT; Sur le principe, cest une variante du scnario prcdent. La commande pour la troisime sauvegarde permet de sauvegardertoutcequinapastsauvegarddepuistroisjours,ycompristoutnouveaufichierdedonnes. Ilesttechniquementpossiblederaliserdessauvegardespartielles,baseferme,maiscessauvegardesnesont exploitablesquesilabasededonnesfonctionneenmodeARCHIVELOG.Donc,autantlesraliserbaseouverte.

e.Sauvegardeincrmentale
Danscescnario,dessauvegardesincrmentalescumulativessontralisessuruncycledunesemaine :
q

Dimanche : sauvegardeincrmentaledeniveau0

BACKUP INCREMENTAL LEVEL 0 DATABASE ;


q

Lundiausamedi : sauvegardeincrmentalecumulativedeniveau1

BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE ; Danscetexemple,noussupposonsquelabasededonnesfonctionneenmodeARCHIVELOG,cequinouspermetde raliser la sauvegarde base ouverte pour tre tout fait rigoureux, il faudrait en plus soccuper des fichiers de journalisationarchivs(ajouteruneclausePLUS ARCHIVELOGparexemple). Ce type de sauvegarde peut aussi tre ralis si la base de donnes fonctionne en mode NOARCHIVELOG, en ajoutantlescommandessuivantes : SHUTDOWN IMMEDIATE ; STARTUP MOUNT ; BACKUP INCREMENTAL... ; SQL "ALTER DATABASE OPEN" ; # # # # arrter la base monter la base sauvegarder la base ici ouvrir la base

openmirrors.com

- 8-

ENI Editions - All rights reserved - Algeria Educ

LerfrentielRMAN
1.Trouverdesinformationssurlessauvegardes
a.LacommandeLIST
LacommandeLISTpermetdinterrogerlerfrentielRMANpourafficherdesinformationssurlessauvegardesetles fichiersdejournalisationarchivs. Syntaxe1 LIST cible [ BY FILE | SUMMARY ] [ filtre_sauvegarde ]; - cible { BACKUP | COPY } [ OF objets ] BACKUPSET - objets DATABASE DATAFILE liste_numros_ou_noms TABLESPACE liste_noms CONTROLFILE SPFILE ARCHIVELOG { ALL | filtre_archive } - filtre_archive FROM TIME date UNTIL TIME date TIME BETWEEN date1 AND date2 - filtre_sauvegarde TAG [=] nom COMPLETED { AFTER date1 | BEFORE date2 | BETWEEN date1 AND date2 } Syntaxe2 LIST { BACKUPSET | BACKUPPIECE } { liste_cls | TAG [=] nom }; Syntaxe3 LIST ARCHIVELOG { ALL | filtre_archive } [info_sauvegarde]; - info_sauvegarde BACKED UP n TIMES TO DEVICE TYPE [DISK | media] Touteslesoptionspossiblesnesontpasprsentesici.

Premiresyntaxe LapremiresyntaxepermetdafficherdesinformationssurlessauvegardesenregistresdanslerfrentielRMAN. Pardfaut,lescommandesLIST BACKUP,LIST COPYetLIST BACKUPSETlistenttousleslmentsenregistrsdansle rfrentielRMAN. Dans le cas des commandes LIST BACKUP et LIST COPY, il est possible de spcifier un ou plusieurs objets pour nafficherquelessauvegardesdesobjetsenquestion. Exemple : LIST LIST LIST LIST LIST LIST BACKUP BACKUP BACKUP BACKUP BACKUP BACKUP OF OF OF OF OF OF DATABASE ; # nimporte quel fichier de la base DATAFILE 1,E:\ORADATA\HERMES\DATA01.DBF ; TABLESPACE system,sysaux ; CONTROLFILE SPFILE ; ARCHIVELOG ALL ; ARCHIVELOG UNTIL TIME SYSDATE-1 ;

ENI Editions - All rights reserved - Algeria Educ

- 1-

Ledernierexemplelistelessauvegardesdesfichiersdejournalisationarchivsilyaplusdunjour,quellequesoit la date de la sauvegarde (peut dater de moins dun jour) il ne faut pas confondre le filtre de date darchivage (optionfiltre_archive)etlefiltrededatedesauvegarde(optionfiltre_sauvegarde). Loption filtre_sauvegarde permet de filtrer la liste grce un critre portant sur la sauvegarde : date de la sauvegardeet/ounomassocilasauvegarde(optionTAGdelacommandeBACKUP). Exemple : LIST BACKUP LIST BACKUP LIST BACKUP LIST BACKUP COMPLETED TAG=DBINC0 ; COMPLETED AFTER SYSDATE-1 ; TAG=DBINC0 COMPLETED AFTER SYSDATE-1 ; OF ARCHIVELOG UNTIL TIME SYSDATE-1 AFTER SYSDATE-1 ;

Le dernier exemple liste les sauvegardes des fichiers de journalisation archivs il y a plus dun jour mais sauvegardsilyamoinsdunjour. Les commandes LIST BACKUP OF et LIST BACKUPSET listent les sauvegardes par jeu de sauvegarde, avec un affichagedtailldonnantlecontenudechaquesauvegarde. Exemple(extrait) RMAN> LIST BACKUP OF DATABASE; Liste des ensembles de sauvegarde =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------17 Full 75.78M DISK 00:00:45 05/08/08 BP Key: 17 Status: AVAILABLE Compressed: YES Tag: TAG20080805T080633 Piece Name: H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\BACKUPSET\ 2008_08_05\O1_MF_NNNDF_TAG20080805T080633_49HVH9KL_.BKP Liste des fichiers de donnes dans lensemble de sauvegarde 17 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- -------- ---1 Full 410531 05/08/08 E:\ORADATA\HERMES\SYSTEM01.DBF 2 Full 410531 05/08/08 E:\ORADATA\HERMES\SYSAUX01.DBF 3 Full 410531 05/08/08 E:\ORADATA\HERMES\UNDOTBS01.DBF 4 Full 410531 05/08/08 E:\ORADATA\HERMES\DEFTBS01.DBF 5 Full 410531 05/08/08 E:\ORADATA\HERMES\DATA01.DBF 6 Full 410531 05/08/08 E:\ORADATA\HERMES\INDX01.DBF Lacolonne"ClBS"donnelenumro(cl)attribuparRMANaujeudesauvegarde. LoptionSUMMARYpermetdobtenirunaffichagersum(pasdedtailsurlecontenudessauvegardes),organispar jeudesauvegarde. LoptionBY FILEpermetdobtenirunaffichagersum,organisparfichiersauvegard. Deuximesyntaxe La deuxime syntaxe permet dafficher des informations sur des jeux de sauvegarde (BACKUPSET)oulmentsde sauvegarde(BACKUPPIECE)prcis(soitparunelistedecls,soitparlenomassocilasauvegardegrceloption TAGdelacommandeBACKUP). Exemples LIST BACKUPSET 8; LIST BACKUPSET TAG=DBINC0 ; LIST BACKUPPIECE 76 ; Lacldunlmentdesauvegarde("ClBP")nestpasforcmentgalelacldujeudesauvegarde("ClBS"), car un jeu de sauvegarde peut avoir plusieurs lments de sauvegarde, ce qui gnre un dcalage dans la numrotation. Troisimesyntaxe Latroisimesyntaxepermetdafficherdesinformationssurlesfichiersdejournalisationarchivsconsidrscomme disponiblesparRMAN,cestdirenonsupprimsparRMAN(avecloptionDELETE INPUT).

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

Exemples LIST LIST LIST TO LIST TO ARCHIVELOG ALL ; # tous ARCHIVELOG FROM TIME SYSDATE-1/24 ; # dans la dernire heure ARCHIVELOG ALL BACKED UP 2 TIMES DEVICE TYPE DISK ; # archives sauvegardes 2 fois sur disque ARCHIVELOG ALL BACKED UP 0 TIMES DEVICE TYPE DISK ; # archives jamais sauvegardes sur disque

b.LacommandeREPORT
LacommandeREPORTpermetderaliserdesinterrogationsplusvoluessurlerfrentielRMAN. IlexistetroisutilisationsprincipalesdelacommandeREPORT :
q

listerleslmentsquincessitentunesauvegarde listerlessauvegardesobsoltes afficherlalistedesfichiersdedonnesdelabasededonnes.

Listerleslmentsquincessitentunesauvegarde Syntaxe REPORT NEED BACKUP [condition] [objets];<$IRMAN;REPORT NEED BACKUP> - condition DAYS [=] n INCREMENTAL [=] n RECOVERY WINDOW OF n DAYS REDUNDANCY [=] n - objets DATABASE DATAFILE liste_numros_ou_noms TABLESPACE liste_noms Pardfaut,lacommandeREPORT NEED BACKUPaffichelalistedesfichiersquincessitentunesauvegarde,entenant comptedelapolitiquedeconservationconfigure(CONFIGURE RETENTION POLICY). LoptionconditionpermetdeprciserlecritrequelacommandeREPORTdoitutiliserpourdterminersiunfichiera besoindtresauvegard.Lesconditionspossiblessont : DAYS [=] n Fichiers de donnes qui ncessitent plus de n jours dapplication de fichiers de journalisation archivs pour tre rcuprsencasdincident. INCREMENTAL [=] n Fichiersdedonnesquincessitentplusde napplicationsdesauvegardesincrmentalespourtrercuprsen casdincident. RECOVERY WINDOW OF n DAYS Unefentredercuprationparticulire(mmesyntaxequedanslacommandeCONFIGURE RETENTION POLICY). REDUNDANCY [=] n Uneredondanceparticulire(mmesyntaxequedanslacommandeCONFIGURE RETENTION POLICY). Loptionobjetspermetdesintresserdestablespacesoudesfichiersdedonnesprcis.

ENI Editions - All rights reserved - Algeria Educ

- 3-

Avantdexcutercettecommande,ilpeuttreutiledexcuterlacommandeCROSSCHECK(voirplusloin)pour mettrejourlestatutdessauvegardesdanslerfrentielRMAN.

Listerlessauvegardesobsoltes Syntaxe REPORT OBSOLETE [condition]; - condition RECOVERY WINDOW OF n DAYS REDUNDANCY [=] n Pardfaut,lacommandeREPORT OBSOLETEaffichelessauvegardesobsoltesentenantcomptedelapolitiquede conservationconfigure(CONFIGURE RETENTION POLICY). Loption condition permet de prciser le critre que la commande REPORT doit utiliser pour dterminer si une sauvegardeestobsolte.LasyntaxeestlammequedanslacommandeCONFIGURE RETENTION POLICY. Avantdexcutercettecommande,ilpeuttreutiledexcuterlacommandeCROSSCHECK(voirplusloin)pour mettrejourlestatutdessauvegardesdanslerfrentielRMAN.

Afficherlalistedesfichiersdedonnesdelabasededonnes Syntaxe REPORT SCHEMA ;

2.GrerlerfrentielRMAN
a.LacommandeCROSSCHECK
La commande CROSSCHECK permet de vrifier que les informations enregistres dans le rfrentiel RMAN correspondent bien des fichiers qui existent physiquement. Un dcalage peut se produire si un fichier est directement supprim au niveau du systme dexploitation. La commande CROSSCHECK met jour le statut de llmentdanslerfrentielRMANmaisnesupprimerien(nifichierphysique,nienregistrementdanslerfrentiel). Lesstatutspossiblessontlessuivants : EXPIRED Lobjetnapasttrouvauniveaudusystmedexploitation. AVAILABLE LobjetestdisponibleetpeuttreutilisparRMAN. UNAVAILABLE LobjetnestpasdisponibleetnepeutpastreutilisparRMAN(suitelutilisationdelacommande CHANGE ... UNAVAILABLEvoirladocumentationOracle). Un enregistrement qui a t marqu EXPIRED lors dun CROSSCHECK peut repasser AVAILABLE lors dun nouveau CROSSCHECK sil na t que temporairement inaccessible. Vous pouvez aussi utiliser la commande CHANGE ... AVAILABLEpourremettrelestatut AVAILABLEunenregistrementsilefichierphysiqueestdenouveauaccessible (voirladocumentationOracle). Syntaxe1 CROSSCHECK cible [ filtre_sauvegarde ] ; - cible { BACKUP | COPY } [ OF objets ] BACKUPSET - objets
- 4 ENI Editions - All rights reserved - Algeria Educ

openmirrors.com

DATABASE DATAFILE liste_numros_ou_noms TABLESPACE liste_noms CONTROLFILE SPFILE ARCHIVELOG { ALL | filtre_archive } Syntaxe2 CROSSCHECK { BACKUPSET | BACKUPPIECE } { liste_cls | TAG [=] nom }; Syntaxe3 CROSSCHECK ARCHIVELOG { ALL | filtre_archive }; Touteslesoptionspossiblesnesontpasprsentesici. Les variantes de syntaxe et options sont les mmes que pour la commande LIST.Le statut est affich dans le rsultat de la commande LIST. La commande LIST EXPIRED, variante de la commande LIST, permet de lister les lmentsquiontlestatutEXPIRED. Exemple1 RMAN> CROSSCHECK BACKUP ; utilisation du canal ORA_DISK_1 lment de sauvegarde vrifi : repr comme tant EXPIRED descripteur dlment de sauvegarde=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\ BACKUPSET\2008_08_05\O1_MF_NNNDF_TAG20080805T080633_49HVH9KL_.BKP RECID=17 STAMP=661939593 lment de sauvegarde vrifi : repr comme tant AVAILABLE descripteur dlment de sauvegarde=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\ AUTOBACKUP\2008_08_05\O1_MF_S_661939648_49HVK1Z7_.BKP RECID=18 STAMP=661939649 2 objets contre-vrifis RMAN> LIST EXPIRED BACKUP ; Liste des ensembles de sauvegarde =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------17 Full 75.78M DISK 00:00:45 05/08/08 BP Key: 17 Status: EXPIRED Compressed: YES Tag: TAG20080805T080633 Piece Name: H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\BACKUPSET\ 2008_08_05\O1_MF_NNNDF_TAG20080805T080633_49HVH9KL_.BKP ... Exemple2 RMAN> CROSSCHECK ARCHIVELOG ALL ; canal libr : ORA_DISK_1 canal affect : ORA_DISK_1 canal ORA_DISK_1 : SID=186 type dunit=DISK chec de la validation du journal darchivage nom de journal darchivage=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\ ARCHIVELOG\2008_08_05\O1_MF_1_40_49HWKM2G_.ARC RECID=12 STAMP=661940692 validation russie du journal darchivage nom de journal darchivage=H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\ ARCHIVELOG\2008_08_05\O1_MF_1_41_49HWKN89_.ARC RECID=14 STAMP=661940692 ... RMAN> LIST EXPIRED ARCHIVELOG ALL ; Liste des copies des journaux darchivage dont le nom est db_unique_name HERMES ======================================================================== Key Thrd Seq S Low Time ------- ---- ------- - -------12 1 40 X 05/08/08
ENI Editions - All rights reserved - Algeria Educ - 5-

Name: H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\ARCHIVELOG\ 2008_08_05\O1_MF_1_40_49HWKM2G_.ARC

b.LacommandeDELETE
La commande DELETE peut tre utilise pour supprimer des sauvegardes. Elle supprime les fichiers physiques et lenregistrementdanslerfrentielRMAN. LacommandeDELETEproposedeuxvariantesprincipalespour :
q

supprimerdessauvegardesoudesfichiersdejournalisationspcifiques supprimerlessauvegardesobsoltes.

Supprimerdessauvegardesoudesfichiersdejournalisationspcifiques Syntaxe1 DELETE [FORCE] [NOPROMPT] [EXPIRED] cible [ filtre_sauvegarde ] ; - cible { BACKUP | COPY } [ OF objets ] BACKUPSET - objets DATABASE DATAFILE liste_numros_ou_noms TABLESPACE liste_noms CONTROLFILE SPFILE ARCHIVELOG { ALL | filtre_archive } - filtre_archive FROM TIME date UNTIL TIME date TIME BETWEEN date1 AND date2 - filtre_sauvegarde TAG [=] nom COMPLETED { AFTER date1 | BEFORE date2 | BETWEEN date1 AND date2 } Syntaxe2 DELETE [FORCE] [NOPROMPT] [EXPIRED] { BACKUPSET | BACKUPPIECE } { liste_cls | TAG [=] nom }; Syntaxe3 DELETE [FORCE] [NOPROMPT] [EXPIRED] ARCHIVELOG { ALL | filtre_archive } [info_sauvegarde]; - info_sauvegarde BACKED UP n TIMES TO DEVICE TYPE [DISK | media] LesvariantesdesyntaxeetoptionssontlesmmesquepourlacommandeLIST. Loption EXPIRED permet de supprimer les lments marqus EXPIRED dans le rfrentiel RMAN (ventuellement, combinedautrescritres). Pardfaut,RMANlistelesfichiersquilsapprtesupprimeretdemandeconfirmationdelasuppression.Loption NOPROMPT permet de supprimer la demande de confirmation (mais la liste des fichiers supprims est toujours affiche). La commande DELETE gnre une erreur sil nexiste pas de concordance entre le rfrentiel et les fichiers physiques :
q

UnfichierestmarquEXPIREDdanslerfrentielmaisexistephysiquement.

openmirrors.com

- 6-

ENI Editions - All rights reserved - Algeria Educ

UnfichierestmarquAVAILABLEdanslerfrentielmaisnexistepasphysiquement.

Pourrsoudreceproblme,vouspouvezauchoix :
q

excuterlacommandeCROSSCHECKpourmettrejourlestatutdesfichiersdanslerfrentiel utiliserloptionFORCEdelacommandeDELETE utiliser la commande CHANGE ... UNCATALOG pour supprimer du rfrentiel une rfrence un fichier qui nexisteplus(voirladocumentationOracle).

Rflchissezbienavantdesupprimerquoiquecesoit. Exemplesdappel # supprimer les sauvegardes ayant un certain nom DELETE BACKUP OF DATABASE TAG=DBINC0 ; # supprimer les sauvegardes du fichier de paramtres serveur # ralises il y a plus de 7 jours DELETE NOPROMPT BACKUP OF SPFILE COMPLETED BEFORE SYSDATE-7 ; # supprimer toutes les sauvegardes marques EXPIRED DELETE EXPIRED BACKUP ; # supprimer tous les fichiers de journalisation archivs gnrs # il y plus dun jour et sauvegard trois fois sur disque DELETE ARCHIVELOG UNTIL TIME SYSDATE-1 BACKED UP 3 TIMES TO DISK ; Supprimerlessauvegardesobsoltes Syntaxe2 DELETE [FORCE] [NOPROMPT] OBSOLETE [ condition ] ; - condition RECOVERY WINDOW OF n DAYS REDUNDANCY [=] n Lorsquelacommandeestappelesansoption,RMANsupprimelessauvegardesobsoltesentenantcomptedela politiquedeconservationconfigure(CONFIGURE RETENTION POLICY). Loption condition permet de prciser le critre que la commande DELETE doit utiliser pour dterminer si une sauvegardeestobsolte.LasyntaxeestlammequedanslacommandeCONFIGURE RETENTION POLICY. Si vous utilisez une zone de rcupration rapide, RMAN supprimera automatiquement les sauvegardes obsoltes (comptetenudelapolitiquedeconservationconfigure),maisuniquementsilmanquedeplace.

c.LacommandeCATALOG
LacommandeCATALOGpermetdindiquerRMANlexistencedefichiersdejournalisationarchivsoudlmentsde sauvegardequinesontpasenregistrsdanslerfrentielRMAN. Cettesituationpeutseproduiredansplusieurscas :
q

VousavezutilislacommandeDELETEmauvaisescientetvousaveztoujourslefichierphysique. Vousavezeffectuunercuprationavecunesauvegardedufichierdecontrle,quinecontientdoncpas lesinformationssurcequiatfaitavecRMANdepuislasauvegardeenquestion. Vousavezrecrlefichierdecontrle(ilnecontientplusrien). Un enregistrement a t supprim du fichier de contrle du fait de la valeur du paramtre CONTROL_FILE_RECORD_KEEP_TIME,maislefichierphysiqueexistetoujoursetvousenavezbesoinpourune rcupration.

ENI Editions - All rights reserved - Algeria Educ

- 7-

Vousavezdplacunfichierphysique.

Syntaxe CATALOG { ARCHIVELOG | BACKUPPIECE } liste_fichiers ; CATALOG { RECOVERY AREA | DB_RECOVERY_FILE_DEST } [NOPROMPT] ; CATALOG START WITH chemin [NOPROMPT] ; Lapremiresyntaxepermetdecataloguerdesfichiersprcis.Sivouscataloguezunlmentdjcatalogu,RMAN supprimelanciennerfrenceavantdecrerlanouvelle. Ladeuximesyntaxepermetdecataloguertouslesfichiersstocksdanslazonedercuprationrapide(RECOVERY AREAetDB_RECOVERY_FILE_DESTsontsynonymes). Latroisimesyntaxepermetdecataloguertouslesfichiersdontlenomcompletcommenceparunecertainechane decaractres(nepeutpascontenirdecaractresjoker). Avec les deux dernires syntaxes, RMAN demande confirmation avant de cataloguer un fichier loption NOPROMPT permetdesupprimerlademandedeconfirmation.Parailleurs,RMANnecataloguepaslesfichiersdjcatalogus.

openmirrors.com

- 8-

ENI Editions - All rights reserved - Algeria Educ

Rcupration
1.Vuedensemble
Lastratgiedercuprationdpenddeplusieursfacteurs :
q

Delanaturedu(des)fichier(s)endommag(s)ouperdu(s) :
q

fichierdedonnes fichierdecontrle fichierdeparamtresserveur fichierdejournalisation.

Dumodedefonctionnementdelabase :
q

ARCHIVELOG NOARCHIVELOG.

Dessauvegardesdisponibles.

Quefaireencasdeproblme? 1.identifierlanatureduproblme 2. dfinir le mode opratoire en tenant compte du mode de fonctionnement de la base et des sauvegardes disponibles. Surtout,nevousprcipitezpasetnhsitezpasvousfaireaiderparlesupportOracle. Depuis la version 11, Oracle propose un conseiller pour la rcupration des donnes (leData Recovery Advisor)qui permet de diagnostiquer et rsoudre facilement les incidents (perte ou corruption) des donnes sur disque. Ce nouveloutilestprsentdanslasectionDataRecoveryAdvisor. Dans la suite du document, les termes "perdu" et "endommag" seront indiffremment utiliss pour dsigner lincident danslapratique,quelefichiersoitperduousimplementendommag,lesprocduresderestaurationsont lesmmes. Une opration de rcupration seffectue essentiellement avec RMAN. Pour certaines tapes, SQL*Plus peut tre ncessaire, essentiellement pour interroger quelques vues du dictionnaire de donnes une connexion AS SYSDBA serancessairesilabasenestpasouverte. Un conseil, avant de commencer toute opration de rcupration, ralisez si possible une sauvegarde compltedelabaseendommage.Celapeutfournirunpointderetourencasdaggravationdelasituation par une mauvaise manipulation. Au minimum, ralisez une sauvegarde du fichier de contrle et des fichiers de journalisationenligne(parsimplecopieauniveaudusystmedexploitation). Dans une opration de "restauration" ou de "rcupration", il existe en fait deux tapes bien prcises et bien distinctes :
s

Ltapederestauration(restore)consisteextrairedunesauvegardelesfichiersncessaires. Ltape de rcupration (recover) consiste appliquer les fichiers de journalisation aux fichiers rcuprs de la sauvegarde.

Pourtrerigoureux,ilfaudraitdoncvoqueruneoprationde"restaurationetrcupration".

ENI Editions - All rights reserved - Algeria Educ

- 1-

2.Principesgnrauxdelarcupration
a.EnmodeNOARCHIVELOG
EnmodeNOARCHIVELOG,lemodeopratoireestonnepeutplussimple :
q

restaurerladerniresauvegardecompltedelabase redmarrerlabase.

Touteslesmodificationsapportesdepuisladerniresauvegardesontperdues. Apriori,larestaurationenmodeNOARCHIVELOG ne permet pas de ramener la base de donnes ltatoellese trouvait juste avant lincident elle permet juste de ramener la base de donnes ltat o elle se trouvait au momentdelasauvegarde. Nanmoins,danscertainessituations,ilpeuttrepossibledercuprertoutoupartiedesmodificationsapportes depuisladerniresauvegarde. Lobjectifdesindicationsdonnesciaprsestdemontrerquetoutnestpasforcmentperdu.Encasde problmeenmodeNOARCHIVELOG,ilnefautpashsiterappelerlesupportOraclepourtenteraveceuxde raliser la rcupration la plus complte possible. Par contre, pour tre certain de garantir une rcupration compltedanstouteslessituations(etsimplifierleprocessusdercupration),ilfautfairefonctionnerlabaseen modeARCHIVELOG. Lessituationssontlessuivantes :
q

Uncyclecompletdebasculementdesfichiersdejournalisationnapaseulieudepuislasauvegarde. Le fichier de donnes perdu nest pas critique pour la base de donnes (nappartient pas au tablespace SYSTEM,niautablespacedannulation actif), ni pour lapplication (ce nestpasletablespaceprincipalde lapplication). Touslesfichiersdecontrlesontperdusmaislesautresfichiers(donnesetjournalisation)sontintacts.

Si les fichiers de journalisation nont pas subi un cycle complet de basculements depuis la sauvegarde utilise, touteslesmisesjoureffectuesdepuislasauvegardeenquestionsontencore"disponibles"danslesfichiersde journalisation.Danscecas,ilfautraliserunercuprationcommesilabasededonnestaitenmodeARCHIVELOG (voirlesscnarioscorrespondants). Silefichierdedonnesperdunestpascritiquepourlabasededonnesnipourlapplication,etqueleproblme soitsurvenualorsquelabasededonnestaitarrte,lasituationestpluttfavorablecarlesfichiersquirestent sontcohrentsentreeux : siceproblmedefichiernexistaitpas,leprochaindmarragenencessiteraitpasde rcuprationdelinstance. Danscecas,ilestpossible :
q

DedmarrerlabasededonnesentatMOUNT

SQL> CONNECT / AS SYSDBA SQL> STARTUP MOUNT


q

DemettrelesfichiersdedonnsconcernsOFFLINEavecloptionDROP

SQL> ALTER DATABASE DATAFILE 2 e:\oradata\HERMES\indx01.dbf OFFLINE DROP;


q

Douvrirlabasededonnes

SQL> ALTER DATABASE OPEN;

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

Desupprimerletablespace

SQL> DROP TABLESPACE indx;


q

Puisderecrerletablespace(etventuellementsoncontenu)

SQL> CREATE TABLESPACE indx ... ; SQL> CREATE INDEX ... ; larrive,letablespaceestsupprim : cettetechniquenestdoncpasapplicablesilefichierdedonnesperduest critique pour la base de donnes ou pour lapplication. Elle est, par contre, envisageable pour des tablespaces contenantuniquementdesindex(lesdonnes,elles,nesontpasperdues). Si le problme est survenu alors que la base tait en fonctionnement, la situation est plus problmatique car les fichiersdedonnesrestantsnesontpeuttrepascohrentsetilnexistepasvraimentdemoyensdelesavoir. Sils ne sont pas cohrents, Oracle aura besoin des fichiers de journalisation en ligne pour les rendre cohrents (cestlarcuprationdelinstance"classique").Silesfichiersdejournalisationsontprsents,ousiseulslesfichiers dejournalisation INACTIVE sont perdus, la technique prsente prcdemment pourra tre utilise si les fichiers de journalisationCURRENT ouACTIVE sont perdus, la technique ne pourra pas tre employe (il faut repartir de la derniresauvegarde). Touslesfichiersdecontrlesontperdus.Danscettesituationcritiqueetdlicate,pourlaquelleilexistediffrentes possibilitsdercupration,ladocumentationOraclerecommandedecontacterlesupportOracle.

b.EnmodeARCHIVELOG
EnmodeARCHIVELOG,lemodeopratoiredebasepourunepertedefichier(s)dedonnesestlesuivant :
q

restaurerladerniresauvegardedechaquefichierperdu appliquerlesfichiersdejournalisation(archivespuisceuxenligne) redmarrerlabase(silarcuprationnapastfaitebaseouverte).

Toutes les modifications apportes depuis les sauvegardes utilises sont rcupres. La rcupration est dite complte. Ce type de rcupration est simple et ne pose pas de problme sil reste au moins un fichier de contrle, un membre par groupe de fichier de journalisation et que toutes les archives de fichiers de journalisation sont disponibles. Surlabasedecescnario,diffrentessituationspeuventconduireunercuprationincomplte :
q

volontairement,poursarrteravantunordreSQLmalencontreux involontairement,sidesfichiersdejournalisationsontperdus(unearchiveoutoutungroupedefichiersde journalisationenligne).

DanslaterminologieOracle,unercuprationincomplteestappelepointintimerecovery. Sitouslesfichiersdecontrlesontperdus,sitoutungroupedefichiersdejournalisationestperdu,ousilmanque unearchivedefichiersdejournalisation,larcuprationcomplteseraplusdlicateetdanscertainscasimpossible (par exemple, sil manque une archive de fichier de journalisation) une rcupration incomplte reste alors possibleetlabasenestpasrameneltatoellesetrouvaitjusteavantlincidentmaisuntatantrieur. Danscertainessituations(suppressiondetablemalencontreuseparexemple),larcuprationincompltepeuttre volontaire lencore,labasededonnesnestpasrameneltatoellesetrouvaitjusteavantlincidentmais untatantrieur. Quellequesoitloriginedelarcuprationincomplte,toutcequiatfait,aprslemomentquicorrespondltat dercuprationdelabase,estperduetdoittrereprislamain : dansunesquencedapplicationdesfichiersde journalisation,Oraclenepeutpas"sauter"quelquesordrespuiscontinuer. Lorsdelarestaurationdessauvegardes,silessauvegardessontpartielles,ilfautprendrelasauvegardelaplus rcentedechaquefichierendommag.

ENI Editions - All rights reserved - Algeria Educ

- 3-

3.Lesincidentssurlesfichiersdecontrleetdejournalisation
Les incidents sur les fichiers de contrle et les fichiers de journalisation peuvent tre classs en deux catgories : "peugraves"et"trsgraves". Incidentspeugraves :
q

pertedunouplusieursfichiersdecontrle,dumomentquilenresteaumoinsun pertedunouplusieursfichiersdejournalisation,dumomentquilenresteaumoinsunpargroupe.

Incidentsplusgravesetpluscomplexestraiter :
q

pertedetouslesfichiersdecontrle : moyennementgravesilesautresfichierssontintacts pertedetouslesmembresdungroupedefichiersdejournalisation : lagravitdpenddustatutdugroupe perdu(CURRENT,ACTIVE,INACTIVE).

Cessituationssontvitessilonmultiplexecorrectementlesfichiersdecontrleetlesfichiersdejournalisation.La perte de tous les fichiers de contrle nest pas la situation la plus complexe traiter, sil existe des sauvegardes rcentes du fichier de contrle et si les autres fichiers (particulirement, les fichiers de journalisation) sont intacts danscecas,unercuprationcomplteestpossible. Lapertedetouslesmembresdungroupedefichiersdejournalisationestbienpluscomplexetraiter lasituation dedpartdoittreanalyseavecsoin(statutdugroupeperdu,tatdesautresfichiers,etc.),afindechoisirlebon modeopratoire.Pourlessituationscomplexes,ilestvivementconseilldesefaireaiderparlesupportOracle.

4.Identifierlanatureduproblme
a.Messagederreurconcernantlesfichiersdecontrle
Lesmessagesderreurslesplusfrquentssurlesfichiersdecontrlesontlessuivants : ORA-00204: erreur lors du fichier de contrle ORA-00205: erreur lors de contrle; consultez ORA-00206: erreur lors du fichier de contrle de la lecture (bloc, nbre blocs) de lidentification du fichier le journal des alertes de lcriture (bloc, nbre blocs)

Cesmessagesindiquentquaumoinsunfichierdecontrleestendommagouperdu ilfautconsulterlefichierdes alertes de linstance pour en savoir plus, notamment pour dterminer les fichiers endommags et en dduire les fichiers intacts, sil en reste. En cas de problme sur un fichier de contrle, linstance sarrte. Au redmarrage, linstanceresteentatNOMOUNT.

b.Messagederreurconcernantlesfichiersdejournalisation
Lesmessagesderreurlesplusfrquentssurlesfichiersdejournalisationsontlessuivants : ORA-00313: chec douverture des membres du groupe de journaux n, thread p ORA-00315: journal n, thread p, numro de thread x incorrect dans en-tte ORA-00316: le journal n dans le thread p, type x dans len-tte, nest pas un fichier journal ORA-00317: le type de fichier x dans len-tte nest pas un fichier journal ORA-00318: journal n, thread p, taille x de fich. attendue ne correspond pas y ORA-00319: journal n du thread p a un tat de rinitialisation incorrect ORA-00320: impossible lire en-tte de fichier du journal n thread p ORA-00321: fichier n, thread p, impossible de mettre jour len-tte du fichier journal

openmirrors.com

- 4-

ENI Editions - All rights reserved - Algeria Educ

CesmessagessaccompagnentdunouplusieursmessagesORA-00312donnantlenomdufichier : ORA-00312: journal en ligne n thread p : fichier Encasdeproblmesurtoutungroupedefichiersdejournalisation,linstancesarrte.Auredmarrage,linstance resteentatMOUNT. Encasdeproblme,ilfautconsulterlefichierdalertedelinstanceetlefichierdetraceduprocessusLGWR.

c.Messagederreurconcernantlesfichiersdedonnes
Ilyadenombreuxmessagesderreurpossiblesconcernantlesfichiersdedonnes,parexemple : ORA-01157: impossible didentifier ou de verrouiller le fichier de donnes n - voir le fichier de trace DBWR CesmessagessaccompagnentdunouplusieursmessagesORA-01110donnantlenomdufichier : ORA-01110: fichier de donnes n : fichier EnmodeNOARCHIVELOG,silabasededonnesestouverteetquunproblmeseproduisesurunfichierdedonnes, linstancesarrte.EnmodeARCHIVELOG,ilenestdemmemaisuniquementsilefichierdedonnesincriminestun fichierdutablespaceSYSTEMouunfichierdedonnesdutablespacedannulationactif. Audmarrage,linstanceresteentatMOUNT. En cas de problme, il faut consulter le fichier dalerte de linstance et le fichier de trace du processus DBWR. Dautresfichiers,euxaussiendommags,peuventtrecits. Lorsquelabasededonnesestmonteououverte,vouspouvezinterrogerlavueV$RECOVER_FILEpourdterminer lalistedesfichiersdedonnessurlesquelsilexisteunproblme. LescolonnesintressantesdelavueV$RECOVER_FILEsontlessuivantes : FILE# Identifiantdufichier(jointuresurV$DATAFILE.FILE#pourrcuprerdesinformationscomplmentairessurlefichier). ONLINE_STATUS Statutdufichier(ONLINEouOFFLINE). ERROR Naturedelerreur.VidesilerreurestinconnueetOFFLINE NORMALsilefichieresthorslignesanserreur(pasbesoin derestaurationdanscecas). Exemple SQL> SELECT file#,error,online_status FROM v$recover_file; FILE# ERROR ONLINE_ ---------- ------------------------------ ------5 FILE NOT FOUND ONLINE Surcetexemple,lefichierdedonnes5doittrerestaur. La commande VALIDATE endommags. DATABASE peut aussi tre utilise pour identifer les fichiers de donnes perdus ou

5.LescommandesRMAN
a.Introduction
DansRMAN,lesoprationsderestaurationetdercuprationvontseffectuerrespectivementaveclescommandes RESTOREetRECOVER.

ENI Editions - All rights reserved - Algeria Educ

- 5-

LacommandeRESTOREpermetderestaurerlesfichierspartirdessauvegardes.LacommandeRECOVERpermetde procderunercuprationcomplteouincomplte. Lasyntaxegnraledecesdeuxcommandesestdutype : { RESTORE | RECOVER } cible [options] ; Votreprincipaleresponsabilit,lorsquevousutilisezcescommandes,estdebienchoisirlacibleenfonctiondela nature du problme. Ensuite, RMAN se charge normalement de tout : identifier les sauvegardes utiliser, et en extraire les fichiers requis identifier les fichiers de journalisation archivs ncessaires et les extraire dune sauvegardesilsonttsauvegardspuissupprims. Lesoptionsdecesdeuxcommandesneserontncessairesquepourtraiterdescasparticuliers : sauvegardenon disponible, volont de revenir un instant dans le pass (rcupration incomplte), etc. Dans la grande majorit descas,vousnedevriezpasenavoirbesoin. Les principes de fonctionnement gnraux de ces commandes vont dabord tre prsents, puis nous verrons commentlesutiliserdansdiffrentsscnariosderestauration. Les commandes RESTORE et RECOVER proposent un trs grand nombre doptions. Dans cet ouvrage, nous prsenteronsuniquementlesoptionslespluscourammentutilises.

b.LacommandeRESTORE
LasyntaxesimplifiedelacommandeRESTOREestlasuivante : RESTORE cibles [options] - cibles DATABASE DATAFILE liste_numros_ou_noms TABLESPACE liste_noms CONTROLFILE [TO destination] [FROM AUTOBACKUP | sauvegarde] SPFILE [TO destination] [FROM AUTOBACKUP | sauvegarde] ARCHIVELOG { ALL | filtre_archive } - filtre_archive FROM TIME date UNTIL TIME date TIME BETWEEN date1 AND date2 - options PREVIEW [SUMMARY] VALIDATE Loptionciblespermetdindiquercequilconvientderestaurer.LoptionDATABASEpermetderestaurerlatotalitde labasededonnes ellenedoittreutilisequesivoussouhaitezoudevezeffectivementrestaurerlatotalitde labasededonnes.EnmodeARCHIVELOG,siunfichierdedonnesestendommag,vousnedevrezrestaurerque lefichierenquestion,enutilisantlesoptionsDATAFILEouTABLESPACE. Loption PREVIEW est intressante pour lister les sauvegardes dont RMAN a besoin pour raliser lopration de restauration correspondante. Loption SUMMARY permet dobtenir un affichage rsum. Laffichage est le mme quaveclacommandeLIST. Loption VALIDATE permet de tester si la restauration correspondante peut tre ralise. RMAN accde aux sauvegardes et vrifie quil peut en extraire les fichiers ncessaires. Il existe aussi une commande VALIDATE BACKUPSETquipermetdetesterdesjeuxdesauvegardespcifiques(voirladocumentationOracle).

c.LacommandeRECOVER
LasyntaxesimplifiedelacommandeRECOVERestlasuivante : RECOVER cible [options] - cible DATABASE DATAFILE liste_numros_ou_noms TABLESPACE liste_noms - options DELETE ARCHIVELOG [MAXSIZE taille [K|M|G]]

openmirrors.com

- 6-

ENI Editions - All rights reserved - Algeria Educ

Loption cible permet dindiquer ce quil convient de rcuprer : la base de donnes dans sa totalit, ou des tablespacesoufichiersdedonnesspcifiques. Lors de lopration de rcupration, RMAN recherche les fichiers de journalisation archivs dont il a besoin, en premier lieu sur le disque. Les fichiers de journalisation archivs manquants sont automatiquement restaurs partirdesauvegardes,verslerpertoiredarchivagedfiniparleparamtreLOG_ARCHIVE_DEST_1(oversuneautre destinationvoirlacommandeSET ARCHIVELOG DESTINATIONdansladocumentation). la fin de lopration, les fichiers de journalisation archivs restaurs ailleurs que dans la zone de rcupration rapide, ne sont pas supprims par dfaut. Loption DELETE ARCHIVELOG permet de supprimer les fichiers de journalisation archivs restaurs qui ne sont plus ncessaires, au fur et mesure de leur application. Loption MAXSIZEpermetaubesoin,delimiterlespaceutilisparRMANpourlesfichiersdejournalisationarchivsrestaurs. Sicetteoptionestspcifie,RMANprocderalarestaurationdesfichiersdejournalisationarchivsenplusieurs tapes,pournepasdpasserlatailleindique.Assurezvousquelatailleindiqueestsuprieurelatailledes fichiersdejournalisationarchivs,sinonvousobtiendriezuneerreur. Larcuprationpeututiliserdessauvegardesincrmentalesoudesfichiersdejournalisationarchivs.SiRMANale choix,ilutiliseenprioritlessauvegardesincrmentales.

6.Scnariosdercupration
a.Prsentation
Danscetouvrage,nousallonsprsenterlesscnariosdercuprationdebasesuivants :
q

rcuprationdufichierdeparamtresserveur rcuprationdunfichierdecontrle rcuprationdunfichierdejournalisation rcuprationcompltedelatotalitdelabasededonnesenmodeARCHIVELOG rcuprationcompltedunepartiedelabasededonnesenmodeARCHIVELOG rcuprationdetouslesfichiersdecontrleenmodeARCHIVELOG rcuprationincomplteenmodeARCHIVELOG rcuprationenmodeNOARCHIVELOG.

Encomplment,nousvoqueronsdeuxcasparticuliers :
q

rcuprationunemplacementdiffrent tablespacetemporairegrlocalement.

Dansuncasdercuprationrel,vousserezpeuttreamenscombinerplusieursdecesscnariosdebase.Par exemple, si vous avez perdu un fichier de contrle et un tablespace, et si vous tes en mode ARCHIVELOG, vous appliquerezlesscnariossuivants,danslordre :
q

rcuprationdunfichierdecontrle rcuprationcompltedunepartiedelabasededonnesenmodeARCHIVELOG.

En rgle gnrale, si vous avez perdu le fichier de paramtres serveur, un fichier de contrle et/ou un fichier de journalisation,vousdevezdabordrsoudrecesproblmesavantdetraiterlecasdesfichiersdedonnes. Touscesscnariossontbasssurleshypothsessuivantes :

ENI Editions - All rights reserved - Algeria Educ

- 7-

Vousavezactivlasauvegardeautomatiquedufichierdecontrleetdufichierdeparamtresserveur. Vousutilisezunezonedercuprationrapide. VousnutilisezpasdebasededonnesannexepourstockerlecatalogueRMAN.

Quelquesoitlescnario,silefichierestenfaitsimplementtemporairementinaccessible(contrleurdisque enpanneparexemple),unerestaurationnestpasncessaire ilsuffitdecorrigerleproblmepourrendre lefichierdenouveaudisponibleetderedmarrerlabase.Unerestaurationestnanmoinsenvisageablesilnest paspossibledattendrequeleproblmesoitcorrig.

b.Rcuprationdufichierdeparamtresserveur
Encasdepertedufichierdeparamtresserveur,vousavezdeuxpossibilits :
q

Lerecrerpartirdunfichierdeparamtrestexte(voirlechapitre7). LercuprerpartirdunesauvegardeRMAN.

PourlercuprerpartirdunesauvegardeautomatiqueRMANsituedanslazonedercuprationrapide,lemode opratoireestlesuivant :
q

Dmarrerlinstancesansmonterlabasededonnes(notezqueRMANvautiliserunfichierdeparamtres "temporaire"pourdmarrerlinstance)

RMAN> STARTUP NOMOUNT chec du dmarrage : ORA-01078: failure in processing system parameters LRM-00109: impossible douvrir le fichier de paramtres D:\APP\ORACLE\PRODUCT\11.1.0\DB_1\DATABASE\INITHERMES.ORA dmarrage de linstance Oracle sans fichier de paramtres pour extraction de SPFILE instance Oracle dmarre Total System Global Area (SGA) 159019008 octets Fixed Size 1331852 octets Variable Size 67112308 octets Database Buffers 88080384 octets Redo Buffers 2494464 octets
q

Restaurer le fichier de paramtres serveur partir dune sauvegarde automatique en spcifiant lemplacementdelazonedercuprationrapideetlenom(oulenomunique)delabasededonnes

RMAN> RESTORE SPFILE FROM AUTOBACKUP 2> DB_RECOVERY_FILE_DEST H:\oradata\flash_recovery_area 3> DB_NAME HERMES; Dmarrage de restore dans 05/08/08 utilisation du canal ORA_DISK_1 destination de la zone de rcupration : H:\oradata\flash_recovery_area nom de base de donnes (ou nom unique de base de donnes) utilis pour la recherche : HERMES canal ORA_DISK_1 : AUTOBACKUP H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\ AUTOBACKUP\2008_08_05\O1_MF_S_661968988_49JR5XWS_.BKP trouv dans la zone de rcupration canal ORA_DISK_1 : recherche de AUTOBACKUP effectue le : 20080805 canal ORA_DISK_1 : restauration du fichier SPFILE partir de AUTOBACKUP H:\ORADATA\FLASH_RECOVERY_AREA\HERMES\AUTOBACKUP\ 2008_08_05\ O1_MF_S_661968988_49JR5XWS_.BKP canal ORA_DISK_1 : restauration de SPFILE depuis AUTOBACKUP termine Fin de restore dans 05/08/08
q

Redmarrerlinstanceetouvrirlabasededonnes

openmirrors.com

- 8-

ENI Editions - All rights reserved - Algeria Educ

RMAN> SHUTDOWN ... RMAN> STARTUP ... Si la sauvegarde automatique nest pas stocke dans la zone de rcupration rapide, le mode opratoire est diffrent. Il faut positionner le DBID correspondant la base de donnes (SET DBID ), spcifier le format utilis pourlessauvegardesautomatiques(SET CONTROLFILE AUTOBACKUP FORMAT )avantderestaurerlasauvegardepar unRESTORE SPFILE FROM AUTOBACKUP(sansautreoption). Il est aussi possible de restaurer le fichier de paramtre serveur en spcifiant la sauvegarde utiliser : RESTORE SPFILE FROM sauvegarde.

c.Rcuprationdunfichierdecontrle
Danslecasovousavezperduunouplusieursfichiersdecontrle,maisquilvousenresteencoreaumoinsun, vousnedevezpasrepartirdunesauvegardedefichierdecontrle.Vousallezsimplementdupliquerundesfichiers decontrlerestantspourremplacerlesfichiersperdus. Noussupposonsquelinstanceestarrte. Lemodeopratoireestlesuivant :
q

utiliserlefichierdalerte de linstancepouridentifierlesfichiersdecontrleendommagsouperduseten dduirequilrestebienaumoinsunfichierdecontrlevalide dupliqueruneversionvalidedufichierdecontrlepourlamettrelaplacedu(des)fichier(s)decontrle endommag(s) redmarrerlabasededonnes(STARTUP).

Si un fichier de contrle est dupliqu un autre emplacement que lemplacement dorigine, il faut modifier le paramtre CONTROL_FILES dans le fichier de paramtres serveur. Au lieu de redmarrer directement la base de donnes,ilfaudraprocderdelamaniresuivante :
q

Dmarrerlinstance,sansmonterlabasededonnes

SQL> STARTUP NOMOUNT


q

ModifierleparamtreCONTROL_FILESdanslefichierdeparamtresserveur :

SQL> ALTER SYSTEM SET CONTROL_FILES= 2 f:\oradata\HERMES\control01.ctl, 3 h:\oradata\HERMES\control02.ctl -- changement 4 SCOPE=SPFILE;


q

Redmarrerlinstance

SQL> SHUTDOWN IMMEDIATE SQL> STARTUP LaduplicationduneversionvalidedufichierdecontrlepeutseffectuerdansRMAN,laidedunevariantedela commandeRESTORE CONTROLFILE.Exemple : RMAN> RESTORE CONTROLFILE FROM F:\oradata\HERMES\control01.ctl ; Lacommandetraitedunseulcouptouslesfichiersdecontrlemanquantsensebasantsurlavaleurduparamtre CONTROL_FILES. Ilestgalementpossiblededmarrertemporairementavecmoinsdefichiersdecontrle danscecas,ilseraaussi ncessairedemodifierlaparamtreCONTROL_FILESdanslefichierdeparamtresserveur.

d.Rcuprationdunfichierdejournalisation

ENI Editions - All rights reserved - Algeria Educ

- 9-

Sivousavezperduunouplusieursfichiersdejournalisation,maisquilvousenresteaumoinsunpargroupe,vous navez pas besoin de raliser de restauration ou de rcupration de la base de donnes. Vous allez simplement recrerlesfichiersdejournalisationperdus. Lemodeopratoireestlesuivant :
q

Identifier le (les) fichier(s) de journalisation endommag(s) dans le fichier dalerte de linstance, dans le fichierdetracedeLGWRoudanslavueV$LOGFILE. Supprimerlemembreendommag

SQL> ALTER DATABASE DROP LOGFILE MEMBER nom_fichier;


q

Ajouterunnouveaumembreaugroupeconcern

SQL> ALTER DATABASE ADD LOGFILE MEMBER nom_fichier 2 TO GROUP numro;


q

Ritrerlesdeuxoprationsprcdentesavectouslesmembresendommags.

LesfichiersdejournalisationendommagsontunecolonneSTATUSINVALIDdanslavueV$LOGFILE. Lefichierdejournalisationajoutpeuttremisunautreemplacement silestremisaummeemplacementque le prcdent, il faudra peuttre au pralable supprimer physiquement lancien fichier (sil est prsent, le mettre simplementdectaucaso)ouutiliserlaclauseREUSEdanslordreSQL. Vousnepourrezpassupprimerlemembresilappartientaugroupecourant.Danscecas,ilfautchangerdegroupe courantenexcutantlordreSQL ALTER SYSTEM SWITCH LOGFILE.CetordreSQLnepeuttreexcutquesilabase de donnes est ouverte. Si la base de donnes est ferme, et quelle ne puisse pas tre ouverte tout de suite, vouspouvezreporterlacorrectionduproblmeplustardouvouscontenterderecrerlemembre lasuppression pourraavoirlieuplustard,unefoislabasededonnesouverte. Ilpeuttrepossibleaussidefonctionnertemporairementavecmoinsdemembresdansungroupedefichiersde journalisation.

e.RcuprationcompltedelatotalitdelabasededonnescenmodeARCHIVELOG
Cescnariometlhypothsequevousavezperdutouslesfichiersdedonnes.Linstanceestarrte. Lemodeopratoireestlesuivant :
q

Monterlabasededonnes

RMAN> STARTUP MOUNT


q

Restaurerlabasededonnes

RMAN> RESTORE DATABASE ; Dmarrage de restore dans 05/08/08 ... Fin de restore dans 05/08/08
q

Rcuprerlabasededonnes

RMAN> RECOVER DATABASE ; Dmarrage de recover dans 05/08/08 ... Fin de recover dans 05/08/08
q

Ouvrirlabasededonnes

RMAN> ALTER DATABASE OPEN ; Si vous nutilisez pas la zone de rcupration rapide pour larchivage, vous pouvez spcifier loption DELETE ARCHIVELOG dans la commande RECOVE pour supprimer les fichiers de journalisation archivs restaurs au fur et
- 10 ENI Editions - All rights reserved - Algeria Educ

openmirrors.com

mesuredeleurapplicationetventuellementlimiterlespaceutilisparcesfichiers.

f.RcuprationcompltedunepartiedelabasededonnesenmodeARCHIVELOG
Cescnariometlhypothsequevousavezperduunouplusieursfichiersdedonnes(maispastous). Cetteoprationpeuttreralisebasefermeoubaseouverte,selonlanatureduproblme.
q

Si un fichier de donnes du tablespace SYSTEM, ou un fichier du tablespace dannulation actif est perdu, linstance sest arrte et vous ne pourrez pas ouvrir la base de donnes sans rcuprer les fichiers en question. Sil sagitdun autre fichier de donnes, la base de donnes peut rester ouverte. Par contre, si elle tait ferme,ellenepeutpastreouverte.

Rcuprationbasededonnesferme Danscetexemple,lefichierdedonnesdutablespaceSYSTEMestperdu linstanceestarrte. Lemodeopratoireestlesuivant :


q

Monterlabasededonnes :

RMAN> STARTUP MOUNT instance Oracle dmarre ...


q

RestaurerlesfichiersdedonnessouhaitssoitparunRESTORE TABLESPACE,soitparunRESTORE DATAFILE

RMAN> RESTORE TABLESPACE system ;


q

RcuprerlesfichiersdedonnessoitparunRECOVER TABLESPACE,soitparunRECOVER DATAFILE

RMAN> RECOVER TABLESPACE system ;


q

Ouvrirlabasededonnes

RMAN> ALTER DATABASE OPEN ; Rcuprationbasededonnesouverte Danscetexemple,lefichierdedonnesdutablespaceINDXestperdu(fichierdedonnesnumro6). Si la base de donnes est ferme, mais que vous souhaitiez raliser la rcupration base ouverte (pour que les utilisateurspuissentrecommencertravailler),commencezparlapremirepartiedumodeopratoire.Silabasede donnesestdjouverte,passezdirectementladeuximepartiedumodeopratoire. Lapremirepartiedumodeopratoireestlasuivante :
q

Monterlabasededonnes

RMAN> STARTUP MOUNT


q

MettreOFFLINElesfichiersdedonnesperdus

RMAN> SQL "ALTER DATABASE DATAFILE 6 OFFLINE";


q

Ouvrirlabasededonnes

RMAN> ALTER DATABASE OPEN; Ladeuximepartiedumodeopratoireestlasuivante :

ENI Editions - All rights reserved - Algeria Educ

- 11 -

PasserOFFLINElestablespacesconcerns vousdevezutiliserloptionIMMEDIATE,carunfichierdedonnes nestpasaccessible

RMAN> SQL "ALTER TABLESPACE indx OFFLINE IMMEDIATE";


q

RestaurerlesfichiersdedonnessouhaitssoitparunRESTORE TABLESPACE,soitparunRESTORE DATAFILE

RMAN> RESTORE DATAFILE 6 ;


q

RcuprerlesfichiersdedonnessoitparunRECOVER TABLESPACE,soitparunRECOVER DATAFILE

RMAN> RECOVER DATAFILE 6 ;


q

PasserONLINElestablespacesconcerns

RMAN> SQL "ALTER TABLESPACE indx ONLINE";

g.RcuprationdetouslesfichiersdecontrleenmodeARCHIVELOG
Dans ce scnario, nous supposons que nous avons perdu tous les fichiers de contrle ainsi quun fichier de donnes.Ilnesagitpasdunecatastrophecarnousdisposonsdesauvegardesautomatiquesdufichierdecontrle (dans la zone de rcupration rapide) et les fichiers de journalisation en ligne sont disponibles. Linstance est arrte. Lemodeopratoireestlesuivant :
q

Dmarrerlinstancesansmonterlabasededonnes

RMAN> STARTUP NOMOUNT


q

Restaurer les fichiers de contrle partir dune sauvegarde automatique (dans la zone de rcupration rapide).

RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;


q

Monterlabasededonnes

RMAN> ALTER DATABASE MOUNT ;


s

Restaurerlesfichiersdedonnesperdus(djvu)

RMAN> RESTORE DATAFILE 5 ;


q

Rcuprer la base de donnes (pas uniquement les fichiers de donnes car nous repartons dune sauvegardedefichiersdecontrle)

RMAN> RECOVER DATABASE ;


q

OuvrirlabasededonnesavecloptionRESETLOGS(obligatoire)

RMAN> ALTER DATABASE OPEN RESETLOGS ;


q

Vousobtenezunenouvelle"incarnation"delabasededonnes

RMAN> LIST INCARNATION OF DATABASE ; Liste des incarnations de base de donnes DB Key Inc Key DB Name DB ID ------- ------- -------- ---------------1 1 HERMES 3535892647 2 2 HERMES 3535892647

STATUS ------PARENT CURRENT

Reset SCN ---------1 460308

Reset Time ---------16/07/08 05/08/08

openmirrors.com

- 12 -

ENI Editions - All rights reserved - Algeria Educ

Dans la commande RESTORE CONTROLFILE FROM AUTOBACKUP, vous pouvez spcifier les options DB_RECOVERY_FILE_DESTetDB_NAME(ouDB_UNIQUE_NAME)silesvaleursactuellesnesontpascorrectes.Parcontre,si lasauvegardeautomatiquedufichierdecontrlenestpasstockedanslazonedercuprationrapide,lemode opratoireestdiffrent.IlfautpositionnerleDBIDcorrespondantlabasededonnes(SET DBID ),spcifierle format utilis pour les sauvegardes automatiques (SET CONTROLFILE AUTOBACKUP FORMAT ) avant de restaurer la sauvegardeparunRESTORE CONTROLFILE FROM AUTOBACKUP. Lorsquevousrepartezdunesauvegardedefichierdecontrle,RMANeffectueautomatiquementunCROSSCHECKet un CATALOG RECOVERY AREA pour mettre jour le rfrentiel dans les fichiers de contrle (qui ne sont pas jour puisquilsproviennentdunesauvegarde),enfonctiondelaralitphysiquedesfichiers. Parailleurs,vousdevezouvrirlabasededonnesavecloptionRESETLOGS.Mmesilarcuprationestcomplte, Oracle considre que cest une nouvelle vie de la base de donnes, une nouvelle incarnation de la base de donnes.Lesnumrosdesquencedesfichiersdejournalisationvontrepartirdezro. Dans les versions prcdentes dOracle, toutes les sauvegardes et tous les fichiers de journalisation archivs antrieurslouvertureenmodeRESETLOGStaientpratiquementinexploitables. Depuis la version 10, ce nest plus le cas. Lors dune ouverture en mode RESETLOGS, Oracle associe un numro dactivation la "nouvelle" base de donnes. Ce numro dactivation est utilis par Oracle diffrents endroits, dont le nom des fichiers de journalisation archivs (variable %r dans le paramtre LOG_ARCHIVE_FORMAT). De cette manire,Oracleestcapabledassociernimportequelfichieruneincarnationdelabasededonnes. LenumrodactivationcourantpeuttreconsultdanslacolonneINCARNATION#delavueV$DATABASE.Lhistorique des incarnations dune base de donnes peut tre consult dans la vue V$DATABASE_INCARNATION. Dans RMAN, la commandeLIST INCARNATIONdonnelalistedesincarnationsdelabasededonnes. Danslefichierdesalertesdelinstance,voustrouverezaussidesmessagesdutype : RESETLOGS after complete recovery through change 460307 Resetting resetlogs activation ID 3535886503 (0xd2c158a7) Tue Aug 05 18:09:16 2008 Setting recovery target incarnation to 2 LanotiondincarnationdebasededonnesestlundessujetslespluscomplexesdOracle.

h.RcuprationincomplteenmodeARCHIVELOG
Cescnariovaillustrerlatechniquedercuprationincomplte,enpartantdunesituationcatastrophe : toutest perdu(fichierdeparamtresserveur,fichiersdecontrle,fichiersdedonnesetfichiersdejournalisationenligne). Linstanceestarrte. Unercuprationincomplteestncessairedansplusieurscas :
q

pertedetouslesfichiersdejournalisationenligne(cestlecasdanscescnario) pertedunfichierdejournalisationarchiv,ncessaireunercupration retouravantunordreSQLmalencontreux(DROP TABLE,DROP TABLESPACE,DROP USER,etc.).

Danstouslescas,ilfaudraidentifierlepointderetoursouhaitparunedate/heure,unnumroSCNouunnumro desquencedefichierdejournalisation. la fin de la rcupration, il faudra, l encore, ouvrir la base de donnes avec loption RESETLOGS : cest une nouvelleincarnationdelabasededonnes. Cescnarioestunecombinaisondescnariosdjtudis. Lemodeopratoireestlesuivant :
q

Dmarrerlinstancesansmonterlabasededonnes(RMANutiliseunfichierdeparamtres"temporaire"car lefichierdeparamtresserveurestperdu) :

RMAN> STARTUP NOMOUNT chec du dmarrage : ... dmarrage de linstance Oracle sans fichier de paramtres ... instance Oracle dmarre

ENI Editions - All rights reserved - Algeria Educ

- 13 -

...
q

Restaurerlefichierdeparamtresserveurpartirdunesauvegardeautomatique(stockedanslazonede rcuprationrapidepourcetexemple) :

RMAN> RESTORE SPFILE FROM AUTOBACKUP 2> DB_RECOVERY_FILE_DEST H:\oradata\flash_recovery_area 3> DB_NAME HERMES;
q

Redmarrerlinstance sans monter la base de donnes (dmarrage avec le fichier de paramtres serveur restaur) :

RMAN> STARTUP NOMOUNT FORCE


q

Restaurer les fichiers de contrle partir dune sauvegarde automatique (stocke dans la zone de rcuprationrapidepourcetexemple) :

RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP ;


q

Monterlabasededonnes :

RMAN> ALTER DATABASE MOUNT ;


q

Restaureretrcuprerlabasededonnes :

RMAN> RESTORE DATABASE ; ... RMAN> RECOVER DATABASE ; Dmarrage de recover dans 06/08/08 ... RMAN-03002: chec de la commande recover 08/06/2008 07:37:00 RMAN-06054: la rcupration aprs dfaillance matrielle requiert un journal inconnu : thread 1, squence 7 et SCN de dbut 475124
q

OuvrirlabasededonnesavecloptionRESETLOGS :

RMAN> ALTER DATABASE OPEN RESETLOGS ; Danscescnario,aveclemodeopratoireutilisici,ilestnormalquelacommande RECOVERsetermineavecune erreurpuisquilmanqueunfichierdejournalisation.Aupralable,lacommandeRESTOREaeffectuautomatiquement un CROSSCHECK et un CATALOG RECOVERY AREA pour mettre jour le rfrentiel (notamment les fichiers de journalisationarchivsdisponibles)danslesfichiersdecontrle lacommandeRECOVERestdonc,alleleplusloin possible avec les lments sa disposition. Avant douvrir la base dans le modeRESETLOGS, assurezvous que le numrodesquencedudernierfichierdejournalisationappliquestconformevosattentes. Danslecasonoussouhaitonsprciserexplicitementlepointderetour,ilestpossibledutiliseruneclauseUNTIL danslescommandesRESTOREetRECOVER cetteclauseoffreplusieursoptions : UNTIL SCN [=] n JusquunnumroSCN(noncompris). UNTIL SEQUENCE[=] n Jusquunnumrodesquencedunfichierdejournalisation(noncompris). UNTIL TIME [=]date Jusqu une date/heure (non comprise). Peut tre spcifi sous la forme dune constante (au format de date courant)ouuneexpressiondutypeSYSDATE-1ou"TO_DATE()". DansunblocRUN,ilestaussipossibledutiliserlacommandeSET UNTILavantdexcuterlescommandesRESTOREet RECOVER :

openmirrors.com

- 14 -

ENI Editions - All rights reserved - Algeria Educ

RUN { SET UNTIL ... ; RESTORE DATABASE ; RECOVER DATABASE ;}

i.RcuprationenmodeNOARCHIVELOG
Dans ce scnario, nous supposons que nous avons perdu tout ou partie de la base de donnes et que cette dernirefonctionneenmodeNOARCHIVELOG. Danscecas,normalement,laseulesolutiondercuprationconsisteramenerlabasededonnesltatoelle se trouvait lors de la dernire sauvegarde complte base ferme, cette dernire pouvant tre une sauvegarde incrmentale. Nanmoins,commenouslavionsindiquprcdemment,ilestpeuttreenvisageablederaliserunercupration compltesilesfichiersdejournalisationsontdisponiblesetquilnyaitpaseuuncyclecompletdebasculementdes fichiers de journalisation depuis la dernire sauvegarde. Vous pouvez alors tenter une restauration de type ARCHIVELOG(pointse.ouf.) :
q

restaurationdesfichiersdedonnesendommags rcuprationdesfichiersdedonnesendommags.

Si la rcupration ne signale pas derreur,cest gagn. Par contre, si la rcupration signale une erreur du type suivant,lasituationestaprioridsespre : journal darchivage introuvable journal darchivage, thread=1, squence=7 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: chec de la commande recover 08/06/2008 07:37:00 RMAN-06054: la rcupration aprs dfaillance matrielle requiert un journal inconnu : thread 1, squence 7 et SCN de dbut 475124 Dans ce cas, il ne reste plus qu raliser une rcupration en mode NOARCHIVELOG, laide du mode opratoire suivant :
q

Dmarrerlinstancesansmonterlabasededonnes

RMAN> STARTUP NOMOUNT


q

Restaurer les fichiers de contrle partir dune sauvegarde automatique (stocke dans la zone de rcuprationrapidepourcetexemple)

RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;


q

Monterlabasededonnes

RMAN> ALTER DATABASE MOUNT ;


q

Restaurerlabasededonnes

RMAN> RESTORE DATABASE;


q

Si vous utilisez des sauvegardes incrmentales cohrentes (base ferme) de la totalit de la base de donnes,lacommandeRESTOREprcdenteauraramenladerniresauvegardedeniveau0.Vouspouvez alors raliser une rcupration (RECOVER) avec loption NOREDO, pour que RMAN applique les sauvegardes incrmentales de niveau 1 postrieur la sauvegarde de niveau 0, sans appliquer les fichiers de journalisation.

RMAN> RECOVER DATABASE NOREDO;

ENI Editions - All rights reserved - Algeria Educ

- 15 -

OuvrirlabasededonnesavecloptionRESETLOGS(obligatoire)

RMAN> ALTER DATABASE OPEN RESETLOGS ; Lencore,vousobtenezunenouvelleincarnationdelabasededonnes cestnormalpuisquevoustrerevenu uninstantdonndupass.

j.Rcuprationunemplacementdiffrent
Dans certains cas, il peut tre impossible de restaurer les fichiers de donnes dans larborescence dorigine. Il faudraalorsutiliserdeuxcommandessupplmentairesdansleprocessusderestauration :
q

Avant la restauration (RESTORE) : SET NEWNAME FOR DATAFILE pour indiquer RMAN le nouvel emplacement dunfichierdedonnes

SET NEWNAME FOR DATAFILE ancien_chemin | numro_fichier TO nouveau_chemin ;


q

Aprslarestauration(RESTORE)etavantlarcupration(RECOVER) : SWITCH DATAFILEpourmettrejourle fichierdecontrle(quivalentlordreSQLALTER DATABASE RENAME FILE)

SWITCH DATAFILE ALL ; CesdeuxcommandesdoiventtreexcutesdansunblocRUN. Exemplepourrestaurerunfichierdedonnesunautreemplacement RUN { # si linstance est arrte, la dmarrer # et monter la base de donnes STARTUP MOUNT # # si la base de donnes est ouverte, # mettre le tablespace OFFLINE # SQL "ALTER TABLESPACE data OFFLINE IMMEDIATE" ; # SET NEWNAME FOR DATAFILE e:\oradata\HERMES\data01.dbf TO f:\oradata\HERMES\data01.dbf ; RESTORE TABLESPACE data ; SWITCH DATAFILE ALL ; RECOVER TABLESPACE data ; # si la base de donnes est monte, louvrir ALTER DATABASE OPEN ; # # si la base de donnes est ouverte, # mettre le tablespace ONLINE # SQL "ALTER TABLESPACE data ONLINE" ; }

k.Casparticulierdutablespacetemporairegrlocalement
LesfichiersdedonnesdestablespacestemporairesgrslocalementnesontjamaissauvegardsparRMANetne peuventdoncpastrerestaurs. Sivousperdezunfichierdedonnesduntablespacetemporairegrlocalement,vousnaveznormalementriende particulierfairecarOraclelerecre,sibesoin,automatiquementlorsdelouverturedelabasededonnes.Dans lefichierdalertedelinstance,voustrouverezalorsdesmessagesdutypesuivant : 2008-08-07 06:58:51.171000 +02:00 Re-creating tempfile E:\ORADATA\HERMES\TEMP01.DBF Pour vrifier que les fichiers de donnes des tablespaces temporaire grs localement sont bien prsents, vous pouvezinterrogerlavueV$TEMPFILEouexcuterlacommandeRMANREPORT SCHEMA.

openmirrors.com

- 16 -

ENI Editions - All rights reserved - Algeria Educ

En cas de besoin, vous pouvez explicitement recrer les fichiers de donnes des tablespaces grs localement. Exemple : SQL> ALTER TABLESPACE temp 2 ADD TEMPFILE e:\oradata\HERMES\temp01.dbf SIZE 100M 3 AUTOEXTEND ON NEXT 100M MAXSIZE 1G;

7.DataRecoveryAdvisor
a.Vuedensemble
Le Data Recovery Advisor est un outil qui permet de simplifier et dautomatiser le diagnostic et la rsolution des problmes(perteoucorruption)surlesfichiersdelabasedonnes.Cetoutilestapparuenversion11. LeconseillerpeuttreutilisenlignedecommandedansRMANouavecuneinterfacegraphiquedansleDatabase Control(cf.UtiliserleDatabaseControl). Danslaterminologieduconseiller,unchec(failureenanglais)surunfichierestidentifiparunnumrouniqueet estcaractrisparunstatut(OPENouCLOSED)etunepriorit(LOW,HIGHouCRITICAL). LestatutestOPENtantqueleproblmenapastrsolu ilpasseCLOSEDensuite. La priorit estCRITICAL lorsque la base de donnes est totalement indisponible et HIGH si elle est partiellement indisponible danslesdeuxcas,ilconvientdersoudreleproblmerapidement.LaprioritLOWnestpasattribue parleconseiller.Parcontre,sivousjugezquuneprioritHIGHapeudimpactsurlefonctionnementdelabasede donnesetnencessitepasdetraitementimmdiat,vouspouvezdescendremanuellementlaprioritLOW. Lesinformationsrelativesauxchecssontstockesdanslerfrentieldediagnosticautomatique.Pourfonctionner, leDataRecoveryAdvisorncessitequelinstancesoitdmarre(maislabasededonnepeutnepastremonte cequipermetdediagnostiqueretrsoudrelesincidentssurlesfichiersdecontrle).

b.Utilisation
DansRMAN,lestapespourdiagnostiqueretrsoudrelesproblmeslaideduconseillersontlessuivantes :
q

Afficherleschecsactuels(statutOPEN) : LIST FAILURE. Dterminerlesactionseffectuerpourrsoudrele(s)problme(s) : ADVISE FAILURE. Rsoudrele(s)problme(s) : REPAIR FAILURE. Retourner ltape 1 pour confirmer que les problmes ont t rsolus ou voir sil reste encore des problmes.

Au pralable, il est possible dexcuter la commande VALIDATE DATABASE pour vrifier la totalit de la base de donnes(maisilfautquelabasededonnessoitmonte). EncomplmentdescommandesLIST FAILURE,ADVISE FAILURE etREPAIR FAILURE,ilexisteunecommandeCHANGE FAILUREquipermetdemodifierlestatutoulapriorit.Cettecommande,moinsutile,nestpasprsentedanscet ouvrage(voirladocumentation"OracleDatabaseBackupandRecoveryReference"). LapremiretapeconsistedoncafficherleschecsactuelsaveclacommandeLIST FAILURE. Syntaxesimplifie LIST FAILURE [quoi] [DETAIL] ; Laclausequoipeutprendreuneouplusieursdesvaleurssuivantes : ALL,CRITICAL,HIGH,LOW,CLOSEDouunnumro dchec. Par dfaut, la commande LIST FAILURE affiche tous les checs de statut OPEN et de priorit CRITICAL ou HIGH. Loption CLOSED permet dafficher les checs de statut CLOSED. Les options CRITICAL, HIGH,LOW ouALL permettent dafficherleschecsayantuneprioritdonne(ALL=touteslespriorits). Poursimplifier,leschecsdemmenaturesontregroupsdansunseulchec"parent"etseulscesdernierssont affichs par dfaut par la commande LIST FAILURE. Pour afficher tous les checs "enfants", vous pouvez utiliser
ENI Editions - All rights reserved - Algeria Educ - 17 -

loptionDETAIL. Exemple RMAN> LIST FAILURE ; utilisation du fichier de contrle de la base de donnes cible au lieu du catalogue de rcupration Liste des checs de base de donnes ========================= ID dchec Priority Status Time Detected Summary ---------- -------- ------ ------------- ------565 HIGH OPEN 07/08/08 Un ou plusieurs fichiers de donnes non systme sont absents RMAN> LIST FAILURE 565 DETAIL; utilisation du fichier de contrle de la base de donnes cible au lieu du catalogue de rcupration Liste des checs de base de donnes ========================= ID dchec Priority Status Time Detected Summary ---------- -------- ------ ------------- ------565 HIGH OPEN 07/08/08 Un ou plusieurs fichiers de donnes non systme sont absents Impact : Voir limpact des checs des enfants Liste des checs enfant de lID dchec parent 565 ID dchec Priority Status Time Detected Summary ---------- ------ ------ ------------- ------1859 HIGH OPEN 07/08/08 Le fichier de donnes 6: E:\ORADATA\HERMES\INDX01.DBF est absent Impact : Il se peut que certains objets dans le tablespace INDX soient indisponibles 1853 HIGH OPEN 07/08/08 Le fichier de donnes 5: E:\ORADATA\HERMES\DATA01.DBF est absent Impact : Il se peut que certains objets dans le tablespace DATA soient indisponibles Surcetexemple,unproblmeatdtectsurdeuxfichiersdedonnes. Pour gnrer et afficher les actions effectuer pour traiter les checs, vous devez utiliser la commande ADVISE FAILURE. Syntaxesimplifie ADVISE FAILURE [quoi] ; La clause quoi peut prendre une ou plusieurs des valeurs suivantes : ALL, CRITICAL, HIGH, LOW ou un numro dchec. La commande ADVISE FAILURE sans option peut tre utilise uniquement si une commande LIST FAILURE a t excuteaupralabledanslasessionRMAN.Danscecas,lacommandeADVISE FAILUREaffichedesinformationsde rsolution pour tous les checs de statut OPEN et de priorit CRITICAL ouHIGH enregistrs dans le rfrentiel de diagnosticautomatique. Les options de la clause quoi permettent dafficher les informations de rsolution pour un sousensemble dchecs lasignificationdesdiffrentesoptionsdecetteclauseestlammequepourlacommandeLIST FAILURE. Exemple RMAN> ADVISE FAILURE ; Liste des checs de base de donnes ========================= ID dchec Priority Status Time Detected Summary ---------- -------- ------ ------------- ------565 HIGH OPEN 07/08/08 Un ou plusieurs fichiers de donnes non systme sont absents ... analyse des options de rparation automatique ; cette opration peut prendre un certain temps canal affect : ORA_DISK_1 canal ORA_DISK_1 : SID=208 type dunit=DISK analyse des options de rparation automatique termine Actions manuelles obligatoires

openmirrors.com

- 18 -

ENI Editions - All rights reserved - Algeria Educ

======================== aucune action manuelle nest disponible Actions manuelles facultatives ======================= 1. Si le fichier E:\ORADATA\HERMES\DATA01.DBF a t renomm ou dplac involontairement, restaurez-le 2. Si le fichier E:\ORADATA\HERMES\INDX01.DBF a t renomm ou dplac involontairement, restaurez-le Options de rparation automatique ======================== Option Repair Description ------ -----------------1 Restaurez et rcuprez le fichier de donnes 5; Restaurez et rcuprez le fichier de donnes 6 Stratgie : La rparation comprend une rcupration aprs dfaillance matrielle sans perte de donnes Script de rparation : d:\app\oracle\diag\rdbms\hermes\hermes\hm\ reco_499244267.hm Aprsavoiraffichdesinformationssurleschecstrouvs(rsultatdelacommandeLIST FAILURE),lacommande ADVISE FAILUREaffichetroissections : Actions manuelles obligatoires : cette section liste les oprations qui doivent obligatoirement tre faites manuellement pour rsoudre le problme. Des actions manuelles obligatoires peuvent, par exemple, tre ncessaires si une sauvegarde ou un fichier de journalisation archiv requis par la rparation automatique sont manquants. Actionsmanuellesfacultatives:cettesectionlistelesoprationsmanuellesfacultativesquipeuventpermettrede rsoudre le problme. Par exemple, si un fichier de donnes est manquant, le conseiller suggre que ce fichier a peuttre t involontairement renomm ou dplac et quil peut donc tre restaur sans devoir repartir dune sauvegarde. Options de rparation automatique : cette section liste les diffrentes options de rparation automatique. Pour chaqueoption,lacommandeafficheunnumro,unedescription,unestratgie(avecousanspertededonnes)et le chemin du script qui contient les commandes de rparation. Les options correspondant une stratgie sans pertededonnessonttoujoursproposesenpremier. PourrparerautomatiquementleschecsidentifisparleDataRecoveryAdvisor,vouspouvezutiliserlacommande REPAIR FAILURE. Syntaxe REPAIR FAILURE [USING ADVISE OPTION numro] [PREVIEW] [NOPROMPT]; Par dfaut, la commande REPAIR FAILURE excute les actions de la premire option de rparation automatique, identifieparlacommandeADVISE FAILURElaplusrcenteexcutedanslasessionRMAN siaucunecommande ADVISE FAILUREnatexcutedanslasessionRMAN,uneerreurestretourne. Loption USING ADVISE OPTION permet dappliquer une option de rparation automatique spcifique, identifie par sonnumrodoption. LoptionPREVIEWpermetdenepasexcuterlesactions,maissimplementdelesprvisualiserlcran. LoptionNOPROMPTpermetdesupprimerlademandedeconfirmation,lorsdelexcutioneffectivedelacommande. Exemple RMAN> REPAIR FAILURE PREVIEW ; Stratgie : La rparation comprend une rcupration aprs dfaillance matrielle sans perte de donnes Script de rparation : d:\app\oracle\diag\rdbms\hermes\hermes\hm\ reco_499244267.hm contenu du script de rparation : # restore and recover datafile restore datafile 5, 6; recover datafile 5, 6; RMAN> REPAIR FAILURE NOPROMPT ; Stratgie : La rparation comprend une rcupration aprs dfaillance matrielle sans perte de donnes Script de rparation : d:\app\oracle\diag\rdbms\hermes\hermes\hm\ reco_499244267.hm contenu du script de rparation :

ENI Editions - All rights reserved - Algeria Educ

- 19 -

# restore and recover datafile restore datafile 5, 6; recover datafile 5, 6; excution du script de rparation Dmarrage de restore dans 07/08/08 ... Fin de restore dans 07/08/08 Dmarrage de recover dans 07/08/08 ... Fin de recover dans 07/08/08 rparation de lchec termine base de donnes ouverte Lors de lexcution effective des actions de rparation, RMAN affiche le rsultat des diffrentes commandes excutes(RESTORE,RECOVER,etc.).

c.Considrations
LeData Recovery Advisor est un outil trs puissant qui permet de diagnostiquer et rsoudre un grand nombre de problmessurlesfichiersdecontrle,lesfichiersdejournalisationoulesfichiersdedonnes. LeseulproblmequeleDataRecoveryAdvisornesaitpasrsoudreestlapertedufichierdeparamtresserveur.Si besoin,vousdevrezrestaurermanuellementlefichierdeparamtreserveur(cf.Rcupration) Avantdutiliserleconseiller,assurezvousquelinstanceabiendmarravecunfichierdeparamtresjour.Sice nest pas le cas, le conseiller risque de signaler un faux problme sur les fichiers de contrle si la valeur du paramtreCONTROL_FILESnestpascorrecte.VouspouveznotammentrencontrercettesituationsiRMANadmarr linstanceavecunfichierdeparamtre"temporaire"(messagedmarrage de linstance Oracle sans fichier de paramtres pour extraction de SPFILE). Dans le cas o tous les fichiers de contrle sont perdus, le Data Recovery Advisor commencera par signaler ce problme et ne sera pas forcment en mesure didentifier tout de suite dautres problmes (sur les fichiers de donnesparexemple).Vousdevrezdonc,dabordtraiterleproblmesurlesfichiersdecontrle(LIST FAILURE,puis ADVISE FAILURE puis REPAIR FAILURE) avant de faire de nouveau appel au conseiller pour identifier les autres problmesventuels(LIST FAILURE)etsibesoin,lesrsoudre(ADVISE FAILUREpuisREPAIR FAILURE). Cettesituationpeutseproduiredanslescnariocatastropheovousavezperdulatotalitdelabasededonnes (touslesfichiersdecontrle,touslesfichiersdejournalisationettouslesfichiersdedonnes). Lencore,utiliserunezonedercuprationrapide,etfairedessauvegardesautomatiquesdufichierdecontrle verscettezonedercuprationrapide,facilitelarsolutiondesproblmesparleDataRecoveryAdvisor. Silasituationlexige(rcuprationincomplteourcuprationpartirdunesauvegardedesfichiersdecontrle), leDataRecoveryAdvisorouvriralabasededonnesdanslemodeRESETLOGS.

openmirrors.com

- 20 -

ENI Editions - All rights reserved - Algeria Educ

Lestechniquesdeflashback
1.Vuedensemble
LestechniquesdeflashbacksontunensembledefonctionnalitsproposesparOraclequipermettentdevoirltat passdesdonnes,ouderamenerunetableoulatotalitdelabasededonnesdanslepass. Lesfonctionnalitsproposessontlessuivantes :
q

Flashback Query: permet de lire les donnes telles quelles taient un instant dans le pass (apparu en version9). Flashback Version Query : permet de voir toutes les versions dune ligne sur un certain intervalle de temps (apparuenversion10). FlashbackTransactionQuery:permetdevoirlesmodificationsralisesparuneouplusieurstransactionssur uncertainintervalledetemps(apparuenversion10). Flashback Transaction: permet dannuler les modifications dune transaction, et de ses transactions dpendantes(apparuenversion11). Flashback Data Archive (Oracle Total Recall) : permet de conserver sur le long terme, toutes les modifications apportesunetable(apparuenversion11). FlashbackTable : permetderamenerunetabledansltatoelletait,uncertainmomentdanslepass (apparuenversion10). FlashbackDrop:permetderamenerlatabledansltatoelletait,justeavantsasuppression(apparuen version10). Flashback Database : permet de ramener la totalit de la base de donnes dans ltat o elle tait un certainmomentdanslepass(apparuenversion11).

Seule la fonctionnalit Flashback Query est disponible dans toutes les ditions de la base de donnes (et donc notammentenStandardEdition). LafonctionnalitFlashback Data Archive (OracleTotalRecall)estuneoptiondelEnterpriseEditionetncessitedonc, unelicencesupplmentaire.Cettefonctionnalitnestpasprsentedanscetouvrage. LesautresfonctionnalitsdeflashbackncessitentlEnterpriseEdition,maissansoptionsupplmentaire. Cesfonctionnalitsutilisentdestechniquesdiffrentesmaispourrpondreaummeobjectif : rcupreruneerreur dutilisation. Lesfonctionnalitsdeflashbackderequte(FlashbackQuery,FlashbackVersionQueryetFlashbackTransactionQuery), etlafonctionnalitdeflashbackdetable,utilisentlesinformationsdannulationpourrevenirenarrire.Leparamtre UNDO_RETENTION et le tablespace dannulation doivent donc tre correctement dimensionns, si vous souhaitez pouvoirretournerloindanslepass. La fonctionnalit deflashback de transaction (FlashbackTransaction) utilise les fichiers de journalisation (en ligne et archivs,donclabasededonnesdoitfonctionnerdanslemodeARCHIVELOG).Cettefonctionnalit,unpeuavance, nestpasprsentedanscetouvrage. Lafonctionnalitdeflashbackdebasededonnes(FlashbackDatabase)utiliseunfichierjournalspcifique,diffrent desfichiersdejournalisation. Lafonctionnalitdeflashbackavantsuppressiondunetable(FlashbackDrop)utiliselefaitquelestockagedunetable nestpasphysiquementsupprimlorsquelatableestsupprime.

2.Niveauligne
FlashbackQuery

ENI Editions - All rights reserved - Algeria Educ

- 1-

Pourlirelesdonnestellesquellestaientuninstantdonndupass,vouspouvezutiliserloptionAS OFsurune tableprsentedanslaclauseFROMdunerequteSELECT. Syntaxe nom_table AS OF { TIMESTAMP | SCN } expression LoptionTIMESTAMPpermetderetourneruninstantdonndupassenindiquantunedateetuneheure dansce cas, lexpression doit tre de type TIMESTAMP. Loption SCN permet de retourner un instant donn du pass en indiquantunnumroSCN danscecas,lexpressiondoittreunnombre. Exemple -- situation de dpart SQL> SELECT prenom FROM adherent WHERE numero = 1; PRENOM ---------------------------------------Sbastien SQL> SELECT TO_CHAR(SYSDATE,DD/MM/YYYY HH24:MI:SS) "SYSDATE", 2 dbms_flashback.get_system_change_number "SCN" 3 FROM dual; SYSDATE SCN -------------------- ---------08/08/2008 11:28:00 176032 SQL> -- un peu plus tard SQL> UPDATE adherent SET prenom = Olivier WHERE numero = 1; 1 ligne mise jour. SQL> COMMIT; Validation effectue. SQL> -- un peu plus tard SQL> SELECT TO_CHAR(SYSDATE,DD/MM/YYYY HH24:MI:SS) "SYSDATE", 2 dbms_flashback.get_system_change_number "SCN" 3 FROM dual; SYSDATE SCN -------------------- ---------08/08/2008 11:28:20 176123 SQL> SELECT prenom 2 FROM adherent AS OF TIMESTAMP SYSTIMESTAMP - INTERVAL 30 SECOND 3 WHERE numero = 1; PRENOM ---------------------------------------Sbastien SQL> SELECT prenom 2 FROM adherent AS OF SCN 176032 3 WHERE numero = 1; PRENOM ---------------------------------------Sbastien SQL> SELECT prenom FROM adherent WHERE numero = 1; PRENOM ---------------------------------------Olivier LafonctionGET_SYSTEM_CHANGE_NUMBERdupackageDBMS_FLASHBACKretournelenumroSCNcourant.Ilfautle privilgeEXECUTEsurlepackagepourlutiliser. Ladonneluedanslepasspeuttreutilisepourraliserunemisejourdansleprsent : SQL> UPDATE adherent 2 SET nom = (SELECT prenom FROM adherent AS OF SCN 176032 3 WHERE numero = 1) 4 WHERE numero = 1; FlashbackVersionQuery

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

Pourlirelesdiffrentesversionsdunelignesuruncertainintervalledetemps,vouspouvezutiliserloptionVERSIONS BETWWENsurunetableprsentedanslaclauseFROMdunerequteSELECT. Syntaxe nom_table VERSIONS BETWEEN { TIMESTAMP | SCN } { expression1 | MINVALUE } AND { expression2 | MAXVALUE } LasignificationdesoptionsTIMESTAMPetSCNestlammequedanslaclauseAS OF. MINVALUEetMAXVALUEpermettent dobtenirlaplusancienneligneetlaplusrcente.Encomplment,vouspouvezutiliserplusieurspseudocolonnesqui vousdonnerontdesinformationssurlesdiffrentesversionsdelaligne : VERSIONS_STARTTIME Date/heurededbutdevaliditdelaversiondelaligne. VERSIONS_STARTSCN NumroSCNdedbutdevaliditdelaversiondelaligne. VERSIONS_ENDTIME Date/heuredefindevaliditdelaversiondelaligne. VERSIONS_ENDSCN NumroSCNdefindevaliditdelaversiondelaligne. VERSIONS_XID Identifiantdelatransactionloriginedelaversiondelaligne. VERSIONS_OPERATION Oprationloriginedelaversiondelaligne : IpourINSERT,UpourUPDATEetDpourDELETE. Exemple SQL> BEGIN 2 INSERT INTO adherent(numero,prenom) VALUES(24,Olivier); 3 COMMIT; 4 UPDATE adherent SET prenom = David WHERE numero = 24; 5 COMMIT; 6 DELETE FROM adherent WHERE numero = 24; 7 COMMIT; 8 END; 9 / Procdure PL/SQL termine avec succs. SQL> SELECT versions_startscn, versions_endscn, 2 versions_xid, versions_operation, 3 prenom 4 FROM adherent VERSIONS BETWEEN SCN MINVALUE AND MAXVALUE 5 WHERE numero = 24 6 ORDER BY versions_startscn; VERSIONS_STARTSCN VERSIONS_ENDSCN VERSIONS_XID V PRENOM ----------------- --------------- ---------------- - ---------177002 177003 030012000D010000 I Olivier 177003 177004 020019000E010000 U David 177004 01000D0008010000 D David UnenouvelleversionduneligneestcrelorsdunCOMMIT.

FlashbackTransactionQuery
ENI Editions - All rights reserved - Algeria Educ - 3-

Pourvoirlesmodificationsralisesparuneouplusieurstransactionssuruncertainintervalledetemps,vouspouvez interrogerlavueFLASHBACK_TRANSACTION_QUERY.Cettevuedonnedesinformationssurtouteslestransactionsdela basededonnespouvantfairelobjetdunflashback.Lesprincipalescolonnesdecettevuesontlessuivantes : XID Identifiantdelatransaction. START_SCN NumroSCNdedbutdelatransaction. START_TIMESTAMP Date/heurededbutdelatransaction. COMMIT_SCN NumroSCNduCOMMITdelatransaction(videpourlatransactionencours). COMMIT_TIMESTAMP Date/heureduCOMMITdelatransaction(videpourlatransactionencours). LOGON_USER Compteutilisateurdelasession. OPERATION Oprationralisedanslatransaction : INSERT,UPDATE,DELETE. TABLE_NAME Nomdelatableconcerneparlopration. TABLE_OWNER Propritairedelatableconcerneparlopration. ROW_ID ROWIDdelaligneconcerneparlopration. UNDO_SQL OrdreSQLpermettantdannulerlopration. Vouspouvezinterrogercettevuedediffrentesmanires :
q

parlenomdunetablesurlaquellevousaveznotunproblme parleROWIDdunelignesurlaquellevousaveznotunproblme par un identifiant de transaction relev en analysant les diffrents versions dune ligne (pseudocolonne VERSIONS_XID).

Exemple SQL> SELECT xid, start_scn,commit_scn, logon_user, undo_sql 2 FROM flashback_transaction_query 3 WHERE table_name=ADHERENT AND table_owner=DIANE
- 4 ENI Editions - All rights reserved - Algeria Educ

openmirrors.com

4 AND operation =DELETE AND start_timestamp > SYSDATE-1; XID START_SCN COMMIT_SCN LOGON_USER ---------------- ---------- ---------- --------------UNDO_SQL ----------------------------------------------------------------... 030006000D010000 176702 176712 DIANE insert into "DIANE"."ADHERENT"("NUMERO","NOM","PRENOM","SEXE","DATE_ NAISSANCE","TELEPHONE","REF_CATEGORIE") values (22,NULL, Olivier,NULL,NULL,NULL,NULL); 030006000D010000 176702 176712 DIANE insert into "DIANE"."ADHERENT"("NUMERO","NOM","PRENOM","SEXE","DATE_ NAISSANCE","TELEPHONE","REF_CATEGORIE") values (21,HEURTEL ,NULL,NULL,NULL,NULL,NULL); ... Sur cet exemple, nous recherchons toutes les transactions qui ont fait un DELETE sur la table ADHERENT du schma DIANE, la dernire journe. Les deux lignes affiches appartiennent la mme transaction (mmeXID). La colonne UNDO_SQLdonnelordreSQLquipeuttreutilispourrcrerlaligne.

3.Niveautable
FlashbackTable Pourramenerunetableltatoelletaitunmomentdonndupass,vouspouvezutiliserlordreSQLFLASHBACK TABLE. Syntaxe FLASHBACK nom_table [,] TO instant [ENABLE TRIGGERS] ; instant { TIMESTAMP | SCN } expression | RESTORE POINT nom LasignificationdesoptionsTIMESTAMPetSCNestlammequedanslaclauseAS OF.LoptionRESTORE POINTpermetde revenir un point de retour cr au pralable avec lordre SQL CREATE RESTORE POINT les points de retour sont visiblesdanslavueV$RESTORE_POINT.LoptionENABLE TRIGGERSpermetdautoriserledclenchementdestriggersqui existentetquisontactuellementactifs pardfaut,ilsnesontpasdclenchs. Pourralisercetteopration,ilfaut :
q

avoirleprivilgeobjetFLASHBACKsurlatableouleprivilgesystmeFLASHBACK ANY TABLE dtenir les privilges objet SELECT, INSERT, et ALTER sur la table (ou les privilges systme ANY correspondants) queledplacementdelignessoitautorissurlatable(ROW MOVEMENT).

Exemple -- je supprime toutes les lignes dune table SQL> DELETE FROM diane.adherent; 20 lignes supprimes. SQL> COMMIT; Validation effectue. SQL> SELECT COUNT(*) FROM diane.adherent; COUNT(*) ---------0 -- 5 minutes plus tard, je maperoit de mon erreur ... SQL> FLASHBACK TABLE diane.adherent

ENI Editions - All rights reserved - Algeria Educ

- 5-

2 TO TIMESTAMP SYSTIMESTAMP - INTERVAL 5 MINUTE; FLASHBACK TABLE diane.adherent TO TIMESTAMP SYSTIMESTAMP - INTERVAL 5 MINUTE * ERROR at line 1: ORA-08189: opration Flashback impossible sur la table : le mouvement de ligne nest pas activ -- il faut autoriser le dplacement de lignes SQL> ALTER TABLE diane.adherent ENABLE ROW MOVEMENT; Table modifie. SQL> FLASHBACK TABLE diane.adherent 2 TO TIMESTAMP SYSTIMESTAMP - INTERVAL 5 MINUTE; Flashback terrmin. SQL> SELECT COUNT(*) FROM diane.adherent; COUNT(*) ---------20 -- cest cool ... FlashbackDrop Depuis la version 10, lorsquune table est supprime, elle ne lest pas compltement, sauf si vous utilisez loption PURGEdelordreSQLDROP TABLE elleestplacedansune"corbeille".Danslesgrandeslignes,unetablesupprime estenfaitrenommeparOracle,etlespaceassocinestpasrcuprimmdiatement(bienquilapparaissedansla vueDBA_FREE_SPACE) Oraclefaitlammechoseaveclesdpendancesdelobjet,notammentlesindex.Lespacede stockage des objets se trouvant dans la corbeille nest pas rutilis, sauf en cas de manque despace dans le tablespace. SiOracleabesoindallouerunenouvelleextensiondansuntablespace,etquilnyaitplussuffisammentdeplace, Oraclercupreralespacecorrespondantauxobjetsdelacorbeille,encommenantparlesobjetslesplusanciens (FIFO : FirstInFirstOut).Oracleralisecettercuprationavantdefairegrandirlefichierdedonnesdutablespace siceluicialapropritAUTOEXTEND. La "corbeille" se matrialise tout simplement par une table du dictionnaire de donnes qui peut tre interroge laidedesvuesUSER_RECYCLEBINetDBA_RECYCLEBIN,oulaidedelacommandeSQL*PlusSHOW RECYCLEBIN(interroge lavueUSER_ RECYCLEBIN). LescolonneslesplusintressantesdelavueDBA_RECYCLEBINsontlessuivantes : OWNER Nomdupropritairedelobjet. OBJECT_NAME Nomdelobjetdanslacorbeille. ORIGINAL_NAME Nomdoriginedelobjet. TYPE Typedelobjet(TABLE,INDEX,TRIGGER,etc.). TS_NAME Nomdutablespacedanslequellobjeteststock. CREATETIME Datedecrationdelobjet. DROPTIME

openmirrors.com

- 6-

ENI Editions - All rights reserved - Algeria Educ

Datedesuppressiondelobjet. CAN_UNDROP Indiquesilobjetpeuttresortidelacorbeille(YESouNO). CAN_PURGE Indiquesilobjetpeuttredfinitivementsupprim(YESouNO). SPACE Nombredeblocsutilissparlobjet. Encomplment,lesvuesDBA_INDEXESetDBA_TABLEScontiennentunecolonneDROPPEDindiquantsilatableoulindex estsupprim(YESouNO). Pour"annuler"lasuppressiondunetable,vouspouvezutiliserunevariantedelordreSQLFLASHBACK TABLE. Syntaxe FLASHBACK TABLE nom_table TO BEFORE DROP [RENAME TO nouveau_nom] ; Dans la commande FLASHBACK TABLE, vous pouvez utiliser le nom dorigine de lobjet ou le nom de lobjet dans la corbeille. Si plusieurs tables dans la corbeille ont le mme nom dorigine (table supprime, puis recre puis de nouveau supprime),etquevousutilisiezlenomdorigine,Oracleressortiradelacorbeilleladerniretablesupprimeportant cenom(LIFO : LastInFirstOut).Pourressortirspcifiquementuneversionplusancienne,vouspouvezutiliserlenom uniquegnrparOraclepourplacerlatabledanslacorbeille. Lorsquevoussortezunetabledelacorbeille,vouspouvezluiattribuerunnouveaunom,cequiestpratiquesiune tableportantlemmenomexistedansleschma.Lesobjetsassocissontgalementressortisdelacorbeille,mais ilsgardentlenomquilsavaientdanslacorbeille. Lespace utilis par les objets stocks dans la corbeille peut tre explicitement et dfinitivement rcupr grce lordreSQLPURGE. Syntaxe
q

Purgerunetableouunindex(aveclenomdorigineoulenomdanslacorbeille,etunprincipeFIFOsivous utilisezlenomdorigineetqueplusieursobjetsportentcenom)

PURGE { INDEX | TABLE } nom ;


q

Purgerlestablesetlesindexduntablespace,envouslimitantventuellementauxobjetsdunschma

PURGE TABLESPACE nom_tablespace [USER nom_utilisateur] ;


q

Purgertouteslestablesetlesindexdelutilisateurcourant

PURGE RECYCLEBIN ;
q

Purgertouteslestablesetlesindex

PURGE DBA_RECYCLEBIN ; Vouspouveznoterlesrestrictionssuivantes :


q

LestablessupprimesparunDROP TABLESPACEouunDROP USERnesontpasplacesdanslacorbeille. IlnyapasdecorbeillepourletablespaceSYSTEM. Il ny a pas de corbeille pour les tablespaces grs par le dictionnaire (uniquement pour les tablespaces grslocalement).

ENI Editions - All rights reserved - Algeria Educ

- 7-

Exemple -- je supprime la table SQL> DROP TABLE diane.adherent; Table supprime. -- elle est dans la corbeille (avec ces dpendances) SQL> SELECT original_name,object_name,type, 2 ts_name,can_undrop,can_purge 3 FROM dba_recyclebin WHERE owner=DIANE; ORIGINAL_NAME -------------ADHERENT$PK ADHERENT$UK01 NUMEROADHERENT ADHERENT OBJECT_NAME -----------------------------BIN$y3LFL/MFTs28v7JjGLBSjQ==$0 BIN$iDjv77eKRHGEDyAfQ+Hdnw==$0 BIN$sPGkld1PR3+w2PbWRdhz8A==$0 BIN$2tvUDS05RV+Rj2ogvU1aUg==$0 TYPE ------INDEX INDEX TRIGGER TABLE CAN_ CAN_ TS_NAME UNDROP PURGE ------- ----- ----INDX NO YES INDX NO YES NO NO DATA YES YES

-- il y a bien une table supprime SQL> SELECT owner,table_name,dropped FROM dba_tables 2 WHERE table_name=BIN$2tvUDS05RV+Rj2ogvU1aUg==$0; OWNER TABLE_NAME DRO ------------------------------ ------------------------------ --DIANE BIN$2tvUDS05RV+Rj2ogvU1aUg==$0 YES -- et un segment associ SQL> SELECT segment_name,blocks FROM dba_segments 2 WHERE segment_name=BIN$2tvUDS05RV+Rj2ogvU1aUg==$0; SEGMENT_NAME BLOCKS ------------------------------ ---------BIN$2tvUDS05RV+Rj2ogvU1aUg==$0 8 -- la table dans la corbeille peut tre interroge SQL> SELECT COUNT(*) FROM diane."BIN$2tvUDS05RV+Rj2ogvU1aUg==$0"; COUNT(*) ---------20 -- je ressors la table de la corbeille SQL> FLASHBACK TABLE diane.adherent TO BEFORE DROP; Flashback termin. -- cest tout bon SQL SELECT COUNT(*) FROM diane.adherent; COUNT(*) ---------20 -- il faut juste renommer les index (et les triggers) SQL> SELECT index_name FROM dba_indexes 2 WHERE owner=DIANE AND table_name=ADHERENT; INDEX_NAME -----------------------------BIN$y3LFL/MFTs28v7JjGLBSjQ==$0 BIN$iDjv77eKRHGEDyAfQ+Hdnw==$0 Unetablequiestdanslacorbeillepeuttreinterroge.

4.Niveaubasededonnes
a.Principes
LafonctionnalitdeFlashbackDatabasepermetderamenerlabasededonnesltatoelletaitunmoment
- 8 ENI Editions - All rights reserved - Algeria Educ

openmirrors.com

donn du pass. Cela quivaut une rcupration incomplte un instant donn, mais sans repartir dune sauvegarde, ce qui est beaucoup plus rapide. Pour pouvoir utiliser cette fonctionnalit, il faut faire fonctionner la basededonnesdansunmodeparticulier,lemodeFLASHBACK. LorsquelabasededonnesfonctionnedanslemodeFLASHBACK,ellegnredesfichiersjournauxsupplmentaires (flashback log), dans lesquels elle enregistre une copie des blocs modifis. Ces fichiers journaux sont obligatoirementstocksdanslazonedercuprationrapide(sousrpertoirenommflashback). La dure de conservation des informations dans le fichier journal flashback est dfinie par le paramtre dinitialisation DB_FLASHBACK_RETENTION_TARGET (en minutes, 1 440 par dfaut, soit un jour). Comme le nom du paramtrelindique,laduredeconservationindiqueestunobjectif.Silnyapassuffisammentdeplacedansla zonedercupration,Oraclerduiraladuredeconservation.Vousdevezdonc,lencore,dimensionneravecsoin lazonedercuprationrapide. Lors dune opration de flashback vers un instant T dans le pass, les blocs seront restaurs partir du fichier journal flashback, ltat o ils taient cet instant ou quelques instants avant ensuite, les fichiers de journalisationserontappliqus.Ceuxcidoiventdonctredisponiblesetlabasededonnesfonctionnergalement danslemodeARCHIVELOG. LafonctionnalitdeFlashbackDatabaseestdisponibleuniquementenEnterpriseEdition.

b.ActiverlemodeFLASHBACK
Pour >mettre la base de donnes dans le mode FLASHBACK, vous devez monter la base de donnes et excuter lordreSQLALTER DATABASE FLASHBACK ON : SQL> ... SQL> SQL> Base SHUTDOWN IMMEDIATE STARTUP MOUNT ALTER DATABASE FLASHBACK ON; de donnes modifie.

SQL> ALTER DATABASE OPEN; Base de donnes modifie. SQL> SELECT flashback_on FROM v$database; FLA --YES Parailleurs,leparamtreDB_FLASHBACK_RETENTION_TARGETpeuttremodifidynamiquementparunordreSQLALTER SYSTEM. LavueV$FLASHBACK_DATABASE_LOGdonnedesinformationssurlesjournauxflashback : OLDEST_FLASHBACK_SCN NumroSCNleplusanciendanslesjournauxflashback. OLDEST_FLASHBACK_TIME Date/heuredunumroSCNleplusancien. RETENTION_TARGET Duredeconservationobjectif,tellequedfinieparleparamtreDB_FLASHBACK_RETENTION_TARGET. FLASHBACK_SIZE Tailleactuelledesdonnesflashback. ESTIMATED_FLASHBACK_SIZE Tailleestimedesdonnesflashbackncessairepourladuredeconservationobjectifactuellementdfinie. LatailleESTIMATED_FLASHBACK_SIZEestestimesurlabasedelactivitdelabasededonnesdepuisquelemode

ENI Editions - All rights reserved - Algeria Educ

- 9-

FLASHBACKatactiv(ilfautattendreunpeu,avantquecettecolonnesoitrenseigne). Silafentredeflashbackactuelle,donneparlavaleurdelacolonneOLDEST_ FLASHBACK_TIME,estpluscourteque la dure objectif, cest que la zone de rcupration rapide est trop petite et quOracle ne peut pas conserver un historiquesuffisant(ouquelepassagedanslemodeFLASHBACKestrcent).Vousdevez,danscecas,augmenterle quotadespacealloulazonedercuprationrapide(paramtreDB_RECOVERY_ FILE_DEST_SIZE). Il est possible dexclure un tablespace du mode FLASHBACK, grce la clause FLASHBACK ON | OFF qui peut tre utiliselorsdelacrationoudelamodificationdutablespace(ONpardfaut).

c.Procderunflashbackdelabasededonnes
VouspouvezutiliserlordreSQL FLASHBACK DATABASEoulacommandeRMAN FLASHBACK DATABASEpourprocderune oprationflashbacksurlabasededonnes. Syntaxe
q

OrdreSQL

FLASHBACK DATABASE TO [BEFORE] { TIMESTAMP | SCN } expression ; FLASHBACK DATABASE TO BEFORE RESETLOGS ; FLASHBACK DATABASE TO RESTORE POINT nom ;
q

CommandeRMAN

FLASHBACK DATABASE TO [BEFORE] { TIME | SCN | SEQUENCE } [=] expression ; FLASHBACK DATABASE TO BEFORE RESETLOGS ; FLASHBACK DATABASE TO RESTORE POINT nom ; DanslecasdelacommandeRMAN,ilestpossibledeprciserunnumrodesquencedefichierdejournalisation commepointderetour labasededonnesestalors,ramenejusquau dernier numro SCN enregistr dans le fichierdejournalisation(ouleprcdentsiloptionBEFOREestprsente). Danslesdeuxcas,labasededonnesdoittremonte(pasouverte). Ensuite,labasededonnesdoittreouvertedanslemodeRESETLOGS : cestunenouvelleincarnationdelabase dedonnes. ExempledansSQL*Plus SQL> SHUTDOWN IMMEDIATE ... SQL> STARTUP MOUNT ... SQL> FLASHBACK DATABASE TO TIMESTAMP SYSDATE-1/24; Flashback termin. SQL> ALTER DATABASE OPEN RESETLOGS; Base de donnes modifie. Sivoussouhaitezvrifierquevoustrebienrevenuaumomentsouhait,vouspouvezouvrirlabasededonnes enmodelectureseule : ALTER DATABASE OPEN READ ONLY Silersultatestsatisfaisant,vouspouvezarrterlinstance,laredmarrerenmontantlabasededonnes,puis ouvrir la base de donnes avec loption RESETLOGS. Si le rsultat nest pas satisfaisant, vous pouvez raliser un nouveauFLASHBACK DATABASEpourremonterunpeuplusloinenarrireouun RECOVER DATABASE UNTIL pour aller lgrementenavant. Si un tablespace a t exclu du mode FLASHBACK, vous devez le passer OFFLINE avant de procder au flashback.Ensuite,vousdevezsupprimerletablespaceoulercuprerparunmoyentraditionnel.

openmirrors.com

- 10 -

ENI Editions - All rights reserved - Algeria Educ

UtiliserleDatabaseControl
1.Configurerlesparamtresdercupration
Surlapagedaccueil,cliquezsurlelienDisponibilitpuissurlelienParamtresdercuprationpouraccderla pagedeconfigurationdesparamtresdercupration. Cettepagecomporteplusieurssectionsquipermettent :
q

Derglerladuredercuprationmaximaledelinstance(paramtreFAST_START_ MTTR_TARGET) :

Deconfigurerlarchivagedesfichiersdejournalisation :

ENI Editions - All rights reserved - Algeria Educ

- 1-

Deconfigurerlazonedercuprationrapideetlajournalisationpourlafonctiondeflashbackdelabasede donnes :

2.Configurerlesparamtresdesauvegarde
Surlapagedaccueil,cliquezsurlelienDisponibilitpuissurlelien Paramtresdesauvegardepouraccderla pagedeconfigurationdesparamtresdesauvegarde :

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

Longlet Priphrique permet de configurer les priphriques (canaux) par dfaut. Le cadreParamtre de disque permetnotammentdeconfigurerlemplacementpardfautdessauvegardes(lazonedercuprationrapidesirien dautre nest indiqu) et le type de sauvegarde par dfaut : jeu de sauvegarde, jeu de sauvegarde compress ou copieimage.

LongletEnsembledesauvegardepermetdeconfigurerlesparamtrespardfautdesjeuxdesauvegarde,dontla taillemaximaledunlmentdesauvegarde. LongletRglepermet :


q

De configurer la sauvegarde automatique du fichier de contrle et du fichier de paramtres serveur, et dactiverlesuividesblocsmodifispourlessauvegardesincrmentales :

ENI Editions - All rights reserved - Algeria Educ

- 3-

Deconfigurerlapolitiquedeconservationdessauvegardesetdesuppressiondesfichiersdejournalisation archivs :

3.Sauvegardes
a.Introduction

openmirrors.com

- 4-

ENI Editions - All rights reserved - Algeria Educ

Surlapagedaccueil,cliquezsurlelienDisponibilitpuissurlelienProgrammerlasauvegardepouraccderla pagedegestiondessauvegardes :

Cettepageproposedeuxpossibilits :
q

ProgrammerunesauvegardeproposeparOracle Programmerunesauvegardepersonnalise.

b.StratgiedesauvegardeproposeparOracle

Lorsque vous choisissez loption Sauvegarde propose par Oracle, la premire page permet de slectionner la destinationdessauvegardes.

ENI Editions - All rights reserved - Algeria Educ

- 5-

Surlapagesuivante,Oraclevousindiquelastratgiepropose cellecipeutvarierenfonctiondelaconfiguration de la base de donnes. La stratgie usuelle propose par Oracle en Enterprise Edition est base sur des sauvegardesincrmentales :
q

sauvegardeparcopieimagedelabasededonneslapremirefois sauvegardeincrmentaledeniveau1ensuite application rgulire des sauvegardes incrmentales la copie image pour la faire progresser dans le temps.

Lapagesuivantepermetdeprogrammerlasauvegarde.

openmirrors.com

- 6-

ENI Editions - All rights reserved - Algeria Educ

La dernire page donne un rcapitulatif de la sauvegarde et montre le script RMAN correspondant. Vous pouvez cliquersurleboutonSoumettreletravailsilastratgieproposeparOraclevousconvient.

c.Stratgiedesauvegardepersonnalise
Lorsque vous choisissez loption Sauvegarde personnalise, la premire page permet de slectionner le type dobjet sauvegarder (totalit de la base, tablespaces, etc.) et de saisir les informations didentification et de connexionlhte.

En fonction du type dobjet slectionn, la page suivante permet de prciser la slection. Si vous slectionnez lintgralitdelabasededonnes,vousarrivezdirectementsurlapagedechoixdesoptions.

ENI Editions - All rights reserved - Algeria Educ

- 7-

LapageOptionspermetdeprciserplusieursoptionssurlasauvegarde :
q

sauvegardecomplteousauvegardeincrmentale sauvegardeenligne(baseouverte)ouhorsligne(baseferme) sauvegardeounondesfichiersdejournalisationarchivs,etc.

openmirrors.com

- 8-

ENI Editions - All rights reserved - Algeria Educ

La page suivante permet de dsigner lemplacement de la sauvegarde et de modifier les paramtres de la sauvegarde(boutonRemplacerlesparamtresencours),ceciuniquementpourlasauvegardeencours.

Lapagesuivantepermetdeprogrammerlasauvegarde(immdiatementouultrieurement,rptition,etc.).

La dernire page donne un rcapitulatif de la sauvegarde. Vous pouvez cliquer sur le bouton Modifier le script RMAN pour voir le script RMAN correspondant, et au besoin le modifier. Vous pouvez cliquer sur le bouton Soumettreletravailpoursoumettrecenouveautravaillordonnanceur(scheduler).

d.Supervisiondessauvegardes
Derniresauvegarde Sur la page daccueil, dans le cadre Haute disponibilit, vous pouvez voir directement la date et lheure de la derniresauvegarde :

ENI Editions - All rights reserved - Algeria Educ

- 9-

Travaux Surlapagedaccueil,cliquezsurlelienTravauxdanslecadreLiensassocispourafficherlalistedestravaux :

Sauvegardes Surlapagedaccueil,cliquezsurlelienDisponibilitpuissurlelienGrerlessauvegardesencourspouraccder lapagedegestiondessauvegardes :

Cettepagepermetderechercherdessauvegardesetderaliserdiffrentesactions :
q

cataloguerdesfichiersnonconnusdurfrentielRMAN(boutonEcriredesfichierssupplmentairesdans lecatalogue) vrifierlacohrenceentrelerfrentielRMANetlesfichiersphysiques(boutonToutcontrevrifier) supprimerlessauvegardesobsoltes(boutonSupprimertousleslmentsobsoltes) supprimer tous les objets ayant le statut EXPIRED (bouton Supprimer tous les lments arrivs expiration).

openmirrors.com

- 10 -

ENI Editions - All rights reserved - Algeria Educ

4.Rcupration
a.Dmarrerunercupration
Si la base de donnes nest pas ouverte, vous accdez lassistant rcupration, grce au bouton Effectuer la rcuprationquiestpropossurlapagedonnantlestatutdelabasededonnes :

Aprs saisie des informations didentification et de connexion lhte puis la base de donnes (connexion SYSDBA),vousaccdezlapagedercupration(voircidessous). Silabasededonnesestouverte,vousaccdezlassistantrcuprationencliquantsurlelienDisponibilitpuis surlelienEffectuerlarcupration. Siunchecsurunfichieratdtect,Oracledclencheunealertecritiquedanslacatgorie"Echecdedonnes". CesalertespeuventtrevisualisesdanslecadreAlertesdelapagedaccueil :

b.Lassistantdercupration

ENI Editions - All rights reserved - Algeria Educ

- 11 -

Les informations affiches en haut de la page dpendent de la nature du problme. Sur lexemple cidessus, un chec a t dtect mais la base de donnes est ouverte. Si la base de donnes est ferme, laffichage le mentionne.Exemple :

Sivousouvrezcettepagealorsquilnyaaucunproblme,aucuneinformationnestafficheenhaut. Normalement, en cas de problme, des informations de diagnostic provenant du Data Recovery Advisor sont affiches et le bouton Conseiller et rcuprer est actif vous pouvez cliquer ce bouton pour effectuer la rcuprationlaideduDataRecoveryAdvisor(cf. ExempledercuprationavecleDataRecoveryAdvisor).Cestla mthodelaplussimplepoureffectuerlarcupration. SileproblmenestpasconsidrcommeunchecparleDataRecoveryAdvisor,desinformationsdediagnosticsont quandmmeaffichesenhautdelapage,maisleboutonConseilleretrcuprerestinactif :

Dans ce cas, en cliquant dans lordre sur les liens affichs, le Database Control vous guide pour effectuer la rcupration(cf.Exempledercuprationordonneparlutilisateur). SivoussouhaitezeffectuerunercuprationalorsquaucunproblmenatdtectparOracle(parexemplepour revenir avant un ordre SQL malencontreux), ou si vous souhaitez rsoudre un problme avec votre propre stratgie,vouspouvezdmarrerunercuprationdite"ordonneparlutilisateur" :

openmirrors.com

- 12 -

ENI Editions - All rights reserved - Algeria Educ

Pourcela,vousdevezslectionnerltendue de la rcupration et un type dopration,puiscliquersurlebouton Rcuprer(cf.Exempledercuprationordonneparlutilisateur). Avant de dmarrer la rcupration avec une des mthodes prsentes cidessus, vrifiez que des informationsdidentificationetdeconnexionlhtesontcorrectementsaisiesdanslebasdelapage.

c.ExempledercuprationavecleDataRecoveryAdvisor
VouspouvezaccderlapageduDataRecoveryAdvisordediffrentesmanires :
q

encliquantsurleboutonConseilleretrcuprerdelapagedercupration encliquantsurlelienDataRecoveryAdvisorducentredeconseil en cliquant sur le bouton Lancer Recovery Advisor des pages de rsultat de lexcution des outils de vrification(cf.ChapitreLesoutilsdadministrationsectionDiagnostiquerlesproblmes).

CettepageafficheleschecsdtectsparleDataRecoveryAdvisor.Pardfaut,seulsleschecsdestatutOPENet de priorit CRITICAL ou HIGH sont affichs vous pouvez utiliser le petit formulaire de recherche pour filtrer les checsaffichs. UnclicsurleboutonConseilpermetdafficherlesconseilsdersolutionpourleschecsslectionnsdanslaliste.

ENI Editions - All rights reserved - Algeria Educ

- 13 -

Leconseillercommenceparafficherlesactionsmanuellesquipeuventtreralisespoureffectuerlarcupration :

PourafficherlesactionsdercuprationautomatiqueidentifiesparleData Recovery Advisor,vouspouvezcliquer surleboutonPoursuivreaveclesconseils.

PourexcuterlesactionsdercuprationautomatiqueidentifiesparleDataRecoveryAdvisor,vouspouvezcliquer surleboutonContinuer.

CliquezsurleboutonSoumettreletravaildercuprationpourlancerlarcupration. Silabasededonnesestouverte,leDataRecoveryAdvisorlanceletravaildercuprationetvousrendlamain :

openmirrors.com

- 14 -

ENI Editions - All rights reserved - Algeria Educ

VouspouvezretrouvercetravailencliquantsurlelienTravaux(cadreLiensassocissitudanslebasdelapage daccueildechaqueonglet). Silabasededonnesestferme,leDataRecoveryAdvisorattendqueletravailseterminepuisaffichelersultat :

cestade,deuxcasseprsententengnral : Labasededonnestaitmonte(pasdeproblmeaveclesfichiersdecontrle) Silarcuprationarussi,unboutonOuvrirlabasededonnesestprsentetilneresteplusqucliquersurce boutonpourouvrirlabasededonnes. Labasededonnesntaitpasmonte(problmeaveclesfichiersdecontrle) Silarcuprationarussi,labasededonnesestmontemaisleDataRecoveryAdvisornesaitpasencoresielle peuttreouverte leboutonOuvrirlabasededonnesnestpasprsent. Sivouscliquezsurlebouton OK,vousrevenezsurlapagedestatutdelabasededonnesetvouspouvezde nouveaucliquersurleboutonEffectuerlarcuprationpourrevenirsurlapagedercupration. Silnyaplusdchecdefichier,lapageseprsenteainsi :

Pourouvrirlabasededonnes,cliquezsurlelienInstancedebasededonnespourrevenirlapagedestatut, puissurleboutonDmarrer(cf.sectionDmarrageduchapitreDmarrageetarrt).
ENI Editions - All rights reserved - Algeria Educ - 15 -

Silyadeschecsdefichier,lapageseprsenteainsietunenouvelleoprationdercuprationestncessaire :

ParfoislesinformationsduDataRecoveryAdvisornesaffichentpascorrectement cliquersurlelienStatut en cours rsout, gnralement, ce problme. Vous pouvez aussi cliquer sur le lien Echecs de base de donnespourafficherlapageduDataRecoveryAdvisor.

d.Exempledercuprationordonneparlutilisateur
Pour illustrer le fonctionnement de lassistant, nous allons prendre le cas dune rcupration dun fichier de donnes :

CliquezsurleboutonRcuprer.

La page suivante permet de slectionner les fichiers de donnes rcuprer (bouton Ajouter) les fichiers endommagsdtectsparOraclesontproposspardfautdanslaliste.

openmirrors.com

- 16 -

ENI Editions - All rights reserved - Algeria Educ

La page suivante permet dindiquer sil faut restaurer les fichiers de donnes leur emplacement dorigine ou ailleurs.

La dernire page donne un rcapitulatif de la rcupration. Vous pouvez cliquer sur le bouton Modifier le script RMAN pour voir le script RMAN correspondant, et au besoin le modifier. Vous pouvez cliquer sur le bouton Soumettrepourlancerlopration.Loprationnestpaslancesouslaformeduntravaildtach vousrestezsur lapagetoutletempsdelopration,sansaucuneinformationsursondegrdavancement. Lorsqueloprationesttermine,lerapportRMANestaffich.

e.Flashback
Basededonnes Lassistantvouspermetdefaireunercuprationdetoutelabasededonnesjusqulheureencoursoujusqu unpointantrieurdansletemps(basemonteuniquement) :

ENI Editions - All rights reserved - Algeria Educ

- 17 -

Dans ce cas, si la journalisation flashback est active sur votre base de donnes, Oracle vous indique quil peut utiliserlafonctionnalitdeflashbackdelabasededonnes,silheurederetourdemandeestcompatibleavecles journaux.CliquezsurleboutonRcupreretlaissezvousguider. Table Parmilestypesdobjetsdunercupration,vouspouvezchoisir Tables :

Danscecas,Oraclevousproposedefaireunflashbacksoitpourramenerlatabledansuntatantrieur,soitpour annulerlasuppressiondunetable.Lencore,cliquezsurleboutonRcupreretlaissezvousguider. Ligne Lesfonctionnalitsdeflashbackdeniveauligne,maisaussideniveautable,sontaccessiblespartirdelapagede gestiondestables,vialesmenusInterrogationdeversionsFlashbacketTableFlashback :

openmirrors.com

- 18 -

ENI Editions - All rights reserved - Algeria Educ

Vuedensemble
Les outils Data Pump, Export, Import et SQL*Loader sont des outils trs puissants comportant de nombreuses fonctionnalits unouvrageentierpourraitleurtreconsacr. Lobjectifdecechapitreestdoncdeprsenterlesprincipesdefonctionnementgnrauxdecesdiffrentsoutils,de donnerquelquesconseilssurleurutilisation,illustrsparquelquesexemplesclassiquesdutilisation.Pourapprofondir lesujet,vouspouvezconsulterladocumentationOracleDatabaseUtilities. Oracleproposetroisutilitairespermettantdadministrerlesdonnesdansunebase :
q

DataPumpExport : permetdexporterdansunfichierbinairepropritaireOracletoutouunepartiedesobjets (structureet/oudonnes)dunebasededonnes Data Pump Import : permet dimporter dans une base de donnes tout ou une partie des objets (structure et/oudonnes)pralablementexportsparloutilDataPumpExport SQL*Loader : permet de charger dans des tables dune base de donnes, des donnes stockes dans des fichiersASCII.

Les outils Data Pump sont apparus en version 10. Dans les versions prcdentes, il existait deux outils quivalents simplementappelsExportetImport.Cesoutilsexistenttoujourspourdesraisonsdecompatibilitascendantes,mais lesoutilsDataPumpoffrentbienplusdefonctionnalits(voirlesremarquesciaprs). Pourutilisercesoutils,labasededonnesdoittreouverte. TouscesoutilspeuventtreutilissparlintermdiaireduDatabaseControl. Les outils Data Pump (ou les anciens outils dexport et dimport) servent essentiellement changer des objets (structureet/oudonnes)entredeuxbasesdedonnesOracle,quipeuventtresurdesplatesformesdiffrentes,et quipeuventavoirdesversionsdiffrentes.LesoutilsDataPumpprsententdenombreuxavantagesparrapportaux anciensoutilsdexportetdimport :
q

plusrapides possibilitdarrteruntravailDataPump,puisderedmarrer possibilitdedtachersasessionduntravailDataPump,puisdelarattacherultrieurement possibilitdefairedestransfertsdirects,traverslerseau,entredeuxbasesdedonnes plusdefinessedanslaslectiondesobjetsexporterouimporter possibilitdavoiruneestimationdelespacencessairelorsdunexport possibilitdeparallliseruneopration(EnterpriseEditionuniquement).

Data Pump nest pas compatible avec les outils dexport et dimport des versions prcdentes : un fichier export laide de loutil dexport dune version prcdente ne peut pas tre lu avec loutil dimport Data Pump (et rciproquement). Pour changer des donnes entre une base Oracle version 10 ou 11 et une base dune version prcdente,ilfaututiliserlesoutilsdexportetdimporttraditionnels. Danscechapitre,nousneprsenteronspaslesanciensoutilsdexportetdimport.Parcontre,nousprsenteronsles outilsDataPump. LoutilSQL*LoadersertessentiellementchargerdesdonnesprovenantduneautreapplicationnonOracle. ParmilesfonctionnalitsdeSQL*Loader,lessuivantessontparticulirementintressantes :
q

Ilyapeudelimitationsurleformatdesdonnesdufichierexterne(largeurfixe,avecsparateur,etc.) Plusieursfichiersexternespeuventtrechargsdanslammesession Plusieurstablespeuventtrechargesdanslammesession

ENI Editions - All rights reserved - Algeria Educ

- 1-

Descritrespeuventtredfinispourliminercertainesdonnesdufichierexterne LesdonnespeuventtretransformesavecdesfonctionsSQLpendantlechargement Desnumrossquentielsuniquespeuventtregnrspourcertainescolonnes.

OracleneproposepasrellementdoutilpourextrairedesdonnesdansunfichierASCII.Ilfautdvelopperdesscripts SQL(avecdesrequtesSELECTetlacommandeSPOOLpourlcrituredansunfichier)oudesprogrammesenPL/SQL. Nousendonneronsdesexemplesenfindechapitre. Depuislaversion10,OracleproposeaussilepackageDBMS_FILE_TRANSFERquipermetdeffectuerdescopies defichiersbinaires,soitlocalement,soitentrebasesdedonnes.Cepackagepeuttreintressantpourdes procduresdetransfertdedonnes.VoirladocumentationPL/SQLPackagesandTypesReference.

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

Linstance
1.LaSGA
a.Vuedensemble
LaSGA(SystemGlobalArea)estunezonedemmoirepartageparlesdiffrentsprocessusdelinstance. LaSGAestalloueaudmarragedelinstanceetlibrelorsdelarrt de linstance.Elleestdimensionneparun ensembledeparamtresdfinisdanslefichierdeparamtres. Depuis la version 9 dOracle, la SGA est redimensionnable chaud. Depuis la version 10 dOracle, certaines structuresdelaSGApeuventtregresautomatiquement(cf.sectionLagestiondelammoiredanscechapitre). LataillemaximaledelaSGAestlimiteparleparamtreSGA_MAX_SIZE. LaSGAcomportelesstructuressuivantes :
q

DatabaseBufferCache:cachededonnes RedoLogBuffer:mmoiretamponpourlenregistrementdesmodificationsapporteslabasededonnes SharedPool:zonedepartagedesrequtesetdudictionnaireOracle JavaPool:mmoireutiliseparlamachinevirtuelleJavaintgre Large Pool : zone de mmoire optionnelle utilise par diffrents processus dans des configurations particulires Streams Pool : zone de mmoire utilise par la fonctionnalit Streams (fonctionnalit qui permet de faire circulerdesinformationsentreprocessus) ResultCache(nouveauenversion11) :cachepourlersultatdesrequtesSQLoudesfonctionsPL/SQL.

LaSGAcontientaussiunestructureappel"SGAfixe"quicontientdesinformationssurltatdelabasededonnes etdelinstance,etsurlesverrous.CetteSGAfixenestpasdimensionneparleDBA satailleestfaible(quelques centainesdeKo). DansOracleEnterpriseManager,enfranais,Oracleutiliselaterminologiesuivante : DatabaseBufferCache:Cachedetampon SharedPool:Poolpartag JavaPool:Pooljava LargePool:ZonedemmoireLARGEPOOL Gnralement,pluslaSGAestgrande,meilleuressontlesperformances...sousrservequelaSGAtienne enmmoirephysique!

b.LaSharedPool
LaSharedPoolestcomposeprincipalementdedeuxstructures :
q

leLibraryCache leDictionaryCache.

LeLibraryCachecontientdesinformationssurlesordresSQLetPL/SQLlesplusrcemmentexcuts :

ENI Editions - All rights reserved - Algeria Educ

- 1-

letextedelordre saversionanalyse leplandexcution.

LeDictionaryCachecontientlesinformationsdudictionnairededonnesOraclelesplusrcemmentutilises :
q

descriptiondestables droitsdesutilisateurs etc.

LaSharedPoolestglobalementdimensionneparleparamtredinitialisationSHARED_ POOL_SIZE.Larpartitionentre le Library Cache et le Dictionary Cache est assure par Oracle. La taille de Shared Pool est typiquement comprise entrequelquesdizainesdeMoetquelquescentainesdeMo. LeLibraryCache Lorsquune requte doit tre excute, Oracle doit dabord lanalyser (tape de parse) pour vrifier quelle est syntaxiquement correcte (FROM aprs le SELECT) et smantiquement correcte (les tables et colonnes existent et lutilisateuraledroitdyaccder),puisdterminerleplandexcutiondelarequte(diffrentestapespermettant detraiterlarequte). Commecettetapedanalyseprendunpeudetempsetquelersultatconsommedelammoire,Oraclecherche partager les requtes entre les utilisateurs de manire gagner du temps et conomiser de la mmoire si un utilisateurexcuteunerequtedjexcuteaupralable(parluiouparunautreutilisateur). Lorsquunerequteestexcutepourlapremirefois,Oraclestockelersultatdelanalysedansle LibraryCache puisexcutelarequte.Lorsquelammerequteestdenouveauexcuteplustard,Oracleestenmesuredela retrouverdansleLibraryCacheetdelexcuterdirectementsansrefairelanalyse(outoutdumoinsenfaisantune analysepluslgre).Danslapratique,leLibraryCacheayantunetaillefinie,OracleutiliseunalgorithmeLRU(Least Recently Used) pour grer le cache : en cas de manque de place,Oracle supprime du cache la requte utilise la moinsrcemment. Pour Oracle, deux requtes sont les mmes si elles sont identiques au caractre prs (y compris majuscules/minuscules,espaces,etc.).Lesrequtessuivantessonttoutesdiffrenteslesunesdesautres : select select SELECT SELECT * * * * from from FROM FROM client client client client where where WHERE WHERE id id id id = = = = 1; 1; 1; 2;

Lorsquelesrequtessontgnresparunapplicatif,ilnyagnralementpasdeproblmesurlesmajusculeset lesminusculesousurlesespaceslorsquunutilisateurdemandeuneficheclientdanslapplication,larequtesous jacenteesttoujourscritedelammemanire...saufpeuttrepourdesvaleursutilisesdanslaclauseWHERE(voir lesdeuxderniersexemplescidessus). Dans ce cas, lidentit parfaite peut tre obtenue en utilisant des variables bind dans le texte de la requte. Exemple : SELECT * FROM client WHERE id = :v; Lutilisationdevariablesbinddansletextedelarequtelorsdudveloppementpermetdamliorerlepartagedes requtes et peut amliorer de manire importante les performances dun systme accd simultanment par un grandnombredutilisateurs. Les principaux middleware utiliss pour interfacer Oracle et les outils de dveloppement permettent dutiliser les variablesbind :OLEDB,OracleObjectsForOLE(OO4O),JDBC,BibliothqueOracledePHP,etc. Le paramtre dinitialisation CURSOR_SHARING permet ventuellement dindiquer Oracle dans quelles conditions deux requtes peuvent partager le mme curseur. Voir la documentation Oracle Database Reference.

LeDictionaryCache

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

CommenousleverronsaupointLedictionnairededonnestoutOracle...estdansOracle,enloccurrencedansle dictionnairededonnes. Dans le dictionnaire de donnes, Oracle stocke toutes les informations relatives la base de donnes : liste des tablesetdescolonnes,listedesutilisateursetdeleursdroits,informationssurlestockage,etc. Lors de la phase danalyse dune requte, Oracle utilise le dictionnaire de donnes pour vrifier que les objets demandsexistent,quelutilisateuraledroitdyaccder,pourdterminerosontstockslesobjets,etc. Pourgarantirunbonniveaudeperformance,Oraclecherchemaintenirtoutoupartiedudictionnairededonnes enmmoire,dansleDictionaryCache. LeDictionaryCacheestaussiappelRowCachedansladocumentation.

c.LeDatabaseBufferCache
LeDatabaseBufferCachecontientlesblocsdedonneslesplusrcemmentutiliss :
q

blocsdetables blocsdindex blocsdesegmentsdannulation,contenantlaversionprcdentedesdonnesencoursdemodification.

Les blocs sont lus en mmoire par les processus serveur et crits dans les fichiers de donnes par le ou les processusdarrireplanDBWn. Toutemodification(INSERT,UPDATE,DELETE)dunblocseffectueenmmoireetlcrituresurdisqueestdiffre. LeDatabaseBufferCacheestuncachededonnesquijouelemmerlequelaSharedPoolmaispourlesdonnes. Lesdonnesdelabasededonnesnesontaccessibles,enlectureouenmisejour,quaprsavoirtcharges dansleDatabaseBufferCache. Danslapratique,leDatabaseBufferCacheayantunetaillefinie,OracleutiliseunalgorithmeLRU(LeastRecentlyUsed) pour grer le cache : en cas de manque de place, Oracle supprime du cache les donnes utilises le moins rcemment. LeDatabaseBufferCacheestdimensionnparlesparamtressuivants :
s

DB_CACHE_SIZE :tailleducachepourlatailledeblocpardfaut(poolDEFAULT) DB_nK_CACHE_SIZE :tailleducachepourlesblocsdenKo(nvalant2,4,8,16ou32).

Danslecasolabasededonnesutilisedestablespacesayantdestaillesdeblocsdiffrentesdelatailledebloc standard, il faut dimensionner dautres pools dans le Database Buffer Cache, pour les blocs en question cette oprationseffectuegrceauxparamtresDB_nK_CACHE_SIZE. Danscertainesconfigurationsplusavances,ilestpossibleaussidedfinirdeuxautrespoolsauseinduDatabase BufferCache :
s

LepoolKEEPdestinstockerdesdonnesquidoiventresterlepluslongtempspossibleenmmoire.Cepoolest dimensionnparleparamtreDB_KEEP_ CACHE_SIZE. LepoolRECYCLEdestinstockerdesdonnesquinontpasvocationresterlongtempsenmmoire.Cepoolest dimensionnparleparamtreDB_RECYCLE_ CACHE_SIZE.

Avant Oracle9i, la taille du Database Buffer Cache tait dfinie en nombres de blocs (dune taille dfinie par DB_BLOCK_SIZE) grce au paramtre DB_BLOCK_BUFFERS. Ce paramtre existe toujours pour des raisons de compatibilitascendantemaisilestdprci. Gnralement,augmenterlatailleduDatabaseBufferCacheamliorelesperformances.

d.LeRedoLogBuffer

ENI Editions - All rights reserved - Algeria Educ

- 3-

LeRedoLogBufferstockelesinformationssurlesmodificationsapporteslabasededonnes,avantleurcriture dansunfichierdejournalisation. Cebufferestutilisdemaniresquentielle(lesmodificationsdeplusieurstransactionssemlangent)etcirculaire (quandilestplein,ilrepartaudbut...aprsavoirtcritsurdisquedansunfichierdejournalisation). Pourchaquemodification,uneentreredo(redoentry)estcritedanslebuffer. Une entre redo est compose dun ensemble de vecteurs (change vector) qui dcrivent chacun une modification atomique dun bloc (table, index ou segment dannulation). La nouvelle valeur, mais aussi lancienne, sont ainsi enregistresdanslefichierdejournalisation.Ainsi,lestables,lesindex,maisaussilessegmentsdannulation,sont "protgs" par les fichiers de journalisation. Lors dune rcupration, les fichiers de journalisation contiennent les informationsncessairespourrefaireunetransactionperdue(notionderollforward)ouannulerunetransactionen coursaumomentdelincident(notionderollback). LeRedoLogBufferestdimensionnparleparamtreLOG_BUFFER.

e.AutrespoolsdelaSGA
LaJavaPool LaJavaPoolestdimensionneparleparamtreJAVA_POOL_SIZE(24Mopardfaut).Ceparamtrepeuttremis0 si la machine virtuelle Java intgre Oracle nest pas utilise. Vous pouvez consulter la documentation Oracle Database Java Developers Guide pour les considrations sur la mmoire utilise par la machine virtuelle Java intgre. LaLargePool LaLargePoolestnotammentutilisedanslaconfigurationserveurpartag(voirplusloin).Elleestdimensionnepar leparamtreLARGE_POOL_SIZE.Lavaleurpardfautduparamtreestdrivedautresparamtres. LaStreamsPool La Streams Poolest dimensionne par le paramtre STREAMS_POOL_SIZE (0 par dfaut). Vous pouvez consulter la documentation Oracle Streams Concepts and Administration pour en savoir plus sur le fonctionnement de la fonctionnalitStreams. LeResultCache La taille maximum duResult Cache est dimensionne par dfaut par Oracle en fonction de la quantit de mmoire totale disponible pour la SGA et du mode de gestion de la mmoire actuellement utilis (voir plus loin). En cas de besoin, cette taille maximum peut tre dfinie par le paramtre RESULT_CACHE_MAX_SIZE. Vous pouvez consulter la documentation Oracle Database Performance Tuning Guide pour obtenir plus dinformations sur lutilisation du ResultCache.

f.Lanotiondegranule
UngranuleestunequantitdemmoirequipeuttrealloueunestructuredelaSGA.Latailledugranuledpend delatailletotaledelaSGA :
q

4MosilatailletotaledelaSGAestinfrieureougale1Go 8 Mo (plateforme Windows) ou 16 Mo (autres platesformes) si la taille totale de la SGA est strictement suprieure1Go.

Lallocation de mmoire aux structures de la SGA seffectue en nombre entier de granules (avec un arrondi automatiqueaugranulesuprieursilavaleurdunparamtrenestpasunmultipledelatailledugranule).

2.Lesprocessusdarrireplan
a.Introduction
Les processus darrireplan ont chacun un rle bien prcis dans le fonctionnement de linstance. La plupart des processus darrireplan sont lancs au dmarrage de linstance et arrts lors de larrt de linstance. Certains processuspeuventtrelancsetarrtsaucoursdufonctionnementdelinstance.
- 4 ENI Editions - All rights reserved - Algeria Educ

openmirrors.com

Il existe, en tout, une trentaine de processus darrireplan diffrents, mais certains processus darrireplan peuvent tre lancs en plusieurs exemplaires. Chaque processus darrireplan a un nom de 4 caractres, ventuellementdelaformeABCn,ntantunnumroouunelettrevariablepourlesprocessusmultiples. Lesprincipauxprocessusdarrireplanpouruneinstancestandardsontlessuivants : DBWn LGWR CKPT SMON ARCn CJQn PMON

b.DBWn
Les processus darrireplan DBWn (Database Writer) sont chargs dcrire les blocs modifis du Database Buffer Cachedanslesfichiersdedonnes. Gnralement, une instance a un seul processus Database Writer dsign par DBW0. Sur les systmes multiprocesseursetmultidisquesayantuneforteactivitdemisejour,ilestpossible,voireconseill,dedmarrer plusieursprocessusDatabaseWriter(jusqu20). LesprocessusDBWnralisentdescrituresmultiblocs,endiffrparrapportauxmodificationsenmmoire. Lcritureestdclencheparundesvnementssuivants :
q

Unprocessusserveurnetrouvepasdeplacedanslecache. Priodiquement,pourfaireavancerlepointdereprise(positiondanslesfichiersdejournalisationpartirde laquellelarcuprationdelinstanceestsusceptiblededmarrer).

Ilestdoncimportantdenoterquil nyapasdesynchronisationentrelamodificationdunblocenmmoire,mme valide(COMMIT),etlcrituresurdisquedesblocsenquestion. uninstantdonn,ilestdoncpossibledesetrouverdanslasituationsuivante:


q

Unfichierdedonnespeutnepascontenirlesdonnesmodifiesdetransactionsvalides(COMMITes). Inversement,sile DatabaseBufferCacheestpetit,silavalidationtarde,sidautresprocessusserveursont besoin de place dans le cache, des donnes modifies de transactions non valides peuvent tre crites danslesfichiersdedonnes.

Que se passetilencasdeplantagedelinstance cet instant prcis ? Nous verrons dans la suite que, pour les deux situations prcdentes, les informations ncessaires sont prsentes dans les fichiers de journalisation et permettentlinstance,lorsquelleredmarre,deremettrelesfichiersdedonnesentat(cestla"rcuprationde linstance"djvoqueprcdemment).

c.LGWR
LeprocessusdarrireplanLGWR(LogWriter)estchargdcrireleRedoLogBufferdanslefichierdejournalisation courant. LGRWcritsquentiellementdanslesfichiersdejournalisation. Lcritureestdclencheparundesvnementssuivants :
q

Unetransactionestvalide(COMMIT). LeRedoLogBufferestautiersplein. Database Writer sapprte crire des blocs modifis de transactions non valides dans les fichiers de donnes.

ENI Editions - All rights reserved - Algeria Educ

- 5-

Undlaiestdpass(3secondes).

LcrituredanslesfichiersdejournalisationduRedoLogBufferestlaseulechosequiseproduitlorsdelavalidation (COMMIT)dunetransaction.Cetteoprationdcrituretantnormalementrapide,lavalidationestrapide(notionde fastcommit). Inversement, si DBWn crit dans les fichiers de donnes des blocs modifis de transactions pas encore valides (COMMITes),leRedoLogBufferestcritdanslesfichiersdejournalisation. Nous avons vu prcdemment que leRedo Log Buffer contient les anciennes valeurs des donnes modifies (dans desblocsdesegmentdannulation)etlesnouvellesvaleurs(dansdesblocsdetablesetdindex). Encasdarrtanormaldelinstance,lefaitquunfichierdedonnespuissenepascontenirlesdonnesmodifiesde transactionsvalidesoucontenirdesdonnesmodifiesdetransactionsnonvalides,neposepasdeproblme: grceauprocessusdcriture dcrit cidessus, les fichiers de journalisation contiennent forcment les informations ncessairespourrefairelestransactionsvalides(mettredanslesfichiersdedonneslesdonnesmodifiesdes transactionsvalides)oudfairelesmodificationsnonvalides(remettredanslesfichiersdedonneslesanciennes donnes pour les modifications non valides). Cette rcupration de linstance aprs un arrt anormal est un processusautomatiquequinerequiertaucuneintervention. Lorsdelavalidationdunetransaction,OracleaffecteunnumroSCN(SystemChangeNumber)latransaction.Ce numroSCNestenregistrdanslefichierdejournalisationetdautresendroits.Cenumroestfondamentalpour lacapacitdusystmesavoiroilenest.

d.CKPT
Priodiquement,touslesblocsmodifisduDatabase Buffer Cachesontcritsdanslesfichiersdedonnes :cestle mcanisme de synchronisation (checkpoint). Par ce biais, les fichiers de donnes et les fichiers de contrle sont renduscohrents(mmenumroSCN).Celapermetdegarantirquelesblocsmodifisenmmoiresontbiencrits danslesfichiersdedonnes. Cemcanismedfinitaussiunpointdereprisedanslesfichiersdejournalisation(correspondantunnumroSCN) : cettepositioncorrespondlamodificationdebloclaplusanciennequinapasencoretcritedansunfichierde donnes.Encasdarrtanormaldelinstance,cepointmarqueledbutdesdonnesutiliserpourlarcupration delinstance. Unesynchronisationsedclenchenotammentlorsdunbasculementdefichierdejournalisation.Celaprovoquedans ce cas, lcriture dans les fichiers de donnes des blocs modifis (non encore crits) relatifs aux informations prsentesdanslefichierdejournalisation. Le processus darrireplan LGWR sinterdit de commencer crire dans un fichier de journalisation dont la synchronisation nest pas termine. En effet, tant que cette synchronisation nest pas termine, le fichier de journalisationcontientdesinformationsquiseraientncessairespourunercuprationdelinstanceencasdarrt anormal. Une synchronisation se produit aussi lors de larrt de la base de donnes et lors de la mise hors ligne dun tablespace.Avantcesoprationsde"fermeture",lesblocsmodifisquisetrouventencoreenmmoiresontcrits danslesfichiersdedonnes. LeprocessusdarrireplanCKPT(Checkpoint)asimplementpourrledenregistrerlepointdereprisedanslentte desfichiersdedonnesetdanslefichierdecontrle.

e.SMON
Le processus darrireplanSMON(SystemMonitor)estprincipalementchargdefairelarcuprationdelinstance aprsunarrtanormal. Ilestaussichargdelibrerlessegmentstemporairesinutilissetdecompacterlespacecontigudisponibledans les tablespaces grs par le dictionnaire (voir le chapitre Gestion des tablespaces et des fichiers de donnes). Au coursdelarcuprationdelinstance,SMONeffectuedeuxoprations :
q

Un rollforward pour appliquer aux fichiers de donnes les modifications non enregistres des transactions valides. Puis unroll back pour enlever des fichiers de donnes les modifications enregistres des transactions non valides.

f.PMON

openmirrors.com

- 6-

ENI Editions - All rights reserved - Algeria Educ

Le processus darrireplan PMON (Process Monitor) est principalement charg du nettoyage lors du plantage dun processusutilisateur :
q

Annulation(ROLLBACK)delatransaction. Librationdesverrousetdesressources.

PMONestcapablededtecterlessituationsounprocessusutilisateurquiaouvertunesessionsurleserveurnest plus"prsent"etnapasfermlasession.Lacausedelanon"prsence"duprocessusutilisateurestvariable:fin anormaledelapplicationsurlepostedelutilisateur,coupurerseau,etc. Danstouslescas,PMONsechargedunettoyageeneffectuantuneannulation(ROLLBACK)delatransaction,cette annulationlibrantnotammentlesverrouspossparlatransaction.Dupointdevuedelintgritdesdonnesdans labasededonnes,ladisparitionduprocessusutilisateurneposepasdeproblme.

g.CJQn
LesprocessusdarrireplanCJQn(JobQueue)sontchargsdexcuterpriodiquementlestchesprogrammessur lesystme. Unprocessuscoordinateur(CJQ0)surveillesilyadestravauxexcuter.Sicestlecas,ildmarreunprocessus esclave(J000J999)quivasechargerdexcuterletravail. Des travaux (traitements PL/SQL par exemple) peuvent tre programms laide du package DBMS_SCHEDULERoudesfonctionsdeprogrammationdOracleEnterpriseManager.

h.ARCn
LesprocessusdarrireplanARCn(Archiver)sontchargsdelarchivagedesfichiersdejournalisationpleins. LefonctionnementdecesprocessusseraprsentplusendtaildanslechapitreSauvegardeetrcupration.

3.Lesprocessusserveurs
Lesprocessusserveurssontchargsdetraiterlesrequtesdesutilisateurs,etnotammentdechargerlesdonnes ncessairesdansleDatabaseBufferCache. Leprocessusserveurcommunique(localementoutraverslerseau)avecunprocessusutilisateurcorrespondant lapplicationdelutilisateur. Dans la configuration par dfaut, Oracle lance un processus serveur ddi pour chaque utilisateur (dedicated server configuration).Ceprocessusnetraitequelesrequtesdelutilisateurenquestion. Si besoin, Oracle peut tre configur en serveur partag (shared server configuration) de manire avoir des processusserveurspartagsparplusieursprocessusutilisateurs. Dans une configuration serveur partag, un petit nombre de processus serveurs sont partags entre les diffrents processus utilisateurs et peuvent traiter indiffremment les requtes de nimporte quel processus utilisateur. Cette configurationpermetdelimiterlenombredeprocessuslancssurleserveuretdoptimiserlutilisationdesressources systmes. Cette configuration est une configuration avance qui nest pas couverte dans cet ouvrage. La mise en uvredecetteconfigurationestprsentedansladocumentationOracleDatabaseAdministratorsGuide. Danslesdeuxcas,lacommunicationentreleprocessusutilisateuretleprocessusserveurestlocale,silapplication estlancesurleserveurouseffectuetraverslerseau(grcelacoucheOracleNet),silapplicationestlancesur unpostedurseau.

4.LaPGA
LaPGA(ProgramGlobalArea)estlammoireprivedesdiffrentsprocessus. Pourunprocessusserveur,laPGAcontient :
q

unezonedetravailSQL(SQLworkarea)allouedynamiquementpourcertainesoprations(triparexemple)

ENI Editions - All rights reserved - Algeria Educ

- 7-

desinformationssurlasession desinformationssurletraitementdesrequtesdelasession lesvariablesdesession.

LaPGAtotale,allouetouslesprocessusserveurs,estappelePGAagrge(aggregatedPGA)ouPGAdelinstance (instancePGA). Dansuneconfigurationserveurpartag,unepartiedelaPGAestenfaitstockedanslaSGA,danslaLargePool,ou, dfaut,danslaSharedPool. Dans une configuration serveur partag, ce nest pas forcment le mme processus serveur qui va traiter deux requtes successives du mme processus utilisateur. Les informations relatives cette session utilisateur doivent donctreaccessibleslensembledesprocessusserveurscestlaraisonpourlaquelle,danscetteconfiguration,une partie de la PGA des processus serveurs est en fait stocke dans la SGA lorsquun processus serveur traite la requte dun processus utilisateur, il "recharge" le contexte du processus utilisateur partir de la SGA. En configurationserveurpartag,ilfautdoncaugmenterlatailledelaSGA(deprfrenceenprvoyantuneLargePool), maislesbesoinsglobauxenmmoiresontpeuprsidentiques(puisquelesprocessusserveursutilisentenpropre moinsdemmoire). Historiquement,latailledelazonedetravailSQLestcontrleparplusieursparamtres:SORT_AREA_SIZE(pourles tris), HASH_AREA_SIZE (jointure par hachage), BITMAP_ MERGE_AREA_SIZE (fusion de bitmap dindex bitmap) et CREATE_BITMAP_AREA_SIZE(crationdindexbitmap).Cesdiffrentsparamtressontcomplexesrglercarlesbesoins peuventvarierdunesessionlautre. Depuis la version 9, un nouveau mcanisme permet de grer automatiquement et globalement la PGA agrge des processusserveurs.llsuffitdedfinirlaquantitdemmoiretotalequipeuttreutiliseparlaPGAagrgeetlaisser Oraclerpartircettemmoireentrelesdiffrentsprocessusenfonctiondesbesoins.Aveccemodedefonctionnement, touslesparamtresprsentscidessussontignors. La taille de la PGA agrge des processus serveurs est dfinie par le paramtre PGA_ AGGREGATE_TARGET (voir la sectionCrationdelabasededonneslamaindanslechapitreCrationdunenouvellebasededonnes). Enversion11,laPGApeutaussitregreautomatiquementauseindelammoiretotaledelinstance(cf.sectionLa gestiondelammoiredanscechapitre).

5.Lagestiondelammoire
a.Vuedensemble
LagestiondelammoirevoluechaqueversionafindeproposerauDBAdespossibilitsderglageautomatique deplusenpluspousses :

Version
Oracle9i

SGA
SGAdynamique LeDBAdoitdimensionner individuellementlesdiffrentes composantesdelaSGA,mais cescomposantessont redimensionnableschaud.

PGA
GestionautomatiquedelaPGA LeDBAalloueunequantitde mmoiretotalepourlaPGA agrgedesprocessusserveurs etOraclerpartitcettemmoire automatiquemententreles diffrentsprocessusenfonction desbesoins.

Oracle10g

Gestionautomatiquedela mmoirepartage LeDBAalloueunequantitde mmoiretotalepourlaSGAet Oraclerpartitcettemmoire automatiquemententreles diffrentescomposantesdela SGAenfonctiondesbesoins.

Oracle11g

Gestionautomatiquedela mmoire LeDBAalloueunequantitde

openmirrors.com

- 8-

ENI Editions - All rights reserved - Algeria Educ

mmoiretotalepourlinstanceet Oraclerpartitcettemmoire automatiquemententrelaSGA (etcesdiffrentescomposantes) etlaPGAenfonctiondes besoins.

Pourquelagestionautomatiquedelammoireoudelammoirepartagesoitoprationnelle,ilfautquele paramtreSTATISTICS_LEVELsoitTYPICAL(savaleurpardfaut)ouALL. LesprincipesdelagestionautomatiquedelaPGAonttprsentsdanslasectionLaPGAdanscechapitre.

b.Lagestionautomatiquedelammoirepartage
Lorsquelagestionautomatiquedelammoirepartageestactive(AutomaticSharedMemoryManagementASMM), lescomposantessuivantesdelaSGAsontdimensionnesautomatiquementparOracle,enfonctiondeleursbesoins respectifs,etadaptesdynamiquementenfonctiondelachargedusystme :
q

DatabaseBufferCache(paramtreDB_CACHE_SIZE), SharedPool(paramtreSHARED_POOL_SIZE), LargePool(paramtreLARGE_POOL_SIZE), JavaPool(paramtreJAVA_POOL_SIZE), StreamsPool(paramtreSTREAMS_POOL_SIZE), SGAfixe(pasdeparamtre).

LesautrescomposantesdelaSGAnesontpasprisesenchargeparlagestionautomatiquedelammoirepartage etilconvientdelesdimensionnerlamainsibesoin :
q

RedoLogBuffer(paramtreLOG_BUFFER), Autres pools du Database DB_RECYCLE_CACHE_SIZE). Buffer Cache (paramtres DB_nK_CACHE_SIZE, DB_KEEP_CACHE_SIZE,

Pour activer la gestion automatique de la mmoire partage, il suffit de dfinir le paramtre SGA_TARGET. Ce paramtrespcifielaquantitdemmoiretotaleallouelaSGA,pasuniquementlaquantitdemmoirealloue aux composantes prises en charge par la gestion automatique la mmoire alloue manuellement aux autres composantes est dduite deSGA_TARGET. Si besoin, la taille de la SGA peut tre modifie chaud, en modifiant la valeurduparamtreSGA_TARGET,danslalimitedeSGA_MAX_SIZE. Dans cette configuration, si les paramtresDB_CACHE_SIZE, SHARED_POOL_SIZE, LARGE_POOL_SIZE, JAVA_POOL_SIZE et STREAMS_POOL_SIZEnesontpasspcifis,ilssontmiszroparOracleetlatailleducomposantcorrespondantest automatiquement et dynamiquement ajuste en interne par Oracle. Si ces paramtres sont spcifis, ils imposent unetailleminimumaucomposant. Si SGA_TARGET est gal zro (rglage automatique dsactiv), les paramtres DB_CACHE_SIZE, SHARED_POOL_SIZE, JAVA_POOL_SIZEetSTREAMS_POOL_SIZEdoiventtredfinismanuellement silsnelesontpas,unevaleurpardfaut leurestaffecte.NoubliezpasnonplusquelammoireestalloueauxcomposantesdelaSGAennombreentierde granules.Latailledungranuleestde4MosiSGA_MAX_SIZEestinfrieurougal1Goetde16Mo(8Mosurplate formeWindows)siSGA_MAX_SIZEestsuprieur1Go.Encasdebesoin,Oraclearronditlavaleurdesparamtresau granulesuprieur. LinstanceutilisegnralementungranulepourleRedoLogBufferetlaSGAfixe. Exemple1 : SGA_MAX_SIZE = 900M SGA_TARGET = 800M LOG_BUFFER = 524288 DB_16K_CACHE_SIZE = 64M

ENI Editions - All rights reserved - Algeria Educ

- 9-

DB_CACHE_SIZE = 256M Surcetexemple,lagestionautomatiquedelammoirepartageestactive.Un poolde64Moestalloudansle Database BufferCache pour les blocs de 16 Ko et un minimum de 256 Mo est demand pour le pool standard du DatabaseBufferCache. LatailledelaSGAest800Mo(SGA_TARGET). LammoiredisponiblepourlerglageautomatiqueestgalSGA_TARGETDB_16K_CACHE_SIZEungranule(SGAfixe et Redo Log Buffer) soit 800 64 4 = 732. Cette quantit de mmoire est rpartie automatiquement et dynamiquement par Oracle entre les paramtres DB_CACHE_SIZE, SHARED_POOL_SIZE, LARGE_POOL_ SIZE, JAVA_POOL_SIZEetSTREAMS_POOL_SIZE,enfonctiondesbesoins,maisavecunminimumgarantide256Mopourlepool standardduDatabaseBufferCache. Lammoirelibreestde100Mo(SGA_MAX_SIZESGA_TARGET) encasdebesoinSGA_TARGETpeuttreaugmentpour tirerpartidecettemmoiredisponible. Exemple2 : SGA_MAX_SIZE = 900M SGA_TARGET = 0 LOG_BUFFER = 524288 DB_CACHE_SIZE = 512M SHARED_POOL_SIZE = 64M Sur cet exemple, la gestion automatique de la mmoire partage nest pas active. Le Database Buffer Cache est dimensionn512MoetlaSharedPool64Mo.LaJavaPooletlaLargePoolsontdimensionnespardfaut. La taille de la SGA est gale DB_CACHE_SIZE + SHARED_POOL_SIZE + JAVA_POOL_SIZE (dfaut) + LARGE_POOL_SIZE (dfaut)+ungranule(SGAfixeetRedoLogBuffer)=512+64+24+0+4=604Mo La mmoire libre est de 296 Mo (SGA_MAX_SIZE taille de la SGA) en cas de besoin les diffrents paramtres pourronttreaugmentspourtirerpartidecettemmoiredisponible.

c.Lagestionautomatiquedelammoiredelinstance
Enversion10,laSGAetlaPGApeuventtregresautomatiquementparOracle,maiscestdelaresponsabilitdu DBA de rpartir la mmoire disponible pour Oracle entre les deux structures (SGA_TARGET pour la SGA et PGA_AGGREGATE_TARGETpourlaPGA). La version 11 dOracle introduit la gestion automatique de la mmoire (Automatic Memory Management AMM) qui tendlafonctionnalitdegestionautomatiquedelammoirepartageapparueenversion10.Cettefonctionnalit estsupporteuniquementsurlesplatesformessuivantes:Linux,Solaris,Windows,HPUXetAIX.Sivoustentez dactivercettefonctionnalitsuruneplateformenonsupporte,vousobtiendrezlemessagederreursuivant :ORA00845:MEMORY_TARGET non pris en charge sur ce systme. Lorsque la gestion automatique de la mmoire est active, la mmoire alloue linstance est rpartie automatiquement par Oracle entre la SGA (avec ces diffrentes composantes) et la PGA. Cette rpartition est adaptedynamiquementenfonctiondelachargedusystmeetdesbesoinsdesdiffrentesstructures. Pouractiverlagestionautomatiquedelammoire,ilsuffitdedfinirleparamtreMEMORY_TARGET.Ceparamtrefixe latailledelammoireallouelinstance.Encomplment,ilestpossiblededfinirlataillemaximumdelammoire utilisableparlinstanceavecleparamtre<MEMORY_MAX_TARGET. Sibesoin,latailledelammoireallouelinstancepeuttremodifiechaud,enmodifiantlavaleurduparamtre MEMORY_TARGET,danslalimitedeMEMORY_MAX_TARGET. LaSGAestgreselonlesmmesprincipesquaveclagestionautomatiquedelammoirepartage.Ainsi,comme aveclagestionautomatiquedelammoirepartage,leRedoLogBufferetlesautrespoolsduDatabaseBufferCache nesontpasprisenchargeparlagestionautomatiqueetilconvientdelesdimensionnerlamainsibesoin. Normalement,lorsquelagestionautomatiquedelammoireestutilise,touslesautresparamtresrelatifsune composantedemmoiregreautomatiquementdoiventtremiszroousupprims. Nanmoins,silesparamtresSGA_TARGET et/ouPGA_AGGREGATE_TARGETsontdfinis,ilsimposentunetailleminimum respectivementpourlaSGAetlaPGA.Demme,commedanslagestionautomatiquedelammoirepartage,siun des paramtres DB_CACHE_SIZE, SHARED_POOL_SIZE, LARGE_POOL_SIZE, JAVA_POOL_SIZE ou STREAMS_POOL_SIZE est spcifi,ilimposeunetailleminimumaucomposant. linverse,sileparamtreSGA_MAX_SIZEestdfini,ilimposeunetaillemaximumpourlaSGA. Exemple : MEMORY_MAX_TARGET = 900M MEMORY_TARGET = 800M

openmirrors.com

- 10 -

ENI Editions - All rights reserved - Algeria Educ

SGA_MAX_SIZE = 500M SGA_TARGET = 300M DB_CACHE_SIZE = 128M DB_16K_CACHE_SIZE = 64M PGA_AGGREGATE_TARGET = 64M Surcetexemple,lagestionautomatiquedelammoireestactive. Lammoireallouelinstanceestde800Mo(MEMORY_TARGET). La mmoire disponible pour le rglage automatique est gale MEMORY_TARGET DB_16K_CACHE_SIZE un granule (SGA fixe etRedo Log Buffer) soit 800 64 4 = 732. Cette quantit de mmoire est rpartie automatiquement et dynamiquement par Oracle entre la PGA et les composantes de la SGA gres automatiquement, en fonction des besoins,maisavecunminimumgarantide128Mo(DB_CACHE_SIZE)pourlepoolstandardduDatabaseBufferCache, 64 Mo (PGA_AGGREGATE_TARGET) pour la PGA, et une SGA comprise entre 300 Mo (SGA_TARGET) et 500 Mo (SGA_MAX_SIZE). La mmoire libre est de 100 Mo (MEMORY_MAX_SIZE MEMORY_TARGET) en cas de besoin MEMORY_TARGET peut tre augmentpourtirerpartidecettemmoiredisponible. Cetexempleestdonndansunbutpdagogique.Danslapratique,silagestionautomatiquedelammoire est utilise, il est conseill de ne spcifier aucun paramtre relatif une composante de mmoire gre automatiquementautrequeMEMORY_TARGETetMEMORY_MAX_TARGET.

d.Gestionmanuelle:conseilsurlarpartitionSGA/PGA
Si vous choisissez de grer manuellement la rpartition de la mmoire entre la SGA et la PGA, Oracle donne les indicationssuivantes :
q

Pourlessystmestransactionnels(OLTP)
q

SGA:environ80%delammoiredisponiblepourlinstance PGA:environ20%delammoiredisponiblepourlinstance

Pourlessystmesdcisionnels(DSS)
q

SGA:entre50%et30%delammoiredisponiblepourlinstance PGA:entre50%et70%delammoiredisponiblepourlinstance

Cetterecommandationestunpointdedpart.Ilestncessairedesurveillerensuitelefonctionnementdelinstance pouraffinercesvaleurs. Enrglegnrale,lesrequtesexcutesparlessystmestransactionnelseffectuentdespetitstris lesprocessus serveursnontdoncpasbesoindunegrossezonedetravail.PrivilgierlaSGAestalorsopportun. linverse,lesrequtesdessystmesdcisionnelseffectuentdegrostris lesprocessusserveursontdoncbesoin dunegrossezonedetravail.PrivilgierlaPGAestalorsopportun. CesdirectivespeuventtreutilisespourdimensionnerlaSGAetlaPGAsurunsystmedontlammoirephysique estimpose. Supposonsparexemplequelesystmedisposede1Godemmoirephysique.Nouspouvonsfaireleraisonnement suivantpourunsystmetransactionnel :
q

Rserver20%delammoirepourlesystmedexploitation(plussidautresapplicationssexcutentsurle serveur),soit204Moarrondis224Mo(unpeudemarge). Ilrestedoncenviron800ModisponiblespourOracle. Attribuer80%decettemmoirelaSGAet20%laPGA,cequipermetdespcifierSGA_MAX_SIZE = 640Met PGA_AGGREGATE_TARGET = 160M. Si nous dcidons dutiliser la fonctionnalit de gestion automatique de la mmoire partage, et de laisser

ENI Editions - All rights reserved - Algeria Educ

- 11 -

Oracle faire compltement, nous pouvons aussi spcifier SGA_TARGET = 640M (autant utiliser toute la mmoire).
q

Si nous souhaitons nousmme rgler la taille des diffrentes structures de la SGA, nous pouvons par exemplespcifierSHARED_POOL_SIZE = 128M,JAVA_POOL_SIZE = 0(pasbesoindeJavaPool),LARGE_POOL_SIZE = 0(pasbesoindeLargePool),rserverungranulepourlaSGAfixeetleRedoLogBufferetallouertoutele resteauDatabaseBufferCache,soitDB_CACHE_SIZE = 508M.

6.Lefichierdeparamtres
Au dmarrage, linstance lit un fichier de paramtres qui contient des paramtres dinitialisation. Les paramtres dinitialisationpermettentnotammentlinstancedallouerlammoiresouhaiteauxdiffrentesstructuresdelaSGA, etdetrouverlenometlemplacementdesfichiersdecontrledelabasededonnesouvrir.Cefichierestgrpar leDBA. Lors du dmarrage de linstance, le fichier de paramtres est lu ce fichier contient notamment un paramtre qui donne lemplacement des fichiers de contrle de la base de donnes ouvrir, ce qui permet ensuite linstance douvrirlesfichiersdecontrleenquestionetdytrouverlenometlemplacementdesautresfichiersdelabasede donnes. Historiquement, Oracle utilise un fichier de paramtres de type texte pour le dmarrage de linstance de base de donnes.Cefichierdoitsetrouversurla(les)machine(s)quidmarre(nt)labasededonnes,cequipeutposerdes problmespourledmarragepartirdurseau,etengendrerdesduplicationsdufichiersurplusieursmachineset desproblmesdesynchronisationencasdemisejour. Depuislaversion9,ilestpossibledutiliserunfichierdeparamtresbinairestocksurleserveur(serverparameterfile =SPFILE).Cefichierpeuttreconsidrcommeunesortederfrentielcentralisdesparamtresdinitialisation,qui liminelancessitdedupliquerlefichierdeparamtressurplusieursmachines. Les modifications de paramtres effectues dynamiquement pendant le fonctionnement de linstance peuvent aussi persisterdanscefichierdeparamtresserveur. Le fichier de paramtres serveur est un fichier binaire qui ne peut pas tre consult ou modifi avec un diteur de textedautresmoyensserontutilisspourcela. Il ne faut jamais modifier un fichier de paramtres serveur avec un diteur de texte, au risque de le corrompre,voiredeprovoquerunarrtdelinstance. Nousverronsquelefichierdeparamtresserveurestcrpartirdunfichierdeparamtrestexte. Dansunfichierdeparamtrestexte,lesparamtressontspcifissouslaformenom_ paramtre = valeur.Tousles paramtressontoptionnelsetontunevaleurpardfaut.Descommentairespeuventtreinclusetcommencentparle caractre#.Lavaleurpeuttrespcifieentredesguillemetsdoublessiellecontientdescaractresspciaux(gal, espace,etc.).Lesvaleursmultiplespeuventtrespcifiesentreparenthses,sparespardesvirgules. Exemple : db_name = hermes # nom de la base de donnes # fichiers de contrle de la base control_files = ("f:\oradata\HERMES\control01.ctl", "g:\oradata\HERMES\control02.ctl")

7.Infrastructurepourlagestionautomatique
Depuislaversion10,Oraclecomportebeaucoupdefonctionnalitsquifacilitentladministrationdelabasededonnes etdanscertainscas,lautomatise. Cesnouvellesfonctionnalitsreposentsuruneinfrastructurequenousallonsdcrirebrivementici ilnesteneffet pasncessairedeconnatrecetteinfrastructuredansledtailpourpouvoirtirerpartidesnouvellesfonctionnalits. Denouveauxprocessusdarrireplansontchargsdecollecterenmmoiredesstatistiquessurlefonctionnementdu systme. Toutes les 60 minutes (valeur modifiable), ces statistiques sont dverses dans le rfrentiel AWR (AutomaticWorkloadRepository),quisematrialiseparunensembledetablesdansletablespaceSYSAUX.Pardfaut, cesstatistiquessontconserves8jours. chaque fois quune collecte est dverse dans le rfrentiel AWR, ADDM (Automatic Database Diagnostic Monitor) effectueundiagnosticdesperformancesdusystme,dtectelesventuelsproblmesetproposedessolutions.Le rsultat de lanalyse ADDM est stock dans le rfrentiel et peut tre consult dans Enterprise Manager Database Control.

openmirrors.com

- 12 -

ENI Editions - All rights reserved - Algeria Educ

Encomplment,plusieursconseillerssontdisponiblespouravoirdesrecommandationssurloptimisationdesrequtes SQL,lindexation, la gestion de la mmoire, etc. Ces conseillers exploitent, eux aussi, les donnes stockes dans le rfrentielAWR.

ENI Editions - All rights reserved - Algeria Educ

- 13 -

DataPump
1.Prsentation
a.Architecture
Data Pump est un utilitaire serveur qui peut tre utilis pour dplacer des donnes et/ou des mtadonnes (dfinitions)entredesbasesOracle. DataPumpcomportetroislments :
q

unpackagePL/SQLDBMS_DATAPUMP unpackagePL/SQLDBMS_METADATA deuxoutilsclientslignedecommandeexpdp(export)etimpdp(import).

LesoutilsclientsexpdpetimpdpserventdinterfaceaveclepackageDBMS_DATAPUMP,quiest,enquelquesorte,lAPI (ApplicationProgrammingInterface)deDataPump.Cepackageestcompltementdocument,cequipermetdutiliser directement les fonctionnalits Data Pump dans un programme. Data Pump peut aussi tre utilis partir du DatabaseControl. LesoprationsproprementditesdexportetdimportsonteffectuesparlepackageDBMS_DATAPUMPetdonc,surle serveur Oracle. Cela inclut notamment la lecture et/ou lcriture des fichiers : les fichiers gnrs lors dunexport sontcritssurleserveuretlesfichierschargslorsdunimportsontlussurleserveur.Laccsauxfichierssurle serveur seffectue grce des objets DIRECTORY unobjet DIRECTORY est un alias vers un rpertoire du systme dexploitation.CesobjetsDIRECTORYdoiventtrecrsparleDBA(cf.LobjetDIRECTORY). LorsquuntravailDataPumpestcr,Oraclecrediffrentesstructurespourgrerlopration,parmilesquelles :
q

unetabledite"matre"dansleschmadelutilisateurquicreletravail(cettetableportelemmenomque letravail) unprocessusdecontrlematre(nommDMnn)quicontrlelexcutiondutravail.

Latable"matre"contientdiffrentesinformationssurletravail,utilisesnotammentpourredmarrerletravail.La table"matre"estsupprimelorsqueletravailseterminenormalement,oulorsqueletravailestsupprimavecla commande KILL_JOB (voir plus loin) en cas de besoin, cette table peut tre directement supprime la main, laidedunordreSQLDROP TABLE

b.Lesmodesdexportoudimport
DataPumpproposecinqniveaux(modes)pourlesoprationsdexportetdimport :
q

Complet : totalitdelabasededonnes Schma : unouplusieursschmas Table : uneouplusieurstables Tablespace : touteslestablesstockesdansunouplusieurstablespaces Tablespacetransportable : permetletransportdetablespacesentredeuxbasesdedonnes.

Parlasuite,nousverronsquepourchaquemode,ilestpossibledeprcisertrsfinementlecontenudelexportou delimport,enfiltrantlesobjetset/oulesdonnes.

c.Lesprivilgesncessaires
ENI Editions - All rights reserved - Algeria Educ - 1-

openmirrors.com

Aucunprivilgeparticuliernestrequispourexporterdesobjetsdesonschma,ouimporterdanssonschmades objetspralablementexportsdesonschma. Par contre, pour exporter des objets dun autre schma, il faut avoir le rleEXP_FULL_DATABASE. De mme, pour importerdansunautreschma,oupourimporterdanssonschmadesobjetsenprovenancedunautreschma,il fautavoirlerleIMP_FULL_DATABASE.CesrlessontattribusauDBA.

d.LobjetDIRECTORY
UnobjetDIRECTORYestunaliasversunrpertoiredusystmedexploitation.Cetobjetestutilisparbeaucoupde fonctionnalitsduserveurOraclequiontbesoindaccderdesfichiersdusystmedexploitationhte. Syntaxepourlacration/modification CREATE[ OR REPLACE ] DIRECTORY nom_directory AS chemin ; Syntaxepourlasuppression DROP DIRECTORY nom_directory ; LesprivilgessystmesCREATE ANY DIRECTORYetDROP ANY DIRECTORYsontrequispourcreretsupprimerunobjet DIRECTORY Syntaxepourlattributiondedroitssurcetobjet GRANT privilge [,] ON DIRECTORY nom_directory TO utilisateur [,] ; LesprivilgesobjetspossiblessontREADpourlaccsenlectureetWRITEpourlaccsencriture. LavueDBA_DIRECTORIESpermetdelistertouslesobjetsDIRECTORYquiexistentdanslabasededonnes.

2.Utilisationdesoutilslignesdecommande
Lesoutilslignesdecommandeexpdpet<$I[]impdp>impdppeuventtreutilissdetroisfaons :
q

enpassantlesparamtresdutravailralisersurlalignedecommande enutilisantunfichierdeparamtrescontenantlesparamtresdutravailaraliser eninteractif.

Syntaxe : expdp connexion param res t impdp connexion param res t connexionestunechanedeconnexionhabituelle(nom,motdepasse,nomdeservicerseau). IlestdconseilldutiliseruneconnexionAS SYSDBA

paramtresestunelistedeparamtres.Lesparamtrespeuventtreregroupsdansunfichierdeparamtres,dont lenomestindiqusurlalignedecommandegrceauparamtrePARFILELesparamtressontprsentsplusloin. Exemples expdp expdp expdp expdp system/az#78@hermes DIRECTORY=dir_exp FULL=y DUMPFILE=exp.dmp system/az#78@hermes PARFILE=exp_param.txt JOB_NAME=exp_full system/az#78@hermes ATTACH=exp_job HELP=y

Lutilisationeninteractifpeuttreactivededeuxmanires :

- 2-

ENI Editions - All rights reserved - Algeria Educ

en tapant les touches [Ctrl] C pendant le droulement dune opration lance partir de la ligne de commandeoulaidedunfichierdeparamtres enattachantsasessionuntravailencoursdexcutionouarrt(paramtreATTACH).

Lorsquevousentrezdanslemodeinteractifetquuntravailestcours,laffichagelcrandelavancementsarrte (maisletravailcontinueenarrireplan). Enmodeinteractif,vousdisposezdeplusieurscommandesquipermettentdarrterletravail,deleredmarrer,dele supprimer,etc. : CONTINUE_CLIENT Redmarrelaffichagedelavancementsurleterminal. EXIT_CLIENT Quitteloutil(maisletravailcontinu,silnapastarrt). KILL_JOB Supprimeletravail. START_JOB Redmarreletravail. STOP_JOB[=IMMEDIATE] Arrteletravailmaisnelesupprimepas(ilpeuttrerelancparlacommandeSTART_JOB).Sansoption,latcheen courssetermine loptionIMMEDIATEpermetdarrterletravailimmdiatement. Ilexistedautrescommandes.Voirladocumentation"OracleDatabaseUtilities". LavueDBA_DATAPUMP_JOBSpermetdesuperviserlestravauxDataPumpencoursdanslabasededonnes.

3.Paramtresdelexportetdelimport
DataPumpproposeungrandnombredeparamtres.Danscechapitre,nousneprsentonsquelesparamtresles plussouventutilisspourlesoprationsusuellesdexport et dimport.Reportezvousladocumentation"Oracle DatabaseUtilities"pouravoirlalistedetouslesparamtres.

a.Paramtrescommunslexportetlimport
ATTACH[=[schma.]nom_travail] Ce paramtre permet dattacher sa session un travail existant. Les rles EXP_FULL_DATABASE ou IMP_FULL_DATABASEsontncessairespoursattacheruntravaildunautreschma.Siaucunnomnestspcifi,la sessionsattacheautravailencoursduschmadelutilisateur,silnyenaquun.Lorsqueceparamtreestutilis, aucunautreparamtrenepeuttrespcifi. CONTENT=ALL | DATA_ONLY | METADATA_ONLY} Ceparamtrepermetdedfinirlecontenudelexportoudelimport(voirciaprs). DIRECTORY=objet_directory CeparamtrepermetdedfinirlenomdelobjetDIRECTORY,correspondantaurpertoirepardfautdanslequelles fichiers vont tre crits ou lus (DATA_PUMP_DIR par dfaut). Cet objet DIRECTORY est cr lors de la cration de la basededonnesetilpeuttreutilisparleDBA.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

DUMPFILE=nom_fichier Ceparamtrepermetdedfinirlenomdufichierutilispourlexportoulimport.Lorsdelexport,silefichierexiste dj, une erreur est retourne. Il existe une syntaxe volue qui permet de spcifier plusieurs fichiers, pour parallliserlexportsurplusieursprocessuset/ourpartirlexportsurplusieursfichiersdontlatailleestlimite. EXCLUDE=type_objet[:filtre] [, ...] Ceparamtrepermetdexcluredesobjetsdelexportoudelimport(voirplusloin). FULL={y | n Siceparamtreestgaly,unexportouunimportdeniveaucompletestralis. INCLUDE=object_type[:name_clause] [, ...] Ceparamtrepermetdincluredesobjetsdanslexportoulexport(voirplusloin). JOB_NAME=nom_travail Ceparamtrepermetdedonnerunnomautravail.Encasdabsence,unnomestgnrparlesystme(dutype SYS_<opration>_<mode>_<NN>). LOGFILE=nom_fichier Ce paramtre permet de dfinir le nom du fichier journal. Un fichier journal est toujours gnr (export.log ou import.log,pardfaut)saufsileparamtreNOLOGFILE=yestspcifi. NETWORK_LINK=nom_database_link Ce paramtre permet de spcifier le nom dun lien de base de donnes (databaselink) utiliser pour lopration. Dans le cas dun export, les donnes sont extraites de la base de donnes distante, et un fichier dexport est gnrsurlesystmelocal.Danslecasdunimport,lesdonnessontextraitesdelabasededonnesdistanteet importesdirectementdanslabasededonnes"locale"(cellelaquelleloutilimpdpestconnect). NOLOGFILE={y | n Siceparamtreestgaly,lefichierjournalnestpasgnr. PARFILE=chemin_fichier Ceparamtrepermetdedfinirlemplacementdufichierdeparamtresutiliserpourlopration.ladiffrencedu fichierdexport,dufichierdimport,oudufichierjournal,lefichierdeparamtresdoittreprsentsurlamachinequi excuteleprogrammeexpdpouimpdp QUERY=[schma.][nom_table:]clause_WHERE Ceparamtrepermetdefiltrerlesdonnesexportesouimportes(voirciaprs). SCHEMAS=schma [, ...] Ceparamtrepermetdefaireunexportouunimportdeniveauschmaetdedfinirleoulesschmasexporter ouimporter.Cestlemodedexportpardfaut(surleschmadelutilisateur). TABLES=[schma.]nom_table[:partition] [, ...] Ce paramtre permet de faire un export ou un import de niveau table et de dfinir une ou plusieurs tables exporterouimporter. TABLESPACES=nom_tablespace [, ...] Ce paramtre permet de faire un export ou un import de niveau tablespace et de dfinir un ou plusieurs tablespacesexporterouimporter.

- 4-

ENI Editions - All rights reserved - Algeria Educ

TRANSPORT_FULL_CHECK={y | n Si ce paramtre est gal y, Data Pump vrifie les dpendances entre les objets stocks lintrieur des tablespacestransports. TRANSPORT_TABLESPACES=nom_tablespace [, ...] Ce paramtre permet de faire un export ou un import de niveau transport de tablespace et de dfinir un ou plusieurstablespacestransporter.

b.Paramtresspcifiqueslexport
COMPRESSION={ALL | DATA_ONLY | METADATA_ONLY| NONE} Permetdactiverlacompressiondesmtadonneset/oudesdonnes. ESTIMATE_ONLY={y | n Siceparamtreestgaly,lexporteffectuesimplementuneestimationdelespacencessairepourlexport,mais sansfairelexport.

c.Paramtresspcifiqueslimport
REMAP_DATAFILE=fichier_source:fichier_cible Ceparamtrepermetdechangerlescheminsdesfichiersdedonneslorsdelimport(parexemple,lorsquelimport cre un tablespace). Plusieurs paramtres peuvent tre spcifis pour effectuer plusieurs changements (avec un fichiersourcediffrentchaquefois). REMAP_SCHEMA=schma_source:schma_cible Ce paramtre permet de charger les objets dun schma dorigine dans un autre schma. Plusieurs paramtres peuventtrespcifispoureffectuerplusieurschangements(avecunschmasourcediffrentchaquefois).Sile schmaciblenexistepas,ilpeuttrecrlorsdelimportsilyalesinformationssuffisantesdanslefichierimport. REMAP_TABLESPACE=tablespace_source:tablespace_cible Ce paramtre permet de changer les objets de tablespace lors de limport. Plusieurs paramtres peuvent tre spcifispoureffectuerplusieurschangements(avecuntablespacesourcediffrentchaquefois). SQLFILE=nom_fichier Ce paramtre permet de gnrer un fichier SQL contenant tous les ordres DDL qui seraient excuts, si limport taitralis(maislimportnestpasralis).Silefichierexistedj,ilestremplac. TABLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | REPLACE} Ceparamtrepermetdespcifiercequeloutildimportdoitfairesi,unetablequildoitcrerexistedj : SKIP : nefaitrienetpasselobjetsuivant(nonautoris,siCONTENT=DATA_ONLY,valeurpardfautsinon). APPEND : ajoutelesdonneslatable(valeurpardfaut,siCONTENT=DATA_ONLY). TRUNCATE : tronquelatableavantdechargerlesdonnes. REPLACE : supprimelatableetlarecre,puischargelesdonnes(interdit,siCONTENT=DATA_ONLY). TRANSPORT_DATAFILES=fichiers Ceparamtrepermetdespcifierlemplacementdesfichiersdedonnesdestablespacestransports(lesfichiers doiventavoirtcopisaupralable).

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 5-

d.Contenudunexportoudunimport
Par dfaut, Data Pump exporte ou importe les donnes et les mtadonnes des tables, avec toutes les dpendances(index,triggers,droits,contraintes,etc.). Cependant,DataPumppermetdefiltrerprcismentcequidoittreexportouimport :
q

donneset/oumtadonnes filtresurlesdonnes filtresurlesobjets.

Nesappliquepasautransportdetablespace.

Donneset/oumtadonnes LeparamtreCONTENTpermetdeprciserglobalementcequidoittreexportouimport :
q

ALL : lesdonnesetlesmtadonnes DATA_ONLY : lesdonnesuniquement METADATA_ONLY : lesmtadonnesuniquement.

Filtresurlesdonnes Lorsquelesdonnessontexportesouimportes,ilestpossibledelesfiltrergrceauparamtreQUERY : QUERY = [schma.][nom_table:]clause_WHERE Exemple QUERY = diane.adherent:"WHERE sexe = F" LeparamtreQUERYpeuttrespcifiplusieursfoispourdfinirdesfiltressurplusieurstables. Filtresurlesobjets LesparamtresINCLUDEetEXCLUDEpeuventtreutilisspourinclureouexcluredesobjetsduneoprationdimport oudexport : INCLUDE = type_objet[:"filtre"] EXCLUDE = type_objet[:"filtre"] type_objetestletypedobjetinclureouexclure Exemple EXCLUDE=trigger INCLUDE=view:"LIKE ADH%" Plusieurs filtres peuvent tre spcifis lors dune opration, un type dobjet pouvant mme apparatre dans plusieursfiltres.Biennoterquedanscecas,lesdiffrentsfiltressontcombinsparun et logique : pourquun objetsoitexport,ildoitpassertouslesfiltresdfinissurlopration. Par contre, les paramtres EXCLUDE et INCLUDE sont mutuellement exclusifs : soit vous travaillez par inclusion (et tout ce qui nest pas explicitement inclus est exclus), soit vous travaillez par exclusion (et tout ce qui nest pas explicitementexclusestinclus).SpcifiersimultanmentlesparamtresEXCLUDEetINCLUDEgnreuneerreur. moins dtre explicitement exclues (par un EXCLUDE), les dpendances dune table (contraintes, triggers, index) sont toujours exportes, mme si elles ne sont pas implicitement incluses (par un INCLUDE). Si vous avez mis INCLUDE=tableetquevoussouhaitezexclureunedpendance,ilfautlinclureavecunfiltrequinestjamaisvrai,par exempleINCLUDE=trigger:"IS NULL"(ilnyapasdetriggerdontlenomestNULL).
- 6 ENI Editions - All rights reserved - Algeria Educ

LesvuesDATABASE_EXPORT_OBJECTS, SCHEMA_EXPORT_OBJECTSetTABLE_ EXPORT_OBJECTSdonnentlalistedetousles typesdobjets qui peuvent tre spcifis dans les paramtresEXCLUDEet INCLUDE,selonleniveaudelopration. Exemples : CONSTRAINT DIRECTORY FUNCTION GRANT INDEX OBJECT_GRANT PACKAGE PACKAGE_BODY PACKAGE_SPEC PROCEDURE REF_CONSTRAINT ROLE ROLE_GRANT SCHEMA SEQUENCE STATISTICS SYNONYM SYSTEM_GRANT TABLE TABLESPACE TRIGGER USER VIEW

4.Exemples
a.Prambule
Pour les diffrents exemples, nous supposons quil existe un objet DIRECTORY nomm DIR_PUMP, cr avec lordre SQLsuivant : CREATE OR REPLACE DIRECTORY dir_pump AS h:\oradata\pump; Dans tous les exemples, un fichier de paramtres nomm pump_param.txt est utilis, et les outils expdpet impdp sontappelsdelamaniresuivante : expdp system/az#78 PARFILE=pump_param.txt impdp system/az#78 PARFILE=pump_param.txt LaconnexionseffectueimplicitementlinstancedfinieparlavariabledenvironnementORACLE_SID,ouLOCAL,ou TWO_TASK

b.Exportcomplet
Danscetexemple,nousallonsfaireunexportcomplet. Dans un premier temps, nous allons faire une simple estimation de lespace laide du fichier de paramtres suivant : FULL=y ESTIMATE_ONLY=y NOLOGFILE=y Rsultat Export: Release 11.1.0.6.0 - Production on Dimanche, 10 Aot, 2008 15:50:12 ... Estimation en cours laide de la mthode BLOCKS ... Traitement du type dobjet DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA ... . estimation de "DIANE"."ADHERENT" 64 KB . estimation de "DIANE"."CATEGORIE" 64 KB ... Estimation totale laide le la mthode BLOCKS : 44,39 MB Tche "SYSTEM"."SYS_EXPORT_FULL_01" excute avec succs 15:52:07 Nouspouvonsensuiteprocderlexportlaidedufichierdeparamtressuivants : JOB_NAME=exp_full

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 7-

FULL=y DIRECTORY=dir_pump DUMPFILE=exp-full.dmp LOGFILE=exp-full.log Extraitsdufichierjournal Export: Release 11.1.0.6.0 - Production on Dimanche, 10 Aot, 2008 15:59:10 ... Dmarrage de "SYSTEM"."EXP_FULL" : system/******** parfile=pump_param.txt Estimation en cours laide de la mthode BLOCKS ... Traitement du type dobjet DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA Estimation totale laide le la mthode BLOCKS : 44,39 MB Traitement du type dobjet DATABASE_EXPORT/TABLESPACE . . export : "SYSMAN"."MGMT_METRICS_RAW" 2.564 MB 45088 lignes . . export : "SYSMAN"."MGMT_MESSAGES" 3.406 MB 19070 lignes ... ************************************************************************* Lensemble de fichiers de vidage de SYSTEM.EXP_FULL est : h:\oradata\pump\exp-full.dmp Tche "SYSTEM"."EXP_FULL" excute avec succs 16:06:20

c.Exportslectif
Danscetexemple,unexportslectifduschmaDIANEestralislaidedufichierdeparamtressuivant : JOB_NAME=exp_diane SCHEMAS=diane INCLUDE=table:"< > CATEGORIE" INCLUDE=view INCLUDE=procedure INCLUDE=trigger:"IS NULL" QUERY=diane.adherent:"WHERE sexe = F" DIRECTORY=dir_pump DUMPFILE=exp-diane.dmp LOGFILE=exp-diane.log Seules les tables (sauf la table CATEGORIE), les vues et les procdures sont explicitement exportes. Comme les tablessontexportes,pardfaut,lescontraintes,lesindexetlestriggerslesontaussi pournepasexporterles triggers,leparamtreINCLUDE=trigger:"IS NULL"estutilis(inclusionavecuneconditionfausse).Lesdonnesde latableADHERENTsontfiltres. Rsultat Export: Release 11.1.0.6.0 - Production on Dimanche, 10 Aot, 2008 16:19:01 ... Dmarrage de "SYSTEM"."EXP_DIANE" : system/******** parfile=pump_param.txt Estimation en cours laide de la mthode BLOCKS ... Traitement du type dobjet SCHEMA_EXPORT/TABLE/TABLE_DATA Estimation totale laide le la methode BLOCKS : 64 KB Traitement du type dobjet SCHEMA_EXPORT/TABLE/TABLE Traitement du type dobjet SCHEMA_EXPORT/TABLE/INDEX/INDEX Traitement du type dobjet SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Traitement du type dobjet SCHEMA_EXPORT/PROCEDURE/PROCEDURE Traitement du type dobjet SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE Traitement du type dobjet SCHEMA_EXPORT/VIEW/VIEW Traitement du type dobjet SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT. . export : "DIANE"."ADHERENT" 7.976 KB 10 lignes ORA-39168: Le chemin dobjet TRIGGER est introuvable. Table matre "SYSTEM"."EXP_DIANE" charge/dcharge avec succs *************************************************************************** Le fichier de vidage dfini pour SYSTEM.EXP_DIANE est : h:\oradata\pump\exp-diane.dmp Tche "SYSTEM"."EXP_DIANE" excute avec 1 erreur(s) 16:19:19 Sur le rsultat, nous voyons que les contraintes et les index ont t exports lerreur signale que rien na t trouvpourlestriggers.
- 8 ENI Editions - All rights reserved - Algeria Educ

d.Importslectif
partir de lexport ralis dans lexemple prcdent, nous allons faire un import slectif, en effectuant quelques transformations :
q

Lescontraintesdintgritsrfrentiellesneserontpasimportes LesobjetsvonttrechargsdansleschmaMERCURE ToutcequitaitstockdansletablespaceDATAvaallerdansletableDEFTBS LesdonnesdelatableADHERENTsontdenouveaufiltres.

Lefichierdeparamtreestlesuivant : JOB_NAME=imp_diane SCHEMAS=diane REMAP_SCHEMA=diane:mercure REMAP_TABLESPACE=data:deftbs EXCLUDE=ref_constraint QUERY=mercure.adherent:"WHERE EXTRACT(YEAR FROM date_naissance) >= 1970" DIRECTORY=dir_pump DUMPFILE=exp-diane.dmp LOGFILE=imp-diane.log NotezquelefiltreQUERYportesurlatabledansleschmacible. Rsultat Import: Release 11.1.0.6.0 - Production on Dimanche, 10 Aot, 2008 16:27:07 ... Table matre "SYSTEM"."IMP_DIANE" charge/dcharge avec succs Dmarrage de "SYSTEM"."IMP_DIANE" : system/******** parfile=param.txt Traitement du type dobjet SCHEMA_EXPORT/TABLE/TABLE Traitement du type dobjet SCHEMA_EXPORT/TABLE/TABLE_DATA ... import de "MERCURE"."ADHERENT" 7.976 KB 4 sur 10 lignes Traitement du type dobjet SCHEMA_EXPORT/TABLE/INDEX/INDEX Traitement du type dobjet SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT Traitement du type dobjet SCHEMA_EXPORT/PROCEDURE/PROCEDURE Traitement du type dobjet SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE Traitement du type dobjet SCHEMA_EXPORT/VIEW/VIEW Tche "SYSTEM"."IMP_DIANE" excute avec succs 16:27:17 Nousvoyonsquelesdonnesontbientdenouveaufiltres.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 9-

SQL*Loader
1.Vuedensemble
a.Prsentation
SQL*Loaderestunoutiltrspuissantquipermetdechargerdesdonnes :
q

partirdunouplusieursfichiersexternes avecdesenregistrementsdelongueurfixeoudelongueurvariable(avecdlimiteurs) dansuneouplusieurstables enappliquantdestraitements,descontrlesoudesfiltressurlesdonnes.

b.Fonctionnementgnral

Enentre,SQL*Loaderprendunfichierdecontrle(rienvoiraveclefichierdecontrledunebasededonnes) quipilotelechargement,etunouplusieursfichiersdedonnesASCII(pasdesfichiersdedonnesdunebasede donnesOracle). Ensortie,SQL*LoaderalimentelabasededonnesOracleetgnreunfichierjournal(log),unfichierdesrejets (baddonneserrones)etunfichierdesrefus(discarddonnescartes). Pourdespetitsvolumes,lesdonnespeuventtredirectementinclusesdanslefichierdecontrle. Lefichierdiscardcontientdesenregistrementsquionttrefuss(carts)parSQL*Loadercarilsnerespectaient pasdesconditionsspcifiesdanslefichierdecontrle. LefichierbadcontientdesenregistrementsquionttrejetssoitparSQL*Loader(formatdelenregistrementnon valideparrapportladescriptiondufichierdecontrle),soitparOracle(violationdunecontraintedintgrit,type dedonnesnonvalide,etc.).

ENI Editions - All rights reserved - Algeria Educ

- 1-

Lesenregistrementsrejetsourefusssontcritstelsquelsdanslesfichiersbadetdiscardquiontdonc,lamme structure que les fichiers de donnes utiliss en entre aprs correction ventuelle des enregistrements, les fichiersbadetdiscardpeuventtreutilisscommefichiersdentre. Lefichierjournaldonnenormmentdinformationssurlersultatduchargement :
q

date nomdesfichiersutiliss paramtresutiliss tablesciblesetmodedalimentation conditionsventuellessurlesenregistrements nombredenregistrementschargs nombredenregistrementscarts nombredenregistrementsrejets messagesderreursrelatifsauxrejets.

c.Lescheminsduchargement
SQL*Loaderpeuteffectuerlechargementselondeux"chemins" :
q

Cheminconventionnel : lesdonnessontchargesenmmoireetinsresdanslestablespardesordres SQLINSERTclassiques Chemin direct : les donnes sont charges en mmoire, formates dans des blocs qui sont crits directementdanslabasededonnes.

Aveclecheminconventionnel,touslesmcanismesclassiquessontappliqus(contraintes,triggers,). Lechemindirectestplusperformantmaisalesconsquencessuivantes :
q

SeuleslescontraintesNOT NULL,PRIMARY KEY etUNIQUEsontappliques LestriggersINSERTnesontpasexcuts Dautresutilisateursnepeuventpasapporterdemodificationsauxtablespendantlechargement.

Sur un chargement important, si les caractristiques voques cidessus sont acceptables, il faut choisir un chargementparchemindirect. Lorsdunchargementenchemindirect,ilexistedautresoptionsquipermettentdefairelechargementen modeNOLOGGINGDanscecas,lesperformancessontencoreamliores.

2.Miseenuvre
SQL*Loader sutilise uniquement en mode ligne de commande (pas de mode interactif). Vous pouvez mettre les paramtressurlalignedecommande,oulesregrouperdansunfichierdeparamtresdontlenomseulestpasssur lalignedecommande : > sqlldr USERID=system/az#78 CONTROL=balance.ctl LOG=balance.log

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

> sqlldr PARFILE=balance.par Ilydeuxcatgoriesdeparamtresnepasconfondre :


q

lesparamtresdufichierdecontrle lesparamtresdelalignedecommandequipeuventtrelistsdansunfichierdeparamtres(paramtrede lignedecommandePARFILE).

Certainsparamtresdelalignedecommandepeuventtreinclusdanslefichierdecontrle(paramtrede fichierdecontrleOPTIONS)ousontredondantsavecdesparamtresdufichierdecontrle. Comme pour les outils dexport et dimport, le plus simple est dutiliser un fichier de paramtres dont le nom est spcifisurlalignedecommande. Les paramtres du fichier de contrle sont essentiellement destins dcrire la structure des enregistrements en entre,lestablesciblesetlanaturedescontrles/traitementsralisersurlesenregistrements. Lesparamtresdelalignedecommande,oudufichierdeparamtresindiqusurlalignedecommande,contrlentle fonctionnementgnraldeloutil. Lesprincipauxparamtresdelalignedecommandesontlessuivants : BAD Nomdufichierbad(avecventuellementunchemincomplet).Pardfaut,galaunomdufichierdecontrle,maisavec lextension.bad CONTROL Nomdufichierdecontrle(avecventuellementunchemincomplet). DATA Nomdufichierdedonnestraiter(gnralementpluttindiqudanslefichierdecontrle).Pardfaut,galaunom dufichierdecontrle,maisaveclextension.dat DIRECT TRUE : chemindirect.FALSE : cheminconventionnel(dfaut). DISCARDFILE Nomdufichierdiscard(avecventuellementunchemincomplet).Pardfaut,galaunomdufichierdecontrle,mais aveclextension.dsc DISCARDMAX Nombremaximumderejetsautorissavantlarrtduchargement(1 =arrtaupremier).Pardfaut,pasdarrt. ERRORS Nombrederreursdinsertionautorisesavantlarrtduchargement(50,pardfaut 0=aucuneerreurautorise mettreuntrsgrandnombrepournepassarrterencasderreur).Lesenregistrementsincriminssontcritsdans lefichierbad. LOAD Nombremaximumdenregistrementscharger(aprsSKIP). LOG Nomdufichierjournal(avecventuellementunchemincomplet).Pardfaut,galaunomdufichierdecontrle,mais aveclextension.log

ENI Editions - All rights reserved - Algeria Educ

- 3-

PARFILE Nomdufichierdeparamtres(avecventuellement,unchemincomplet). SKIP Nombredenregistrementslimineravantdecommencerlechargement(aucun,pardfaut). USERID Paramtresdouverturedelasessionsouslaforme : utilisateur[/mot_de_passe][@nom_service] Uneinvitesaffichepoursaisirlemotdepassesilestnonspcifi.

Dans le fichier de contrle, certaines directives (voir cidessous) permettent de spcifier des paramtres redondantsaveclesparamtresdelalignedecommande.Encasdeconflit,cestleparamtredelalignede commandequilemporte. Exemplesdefichiersdeparamtres
q

Casotouteslesinformationssontdanslefichierdecontrle :

userid=system/az#78 control=balance.ctl
q

Casolefichierdecontrlepeutsappliquersurdesfichiersdedonnesdediversesorigines(dounseul fichierdecontrleetplusieursfichiersdeparamtres) :

userid=system/az#78 control=balance.ctl data=balance_lyon.dat log=balance_lyon.log bad=balance_lyon.bad discardfile=balance_lyon.dsc Unfichierdecontrletypealastructuresuivante : [ OPTIONS(liste doptions) ] LOAD DATA [ INFILE fichier | * [ BADFILE fichier ] [ DISCARDFILE fichier ] [ DISCARDMAX valeur ] ] [ INSERT | APPEND | REPLACE | TRUNCATE ] INTO TABLE nom [ INSERT | APPEND | REPLACE | TRUNCATE ] [ WHEN condition ] [ FIELDS TERMINATED BY x [ OPTIONALLY ENCLOSED BY y ] ] [ TRAILING NULLCOLS ] ( colonne [ POSITION(x:y) ] [ type ] [ clause_SQL ], ) [ BEGINDATA donnes ] Lasyntaxenestpascomplte,maislesclauseslesplususuellessontprsentes. Lesclausesdoiventapparatredanslordreindiqu. Leslignesdecommentairedoiventcommencerpardeuxsignesmoins(). OPTIONS LaclauseOPTIONSpermetdespcifier,danslefichierdecontrle,lesoptionsdelignecommandesuivantes :
q

SKIP

openmirrors.com

- 4-

ENI Editions - All rights reserved - Algeria Educ

LOAD ERRORS ROWS SILENT DIRECT

Encasdeconflitaveclalignedecommande,cestleparamtredelalignedecommandequilemporte. Exemple OPTIONS (SKIP=10,LOAD=900,ERRORS=100) LOAD DATA LaclauseINFILE donne lemplacementdunfichierdedonnestraiterouestgaleaucaractre*silesdonnes sontdanslefichierdecontrle(clauseBEGINDATA). De manire optionnelle, cette clause peut spcifier un fichier bad (option BADFILE), un fichier discard (option DISCARDFILE) et un nombre maximum de rejets autoriss avant larrt du chargement (option DISCARDMAX) si les paramtresquivalentsdelalignedecommandeonttindiqus,cesontcesderniersquisappliquent. Sil y a plusieurs fichiers charger en une seule session, plusieurs clausesINFILE peuvent tre prsentes, chaque clausepouvantspcifiersespropresoptionsBADFILE, DISCARDFILEetDISCARDMAX Si le fichier de donnes est indiqu en paramtre de la ligne de commande (DATA), la clause est vide (mais il faut laisserlemotclLOAD DATA). INSERT | APPEND | REPLACE | TRUNCATE Laclausesuivanteprciselemodedechargementdanslestables : INSERT Ajout,maisuniquementpourunetablevide(erreursinon). APPEND Ajoutlatable(peuttrevideounon). REPLACE Remplacetoutlecontenudelatable(unordreSQLDELETEestexcutavant). TRUNCATE Remplacetoutlecontenudelatable(unordreSQLTRUNCATEestexcutavant). INTO TABLE LaclauseINTO TABLEdonnelenomdunetablechargeretdcritcommenteffectuerlechargementdanscettetable. Siplusieurstablessontchargespartirdunmmefichierdedonnes,plusieursclausesINTO TABLEpeuventtre spcifies. Pourchaquetable,ilestpossibledindiquerlesoptionssuivantes : INSERT | APPEND | REPLACE | TRUNCATE Modedelimportpourlatable WHEN Indiqueuneconditionsurlenregistrementpourquilsoiteffectivementchargdanscettetable.

ENI Editions - All rights reserved - Algeria Educ

- 5-

Laconditionpeutportersoitsurunecolonnedelatablecible,soitsurunchampdelenregistrementsource,dfini parlapositiondesoncaractrededbutetlapositiondesoncaractredefinsouslaformedbut:fin FIELDS TERMINATED BY x [ OPTIONALLY ENCLOSED BY y ] Pourdesenregistrementsdelongueurvariable(avecsparateur),indiquecommentsontdlimitsleschamps : TERMINATED BY x : caractresparateurdesenregistrements(typiquement,unevirgule,unpointvirgule,etc.). OPTIONALLY ENCLOSED BY y : caractre optionnel pouvant entourer les enregistrements (typiquement, des apostrophes,desguillemets,etc.). TRAILING NULLCOLS Les colonnes non prsentes la fin de lenregistrement sont mises NULL (si loption est absente et que des colonnesvidesexistentlafin,lenregistrementestrejet). colonne [ POSITION(x:y) ] [ type ] [ clause_SQL ] Listedescolonnesalimenterdanslatable : colonne : lenomdelacolonnecible. POSITION(x:y) position du champ correspondant dans lenregistrement source (cas dun enregistrement de longueur fixe). Pour des enregistrements avec sparateur, la correspondance colonne/enregistrement est positionnelle(1recolonnedelaliste=1erenregistrement,) type : typededonnes(encasdambigut). clause_SQL : clause SQL appliquer. Pour rfrencer une colonne X dans la clause SQL, utiliser la syntaxe :X (caractredeuxpointsdevantlenomdelacolonne).Ilexistedautresoptionssurlaspcificationdescolonnes. BEGINDATA LaclauseBEGINDATAmarqueledbutdesdonnessicellescisontinclusesdanslefichierdecontrle(INFILE *).

3.Exemples
a.Prambule
Lesdiffrentsexemplessontprsentsavecdesdonnesincluses(INFILE * + BEGINDATA)pourmieuxvisualiserla correspondanceentrelesdonnesetlesparamtresdufichierdecontrle. Cesexemplessonttrssimplesadapterauchargementdunfichierexterne :
q

copierlesdonnes,sansleBEGINDATA,dansunfichier mettrelenomdufichierdanslaclauseINFILE(laplaceducaractre*) supprimerlaclauseBEGINDATA

Surchaqueexemple,unchargementparajoutlatableexistanteestutilis(APPEND). Parailleurs,noussupposonslexistencedestablessuivantes :
q

tablesdesadhrents

SQL> DESC adherent Name Null? Type ----------------------------------------- -------- -------------NUMERO NUMBER(6)
- 6 ENI Editions - All rights reserved - Algeria Educ

openmirrors.com

NOM PRENOM SEXE DATE_NAISSANCE


q

VARCHAR2(40) VARCHAR2(40) CHAR(1) DATE

tablesdesadhrentsmasculins(pasdecolonneSEXE)

SQL> DESC adherent_m Name Null? ----------------------------------------- -------NUMERO NOM PRENOM DATE_NAISSANCE
q

Type -------------NUMBER(6) VARCHAR2(40) VARCHAR2(40) DATE

tablesdesadhrentesfminines(pasdecolonneSEXE,nidecolonneDATE_NAISSANCE)

SQL> DESC adherent_f Name Null? ----------------------------------------- -------NUMERO NOM PRENOM

Type -------------NUMBER(6) VARCHAR2(40) VARCHAR2(40)

Enfin,unesquenceS_ADHERENTpermetdalimenterlesnumrosdadhrent.

b.Longueurvariable
LOAD DATA INFILE * INTO TABLE adherent APPEND FIELDS TERMINATED BY , OPTIONALLY ENCLOSED BY " TRAILING NULLCOLS ( prenom, nom, sexe, date_naissance "TO_DATE(:date_naissance,YYYYMMDD)", numero "s_adherent.NEXTVAL" ) BEGINDATA Olivier,HEURTEL,M,19660826 Valrie,MARTIN,F Jean,"PEYRAC (de)",M,19631204 Pourcetexemple,lesenregistrementsontunelongueurvariable,avecsparateur. Spcificationsdesdonnesenentre :
q

Leschampssontdlimitsparunevirgule : clause TERMINATED BY , Ils peuvent ventuellement entre tre entours de guillemets (cest le cas du nom dans la troisime ligne) : clauseOPTIONALLY ENCLOSED BY " Ilspeuventtremanquantsenfindeligne(pasdedatedenaissancesurladeuximeligne) danscecas mettreunNULL : clauseTRAILING NULLCOLS LadatedenaissanceestfourniesousformedechaneauformatYYYYMMDDmaisdoittrestockedansune colonnedetypeDATE : clauseSQL"TO_DATE(:date_ naissance,YYYYMMDD)" Le numro dadhrent nest pas fourni il doit tre calcul laide dune squence : clause SQL "s_adherent.NEXTVAL"

ENI Editions - All rights reserved - Algeria Educ

- 7-

Sur cet exemple, la correspondance entre les champs et les colonnes est positionnelle les colonnes qui ne sont pas alimentes par un champ de lenregistrement doivent forcment tre spcifies en dernier dans la liste des colonnes.

c.Longueurfixe
LOAD DATA INFILE * INTO TABLE adherent APPEND TRAILING NULLCOLS ( numero "s_adherent.NEXTVAL", prenom POSITION(01:10), nom POSITION(11:22), sexe POSITION(23:23), date_naissance POSITION(24:31) "TO_DATE(:date_naissance,YYYYMMDD)" ) BEGINDATA Olivier HEURTEL M19660826 Valrie MARTIN F Jean PEYRAC (de) M19631204 Pourcetexemple,lesenregistrementsontunelongueurfixe.Lesautresspcificationssontinchanges. Avecdesenregistrementsdelongueurfixe,lacorrespondanceentreleschampsetlescolonnesestdfinieparla clause POSITION les colonnes, qui ne sont pas alimentes par un champ de lenregistrement, peuvent tre spcifiesnimporteodanslalistedescolonnes.

d.Longueurfixeavecliminationdenregistrements
LOAD DATA INFILE * INTO TABLE adherent APPEND WHEN (sexe = M) TRAILING NULLCOLS ( numero "s_adherent.NEXTVAL", prenom POSITION(01:10), nom POSITION(11:22), sexe POSITION(23:23), date_naissance POSITION(24:31) "TO_DATE(:date_naissance,YYYYMMDD)" ) BEGINDATA Olivier HEURTEL M19660826 Valrie MARTIN F Jean PEYRAC (de) M19631204 Pour cet exemple, les enregistrements ont une longueur fixe mais les adhrents de sexe fminin ne doivent pas trechargs.Lesautresspcificationssontinchanges. UneclauseWHEN (sexe = M)estajoutepourspcifierlesenregistrementsconserver.

e.Chargementdansdeuxtables
LOAD DATA INFILE * INTO TABLE adherent_m APPEND WHEN (sexe = M) TRAILING NULLCOLS ( numero "s_adherent.NEXTVAL", prenom POSITION(01:10), nom POSITION(11:22),

openmirrors.com

- 8-

ENI Editions - All rights reserved - Algeria Educ

sexe F I L L E R POSITION(23:23), date_naissance POSITION(24:31) "TO_DATE(:date_naissance,YYYYMMDD)" ) INTO TABLE adherent_f APPEND WHEN (sexe = F) TRAILING NULLCOLS ( numero "s_adherent.NEXTVAL", prenom POSITION(01:10), nom POSITION(11:22), sexe F I L L E R POSITION(23:23) ) BEGINDATA Olivier HEURTEL M19660826 Valrie MARTIN F Jean PEYRAC (de) M19631204 Pourcetexemple,lesenregistrementsontunelongueurfixemaislesadhrentsdoiventtrerpartisentredeux tables en fonction de leur sexe. Les deux tables nont pas de colonne SEXE et la table des adhrents de sexe fminin,pasdecolonneDATE_NAISSANCEnonplus.Lesautresspcificationssontinchanges. LefichierdecontrleutilisedeuxclausesINTO TABLEpourspcifiercommentalimenterlesdeuxtables. Dans chaque clauseINTO TABLE, une clause WHEN (sexe= X) permet dindiquer si lenregistrement courant doit trechargdanslatableounon.Parailleurs,chaqueclauseINTO TABLEasaproprelistedecolonnes. CommelestablesnontpasdecolonneSEXE,ilestpossibledespcifierunecolonnedanslalistedescolonnesavec lapropritFILLER("remplissage").Cette"colonne"peutensuitetremanipulecommesictaitunecolonnedela table(utilisedansuneclauseWHEN,dansuneclauseSQL)maisellenestpaschargedanslatable. Cettetechniquepeutaussitreutiliseavecdesenregistrementsdelongueurvariable(avecsparateur),lorsquun champdelenregistrementnedoitpastrechargdansunecolonnedelatable.

ENI Editions - All rights reserved - Algeria Educ

- 9-

Extrairedesdonnesdansunfichiertexte
1.EnSQL
EnSQL,ilsuffitdcrireunscriptaveclarequteSELECTsouhaiteetderedirigerlasortieversunfichier(SPOOL).En complment,ilestncessairedepasseruncertainnombredecommandesSQL*Pluspoursupprimerlesaffichages jugsindsirables(titresdescolonnes,nombredelignesslectionnes,etc.). ExempledescriptSQL : exportavecdesenregistrementsdelongueurfixe -- un peu de configuration de lenvironnement SQL*Plus -- pas decho des requtes SET ECHO OFF -- masquer les titres de colonnes SET HEADING OFF -- masquer laffichage du nombre de lignes dans le rsultat SET FEEDBACK OFF -- dimensionner la largeur de la ligne 1000 caractres -- (pas utile ici, mais cest titre dexemple) SET LINESIZE 1000 -- supprimer le saut de ligne chaque changement de page SET NEWPAGE NONE -- suppression des espaces en fin de ligne SET TRIMSPOOL ON -- pas daffichage lcran (plus rapide) SET TERMOUT OFF -- rediriger la sortie vers un fichier .txt SPOOL adherent.txt -- faire une requte SELECT qui concatne les diffrentes colonnes et -- utilise si besoin la fonction SQL RPAD pour ajouter des espaces aux -- colonnes de longueur variable et les rendre ainsi de longueur fixe SELECT -- premire mthode avec largeurs fixes RPAD(prenom,10, ) || RPAD(nom,12, ) || NVL(sexe,X) || TO_CHAR(date_naissance,YYYYMMDD) ligne FROM adherent / -- fermer le fichier dexport SPOOL OFF -- remette la configuration habituelle de lenvironnement SQL*Plus SET HEADING ON SET FEEDBACK ON SET LINESIZE 80 SET NEWPAGE 1 SET TERMOUT ON Pourfaireunexportavecdesenregistrementsdelongueurvariable,vouspouvezutiliserlarequtesuivante : -- faire une requte SELECT qui concatne les diffrentes colonnes en -- intercalant des virgules comme sparateur SELECT -- deuxime mthode avec sparateur prenom || , || nom || , || NVL(sexe,X) || , || TO_CHAR(date_naissance,YYYYMMDD) ligne FROM adherent /

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

2.EnPL/SQL
EnPL/SQL,ilsuffitdcrireunblocquislectionnelesdonnesviauncurseuretcritlersultatdansunfichieravec lepackageUTL_FILE Exemple DECLARE -- extraire les donnes laide dun curseur CURSOR cur_adherent IS SELECT * FROM adherent; -- pointeur de fichier dexport v_fichier utl_file.file_type; -- buffer pour lcriture v_ligne VARCHAR2(1023); BEGIN -- ouvrir le fichier dexport (le rpertoire doit tre spcifi -- par lintermdiaire dun objet DIRECTORY - bien mettre le -- nom de lobjet DIRECTORY en majuscules) v_fichier := utl_file.fopen(DIR_PUMP,adhrents.txt,w); -- boucler sur le curseur FOR rec_adherent IN cur_adherent LOOP -- construire la ligne exporter -- (ici, enregistrement avec sparateur) v_ligne := rec_adherent.prenom || , || rec_adherent.nom || , || NVL(rec_adherent.sexe,X) || , || TO_CHAR(rec_adherent.date_naissance,YYYYMMDD); -- crire la ligne dans le fichier utl_file.put_line(v_fichier,v_ligne); END LOOP; -- fermer le fichier utl_file.fclose(v_fichier); END; /

- 2-

ENI Editions - All rights reserved - Algeria Educ

UtiliserleDatabaseControl
1.Export
Surlapagedaccueil,cliquezsurlelienMouvementdedonnespuissurlelienExporterversdesfichiersdexport (cadreTransfrerdesdonnesdeligne)pouraccderlapagepermettantderaliserdesexports.

La premire page permet de slectionner le niveau de lexport et de saisir les informations didentification et de connexionlhte.Lespagesproposesparlasuitedpendentduniveauslectionn. Parexemple,danslecasdunexportdeniveauSchmas,lassistantvousproposesuccessivement :
q

deslectionnerunouplusieursschmasexporter dedfinirlesoptionsdelexport(degrdeparalllisme,fichierjournal,contenudelexport,etc.) dedfinirlenometlemplacementdufichierdexport deprogrammerletravail desoumettreletravail.

2.Import
Surlapagedaccueil,cliquezsurlelienMouvementdedonnespuissurlelienImportpartirdefichiersdexport (cadre Transfrer des donnes de ligne) pour accder la page permettant de raliser des imports partir dun fichier.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 1-

Cettepagepermetdaborddindiquersilefichierdexportprovientduneversion10gousuprieureouduneversion antrieure.Enfonctiondelarponse,lassistantutiliseraloutilDataPumpImportoulancienoutilImport lescrans propossparlassistantsontdiffrents. SivouseffectuezunimportpartirdunexportDataPump,lescranspropossparlassistantsonttrsprochesde ceuxproposspourlexport. Poureffectuerunimportdirectementpartirdunebasededonnes,vouspouvezcliquersurlelienImportdepuisla base(cadreTransfrerdesdonnesdelignedelongletMouvementdedonnes).

3.SQL*Loader
Sur la page daccueil, cliquez sur le lienMouvement de donnes puis sur le lien Charger des donnes partir de fichiers utilisateur (cadre Transfrer des donnes de ligne) pour accder la page permettant de charger des donnesavecSQL*Loader :

Lapremirepagepermetdindiquersilassistantdoitgnrerlefichierdecontrleouutiliserunfichierdecontrle existant, et de saisir les informations didentification et de connexion lhte. Les pages proposes par la suite dpendentdeloptionchoisiepourlefichierdecontrle.

- 2-

ENI Editions - All rights reserved - Algeria Educ

Silefichierdecontrleestdjdfini,lassistantvasimplementpermettrededfiniruntravaildechargementavec cesdiffrentsparamtres(emplacementdesfichiersdedonnes,mthodedechargement,etc.). Silefichierdecontrlenexistepas,lassistantvavousaiderconstruirelefichierdecontrlelaidedufichierde donnes charger. Cette fonctionnalit est trs intressante car la partie complexe de lutilisation de SQL*Loader estjustementlacrationdufichierdecontrle.

openmirrors.com

ENI Editions - All rights reserved - Algeria Educ

- 3-

Ladministrateurdebasededonnes
1.Principalestches
Lesprincipalestchesdeladministrateurdebasededonnes(DBA<)sontlessuivantes :
q

installationdesproduits cration/dmarrage/arrtdesbasesdedonnes gestiondesstructuresdestockage gestiondesutilisateurs(etdeleursdroits) sauvegarde/restauration.

2.ComptesOracledadministration
Aprscration,unebasededonnesOraclecontienttoujoursdeuxcomptesayantlesprivilgesdadministrateur :
q

SYS(motdepassepardfaut:change_on_install) SYSTEM(motdepassepardfaut:manager).

SYSestlepropritairedudictionnairededonnes SYSTEMpeuttrepropritairedetablescomplmentairesutilises parlesoutilsOracle. Depuis Oracle9i Release 2, ces mots de passe par dfaut peuvent tre changs lors de la cration de la base de donnes. Ces comptes peuvent tre utiliss indiffremment pour ladministration courante (gestion des utilisateurs, du stockage,etc.)uniquementlorsquelabaseestdmarre. Un privilge supplmentaire particulier (SYSDBAou<SYSOPER) est ncessaire pour certaines oprations (dmarrage, arrt, etc.). De plus, lactivation de ce privilge SYSDBA ou SYSOPER ncessite un mcanisme dauthentification particulier, puisque la base de donnes peut ne pas tre disponible. Cette authentification seffectue soit par le systmedexploitation,soitparunfichierdemotdepasse. DanslechapitreGestiondesutilisateursetdeleursdroits,nousverronsquelanotionde"DBA"correspondunrle (ensembledeprivilgesregroupssousunnom)quipeuttreattribuuncompteutilisateur.

3.IdentificationprivilgieSYSDBAetSYSOPER
a.Parlesystmedexploitation
Pour utiliser lauthentification par le systme dexploitation, vous devez mettre lutilisateur souhait du systme dexploitation dans un groupe de droits spcial. Sur plateforme Unix, ce groupe sappelle gnralementdba (ou oper) surplateformeWindows,cegroupesappelleORA_DBA(ouORA_OPER). Ensuite, vous pouvez vous connecter au systme dexploitation avec lutilisateur en question, lancer loutil dadministration et vous connecter, sans nom dutilisateur et sans mot de passe, avec le privilge SYSDBA (ou SYSOPER). Syntaxe(dansSQL*Plus) CONNECT / AS { SYSDBA | SYSOPER } Exemple :

ENI Editions - All rights reserved - Algeria Educ

- 1-

CONNECT / AS SYSDBA SurplateformeUnix,legroupedoittrecrlorsdelinstallationdOracleilestpossibledeluiattribuerunautre nomquedbaet/oudedfinirunautregroupepoursparerlesprivilgesSYSDBAetSYSOPER. SurplateformeWindows,legroupeORA_DBAestautomatiquementcretseulleprivilgeSYSDBAestdisponible.Il estpossibleparlasuitedecrerunautregroupe ORA_OPERpourleprivilgeSYSOPERet/oudecrerdesgroupes ORA_<SID>_OPER|DBA spcifiquescertainesinstances(<SID>dsignantlenomdelinstance). SurplateformeWindows,pourquecemodedauthentificationsoitautoris,ilfautquilyaitlalignesuivantedans le fichier sqlnet.ora(rpertoire %ORACLE_HOME%\network\ admin voir le Chapitre Oracle Net pour la configuration OracleNet) : SQLNET.AUTHENTICATION_SERVICES= (NTS) LesoutilsdadministrationserontprsentsplusendtaildanslechapitreLesoutilsdadministration.

b.Parunfichierdemotdepasse
Pour utiliser lauthentification par un fichier de mot de passe, vous devez mettre le paramtre dinitialisation REMOTE_LOGIN_PASSWORDFILE EXCLUSIVE (dfaut) ou SHARED et crer un fichier de mot de passe laide de lutilitaireorapwdfourniparOracle. Exemple : C:\ > orapwd file=D:\Oracle\Product\10.1.0\Db_1\database\pwdHERMES.ora password=dur_a_trouver entries=4 Ensuite, vous pouvez vous connecter au systme dexploitation avec nimporte quel utilisateur, lancer loutil dadministrationetvousconnecter,entantqueSYS,laidedumotdepassedfiniprcdemment,avecleprivilge SYSDBA(ouSYSOPER). Syntaxe(dansSQL*Plus) CONNECT sys/mot_de_passe AS { SYSDBA | SYSOPER } Exemple : CONNECT sys/dur_a_trouver AS SYSDBA Avecunfichierdemotdepasse,pardfaut,seullecompteSYSaledroitdeseconnecteravecleprivilgeSYSDBAou SYSOPER. Si le paramtre REMOTE_LOGIN_PASSWORDFILE est gal EXCLUSIVE, il est possible de donner le privilge SYSDBAouSYSOPERdautresutilisateurs(voirlechapitreGestiondesutilisateursetdeleursdroits).Sileparamtre REMOTE_LOGIN_PASSWORD FILEestgalSHARED,seullecompteSYSpeututiliserlesprivilgesSYSDBAouSYSOPER. CemcanismeestprsentplusendtaildanslechapitreCrationdunenouvellebasededonnes.

c.Remarques
LeprivilgeSYSDBApermettouteslesoprations"lourdes"dadministration,notamment,lacrationdunebasede donnes,lesarrtsetlesdmarrages,lacrationdunfichierdeparamtreserveur,lesrcuprations,etc.Ildonne unaccstouteslesdonnesdelabasededonnes.LaconnexionseffectueimplicitementdansleschmadeSYS. LeprivilgeSYSOPERdonnepeuprslesmmesdroitsqueSYSDBA,lexceptionnotabledelacrationdelabase de donnes. Par contre, laccs est restreint aux seules donnes du dictionnaire de donnes. La connexion seffectueimplicitementdansleschmaPUBLIC. Avecuneauthentificationparlesystmedexploitation,ilestpossibledeseconnecterentapantunecommandedu typeCONNECT nimportequoi/nimportequoi AS SYSDBA,carlenometlemotdepassenesontenfaitpasutiliss. Ce fonctionnement est un peu troublant, notamment si un vrai compte Oracle est utilis, dautant plus que la sessionestouvertedansleschmaSYS : Exemple : SQL> CONNECT nimportequoi/nimportequoi AS SYSDBA Connect.
- 2 ENI Editions - All rights reserved - Algeria Educ

openmirrors.com

SQL> SHOW USER USER est "SYS" SQL> CONNECT scott/tiger AS SYSDBA Connect. SQL> SHOW USER USER est "SYS" SQL> CONNECT nimportequoi/nimportequoi ERREUR : ORA-01017: nom dutilisateur/mot de passe non valide; connexion refuse Attention : vous ntes plus connect ORACLE. SQL> CONNECT scott/tiger Connect. SQL> SHOW USER USER est "SCOTT" Depuislaversion9,laconnexionsouslecompteSYSsansleprivilgeSYSDBAnestpluspossible. Dans le cas de lutilisationdun fichier de mot de passe, si vous modifiez le mot de passe de SYS par un ordreSQL(voirleChapitreGestiondesutilisateursetdeleursdroits),lamodificationestrpercutedans lefichierdemotdepasse. Ladministration courante ne ncessite pas le privilge SYSDBA ou SYSOPER elle seffectue gnralement avec le compteSYSTEM:
q

gestiondesstructuresdestockage gestiondesutilisateurs gestiondesschmas.

LeprivilgeSYSDBAest,parcontre,ncessairepour :
q

larrtetledmarragedelabasededonnes lacrationdunebasededonnes lesoprationsdercuprationdunebasededonnes.

Dans les anciennes versions dOracle, il tait possible dutiliser un CONNECT INTERNAL pour obtenir ces privilges particuliers. Cette connexion nest plus supporte depuis la version 9. la place, il faut utiliser une connexion AS SYSDBA(quivalenteentermededroits). LauthentificationSYSDBAouSYSOPERparlesystmedexploitationnestpasautorisepourlesconnexionstravers lerseau(saufutilisationdunrseauscuris) danscecas,ilfaututiliseruneauthentificationparunfichierde motdepasse. Pour ladministration locale de la base de donnes (directement sur la console du serveur ou en mulation de terminal), vous pouvez indiffremment utiliser une authentification par le systme dexploitation ou par fichier de mot de passe. Dans le premier cas, vous devez vous assurer que les groupes et comptes correspondants du systmedexploitationsontbienprotgs.Dansledeuximecas,vousdevezvousassurerquelefichierdemotde passeetlutilitaireorapwdsontbienprotgs.

4.AutrescomptesOracle
Lors de la cration dune base de donnes, dautres comptes Oracle peuvent tre crs, notamment SYSMAN et DBSNMP. SYSMAN(motdepassepardfautCHANGE_ON_INSTALL)estuncomptequipeuttreutilispoureffectuerdestches dadministrationdansOracleEnterpriseManager.SYSMANestuncompteDBA. DBSNMP(motdepassepardfautDBSNMP)estuncompteutilisparlagentdOracleEnterpriseManagerpoursuperviser etgrerunebasededonnes. De nombreux autres comptes "administratifs" peuvent tre crs selon les options installes dans la base de

ENI Editions - All rights reserved - Algeria Educ

- 3-

donnes.

openmirrors.com

- 4-

ENI Editions - All rights reserved - Algeria Educ

Ledictionnairededonnes
1.Prsentation
Ledictionnairededonnesestunensembledetablesetdevuesquidonnentdesinformationssurlecontenudune basededonnes :
q

lesstructuresdestockage lesutilisateursetlesdroits lesobjets(tables,vues,index,procdures,fonctions,etc.). etc.

LedictionnairededonnesappartientSYSeteststockdansletablespaceSYSTEM.Ilestcrlorsdelacrationde labasededonnesetmisjourautomatiquementparOraclelorsquedesordresSQLDDL(DataDefinitionLanguage) sontexcuts(CREATE,ALTER,DROP). Pour lutiliser, il suffit de linterroger grce des requtes SELECT. Sauf exception, toutes les informations sont stockesenmajusculesdansledictionnairededonnes tenezencomptedanslcrituredevosclausesWHERE ! LedictionnairededonnesestchargenmmoiredanslapartieDictionaryCachedelaSharedPooletestutilisen interneparOraclepourtraiterlesrequtes. Ledictionnairededonnesestcrlorsdelacrationdelabase.Dunpointdevuepratique,lestablesproprement ditesdudictionnairededonnesnesontpasdocumentesparOracleetdoncdifficilesutiliser.Parcontre,grce des scripts fournis par Oracle, il est possible de crer des vues (et des synonymes publics) qui, elles, sont documentes et permettent effectivement dexploiter le dictionnaire de donnes cette tape de la cration dune baseseraprsentedanslechapitreCrationdunenouvellebasededonnes. Ilyadeuxgrandsgroupesdetables/vuesdansledictionnairededonnes :
q

lestablesetvuesstatiques lestablesetvuesdynamiquesdeperformance.

Les tables et vues statiques sont bases sur de vraies tables stockes dans le tablespace SYSTEM. Elles sont accessiblesuniquementquandlabasededonnesestouverte"compltement".Lestablesetvuesdynamiquesde performancenesontenfaitpasbasessurdevraiestablesmaissurdesinformationsenmmoireouextraitesdu fichier de contrle. Elles sinterrogent nanmoins comme de vraies tables/vues et donnent des informations sur le fonctionnement de la base de donnes, notamment sur les performances. Pour la plupart, elles sont accessibles mmelorsquelabasededonnesnestpascompltementouverte. La notion de "niveau douverture" dune base de donnes sera prsente dans le chapitre Dmarrage et arrt.

2.Lesvuesstatiques
Ilyatroisgrandescatgoriesdevuesstatiquescaractrisesparleurprfixe :
q

USER_%:informationssurlesobjetsquiappartiennentlutilisateur ALL_% :informationssurlesobjetsauxquelslutilisateuraaccs(lessiensetceuxsurlesquelsilareudes droits) DBA_% :informationssurtouslesobjetsdelabasededonnes.

Derrireleprfixe,lerestedunomdelavueestreprsentatifdelinformationaccessible.

ENI Editions - All rights reserved - Algeria Educ

- 1-

Cestroiscatgoriesdevuespermettentdefiltrerlesinformationsdudictionnairededonnesparrapportauxdroits des utilisateurs. Les informations accessibles dans les vues USER_ forment un sousensemble des informations accessibles dans les vues ALL_ qui ellesmmes forment un sousensemble des informations accessibles dans les vuesDBA_. Unutilisateur"lambda"aledroitdinterrogerlesvuesUSER_etALL_etilnyvoitquelesinformationsauxquellesila droit. CertainesvuesdelacatgorieDBA_peuventnepasavoirdquivalentdanslescatgoriesUSER_ouALL_.Exemple: DBA_DATA_FILES. DanslesvuesALL_etDBA_concernantlesobjetsdesschmas,lacolonneOWNERpermetdeconnatrelepropritaire delobjet. Lesvuessuivantessontparticulirementutilespourladescriptiondunschma : %_OBJECTS %_CONSTRAINTS %_TABLES %_CONS_COLUMNS %_TAB_COLUMNS %_VIEWS %_INDEXES %_SYNONYMS %_IND_COLUMNS %_SEQUENCES %_TRIGGERS %_SOURCE Dans les diffrents chapitres, les principales vues du dictionnaire de donnes relatives au sujet trait seront prsentes. Oracleproposedessynonymessurcertainesvues:

Synonyme
COLS DICT IND OBJ SEQ SYN TABS

Vuecorrespondante
USER_TAB_COLUMNS DICTIONARY USER_INDEXES USER_OBJECTS USER_SEQUENCES USER_SYNONYMS USER_TABLES

Parailleurs,lesvuesDICTIONARYetDICT_COLUMNSdonnentladescriptiondetouteslestablesetvuesdudictionnaire dedonnes. LavueDICTIONARYesttrspratiquepourretrouverlenomdesvuesquitraitentdunsujetdonn.Eneffet,lenomde lavuecontientunechanedecaractresreprsentativedelinformationprsenteparlavue(TABouTABLEpourles tables, INDou INDEX pour les index, COLou COLUMN pour les colonnes, etc.) il suffit donc de faire une recherche laidedeloprateurLIKE. Exemple SQL> SELECT * FROM dictionary WHERE table_name LIKE USER%SEQ%;

openmirrors.com

- 2-

ENI Editions - All rights reserved - Algeria Educ

TABLE_NAME COMMENTS --------------- -------------------------------------------------USER_SEQUENCES Description of the users own SEQUENCEs SQL> SELECT column_name,comments FROM dict_columns 2 WHERE table_name = USER_SEQUENCES; COLUMN_NAME COMMENTS -------------------- --------------------------------------------SEQUENCE_NAME SEQUENCE name MIN_VALUE Minimum value of the sequence MAX_VALUE Maximum value of the sequence INCREMENT_BY Value by which sequence is incremented CYCLE_FLAG Does sequence wrap around on reaching limit? ORDER_FLAG Are sequence numbers generated in order? CACHE_SIZE Number of sequence numbers to cache LAST_NUMBER Last sequence number written to disk

3.Lesvuesdynamiquesdeperformance(v$)
Les vues dynamiques de performance sont prfixes par V$. Derrire le prfixe, le reste du nom de la vue est reprsentatifdelinformationaccessible. Saufexception,cesvuesnesontaccessiblesquauxDBA. Lesvuesrelativesauxsujetsabordsdanscechapitresontlessuivantes: V$I[]NSTANCE Informationssurlinstance V$DATABASE Informationssurlabasededonnes V$S[]GAetV$S[]GAINFO InformationssurlaSGA V$PARAMETER Informationssurlesparamtres.

La vue V$PARAMETER est une des rares vues du dictionnaire de donnes qui stocke des informations en minuscules. LesvuesdynamiquesdeperformancesontaussidcritesdanslesvuesDICTIONARYet DICT_COLUMNS.Encomplment, les vues V$FIXED_TABLEet V$FIXED_VIEW_DEFINITION donnent des informations sur la dfinition interne des vues dynamiques. Exemple SQL> SELECT name,value FROM v$parameter WHERE name LIKE %block%; NAME VALUE ------------------------------ -------------------db_block_buffers 0 db_block_checksum TYPICAL db_block_size 8192 db_file_multiblock_read_count 95 db_block_checking FALSE Danslesdiffrentschapitres,lesprincipalesvuesdynamiquesrelativesausujettraitserontprsentes.

ENI Editions - All rights reserved - Algeria Educ

- 3-

You might also like