Académique Documents
Professionnel Documents
Culture Documents
David Egan, Paul Zikopoulos-Base de Données Sous Linux-Eyrolles (2000) PDF
David Egan, Paul Zikopoulos-Base de Données Sous Linux-Eyrolles (2000) PDF
sous
Linux
CHEZ LE MME DITEUR
DU MME AUTEUR
G. BRIARD. Oracle8i sous Linux (2me tirage).
N9135, 2000, 650 pages + CD-Rom.
G. BRIARD. Oracle8 pour Windows NT.
N9023, 1998, 350 pages + CD-Rom.
BASES DE DONNES
C. SOUTOU. Objet-relationnel avec Oracle8.
N9063, 1999, 480 pages.
G. GARDARIN. Les bases de donnes.
N9060, 1999, 816 pages.
G. GARDARIN. Internet/intranet et bases de donnes.
N9069, 1999, 264 pages.
LINUX
P. WAINWRIGHT Apache professionnel.
N9150, 2000, 650 pages.
H. HOLZ, B. SCHMITT, A. TIKART. Internet et intranet sous Linux.
N9101, 1999, 474 pages + CD-Rom.
C. BLAESS. Programmation systme en C sous Linux.
N9136, 2000, 960 pages.
N. MATTHEW, R. STONES. Programmation Linux.
N9129, 2000, 900 pages.
D. ODIN. Programmation Linux avec GTK+.
N9115, 2000, 684 pages.
A. BERLAT, J.-F. BOUCHAUDY, G. GOUBET. Linux Administration.
N9147, 2000, 480 pages.
DVELOPPEMENT WEB/INTRANET
L. LACROIX, N. LEPRINCE, C. BOGGERO, C. LAUER. Programmation Web avec PHP.
N9113, 2000, 382 pages.
A. PATZER. Programmation Java ct serveur. Servlets, JSP et EJB
N9109, 2000, 984 pages.
A. TASSO. Le livre de Java premier langage.
N9156, 2000, 312 pages.
N. MCFARLANE. JavaScript professionnel.
N9141, 2000, 950 pages.
J.-C. BERNADAC, F. KNAB. Construire une application XML.
N9081, 1999, 500 pages.
Bases de donnes
sous
Linux
Nous souhaitons remercier, pour leur gentillesse et leur aide, les personnes sans qui
ce livre naurait pas vu le jour.
Richard Kristof, Duncan Anderson, Jennifer Gould, Robert Woodruff, Kevin
Murray, Dale Leatherwood, Shelley Everett, Laurie Hedrick, Rhonda Harmon, Lisa
Lavallee et Robert Sanregret de Global Knowledge, qui nous ont facilit laccs aux
meilleures formations professionnelles sur les systmes dinformation.
Ralph Troupe et lquipe de Rt. 1 Solutions pour leurs recherches incomparables
dans les domaines de la conception, du dploiement et de lassistance, concernant
les rseaux propres aux entreprises.
Karen Cross, Kim Wylie, Harry Kirchner, John Hays, Bill Richter, Kevin Votel,
Briton Clark, Sarah Schaffer, Luke Kreinberg, Ellen Lafferty et Sarah MacLachlan
de Publishers Group West, qui ont bien voulu partager leur immense exprience et
leur expertise en marketing.
Peter Hoenigsberg, Mary Ging, Caroline Hird, Simon Beale, Julia Oldknow, Kelly
Burrows, Jonathan Bunkell, Catherine Anderson, Peet Kruger, Pia Rasmussen,
Denelise L'Ecluse, Rosanna Ramacciotti, Marek Lewinson, Marc Appels, Paul
Chrystal, Femi Otesanya et Tracey Alcock de Harcourt International, qui nous ont
encourags dans notre vision douverture au monde entier.
Une mention spciale pour les professionnels dOsborne. Nous sommes honors de
publier avec eux des ouvrages de renom, dans la srie Global Knowledge Certifica-
tion Press.
Tom Bascom est architecte dentreprise chez EDS et responsable des consul-
tations en matire des technologies dentreprise et des changes dinforma-
tion entre EDS et ses clients. Il est charg de la formulation de stratgies inter-
entreprises et assume un rle de conseil au niveau de la conception, du dve-
loppement, de limplmentation et de la gestion des produits et solutions
appropris. Tom a particip rgulirement llaboration des produits utili-
sant la base de donnes Progress depuis 1986, ainsi qu Linux depuis 1994 ;
il apporte frquemment sa contribution des forums publics tels que PEG ou
le groupe de news comp.databases.progress. Tom se fait confrencier
loccasion, et il est lauteur darticles techniques, ou spcifiques de lindus-
trie, dans le magazine Progressions.
Jamieson Becker est ingnieur, spcialiste de Linux/UNIX et Windows NT ;
il est propritaire de Ring0.com, une socit de services web. Depuis ses
dbuts en informatique, en 1980, Jamieson est devenu un consultant accom-
pli, partenaire dIBM, Compaq, Carrier, Brown & Williamson, VoiceStream,
Cargill et Citizens. Jamieson est spcialise des grandes applications web utili-
sant Linux. Il vit avec sa femme, Jennifer, et son chat, Angie, Atlanta, en
Georgie. On peut le joindre par e-mail jamiebecker@ring0.com.
Geoff Crawford dirige une socit de conseil implante au New Jersey,
Innov8 Computer Software, LLC (www.innov8cs.com). Il pratique Progress
depuis 15 ans, titre professionnel. Geoff est actif au sein du Progress E-mail
Group, auteur de Progress ODBC FAQ et intervient dans les confrences des
utilisateurs Progress. Son temps libre, Geoff le partage, en une combinaison
inattendue, entre la recherche de ses origines allemandes en Pennsylvanie et
lcoute de Pantera.
Mark Connoly travaille sur les bases de donnes relationnelles depuis 1987.
Il a une grande exprience de DB2, Informix et Oracle, acquise dans des fonc-
tions aussi diverses quadministrateur de base de donnes, dveloppeur, chef
de produit et spcialiste en marketing.
Brad Dietrich (B.S. Computer Science and Electrical Engineering) a
travaill aussi bien en tant que professionnel quau titre de la recherche dans
lespace Internet, ds son apparition. Il est considr comme lun des ing-
nieurs sur lesquels repose Software Engineers for ChannelDot Networks,
San Francisco, CA. Avant de rejoindre ChannelDot, il a fond et dirig
DefTech Contracting (www.deftech.com), une entreprise de dveloppement
dapplications web et internet, o il a dvelopp des applications web
mondialement connues pour de nombreux clients, dont Mattel et Spyglass. Il
a conduit des projets de grande ampleur, qui vont de le-commerce lint-
gration de systmes existants et de bases de donnes qui se mesurent en tera-
bytes. Il a particip, au sein de la communaut open source, des dveloppe-
ments qui vont dapplications middleware au contournement de bogues
contenus dans des pilotes dorigine propritaire. Avant de dmarrer son entre-
prise de dveloppement dapplications Internet, il a dvelopp des applica-
tions web de gestion de rseau chez FORE Systems ainsi que des sites web
dducation distance pour luniversit Carnegie Mellon.
David Egan (P.Eng., BASc Enginering, Universit de Toronto, MCT,
RHCE), a vcu dans diffrents pays et travaill sur des micro-ordinateurs
depuis les premiers dbuts dApple et du PC dIBM. Le premier travail-
avec-passion ( hobby-turned-job ) de David fut la programmation en
langage C et en assembleur Z80, pendant cinq ans. David est consultant en
matire dintgration des systmes VMS/UNIX/NT/PC et formateur en tech-
nologie depuis 15 ans. Il crit des livres loccasion mais, la plupart du
temps, il se consacre aux activits de direction et de conception de sminaires
sur Unix, NT et Linux pour Global Knowledge Inc. Cary, NC :
http://www.globalknowledge.com. Quand il nest pas sur la route prcher
les vertus de Linux et de NT, il rside prs de Vancouver, BC, avec son adora-
ble femme Deborah et leurs enfants, Vanessa et Callen. On peut leur crire
egand@istar.ca ou egand@wwdb.org, ou sur http://home.istar.ca/ egand.
Brent Gilmore (Sun Certified Solaris Administrator et Sun Certified
Network Administrator) est administrateur Oracle et dveloppeur pour
luniversit dtat de San Diego. Il travaille dans linformatique depuis 1989
et a obtenu un certificat B.S. en systmes dinformation et un certificat M.S.
en gestion dadministration des affaires. Brent se sert de Linux depuis 1996 et
dOracle depuis 1997. Il travaille actuellement au dveloppement dapplica-
tions Internet et la conception de bases de donnes utilisant Oracle8/8i,
Linux, Perl, PL/SQL, OAS et Apache.
Collaborateurs techniques
Chris Rogers a configur des serveurs Linux depuis 1994. Pour donner une
ide de ce que cela reprsente pour lvolution de lindustrie informatique, le
navigateur web tait alors Mosaic, Netscape 0.9 avait tout juste atteint les
sites FTP, et la distribution Slackware sans X-Windows tenait encore sur trois
disquettes de 3.5 pouces seulement. Chris est maintenant CEO chez
PowerStreak Networks, un fournisseur de services de gestion qui se spcialise
dans la gestion des rseaux de clients et se sert de serveurs Linux. Chris peut
tre joint crogers@powerstreak.com.
David C. Niemi est ingnieur rseau senior dans une grande socit finan-
cire. Il est aussi prsident et co-fondateur de Tux.Org, une socit sans but
lucratif voue lassistance et la formation sur les logiciels libres. Depuis
1993, il apporte sa contribution au dveloppement du noyau Linux et
dautres projets de logiciels libres.
INTRODUCTION .................................................................................1
CHAPITRE 1
LE SYSTME DEXPLOITATION LINUX ...........................9
Le noyau Linux.....................................................................................11
Lavenir du dveloppement de Linux .....................................................12
Distributions Linux.................................................................................13
Pourquoi payer une version commerciale de Linux ? .........................13
Diffrences entre Linux et les autres systmes dexploitation..........14
Fort potentiel..........................................................................................14
Multitche ......................................................................................15
Architectures multiprocesseurs (SMP) ..............................................15
Mmoire virtuelle 32 bits (et 64 bits sur RISC) .................................15
Compatibilit binaire, le format ELF ................................................15
Multi-utilisateur ..............................................................................16
Oprations en mode noyau compltement protg .............................16
Interface graphique X Window gratuite ............................................16
Applications Windows/DOS, VMWare ............................................16
Fonctions rseau tendues ...............................................................17
Services web standard .....................................................................17
Services UNIX standard ..................................................................17
Pourquoi choisir Linux ........................................................................18
Quand utiliser Linux ..............................................................................18
Serveurs et stations de travail ................................................................18
Matriel recommand ............................................................................20
CHAPITRE 2
INSTALLATION DE BASE DE RED HAT LINUX ...... 35
Machine physique spare .................................................................... 36
Choisir une distribution Linux............................................................... 37
Dcisions prliminaires linstallation.............................................. 37
Matriel ................................................................................................. 37
Architecture multiprocesseurs............................................................... 38
RAM ....................................................................................................... 38
Disques .................................................................................................. 38
RAID.......................................................................................................39
Cot des systmes RAID .................................................................39
RAID matriel ou logiciel ...............................................................39
Interface(s) rseau..................................................................................40
Mesures de sauvegarde ..........................................................................40
Assistance ...............................................................................................41
Prliminaires linstallation .................................................................41
Installer Red Hat ..................................................................................41
Un parcours dinstallation rapide .........................................................41
Choisir un type dinstallation.................................................................44
Installation dune station de travail ...................................................44
Installation dun serveur ..................................................................45
Mise niveau .................................................................................46
Installation personnalise ................................................................46
Installation personnalise, ou manuelle .............................................47
Crer les partitions de son choix............................................................47
Partitions dchange multiples .........................................................47
Supprimer une partition ...................................................................47
Modifier une partition .....................................................................48
Ajouter une partition .......................................................................48
Installation du rseau.............................................................................51
Utiliser DHCP ................................................................................52
Activation au dmarrage, ou boot .....................................................52
Ne pas utiliser DHCP ......................................................................53
Hostname .......................................................................................53
Slection du fuseau horaire....................................................................54
Configuration du compte root ................................................................54
Authentification ......................................................................................55
Utiliser NIS ou NIS+ ......................................................................56
Slection des paquetages........................................................................57
Les paquetages de base ...................................................................57
Services optionnels installer ..........................................................58
Option Tout installer ..................................................................60
Installation de X Window (optionnelle) .................................................60
Logiciel serveur X ..........................................................................62
Modes vido X ...............................................................................62
CHAPITRE 3
INSTALLER ET UTILISER ORACLE SUR LINUX .... 71
Concepts ............................................................................................... 73
Zone globale systme............................................................................. 74
Pool partag................................................................................... 74
Cache mmoire de la base de donnes ............................................. 74
Cache de journalisation .................................................................. 75
Zone globale des programmes............................................................... 75
Tablespaces ........................................................................................... 75
Fichiers de donnes ............................................................................... 75
Extents ................................................................................................... 75
Segments ................................................................................................ 76
Fichiers de contrle............................................................................... 76
Journaux ................................................................................................ 76
Segments de rollback ............................................................................. 76
Fichiers de paramtres.......................................................................... 77
SID ............................................................................................... 77
$ORACLE_HOME ........................................................................ 77
$ORACLE_BASE ......................................................................... 77
Identifiants de version ........................................................................... 77
PL/SQL .................................................................................................. 78
Schma ...................................................................................................78
Installation ............................................................................................78
Pr-installation ......................................................................................79
Configurer le systme de fichiers .....................................................80
Configurer lespace dchange .........................................................81
Paramtres du noyau .......................................................................82
Comptes et groupes systme ............................................................82
Options denvironnement ................................................................83
Paquetages Linux............................................................................85
Java pour Linux ..............................................................................86
Se procurer le logiciel Oracle ...........................................................87
Installer Oracle8 ....................................................................................87
Installer les correctifs ......................................................................90
Crer les objets de base de donnes ..................................................93
Installer Oracle8i ...................................................................................94
Installer les correctifs ......................................................................98
Construire les scripts de cration de base de donnes .........................99
Excuter les scripts de cration de base de donnes .........................104
Post-installation ...................................................................................105
Comptes SYS et SYSTEM ............................................................105
Configuration du fichier de paramtres ...........................................106
Dmarrage et arrt automatiques ....................................................106
Configuration du rseau ................................................................108
Utiliser Oracle8/8i ..............................................................................110
Dmarrage et arrt...............................................................................110
Processus en arrire-plan ....................................................................113
Crer un compte ...................................................................................114
SQL*Plus..............................................................................................116
Dictionnaire des donnes.....................................................................119
Import/export .......................................................................................120
Logiciels tiers ......................................................................................122
Orasoft..................................................................................................122
SQLWork ....................................................................................123
ObjectManager .............................................................................124
Orac......................................................................................................124
Perl/DBI ...............................................................................................124
Rsum................................................................................................ 125
FAQ..................................................................................................... 126
CHAPITRE 4
INSTALLER INFORMIX SUR LINUX ............................... 129
Installation.......................................................................................... 135
Acquisition et mise en place du logiciel sur le serveur ....................... 135
Installation et marquage...................................................................... 138
Initialisation du disque et dmarrage du serveur................................ 141
Cration des fichiers de donnes pour Informix ................................. 143
propos des disques ........................................................................... 144
Disques et rpertoires.......................................................................... 145
Besoins despace................................................................................. 145
Configuration ..................................................................................... 146
$INFORMIXDIR/etc/$ONCONFIG .................................................... 147
$INFORMIXDIR/etc/sqlhosts.............................................................. 159
/etc/services ......................................................................................... 159
/opt/data/rootdbs ................................................................................. 160
Dmarrer votre moteur avec oninit ..................................................... 160
Arrter le moteur ................................................................................. 167
Configuration finale .......................................................................... 167
Rappel.................................................................................................. 167
Physdbs................................................................................................ 168
Crer un fichier de physdbs................................................................. 169
Logsdbs................................................................................................ 173
Crer logsdbs....................................................................................... 174
Crer des nouveaux logs logiques ....................................................... 175
Tempdbs............................................................................................... 184
Dernires options de configuration de $ONCONFIG......................... 187
Log physique ............................................................................... 187
Log logique ................................................................................. 187
Utilisation de la mmoire .............................................................. 187
Options LRU ............................................................................... 188
Options DBSPACETEMP ............................................................ 188
Redmarrer le moteur.......................................................................... 189
CHAPITRE 5
INSTALLER ET UTILISER SYBASE SUR LINUX ...201
Installation ..........................................................................................203
Installer SQL Server 11.0.3..................................................................203
Configurer la machine de destination..............................................204
Installer Sybase ............................................................................206
Installer les logiciels clients optionnels ...............................................208
SQSH ..........................................................................................209
Bibliothques de dveloppement ....................................................209
Configuration......................................................................................210
Configurer le serveur de base de donnes Sybase ...............................211
Configurer le serveur de sauvegarde Sybase.......................................218
Configurer les bibliothques client-serveur de Sybase........................219
Dmarrer automatiquement le serveur de base de donnes
et le serveur de sauvegarde..................................................................220
Modifier le mot de passe de ladministrateur systme.........................220
Configurer les units de bases de donnes
et les bases de donnes.........................................................................221
Crer des comptes utilisateur et des autorisations ..............................223
Tester la base de donnes...................................................................226
Conception dune base de donnes ...................................................231
CHAPITRE 6
INSTALLER DB2 VERSION 6.1
SUR LINUX RED HAT ............................................................... 245
Introduction ....................................................................................... 246
Prparer linstallation de DB2
sur une station de travail Red Hat ................................................... 249
Prparer Red Hat version 5.2 et version 6.0
une installation de DB2 .............................................................. 249
Prparer Red Hat version 6.1 une installation de DB2................... 250
Installer DB2 ...................................................................................... 251
Excuter linstallation ......................................................................... 252
Vrifier linstallation ........................................................................... 261
Configurer le centre de contrle....................................................... 263
Installer un client DB2 ...................................................................... 265
Configurer un client DB2 pour communiquer
avec un serveur DB2.......................................................................... 273
Dpannage de la connexion ................................................................ 280
Rsum................................................................................................ 281
FAQ..................................................................................................... 282
CHAPITRE 7
INSTALLER MYSQL SUR LINUX ...................................... 287
Installation.......................................................................................... 289
Conventions dappellation................................................................... 291
CHAPITRE 8
INSTALLER ET GRER PROGRESS SUR LINUX 317
Installation ..........................................................................................319
Installer partir du mdia ...................................................................319
Conditions pralables ....................................................................319
Installer........................................................................................320
Paramtres du noyau ...........................................................................324
Mmoire partage .........................................................................325
Smaphores ..................................................................................326
Autres paramtres divers ...............................................................327
Installation de lenvironnement ...........................................................328
Variables denvironnement ............................................................329
Installation du terminal PROTERMCAP ....................................329
Installation du mode client-serveur .................................................330
Configuration......................................................................................331
Structure de rpertoire .........................................................................331
Espace disque et dbit dentre/sortie .................................................333
Crer une nouvelle base de donnes....................................................335
Multivolume.................................................................................335
CHAPITRE 9
INSTALLER ET GRER POSTGRESQL
SUR LINUX ........................................................................................ 363
PostgreSQL dans le sillage de lInternet ......................................... 365
Se procurer PostgreSQL................................................................... 366
Installation rapide de PostgreSQL................................................... 367
Dtails de linstallation...................................................................... 369
Installation de la distribution source ............................................... 374
Avant de dmarrer ............................................................................... 375
Procder tape par tape .................................................................... 375
CHAPITRE 10
DVELOPPER UNE APPLICATION WEB ...................427
Plates-formes dapplication web.......................................................428
Active Server Pages..............................................................................429
Cold Fusion ..........................................................................................429
Java Server Pages ................................................................................429
Zope......................................................................................................429
Langages de script ...............................................................................430
PHP ......................................................................................................430
Apache..................................................................................................430
Dmarrage...........................................................................................431
Enjeux de la conception .......................................................................431
Clart...........................................................................................431
Extensibilit .................................................................................432
Interface conviviale.......................................................................433
Conception du schma .........................................................................433
Flux de donnes ............................................................................433
PHP, MySQL et Apache : installer lapplication.................................435
Connectivit de PHP : faire la connexion............................................436
Lire les donnes de la base ............................................................436
Scurit.................................................................................................437
Conclusion...........................................................................................438
FAQ .....................................................................................................439
ANNEXE A
SCRIPT PHP DE LAPPLICATION
DE-COMMERCE ...........................................................................441
ANNEXE B
SCRIPT MYSQL DE LAPPLICATION
DE-COMMERCE ...........................................................................465
INDEX ....................................................................................................469
Comment croire que Linux a moins de dix ans ? Dans ce court laps de temps,
le systme dexploitation, modeste, crit titre exprimental par un tudiant
finnois, a explos, quil sagisse des fonctions ou de son usage. Lexplosion
de lInternet, tout fait comparable et simultane, a propuls Linux sur le
devant de la scne.
Ces temps-ci, Linux bnficie dun gain de popularit, en tant que plate-
forme serveur oriente entreprise particulirement fiable. Depuis sa premire
publication, Linux sest rvl un systme dexploitation stable et extensible.
Mais ce nest que depuis peu que les plus grands diteurs de logiciels sy int-
ressent et commencent concevoir des applications portables sur les plates-
formes Linux. Lavance la plus remarquable dans ce domaine est venue en
1999, quand les quatre plus grands diteurs de base de donnes Oracle,
Informix, Sybase et IBM ont annonc la prise en charge des plates-formes
Linux. Auparavant, Linux disposait dautres bases de donnes, mais la parti-
cipation de ces diteurs de renom lui donne le coup de pouce dcisif et la
publicit dont il avait besoin.
Les chapitres de cet ouvrage vous guident au fur et mesure de linstallation
de diverses bases de donnes, et indiquent aussi comment tester et utiliser
certaines caractristiques critiques pour les maintenir. Il appartient au lecteur
de dcider quelle base de donnes choisir pour un projet donn ; il trouvera-
dans ce livre quelques repres qui laideront dans sa dmarche.
Organisation de louvrage
Ce livre traite de linstallation et de la configuration de plusieurs bases de
donnes parmi les plus grandes. Dans cette optique, chaque chapitre est
crit comme un tout et constitue une mini-rfrence pour la base de donnes
traite.
Chapitre 1 - Le systme dexploitation Linux. Cest un rsum de
Linux en gnral. Ce chapitre explore un peu lhistoire ainsi que certains
aspects logistiques de Linux ; cest un bon chapitre de fond pour se fami-
liariser avec Linux et la mouvance des logiciels libres ou Open Source.
Chapitre 2 - Installation Red Hat Linux de base. Cest une revue, tape
par tape, de linstallation de Red Hat, la version la plus rpandue de
Linux. Si le serveur de base de donnes envisag est destin tre un
serveur de production, il est vivement conseill dinstaller un systme
dexploitation tout neuf, sur un nouveau matriel, afin dobtenir la confi-
guration la plus stable possible.
Chapitre 3 - Installer et excuter Oracle sur Linux. Oracle est en passe
de devenir la base de donnes la plus courante et la plus largement recon-
nue du march. Elle se prte nombre dextensions et est extrmement
fiable. Cependant, elle est assez chre et peut ne pas convenir aux applica-
tions des PME.
Chapitre 4 - Une installation Informix sur Linux. Informix suit Oracle
de prs quant la flexibilit et la fiabilit. En gnral, le choix entre les
deux bases de donnes est strictement une question de prfrence person-
nelle.
Chapitre 5 - Installer et utiliser Sybase sur Linux. Sybase a un fidle
partisan. Quand on connat Microsoft SQLServer, on sait dentre que
Sybase constitue un choix logique pour lenvironnement Linux : la
conception de SQLServer, de Microsoft, est trs proche de celle de
Sybase.
Chapitre 6 - Installer la base de donnes universelles DB2 version 6.1
sur Linux. DB2 est la plus sous-estime des grandes bases de donnes.
Elle est trs souvent utilise sur les grands systmes, le portage sur Linux
est donc puissant et flexible. Ne pas carter DB2 des alternatives possibles
sans lire attentivement ce chapitre.
Chapitre 7 - Une installation MySQL sur Linux. MySQL est la plus
connue des bases de donnes freeware. Elle est facile initialiser et
configurer, et se prte trs bien aux applications web. Cependant, elle est
moins adapte aux trs grandes bases de donnes.
Caractristiques de base
Toutes les bases de donnes parlent le langage SQL (Structured Query
Language). Ce standard de base assure la compatibilit dune base de
donnes une autre. Mais il nest pas implment de la mme manire dune
base de donnes une autre, aussi faut-il tre attentif lors dune migration.
Par exemple, nessayez pas de migrer une base de donnes Oracle utilisant les
BLOB dans une base de donnes PostgreSQL, qui ne gre pas ce type
dobjets. Toutes les bases de donnes supportent les quatre instructions SQL
de base : SELECT, INSERT, UPDATE et DELETE et, de plus, elles supporte-
ront toutes les notions de base utilisateur et de schma de table, qui servent
crer et grer les tables et les autorisations des utilisateurs.
Caractristiques avances
Les deux caractristiques avances les plus notables sont les BLOB et XML.
Les BLOB (grands objets binaires) permettent de stocker des images dans la
base de donnes. Oracle et dautres bases de donnes supportent les BLOB.
XML est une technologie relativement nouvelle. Semblable sur ce point
HTML, XML est un sous-ensemble de SGML (Standard Generalized Markup
Language). Mais, contrairement HTML, qui est un langage balises ddi
au formatage de documents, XML contient des balises relatives aux donnes
et permet dafficher les donnes directement dans une page web. Si le naviga-
teur ou le serveur dapplication parlent XML, les donnes sont formates
et affiches avec un minimum de programmation. La plupart des bases de
donnes disponibles sur le march aujourdhui prennent maintenant en charge
XML dune manire ou dune autre.
Dans ce chapitre
Brve histoire de Linux
Le noyau Linux
La diffrence entre Linux et les autres
systmes dexploitation
Pourquoi choisir Linux ?
Distributions de Linux
Rflchir avant la mise jour ou la
migration
Comment commencer le processus
Le noyau Linux
Au dpart, Linux fut dvelopp pour un usage rcratif et il tait destin tre
distribu gratuitement. Le noyau Linux et son code source sont disponibles
pour tous et continueront tre gratuits tant que Linus maintiendra le
copyright sur le code source du noyau. Linux est une marque commerciale
dpose par Linus Torvalds et est crit collectivement, aux termes de la
licence gnrale publique (GPL, General Public License), par les centaines
dauteurs qui contribuent sa publication. La GPL autorise nimporte qui
distribuer librement le code source dans son intgralit, en faire des copies,
et le vendre ou le distribuer ( quelques exceptions prs) par tous moyens.
La GPL est incluse dans le noyau Linux (rpertoire usr/src/linux/
COPYING/ sur le CD-ROM Linux), ou peut tre tlcharge, ou consulte,
sur de nombreux sites Internet.
Important. Un logiciel sous GPL a le mrite doffrir une totale souplesse aux utilisa-
teurs du logiciel, et de leur pargner lachat dune licence chre ou des poursuites.
Le noyau Linux nest quune petite partie de ce que lon connat sous le nom
de Linux. Le noyau, comme son nom lindique, est la pice centrale, au coeur
du systme dexploitation. Vous pouvez penser au noyau comme au moteur
de votre PC : ce qui fait tout marcher . Le noyau gre les entres/sorties, se
charge de la gestion de la mmoire... cest, la base, le cerveau du systme
dexploitation. Le noyau, bien que compact, est lune des raisons majeures
qui font que Linux est un systme dexploitation puissant et efficace.
En plus de cette partie centrale, il faut encore beaucoup dautres composants
pour btir un systme dexploitation complet et utilisable. La puissance dun
systme dexploitation ne peut tre compltement teste sans utilitaires pour
accomplir des travaux tels que la cration de documents, le partage de fichiers
et linstallation, laffichage et limpression de fichiers et de documents. Ces
utilitaires sont disponibles librement sur lInternet, de mme que le noyau de
Linux. Le tableau 1.1 prsente un exemple restreint des utilitaires fournis
avec Linux.
Tableau 11
Utilitaires UNIX de base fournis avec chaque distribution Linux
Manipulation de fichier cp, mv, rm, ln, touch, ls, cat, more, >, >>, 2>, <
Statistiques ps, vmstat, nfsstat, innstat, netstat, top, qui, users, pac, du
Utilitaires vi, pine, pico, sed, awk, grep, find, netscape, tar, cpio, compress
Services rseau DHCP, http, SMB, ftp, telnet, talk, pop3, imap, fingerd, sendmail
Ces utilitaires, ainsi que des centaines dautres, sont disponibles librement sur
lInternet. On peut les tlcharger et les installer individuellement, ou tl-
charger le noyau et tous les utilitaires ncessaires dans un fichier unique
(quoique de bonne taille). la place du tlchargement, beaucoup dditeurs
de logiciels offrent leurs versions de Linux sur CD-ROM, que lon peut ache-
ter dans nimporte quel magasin. Ces versions commerciales comprennent un
ensemble de programmes et dutilitaires, ainsi que quelques utilitaires
maison : cest ce que lon appelle une version ou distribution de Linux.
Distributions Linux
Une copie de Linux, commerciale ou gratuite, sappelle communment une
distribution. Il sagit dun ensemble dutilitaires pour Linux, fourni par un
diteur, comprenant le noyau et parfois certains produits propritaires, tels
que des gestionnaires de base de donnes, des logiciels pare-feu, etc. Une
distribution typique de Linux contient des centaines dutilitaires UNIX stan-
dard, et aussi un excellent ensemble doutils de dveloppement, de jeux, de
bases de donnes, de logiciels graphiques et dutilitaires de contrle, ainsi
quune interface graphique (GUI, Graphical User Interface), le systme
X Window.
Certaines de ces distributions Linux ne sont pas entirement gratuites. La
base du systme peut tre gratuite, mais non les services supplmentaires qui
font loriginalit dune version de Linux. Il existe des versions commerciales
de Linux, produites par des diteurs tels que Debian, Red Hat, VA Linux,
SuSE, et dautres. Selon les termes de la licence gnrale publique, on peut
tlcharger gratuitement une copie complte de ces distributions Linux. On
les trouve habituellement sur le site web de chaque socit, ainsi que sur de
nombreux sites miroir disperss travers lInternet.
Fort potentiel
Les distributions de Linux nont pas exactement le mme ensemble dutilitai-
res, mais en gnral, les fonctionnalits de base fournies avec Linux sont pour
le moins impressionnantes. Comme Microsoft na pas besoin de se mesurer
la concurrence en matire de bureau, ses conseils font presque toujours rf-
rence une amlioration par rapport une version prcdente, et non un
produit de la concurrence. Linux est un systme dexploitation comptitif
pour Intel ou les compatibles PC tant comme station de travail que comme
systme dexploitation dun serveur. En fait, la plupart des amliorations de
Windows NT, depuis quatre ans, ont t des services UNIX que Linux a
toujours supports.
Voici quelques-unes des caractristiques de la plupart des variantes de Linux,
qui en font un grand serveur de base de donnes :
multitche
SMP (multiprocesseurs)
modles de mmoire virtuelle 32 et 64 bits
mode noyau protg
binaires standard ELF
multi-utilisateur
interface graphique gratuite
compatibilit binaire avec les autres variantes dUNIX
protocoles de rseau tendu et support des services
tous les services rseau UNIX standard, tels HTTP, FTP, Telnet, etc.
Multitche
Le multitche est une fonction essentielle, prrequise, de tout serveur, en
particulier les serveurs de base de donnes. Avec un vritable environnement
multitche Intel 32 bits (64 bits sur les processeurs de type RISC), Linux a la
capacit dexcuter des programmes multiples simultanment , mme sur
un processeur unique. En ralit, ce processus est un tour de table trs rapide
cest--dire que chaque processus attend son tour dans une file pour dispo-
ser des ressources. La mthode particulire dont se sert Linux pour grer les
requtes donne limpression dun vrai multitche. Plusieurs threads peuvent
tre dmarrs simultanment et sexcuter en parallle, ce qui offre des
performances excellentes et optimise lusage des canaux dentre/sortie.
AIX, Sun, et la plupart des versions de Linux pour Intel figurent parmi les
nombreuses variantes dUNIX qui migrent vers cette conception de la compa-
tibilit. Par exemple, Corel Draw pour SCO fonctionne aussi sous Linux.
Multi-utilisateur
De vraies fonctions multi-utilisateur permettent plusieurs utilisateurs
dexcuter des processus multiples sur le mme serveur hte Linux. ne pas
confondre avec la possibilit daccs multiple , que propose Microsoft
Windows NT, o des processus et des threads multiples sexcutent, mais
sans contexte dutilisateur distinct et part entire.
Incompatibilits tranges
Rcemment, il nous est arriv de travailler avec quelques machines loca-
les, qui contenaient une carte dinterface rseau courante, suppose fonc-
tionner avec Linux. Hlas, ces cartes sont lorigine dune vritable
frustration ; aprs vrification rapide de la page web du fabricant de la
carte, qui nous avait donn une lueur despoir, les FAQ, dans une section
spcifique de Linux, contenaient une suggestion qui a ncessit de tl-
charger des fichiers utilitaires dinstallation de DOS. Le site indiquait que
Avec Linux, ces cartes fonctionnent mieux si lon nest pas en mode Plug
and Play . Lutilitaire dinstallation, en tous cas, na rien chang du tout
cet tat de fait, bien que ces cartes particulires fonctionnent bien sous
Windows et NT. Aucune valeur de coaxing ou begging na convenu. Nous
avons fini par les remplacer par des cartes 8 bits vraiment anciennes qui
ont fonctionn au premier essai. On nest donc jamais sr de rien.
Le site web du fabricant indiquait que ses cartes rseau les plus rcentes
taient vraiment compatibles Linux, et quil existait mme quelques pilotes
Linux pour elles. Heureusement, Linux est en train de devenir un nouvel
OS avec lequel il faut compter, et les fabricants de matriel vont passer de
plus en plus de temps assurer sa compatibilit.
Matriel recommand
Les serveurs Linux fonctionnent bien sur les quipements anciens et sont un
bon moyen den prolonger lusage en tant que pare-feu, serveurs de fichiers et
dimpression (nfs, SMB, Novell, Mac), serveurs ftp ou web. Mais pour lacti-
vit de bureau, les modles de ces dernires annes sont les meilleurs. On na
pas toujours besoin du matriel le plus rcent et le plus puissant : souvent, il
est trs spcifique de Windows, comme WinModems. En gnral, les priph-
riques de marque ou les priphriques qui utilisent des puces connues de
Linux fonctionnent le mieux. Linux a suffisamment de succs pour que lon
puisse se procurer facilement un pilote dquipement courant sur lInternet.
Distributions de Linux
Il existe de nombreuses distributions de Linux, quelles soient commerciales
ou non. Le tableau 1.2 rcapitule les plus connues.
Tableau 12
Liste non exhaustive des distributions Linux disponibles
www.libranet.com Libranet
www.turbolinux.com TurboLinux
Important. Le numro de version qui suit chaque nom de distribution est celui qui est
en cours au moment de limpression de cet ouvrage. La version suivante aura en prin-
cipe un numro plus lev ou plus long, dans tous les cas.
TurboLinux 4.0
TurboLinux est un bon lve : un prix conomique de moins de 20 dollars
(ensemble 49 dollars) et une dition serveur 199 dollars qui comprend
certains produits commerciaux, tel BRU, et un excellent service de support.
Cest aussi une distribution drive de Red Hat qui a son propre jeu dutilitai-
res dinstallation et de gestion.
base est 29 dollars, mais la version Deluxe, qui propose une meilleure
option dassistance technique, est 79 dollars. Red Hat annonce aussi rguli-
rement de nouveaux partenariats avec les plus grands constructeurs et diteurs
de logiciels ; aussi faut-il garder un oeil sur les articles de presse, si vous tes
intress par un diteur ou un produit logiciel particulier.
Tableau 13
Comparaison des distributions Linux slectionnes
Tableau 13
Comparaison des distributions Linux slectionnes
SPIRO-Linux
La version SPIRO-Linux est 100 % compatible Red Hat et Mandrake,
supporte 16 langues, exactement comme les autres, et fournit mme le logi-
ciel de synchronisation du Palm Pilot. Cette distribution vise les plates-
formes Intel et Ultra de Sun et dispose de cinq configurations diffrentes
dinstallation en mode serveur, de trois configurations de station de travail,
ainsi que doptions dutilisation et de mise jour. SPIRO comprend la suite
Koffice et peut importer les documents Microsoft Word dans Linux. On trou-
vera plus dinformations ladresse www.spiro-linux.com.
Corel Linux
Corel Linux est plus quune version de station de travail : fortement oriente
vers les nouveaux utilisateurs, elle met en uvre un utilitaire dinstallation
graphique ultra-rapide. Corel Linux repose sur la distribution Debian et
comprend une copie de WordPerfect 8 (il ne sagit pas dun portage complet
de la suite bureautique disponible pour Win9x/NT). Labsence de support de
courrier lectronique, ou dun serveur de base de donnes ne pose pas de
problme car les connexions tous les serveurs de base de donnes sont assu-
res. Vous pouvez encore installer PostgresSQL, compris dans la distribution
Debian.
Compatibilit matrielle
La premire considration concerne la compatibilit matrielle ; nhsitez pas
prendre la disponibilit et le temps ncessaires la recherche des solutions
de compatibilit. En gnral, on peut vrifier les informations de compatibi-
lit matrielle sur le site web de chacune des distributions (voir tableau 1.2) :
souvent, le plus ancien est le meilleur. Le matriel vraiment obsolte peut
toujours servir pour des usages gnraux, tels que le-mail, le routage, les
pare-feu, les services de fichiers et dimpression. Il faut mettre en perspective
les solutions base de recyclage de matriel dpass face au cot relative-
ment modeste des modles rcents, qui rpondent souvent bien au besoin de
faire tourner Linux. Linux a une courte exprience en tant que systme
dexploitation et se heurtera plus de difficults en matire doptimisation
des matriels anciens.
Dans la plupart des cas, votre serveur de base de donnes assurera la distribu-
tion de donnes critiques. Avoir le meilleur matriel possible sans sennuyer
rechercher les pilotes pour les matriels de conception trs rcente ? Avoir
aussi du matriel prouv et fiable, apte supporter la rigueur dun service
24 heures sur 24, 7 jours sur 7 ? Les PC courants, vendus moins de 1000
dollars, ne disposent pas des meilleurs composants de haute fiabilit et ne
sont pas conus pour fonctionner en permanence plus dun an ou deux :
autant dire quils sont conus pour durer un minimum de temps et tre
remplacs souvent2.
Aujourdhui, la plupart des constructeurs de serveurs de marque (IBM,
Compaq, Dell, HP et dautres) proposent, sur au moins une de leurs lignes de
produits, un Linux prcharg. Plusieurs constructeurs se spcialisent dans les
serveurs fonds sur Linux (VA Linux Systems, Cobalt Networks et Penguin
Computing, notamment). Lune ou lautre de ces approches peut vous par-
gner beaucoup de temps et defforts en vous offrant un systme Linux bien
configur et oprationnel.
La principale proccupation sera de vous assurer que vous avez assez de puis-
sance de traitement et de RAM. Le mieux est un serveur de base de donnes
processeurs multiples, deux fois la RAM que vous estimez ncessaire, quip
de la carte rseau la plus rapide possible avec une connexion directe au plus
grand commutateur rseau disponible, et quatre fois lespace disque dont vous
avez besoin sur des contrleurs SCSI multiples !
Environnement de test
Prvoir un environnement de test constitu dau moins une machine serveur
et de quelques machines client. Avoir aussi quelques utilisateurs reconnus qui
testent les premires amliorations ; ayez un plan daction pour la formation,
le dploiement et le dpannage, et respectez-le. On fait souvent limpasse de
lenvironnement de test pour respecter les dlais. Un planning et une impl-
mentation corrects se servent dun environnement de test qui aplanit les diffi-
cults pour tous ceux qui sont concerns.
Mise jour
On trouve une option de mise jour dans la plupart des installations Linux.
Gnralement, elle entrane la rinstallation des versions les plus rcentes de
tous les produits installs, y compris les fichiers du noyau. Toutes les dpen-
dances sont aussi installes, si ncessaire. Certaines distributions de Linux
gardent la trace des paquetages installs et de lendroit o les fichiers corres-
pondants sont installs. Cette base de donnes est interroge pour tous les
paquetages prsents : tous les nouveaux paquetages rapports craseront les
anciens, ainsi que tous les nouveaux paquetages installs du fait des dpen-
dances.
Important. Si lon a dj une version de Linux, il faut tre attentif au fait que loption
dinstallation dune station de travail de certaines versions de Linux (Red Hat, par
exemple) supprime toutes les partitions Linux (et ne laisse que les partitions des autres
OS), puis cre et installe quelque chose de nouveau, alors que linstallation serveur sur
certaines versions de Linux (l encore, Red Hat notamment) efface toutes les partitions
sur tous les lecteurs et effectue une installation toute neuve .
Formation de lquipe
Il y a beaucoup de socits qui proposent des formations maison, telle Global
Knowledge Inc. voir www.globalknowledge.com. Dautres proposent les
formations offertes par les distributions de Linux elles-mmes. Sur le Web, la
recherche sur le thme Formation Linux renvoie des listes dorganisations
comme www.linuxtraining.org, www.learningtree.com ou bien www.linux-
systemsgroup.com.
On ne peut pas faire limpasse dune formation correcte des utilisateurs et de
lquipe dassistance et dadministration. Comprenez aussi : ce nest pas
parce quun cours sintitule Introduction ... (certains admettent des
candidats sans aucune condition pralable), que vous pouvez y envoyer
nimporte qui. Une grande socit de formation professionnelle offre des
parcours de trs haut niveau parfois mme, le parcours dintroduction
commence un niveau assez avanc.
Rsum
Le phnomne Linux est durable, car cest un produit attrayant : cest le senti-
ment la base, renforc par une facilit dinstallation et dintgration qui va
en samliorant. Cest une alternative solide tout systme dexploitation
Windows dans la mesure o ce nest PAS Windows en soi. Linux est chez lui
dans le domaine des serveurs comme dans celui de lenvironnement de
bureau. Gardez lesprit lide que Linux est une version dUNIX, et quil
faudra quelquun dexpriment sur Linux ou sur UNIX pour le grer. Linter-
face est similaire celle de Windows, sans tre exactement la mme, et il ny
a rien de ce que lon peut faire avec Windows qui ne puisse se faire dans
Linux. Il y a une abondance dapplications utilisateur disponibles sur Linux
qui remplissent les mmes fonctions, quoique diffremment parfois. Les
avantages principaux sont le cot, la fiabilit et la scurit que Linux offre en
tant que systme dexploitation, sans oublier sa prsence croissante dans la
cour des grands tels que Oracle, Informix, IBM, Sun, Dell, Compaq et beau-
coup dautres.
FAQ
Q. Vais-je perdre laccs Windows ?
R. Oui et non. Oui, si vous le voulez ; mais vous ny tes pas oblig. Cela
sera plus vident dans la section relative linstallation. la base, on peut
ajouter Linux comme systme dexploitation secondaire sur la plupart des
PC, sans perdre la configuration existante, si lon dispose de suffisamment
despace disque. Vous pouvez aussi dcider denlever toute trace dautres
systmes dexploitation si vous le souhaitez et utiliser la machine avec
Linux seulement. En ralit, il vaut mieux liminer tout autre systme
dexploitation sur un serveur de base de donnes. Ne consommez pas
votre espace disque en ayant plusieurs systmes quand vous pouvez nen
utiliser quun seul un moment donn (sauf si vous utilisez VMWare
sachant que VMWare est plus utile sur une station de travail que sur un
serveur, parce quil surcharge la machine en excutant deux systmes
dexploitation la fois).
Q. Est-ce que jai besoin de garder Windows ?
R. Oui, si vous ne pouvez absolument pas vivre sans lui. Non, si vous voulez
migrer ou si cette machine est destine au dveloppement. Comme tout
systme dexploitation, vous pouvez toujours le rinstaller ultrieurement.
En gnral, pour un serveur de base de donnes, vous nen utiliserez quun
seul.
Q. Comment installer un dual boot (ou triple, quadruple, etc.) avec mon
systme courant dexploitation, ou mes systmes dexploitation ?
R. Se souvenir que, sauf sil sagit dun systme de dveloppement, il ny a ni
ncessit, ni intrt conserver deux systmes dexploitation sur une
machine qui est voue tre un serveur. Cependant, lors de linstallation,
vous pouvez demander au systme dajouter la fonctionnalit de dual boot
laide de lilo, ou bien ajouter le boot Linux lun des gestionnaires de
boot courants sur les PC base dIntel.
Q. Linux peut-il excuter Microsoft Office 97 ?
R. Pas vraiment, car il nest pas natif. En se servant dun mulateur, tel que
WINE, on peut excuter tout ou partie dOffice 97. On peut aussi utiliser
lune des nombreuses suites similaires, mais pas exactement identiques,
telles StarOffice ou WordPerfect. Chacune delles peut lire et crire le
format Office 97 de la plupart des documents.
Q. Quid de lassistance ?
R. Pour lassistance, dmarrer en pensant celle dont vous avez besoin dans
limmdiat. Faites comme vous avez fait quand vous avez dmarr
Windows 9x ou NT. Donnez quelquun une chance de briller, avec une
Dans ce chapitre
Introduction
Prliminaires
Installer Red Hat
Installation personnalise
Autres versions de Linux
Introduction
Ce chapitre aborde les concepts de base quil faut connatre pour installer une
distribution Linux, et prsente des exemples spcifiques dune installation
Red Hat. Les distributions Linux fournissent toujours une plthore dutilitai-
res et de produits, parmi lesquels il faudra faire un choix. Beaucoup compren-
nent un exemple, ou une version libre dun serveur de base de donnes.
Linux est aussi un serveur de nombreux services de rseau et de production ;
cest pourquoi il faudra prendre des options, en pralable toute installation.
Techniquement, on peut excuter toutes les combinaisons de services
suivants : protocole dadressage IP dynamique (DHCP), serveur de nom de
domaine (DNS), ftp, un produit de base de donnes comme Oracle (non
fourni dans la plupart des distributions), ou le serveur PostgreSQL (version
libre fournie avec certaines versions de Linux). On fait appel tous ces servi-
ces depuis une seule machine physique, ou bien partir de toutes sortes de
combinaisons de machines.
Important. Les copies dcran utilises dans ce chapitre ont t obtenues lors dune
installation de Linux sur une machine hte NT 4.0 fonctionnant avec VMWare. Elles
sont donnes titre dillustration ; les barres de titre, telles que celles des figures 2.2,
2.3 et suivantes, napparaissent pas pendant linstallation.
Matriel
Bien que cela puisse sembler bizarre en cette priode dordinateurs domesti-
ques bas prix, les diteurs de serveur de renom sont dits grands justement
parce que leurs serveurs haut de gamme sont conus pour fonctionner en
permanence, avec des rattrapages de panne, une maintenance et un accs aux
services aiss. Cest l quil faut prendre son temps pour trouver une machine
qui puisse grer de longues priodes de fort dbit dI/O, excuter plusieurs
processus simultanment, transfrer beaucoup de donnes entre les disques et
la mmoire, et de la mmoire au processeurs, conserver en mmoire la plupart
des processus et disposer, sous une forme ou une autre, de possibilits de
rattrapage matriel - RAID - en cas derreur ou de panne. Assurez-vous que
votre nouveau systme peut admettre facilement des extensions dans les
zones de contrleurs de disque, les baies de lecteurs de disque et la RAM.
Architecture multiprocesseurs
Les serveurs de base de donnes consomment beaucoup de ressources CPU.
Les processeurs bon march peuvent fonctionner en parallle pour fournir
un dbit tonnant et des niveaux de charge maximale. Bien que lon
nobtienne pas 100 % damlioration chaque addition de processeurs, le
bnfice obtenu, en gardant tout en mmoire locale, lemporte sur le cot qui
rsulte dun serveur multiprocesseurs.
RAM
Le facteur le plus critique, aprs le choix du processeur (ou des processeur),
est la taille de la RAM : il en faut beaucoup. Faites une analyse prliminaire
des besoins de la base de donnes envisage, et ajoutez une marge raisonna-
ble. La taille minimale raisonnable de RAM pour dmarrer est approximative-
ment de 256 Mo pour les bases de donnes les plus courantes.
Disques
Le sous-systme disque vient immdiatement aprs, dans lordre des caract-
ristiques importantes. Les contrleurs multiples fournissent un meilleur dbit
et un systme RAID (Redondant Array of Independent Disk) de niveau 5, une
bonne gestion des agrgats de partitions avec parit, et donnent mme de
meilleures performances dans la plupart des situations - mais pas toutes. Dans
certains cas, spcialement avec les bases de donnes, il vaut mieux opter pour
un systme RAID de niveau 0, avec des agrgats de partitions sans parit, ou
bien de niveau 1, avec mise en miroir de disques. Gardons lesprit le cot
associ chaque niveau RAID, que nous verrons mieux dans la prochaine
section consacre au RAID.
Dans labsolu, on na pas besoin de RAID : des disques ultra-rapides de
bonne qualit, dots dun bon nombre de caches, feront laffaire. Si vous avez
une sauvegarde et que le temps darrt ncessaire la restauration ne vous
cote pas trop, utilisez ce que vous voulez. Souvenez-vous seulement que, si
votre systme de saisie de commandes se situe sur le serveur et quil tombe en
panne, tout un chacun devra patienter jusqu ce quil fonctionne nouveau
chacun, cest--dire votre quipe et vos clients. Avez-vous vraiment les
moyens dassumer ? A comparer le faible cot du matriel et les pertes poten-
tielles de revenu, on a tendance opter pour lun des formats de RAID facile-
ment rcuprable, mme sil nassure pas une disponibilit 24 heures sur 24.
RAID
Le niveau RAID 1, avec mise en miroir, est une bonne option pour les disques
systme, o rside le systme dexploitation. Les fichiers de base de donnes
doivent tre sur des disques entirement spars du systme dexploitation :
un matriel RAID 5 donnera les meilleurs rsultats, en matire de dbit et de
fiabilit.
Interface(s) rseau
Il y aura un autre goulot dtranglement dans votre systme. Plus le canal est
gros (dbit des donnes), mieux il fonctionne. La partie la plus lente de tout
systme est le systme de disques. Il fonctionne en millisecondes de temps
daccs moyen, la mmoire du systme en nanosecondes, et le rseau se situe
au milieu, en gnral en micro-secondes. Prenez des cartes de 100 Megabits
et un commutateur (switch) la place dun noeud, ou bien deux cartes dinter-
face rseau (NIC) avec deux noeuds spars, si possible, et rpartissez la
charge. Aprs le systme de disque, cest le second goulot dtranglement qui
gne le flux de donnes entre votre serveur et vos clients.
Mesures de sauvegarde
Le plus grand lecteur de bande devient plus grand tous les mois. Une bonne
sauvegarde, parfaitement efficace, mais nanmoins monobande, peut conser-
ver un maximum denviron 80 Go. Choisir au moins 2 Go, pour tenir compte
de la redondance et de la vitesse. Il y a beaucoup dautres options que les
bandes ; par exemple, les disques Iomega Jaz, les CD-ROM, les CD rinscrip-
tibles, les DVD-ROM, qui peuvent offrir une meilleure disponibilit que les
bandes, un cot peine plus lev. On peut aussi opter pour les systmes de
gestion de disques les plus rcents, qui proposent la migration des donnes
depuis les disques RAM high-need, vers des lecteurs de disque medium-need,
des disques Jaz ou des CD-ROM low-need, ou sur bande pour des archives
rarement utilises ; tous ces moyens constituent un seul grand systme, consi-
dr par votre machine comme un seul grand disque. Cest vraiment un excel-
lent produit de mise disposition de vos donnes sur le serveur. Les bandes
sont le moyen traditionnel, mais on peut acheter deux disques Jaz, ou un autre
lecteur de disque de 610 Go (capacit qui ne cesse daugmenter), qui auront
un temps de restauration beaucoup plus rapide. Installer ces disques sur un
autre serveur et les utiliser comme mdia de sauvegarde rapide sauvegar-
der, rapide rcuprer, et moins cher. Si lautre serveur est hors site, cela
signifie que vous avez intgr une restauration dsastreuse, compte tenu de la
distance. Vrifiez toutes vos options avant de vous lancer, en ayant lesprit
que le temps de restauration est un lment majeur de votre choix.
Assistance
Tous les grands constructeurs, ainsi que beaucoup dditeurs de Linux, ont
fait des services dassistance leur cheval de bataille, visant des clients tels que
votre socit. Vous payez un bonus pour un produit en prime, sachant que, la
plupart du temps, vous tes gagnant.
Prliminaires linstallation
Pour une machine de dveloppement, il suffit dajouter quelques disques
une machine existante, puis dinstaller Linux sur ces disques, de placer le
systme en double amorce, et de redmarrer lOS de son choix. Cest un
scnario courant pour beaucoup dadministrateurs qui veulent lessayer
dabord, le vrifier avec un chargement simul, puis le dployer sur le terrain.
Pour un serveur rel, plein temps, ddi des tches critiques, il faut ddier
la machine au service de la base de donnes, et rien dautre de prfrence.
Figure 21
Dmarrage typique de Linux (aprs lcran de dmarrage prliminaire)
Figure 22
Choix de la langue
Important. Il faut indiquer explicitement les bonnes options pour la souris car le
systme X Window prfre trois boutons. On simule le bouton du milieu en pressant
ensemble les deux autres boutons, en mme temps.
Lcran fait encore apparatre le logo Red Hat. Il indique que vous tes sur le
point dinstaller le logiciel et de faire les choix relatifs aux partitions du
disque, si ncessaire. Vous avez la possibilit ce point de revenir en arrire
et de faire des changements, le cas chant.
Figure 23
Slection de clavier
Figure 24
Slection de la souris : deux boutons ; les slections automatiques mulent une souris trois
boutons
Figure 25
Type dinstallation
Mise niveau
La mise jour nest videmment prvue que pour un systme qui contient
dj une version de Red Hat, et ne sapplique aucune autre version de
Linux. La mise jour ne remplace que les logiciels dj installs par les
versions plus rcentes et installe tout nouveau groupe de logiciel requis par
les dpendances.
Installation personnalise
Linstallation personnalise est le meilleur choix pour quelquun qui sait
exactement ce quil veut. Vous pouvez implmenter une conception spcifi-
que pour vos disques par exemple dfinir la taille des partitions sur les
disques, ou lemplacement du rpertoire de chacune de ces partitions dans
votre systme de fichier et encore choisir les groupes de logiciel que vous
voulez installer.
Important. Dans un serveur de base de donnes, la rpartition des donnes dans des
partitions distinctes permet une meilleure gestion globale par la suite. Autant que
possible, maintenir les fichiers systme et les fichiers de base de donnes dans des
partitions spares.
Figure 26
Options de point de montage dans Disk Druid
Taille de la partition
Le second paramtre choisir est la taille. Entrer une approximation de la
taille souhaite pour la partition, en mga-octets. A noter : la taille relle
dpend des caractristiques du lecteur physique (la taille est arrondie au
nombre entier de cylindres le plus proche) et peut scarter de quelques mga-
octets de la taille que lon a indique.
Figure 27
Disk Druid Options de slection du type de partition
Type de partition
Les partitions dchange doivent tre cres avec le type Linux Swap ; pour
les autres partitions, il faut toujours choisir le type Linux natif. Ne choisissez
pas les types DOS ; ils ne sont absolument pas optimiss pour les fichiers de
base de donnes.
Important. Linux natif est un systme de fichier trs rapide, orient fichiers de
donnes. Linux peut utiliser DOS, HPFS, NTFS et dautres types de partitions, mais
pas de manire optimise. vitez-les tous, vous nen avez pas besoin. Toutefois, de
nouveaux systmes de fichiers, haute performance, sont en dveloppement pour
Linux et seront prendre en considration quand ils seront prts ; il sagit notamment
de Ext3, Reisefrs et de XFS.
Technique. Il faut crer des partitions pour les besoins de gestion du systme. Il y a
un bon nombre de raisons, trs pertinentes dans un systme dexploitation scuris, de
dcouper les lecteurs de disque en partitions plus petites : facilit de gestion ; facilit
de restauration restreinte ce qui a chou ; niveaux de sauvegarde slectifs ; vrifica-
tion slective et gestion de quota de disque ; implmentation de politiques de scurit.
Installation du rseau
Linux, comme UNIX, est ancr autour de la nbuleuse du protocole TCP/IP,
le principal protocole de rseau, qui doit tre configur en concordance. On
Figure 28
Exemple de table de partition renseigne
peut slectionner tout adaptateur rseau dtect et configurer tous les param-
tres de chaque carte sparment. Sur une machine dote dun seul adaptateur
rseau, comme celle de la figure 2.9, la premire carte rseau est appele
eth0.
Utiliser DHCP
Le premier bouton doption, quand on configure un adaptateur rseau,
concerne lutilisation de DHCP (Dynamic Host Configuration Protocol,
protocole dadressage IP dynamique) pour configurer toutes les informations
relatives TCP/IP automatiquement, partir dun service situ sur un serveur
DHCP central : ce service fonctionne sur nimporte quel autre systme
dexploitation, pourvu quil soit compatible avec RFC.
Figure 29
Configuration du rseau
Hostname
Le hostname, ou nom dhte, nest quune rfrence pour une machine
donne, et nest pas ncessairement identique la rfrence de cet hte en un
autre endroit du rseau. La rsolution de nom est lopration qui transforme
un nom en une adresse IP. Linux se sert du fichier /etc/hosts, puis de DNS,
pour traduire un nom dhte en une adresse IP avant dmettre un message.
Mais le schma de dnomination local nest ni partag ni spcifique ; une
autre machine peut utiliser localement le nom quelle dsire pour lIP de votre
machine. Ce nest que si lon utilise un service central tel que DNS que lon
est astreint un nom spcifique, et mme, dans ce cas, cela peut tre
contourn. En rsum, le hostname na pas besoin dtre unique sur le rseau,
mais il devra ltre si lon se sert de DNS.
Figure 210
Configuration du fuseau horaire du systme
thorie. Il faut donner son mot de passe. Sur certaines versions de Linux, on a
aussi la possibilit dinstaller autant dautres utilisateurs que lon veut. Par
exemple, avec Red Hat Linux, on peut facilement ajouter un ou plusieurs
utilisateurs pendant linstallation, (figure 2.11). On nest pas oblig dajouter
un utilisateur supplmentaire, mais il est recommand de crer un compte
sans privilge (cest--dire autre que root), pour les travaux courants sur une
station de travail. Il faut viter dtre en root quand on effectue des tches
dutilisateur de base : les erreurs commises en tant que root peuvent avoir des
consquences dsastreuses, telles que la destruction de fichiers cruciaux, ou
compromettre la scurit et la stabilit du systme
Figure 211
Configurer root et les comptes supplmentaires (au moins un)
Authentification
La connexion, ou login, la plupart des systmes Linux ou UNIX, est valide,
localement ou distance, par un service centralis tel que NIS ou NIS+ (voir
figure 2.12). Que ce soit dans l'une ou l'autre des mthodes dauthentification,
on peut inclure des options complmentaires de scurit, telles que MD5,
ainsi que des mots de passe masqus, les deux tant vivement recommands.
Le MD5 est une forme de mot de passe intgre et plus sre que le mot de
passe banal ; le mot de passe masqu est un vrai modle de scurit sur les
Figure 212
Configuration de lauthentification
Figure 213
Configuration des paquetages
Important. Lordre de prsentation du tableau 2.1 correspond lordre que lon voit
lcran de la figure 2.13. Des complments dinformation sur le regroupement de ces
paquetages, des suggestions dinstallation et des dtails sur les ensembles de paque-
tages sont fournis dans le tableau 2.1.
Tableau 21
Paquetages de Red Hat dont linstallation est optionnelle
Tableau 21
Paquetages de Red Hat dont linstallation est optionnelle
Remarque. Pour vraiment optimiser la plupart des versions de Linux, il faut excuter
les utilitaires de reconfiguration du noyau, qui amliore le support des processeurs de
niveau avanc (livr par dfaut au niveau 386, il passe au niveau 586, PII, PIII, Athlon,
etc.) et le support des SMP (matriel multi-processeur symtrique), RAID, SCSI, etc. Il
vous faudra tout lire sur ce sujet. Est-ce absolument ncessaire ? Non, mais cest forte-
ment conseill, car, une fois bien expliqu, ce nest pas difficile. La documentation
complmentaire donne toutes les bases ncessaires pour la reconstruction (recompila-
tion) du noyau et son installation. Tout livre assez pais sur votre distribution de Linux,
du genre Tout ce que vous voulez savoir propos de couvrira ce sujet dans des
dtails fastidieux, mais ce sera un bon investissement.
Figure 214
Optionnel configuration de X Window, partie 1
Figure 215
Optionnel configuration de X Window, partie 2
Logiciel serveur X
Les paquetages de serveur X Window varient selon le type de matriel : VGA
gnrique ou SVGA, et selon les puces vido bien connues de type S3 ou ATI.
Si la recherche aboutit, les noms de la carte vido et de la puce seront affi-
chs. Sinon, vous pouvez choisir le matriel dans la liste fournie. Les cartes
vido gnriques reposent normalement sur lune des puces vido standard
telles que S3, ATI, etc. Si cela ne marche pas, en particulier sur les portables,
choisissez le pilote SVGA gnrique et le moniteur Multi-sync gnrique.
Cela doit fonctionner sur la plupart des matriels de base, mais il ny a aucune
garantie. Il existe un site ddi entirement aux fichiers de configuration des
divers portables, qui ont toujours au moins quelques matriels propritaires,
mal identifis. Pour plus dinformations, consultez les sites web suivants :
www.XFree86.org pour des informations propos du serveur X ;
www.cs.utexas.edu/users/kharker/linux-laptop/
pour le support des portables.
Modes vido X
Aprs avoir slectionn le pilote vido X correct, on choisit le mode vido,
comme dans Windows. On aura le choix entre diverses profondeurs de
couleur 8, 16, ou 32 bits par pixel et entre diverses dfinitions allant de
640 x 480 jusquau niveau le plus lev support par la carte (figure 2.15). Par
dfaut, cest la rsolution la plus leve qui peut tre supporte sans aucune
autre option. On peut la modifier de manire basculer entre les configura-
tions par la combinaison des trois touches Ctrl-Alt-+. Pour plus de dtails,
consultez le guide dinstallation ou la documentation de Linux.
Figure 216
Formatage des partitions du systme de fichiers avant linstallation
Figure 217
cran dinstallation des paquetages
Configuration de LILO
Si lon a install Linux alors quun systme dexploitation graphique tait
dj install sur le systme, choisir lOS de dmarrage par dfaut, sachant que
linstallation Linux prend la partition de boot Linux dans tous les cas.
Figure 218
Configuration de LILO et cration dune disquette de boot ( tenter !)
Installation termine !
Vous avez pratiquement termin ! Redmarrage ! Le dernier cran vous fli-
cite pour votre installation et vous demande dappuyer sur la touche ENTER
pour redmarrer. Ne pas teindre ce moment, car il faut arrter le systme
proprement. En fait, il faut effectuer un arrt normal chaque fois que lon
veut teindre la machine, sinon on risque des problmes de corruption de
fichiers. La plupart des bases de donnes ont aussi leur propre procdure
darrt normal qui vous pargnera bien du temps et des risques.
Points vrifier
Les disques, la RAM, le processeur et les cartes rseau sont les caractristi-
ques les plus dterminantes pour les performances. Tentez laventure sans
utiliser cependant de nouveau matriel : partout o cest possible, nutiliser
que du matriel vraiment test.
Il faut viter deux cueils en matire de partitions : en crer trop peu, ou trop.
Ne crer initialement que ce dont on a besoin, quitte augmenter le nombre
de partitions si besoin est. La pire des erreurs est de ne pas allouer assez
despace aux partitions critiques du systme de fichiers, telles les partitions
root, / et la partition /var (sil doit y avoir beaucoup de connexions et de vri-
fications). Lapplication de base de donnes devra se trouver sur une partition
spare de lOS et des donnes. Les donnes seront aussi sur leur propre
partition ou sur des partitions multiples distinctes selon la conception
du systme. En outre, si chaque zone critique se trouve dans une partition
spare, on peut facilement la transfrer plus tard dans une nouvelle partition,
plus grande, et adapter plus simplement le systme laugmentation des
besoins. Les partitions distinctes sont plus faciles sauvegarder et restaurer,
et beaucoup plus faciles grer en termes de quotas de nombre dutilisateurs
et de scurit.
Scnario 1
Q. Vous voulez installer un serveur de base de donnes Oracle, par exemple :
il vous faut dabord installer un serveur Linux. La base de donnes fera
50 Mo, avec une croissance prvue de 50 Mo par an. Vous devez aussi
fournir des services web, partir de ce serveur, 100 utilisateurs. De quoi
avez-vous besoin ?
R. Vous devez avoir au moins 256 Mo de RAM sur ce serveur et, si possible,
un RAID matriel ( dfaut, un RAID logiciel) sur environ 2 Go despace
disque, pour les transactions et les connexions. Il faut une carte rseau de
10 100 mgabits. Si une seule machine dote dun processeur de
500 MHz ou plus suffit pour la premire anne, elle sera inadapte par la
suite. Prvoir une seconde machine, si possible.
Scnario 2
Q. Vous installez Informix : vous avez une base de donnes de 800 Mo qui
atteindra 3 Go cette anne, et qui doublera tous les six mois par la suite,
avec 500 utilisateurs qui font la plupart du temps de brves requtes
dinterrogation, et environ 100 utilisateurs qui ajoutent des enregistre-
ments en permanence. De quoi avez-vous besoin ?
R. Il vous faut au moins 4 Go de RAM, 4 Go despace dchange, et au
moins deux processeurs quips dune grande ferme de disques au
moins 1012 giga-octets pour grer en direct des sauvegardes locales,
beaucoup de connexions et de transactions, et un espace de journalisation.
Vous pouvez choisir un serveur quip de processeurs Alpha pour obtenir
la plus grande taille de mmoire virtuelle : cela permet de mettre la base
de donnes entire en mmoire sans espace dchange. Si vous dpassez
une taille de 2 Go pour le processus utilisateur, il vous faudra un serveur
base dAlpha coup sr.
Rsum
Ce chapitre vous a familiaris, tape par tape, avec une installation rapide en
mode graphique dun systme Red Hat. Nous avons retenu Red Hat parce que
cest la distribution Linux dominante sur le march.
La premire chose faire est de bien concevoir le systme et dvaluer les
besoins, de manire dfinir le matriel correspondant.
Il faut ensuite sassurer que lon dispose du matriel adquat, et surtout
orient serveur de base de donnes de prfrence avec des processeurs
multiples, beaucoup de RAM, et un sous-systme dentre/sortie disque
sous-jacent rapide, dot de beaucoup despace disque.
Il est bon davoir lesprit les concepts des cartes mres des PC Intel sur
lesquels se fondent les partitions, la limite de 16 partitions sur un lecteur
de type IDE, et de 15 partitions sur un lecteur SCSI.
Vous devez tre soigneux au moment de la partition du systme de
fichiers : la plupart des versions de Linux et dUNIX attendent des parti-
tions relativement petites, faciles grer.
Les partitions critiques pour le systme sont /, /usr, /var, /home, /usr, /opt,
et swap, pour nen citer que quelques-unes.
Les options dinstallation vous permettront de conserver le systme
dexploitation courant et de disposer dun double boot ; certaines options
peuvent effacer les partitions des autres systmes. Les serveurs de produc-
tion doivent en principe tre ddis Linux, et ne pas utiliser de partitions
non Linux.
Les paquetages installer sont nombreux : ninstaller que les paquetages
ncessaires.
Crez la disquette de boot la fin de linstallation.
Nutilisez pas le serveur de base de donnes en tant que station de travail
utilisateur ; il sera ddi uniquement aux services de base de donnes, en
vue dune meilleure performance.
Les outils de gestion de systme varient considrablement dans Linux et
UNIX en gnral ; garder les livres fournis porte de la main.
Il est vivement conseill de faire appel quelquun qui a une exprience
de ladministration de systme UNIX ou Linux, car les comptences
dadministration des systmes Windows ne sont pas transposables.
Si vous navez dexprience ni sur Linux ni sur UNIX, vous avez un monde
nouveau tout entier explorer du point de vue du matriel, du logiciel et des
interfaces. Plongez-y et jouez, mais utilisez une machine de test pour cela.
FAQ
Q. Jai un disque plutt ancien, puis-je lutiliser ?
R. Non, cest viter. Dans beaucoup de cas, les disques anciens nutilisent
pas les caractristiques IO avances de la carte mre et vont ralentir consi-
drablement votre machine.
Q. On ma dit que lon peut excuter Linux partir de Windows. Est-ce vrai ?
R. Oui, il y a un produit trs valable appel VMWare (www.vmware.com),
qui permet dutiliser presque tous les systmes dexploitation (tels Linux
ou NT) en tant que systme dexploitation hte, dans lequel on peut instal-
ler un ou plusieurs systmes dexploitation virtuels additionnels (tels
Win9x, NT, et Linux). Les copies dcran utilises dans ce manuel ont t
obtenues lors dune installation de Linux sur une machine dhte NT 4.0
dont tous les lecteurs taient dj formats en FAT et NTFS. VMWare a
cr un disque virtuel sur lun des volumes FAT qui disposait tout juste de
1,8 Go despace libre. Une installation complte de Red Hat Linux dans
laquelle six partitions simules ont t cres, comme on la vu dans les
figures montres auparavant, a utilis 1,3 Go de la partition FAT (proba-
blement en format compress) pour le disque virtuel. N.B. : le matriel
recommand est au moins un PC 266 MHz avec 96 Mo RAM et, comme
dans toute recommandation, il sagit dun minimum. Ayez beaucoup plus
de RAM et de puissance si vous pouvez, ou prparez-vous une lente
traverse des vicissitudes de linstallation (16 heures sur un 166 MHz avec
64 Mo RAM).
Q. Pourquoi choisir Red Hat ?
R. Red Hat est un bon choix parce que cest le systme le plus connu, quil
fournit des services dassistance et de formation, et quil est en tte des
produits shareware.
Q. Lassistance est-elle un poste important ?
R. Cela dpend. On peut envisager de payer des services dassistance, sous
forme de prestations, ou prfrer amliorer les comptences dun service
interne, pour le mme cot peu prs.
Q. Que faire si je nai aucune connaissance dUNIX ?
R. LInternet est, plus de 90 %, fond sur UNIX, et ce nest pas un dsastre
den faire une premire exprience. Le film Toy Story a t entirement
gnr par ordinateur sur des machines UNIX. Le film Titanic a utilis
Linux sur des serveurs quips de processeurs Alpha, pour raliser tous les
effets spciaux. UNIX est partout mais il ne fait pas la course au
march des PC, comme le font les concurrents.
Dans ce chapitre
Concepts
Installer Oracle8
Installer Oracle8i
Utiliser Oracle8/8i
Introduction
Oracle a la plus grande part du march mondial des logiciels de gestion de
base de donnes. Oracle a atteint cette position dominante en produisant et en
faisant voluer lun des meilleurs systmes de gestion de base de donnes
relationnelle (SGBDR) existants : puissant, souple et modulable lextrme.
Le SGBDR Oracle nest pas un logiciel en dveloppement libre (open-
source) ; par contre, cest une application trs stable et solide une fois quelle
est correctement installe et configure. Que ce soit avec Linux ou dautres
plates-formes puissantes, Oracle est hautement configurable et modulable, ce
qui peut sembler compliqu qui nen est pas familier. Contrairement
dautres produits de serveur de base de donnes SQL, Oracle nest pas un
logiciel taille unique .
Oracle8 prsente une richesse fonctionnelle incroyable et il faudrait des pages
et des pages dexplications pour exposer toutes les caractristique de cette
base de donnes. Le but de ce chapitre est donc de vous aider installer et
excuter Oracle8 ou Oracle8i sur Linux, vous pourrez ensuite chercher
ailleurs une documentation plus avance. Ce chapitre prsente un aperu de la
manire dinstaller, de configurer et dutiliser la base de donnes Oracle sur
un serveur Linux. Plusieurs solutions propres Linux sont abordes ; mais,
pour un traitement plus fin de la base de donnes Oracle, il faut faire appel
aux nombreuses publications sur ce logiciel. Au moment o est publi cet
ouvrage, il existe deux versions du SGBDR Oracle, Oracle8 et Oracle8i.
Chacune de ces versions est disponible en deux ditions diffrentes : Standard
et Entreprise. Ldition Entreprise dOracle8 offre plus de fonctionnalits et
doptions que ldition Standard.
Oracle8 est aussi connu comme la version 8.0.5, et Oracle8i comme la
version 8.1.5. Lune des caractristiques les plus importantes qui diffrencie
Oracle8 et Oracle8i est que Oracle8i comprend un environnement dexcu-
tion Java optionnel intgr dans le serveur. Cette caractristique permet
dcrire des procdures en Java, excutes par le serveur de base de donnes.
Oracle8i comprend aussi de nouvelles applications Java dont un programme
dinstallation, un assistant de configuration de base de donnes et des utilitai-
res de configuration rseau. Ces programmes facilitent gnralement son
installation et son utilisation. Les applications Java sont nouvelles et ne
sexcutent pas toujours comme on sy attendrait sous Linux. Certaines
personnes rencontrent quelques difficults installer correctement lenviron-
nement dexcution Java, ou il arrive quune condition inattendue interrompe
lapplication. La version 8.1.6 dOracle 8i pour Linux, appele Oracle8i
version 2, sort, en principe, au premier trimestre 2000 : elle comprend des
caractristiques supplmentaires et la correction des bogues.
On sait que linstallation dOracle nest pas une petite affaire, mais une fois
Oracle install, vous aurez lune des meilleures bases de donnes fonction-
nant sur Linux. Les instructions dinstallation prsentes dans ce chapitre
concernent Oracle8 et Oracle8i, qui ont beaucoup dtapes communes
dinstallation. Lisez-les attentivement : elles sont quelque peu complexes, du
fait quelles couvrent les deux versions. Il y a quelques diffrences importan-
tes entre les installations, mais, en gnral, elles sont similaires. Les instruc-
tions dinstallation concernent ldition standard pour Oracle8 et ldition
Entreprise pour Oracle8i. Ldition standard est moins chre que ldition
Entreprise, et comprend moins de caractristiques et doptions. Laquelle
installer ? Visitez le site Internet dOracle (www.oracle.com) pour comparer
les deux produits. Si vous tes intress par un moteur Java, inclus dans le
serveur de base de donnes, par lutilisation de XML ou par les utilitaires
conviviaux crits en Java, Oracle8i est le bon choix. Pour un environnement
simple, qui sappuie sur les dernires ressources, Oracle8 conviendra votre
besoin. Ldition standard prsente suffisamment de caractristiques pour
occuper un dbutant.
Les sections suivantes prsentent une description des concepts les plus impor-
tants et des termes ncessaires pour se familiariser avec le logiciel Oracle, les
instructions dinstallation dOracle8 et Oracle8i, une vue densemble des
outils de base du maniement de la base de donnes et, enfin, une brve intro-
duction quelques applications tierces.
Concepts
Avant de se plonger dans les dtails de linstallation, il faut comprendre
certains concepts. Les systmes de bases de donnes sont souvent rpartis en
trois catgories : les systmes transactionnels (OLTP), les systmes daide la
dcision (DSS), et les systmes hybrides. OLTP se caractrise par de courtes
requtes ou mises jour de la base de donnes, par exemple le systme de
rservation dune compagnie arienne. Les systmes daide la dcision sont
caractriss par des requtes longues sexcuter, comme le rassemblement
des informations mtorologiques. Un systme hybride comprendra un
mlange des deux ; par exemple, une application commerciale de type web
qui peut prendre des commandes (OLTP) et fournir des services de recherche
dinformations (DSS). Ces trois classifications reprsentent des modles de
base qui orientent la conception et la configuration de la base de donnes.
Il existe une distinction importante entre une base de donnes Oracle et une
instance Oracle. La base de donnes, identifie par le nom de la base de
donnes (DB_NAME), est compose de fichiers physiques utiliss pour le
stockage. Une instance, identifie par lidentificateur systme (SID), est cons-
titue des structures de mmoire et des processus utiliss pour rpondre plei-
nement aux requtes des utilisateurs. Quand un serveur Oracle sarrte,
linstance cesse dexister. La raison fondamentale pour laquelle on les diff-
rencie est quune mme base de donnes peut tre servie par des instances
multiples. La base de donnes et linstance sont constitues de nombreux
composants. Les structures de mmoire comprennent la zone globale
systme, le pool partag, la mmoire cache de la base de donnes, le cache de
journalisation et la zone globale des programmes. Les structures logiques
comprennent les tablespaces, les schmas, les segments, les extents, les
segments de rollback, les tables et les index. Les composants physiques
comprennent les fichiers de donnes, les fichiers de contrle, les fichiers jour-
naux et les fichiers de paramtres.
Pool partag
Le pool partag contient deux composants : le cache de bibliothque et le
cache du dictionnaire des donnes. Le cache de bibliothque stocke les
instructions SQL le plus rcemment utilises et leurs plans dexcution. Le
cache du dictionnaire des donnes stocke les informations du dictionnaire des
donnes le plus rcemment utilises telles que les dfinitions de table, les
noms dutilisateurs et les privilges. La taille du pool partag peut affecter les
performances de la base de donnes, notamment dans un environnement
OLTP.
Cache de journalisation
Tous les changements effectus sur les donnes sont stocks dans le cache de
journalisation, et seront copis plus tard dans des fichiers journaux physiques.
Tablespaces
Une base de donnes est divise en units de mmoire logique appeles
tablespaces. Un tablespace regroupe des structures logiques lies entre elles
et se prsente sous forme dun ou plusieurs fichiers physiques. Il est dune
pratique courante de grouper certains types dobjets dans un tablespace : par
exemple, les tables temporaires, les segments de rollback ou les tables du
dictionnaire des donnes.
Fichiers de donnes
Chaque tablespace peut avoir un ou plusieurs fichiers de donnes ; les fichiers
physiques rels sont stocks dans le systme de fichiers.
Extents
Un extent est la plus petite unit de mmoire dans une base de donnes
Oracle. Un extent est constitu dun seul ou de plusieurs blocs du systme de
fichiers. Par exemple, le systme de fichiers Linux ext2 contient habituelle-
ment 2048 octets par bloc, mais on peut le configurer 1024, 2048, ou 4096
octets par bloc. Un extent peut tre constitu dun ou de plusieurs blocs ext2,
selon la manire dont la base de donnes est utilise.
Segments
Un segment est la reprsentation physique dun objet et se compose dun ou
de plusieurs extents. Une table simple, par exemple, est un segment.
Fichiers de contrle
Quand la base de donnes est dmarre, elle se rfre un fichier binaire,
appel fichier de contrle, pour trouver lemplacement des fichiers de
donnes et des journaux en ligne. Le fichier de contrle est mis jour de
manire continue tant que la base de donnes est active ; il doit tre disponi-
ble au montage ou louverture de la base de donnes. Le fichier de contrle
est habituellement dupliqu sur plusieurs priphriques : si lun des fichiers
de contrle utiliss par la base de donnes nest plus disponible, alors la base
de donnes peut quand mme fonctionner correctement.
Journaux
Les journaux stockent tous les changements effectus dans la mmoire cache
de la base de donnes, quelques exceptions prs. Ils servent minimiser la
perte de donnes, et sont utiles lors de la reconstruction de la base de donnes.
Oracle requiert au moins deux fichiers journaux et des ensembles de fichiers
sont souvent mis en miroir dans des priphriques multiples. Leur configura-
tion et leur taille peuvent affecter les performances. Il est courant de stocker
les journaux sur des priphriques spcifiques, sparment des fichiers de
donnes. Les journaux sont crits squentiellement, la diffrence des
segments de rollback, qui sont prsents dans les fichiers des donnes, au
mme titre que les objets de base de donnes.
Segments de rollback
Les segments de rollback prservent la cohrence en mmorisant les donnes
qui ont t modifies mais avant validation effectue dans la base de
donnes : ils sont utiliss pour restaurer les informations aprs une commande
dannulation de transaction rollback. Quand commence une transaction qui
modifie les donnes dune table, les donnes initiales sont copies dans un
segment de rollback. Si une seconde transaction a besoin des mmes donnes
et que la premire transaction na pas valid les modifications, Oracle va
chercher les donnes du segment de rollback.
Fichiers de paramtres
Ces fichiers spcifient la configuration de linstance. Le fichier est habituelle-
ment appel INIT.ORA ou INIT<SID>.ORA. Le nom de linstance (SID) est
associ au nom de fichier.
SID
Lidentificateur systme reprsente une instance unique. La variable denvi-
ronnement ORACLE_SID reprsente linstance Oracle par dfaut. Tout au long
de ce chapitre, on supposera que le SID dOracle est ORCL. Puisque les SID
sont propres un utilisateur et que certains fichiers utilisent lidentificateur
SID comme partie du nom de fichier, on trouvera la notation <SID> dans la
documentation. En principe, le nom dinstance a quatre caractres ou moins.
$ORACLE_HOME
La variable denvironnement ORACLE_HOME sert identifier une installation
particulire dOracle, sachant que lon peut installer plusieurs versions
dOracle. ORACLE_HOME peut tre modifie pour pointer vers diffrentes
versions. Dans ce document, la notation $ORACLE_HOME reprsentera la
structure du rpertoire rel dans lequel Oracle est install. On utilise habituel-
lement les rpertoires :
/u01/app/oracle/product/8.0.5 pour Oracle8,
/u01/app/oracle/product/8.1.5 pour Oracle8i.
$ORACLE_BASE
La variable denvironnement ORACLE_BASE sert identifier la base de
larbre dinstallation dOracle.
Identifiants de version
Oracle a un identificateur de version cinq chiffres. Le premier chiffre est la
version majeure, le second la version mineure, le troisime est un code conte-
nant le groupe dingnierie et les quatrime et cinquime chiffres se rappor-
tent un ensemble de correctifs (patches). Les deux ou trois premiers chiffres
dterminent un produit individualis. Par exemple, Oracle8i est la version
8.1.5. Un ensemble de correctifs relatifs Oracle8i peut porter le numro de
version 8.1.5.0.2. Le chiffre le plus droite est aussi le moins significatif par
rapport au changement de version.
PL/SQL
PL/SQL est un langage procdural dOracle, qui ajoute SQL la logique
dapplication, dont des constructions de procdures par blocs structurs. Il
sert crire des applications qui manipulent les donnes dans la base.
Schma
Le schma reprsente tous les objets possds par un compte particulier.
Installation
Linstallation dOracle exige une planification rigoureuse ; il faut aussi tre
attentif aux dtails. Cette section comprend des instructions valables pour
linstallation de Oracle8 et Oracle8i. Bien quelles soient similaires, elles
prsentent quelques diffrences importantes. La section est divise en quatre
parties : pr-installation, installation dOracle8, installation dOracle8i et
post-installation. Oracle exige une opulence de ressources matrielles. Gn-
ralement, Oracle sexcute bien mieux avec plus de RAM, ce qui signifie que
plus il peut disposer de mmoire pour le rangement de donnes, moins il a
recours aux lecteurs physiques. Oracle fonctionne aussi beaucoup mieux avec
des lecteurs en nombre important, parce quil y a moins de contention entre
les fichiers. La meilleure mthode pour amliorer les performances est
dajouter de la RAM. La seconde est daugmenter le nombre de disques. Les
bases de donnes relationnelles sont souvent tributaires des entres/sorties.
Mme si Oracle demande seulement 400 Mo despace disque et 32 Mo de
RAM au minimum pour Oracle8 (voir tableau 3.1), il vaut mieux prvoir en
ralit au moins 500 Mo despace disque et 128 Mo de RAM.
Tableau 31
Caractristiques minimales pour utiliser Oracle8
Mmoire 32 Mo RAM
Tableau 31
Caractristiques minimales pour utiliser Oracle8
Tableau 32
Caractristiques minimales pour utiliser Oracle8i
Pr-installation
Il faut prparer Linux linstallation du SGBDR Oracle. Ce nest pas une
application que lon peut installer dans la minute o lon reoit le CD-ROM
ou ds que lon a tlcharg le logiciel. Cela demande la fois temps et
patience. La documentation du logiciel Oracle est accessible ladresse
http://technet.oracle.com/docs/index.htm. Avant dinstaller Oracle, il est vive-
ment conseill de lire la Note de version dOracle pour LINUX et le Guide
dinstallation pour LINUX. Les instructions de pr-installation pour Oracle8
et Oracle8i sont assez similaires, sauf que Oracle8i a besoin de Java et dun
$ORACLE_HOME diffrent. Suivre les tapes de pr-installation ci-dessous :
Un seul disque
On peut installer Oracle sur un lecteur physique unique, sil y a peu de risques
en termes de performances ou de pertes de donnes. Le dispositif que je vais
dcrire peut sembler trange et inutile, mais il vous donnera lhabitude de
ranger les donnes dans les partitions, mme sil nest pas fond sur des
lecteurs physiques. On se souviendra bien que cela nest pas recommand
dans un environnement de production, car on risque de perdre des donnes et
davoir des performances trs faibles.
Localiser sur votre systme une partition disposant dau moins 600 Mo
despace libre laide de la commande df k. Supposons que la partition /usr/
ait 1 Go despace disque disponible. Crer un rpertoire sous Oracle appel
/usr/local, puis crer quatre rpertoires sous Oracle appels u01, u02, u03 et
u04.
$ df -k
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/sda3 3865709 2663841 1201868 69% /usr
mkdir /usr/local/oracle
mkdir /usr/local/oracle/u01
mkdir /usr/local/oracle/u02
mkdir /usr/local/oracle/u03
mkdir /usr/local/oracle/u04
Les exemples, dans la suite du chapitre, supposent que les points de montage
sont situs sous la racine / du systme de fichiers. Crer des liens symboliques
sous la racine du systme de fichiers.
ln s /usr/local/oracle/u01 /u01
ln s /usr/local/oracle/u02 /u02
ln s /usr/local/oracle/u03 /u03
ln s /usr/local/oracle/u04 /u04
Quatre disques
Une configuration quatre disques accrot sensiblement la protection des
donnes et amliore quelque peu les performances, par rapport une configu-
ration mono-disque : crer une partition sur chaque lecteur physique pour
ranger les donnes Oracle ; assigner une partition chaque rpertoire Oracle,
/u01, /u02, /u03, et /u04 ; si Linux est dj install, et que lon veut ajouter
trois disques au systme, utiliser Disk Druid ou fdisk pour raliser la partition
des disques et mkfs pour formater les partitions ; crer les rpertoires /u01,
/u02, /u03 et /u04 sous la racine / du systme de fichier et utiliser la commande
mount pour monter les partitions dans le systme de fichiers.
Paramtres du noyau
Le Guide dinstallation Oracle pour LINUX recommande de changer les
paramtres du noyau, ce qui exige une recompilation du noyau. Normale-
ment, il nest pas ncessaire de modifier ces paramtres. Le paramtre le plus
important, SHMMAX, dfinit la taille maximale dun segment de mmoire
partage : loption par dfaut est de 32 Mo sur Red Hat Linux, ce qui est
gnralement suffisant pour linstallation dune base de donnes de premier
niveau. Si la SGA occupe 128 Mo, il faudra quatre segments de 32 Mo
chacun. Les paramtres du noyau posent plus de problmes sur un serveur
dot dune grande SGA. Dans un environnement de production, SHMMAX
aura la mme taille que la RAM physique. Si vous dcidez de faire ces modi-
fications, les fichiers modifier sont usr/src/linux/include/asm/shmparam.h et
/usr/src/linux/include/linux/sem.h.
# groupadd dba
# groupadd oinstall
Pour Oracle8, crer le compte Oracle en se servant du groupe dba en tant que
groupe par dfaut :
# passwd oracle
Options denvironnement
Certaines variables denvironnement doivent tre initialises avant que le
serveur Oracle ne soit install. Il existe trois endroits o placer les variables
denvironnement : si le compte oracle est seul se servir du logiciel Oracle,
placer les variables denvironnement dans le fichier ~/.bash_profile du
compte Oracle ; si dautres comptes sur le systme sont appels se servir
dOracle, les variables peuvent tre places dans le fichier systme
/etc/profile. Linconvnient de cet emplacement est quil faut avoir la qualit
root pour modifier les options de /etc/profile. Enfin, si des bases de donnes
multiples sont installes sur le serveur, il vaut mieux placer les variables
part, dans un script excutable par lutilisateur. Oracle utilise un fichier appel
oraenv situ sous $ORACLE_HOME/bin.
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/8.0.5
ORACLE_SID=orcl
ORACLE_TERM=vt100
PATH=$PATH:$ORACLE_HOME/bin
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:
$ORACLE_HOME/network/lib
export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_TERM
LD_LIBRARY_PATH PATH
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/8.1.5
ORACLE_SID=orcl
ORACLE_TERM=vt100
PATH=$PATH:$ORACLE_HOME/bin
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
:$ORACLE_HOME/network/lib
export ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_TERM
LD_LIBRARY_PATH PATH
Si vous avez besoin dune langue autre que la langue par dfaut, US7ASCII,
vrifier la documentation dinstallation dOracle au sujet des variables
NLS_LANG et ORA_NLS33. Copier ces variables denvironnement dans votre
fichier de dmarrage du shell.
Si vous souhaiter aller dans le rpertoire $ORACLE_HOME, le raccourci
utiliser est cd $ORACLE_HOME. Une mthode plus facile est de crer un
alias : placer la commande suivante dans le rpertoire /etc/bashrc ; une fois
lalias dfini, la commande oh vous amnera dans ORACLE_HOME.
$ umask
022
Avant de continuer, excuter la commande env pour sassurer que les varia-
bles denvironnement ont t configures correctement.
Affichage X Window
Le serveur X Window nautorise pas dautres processus utilisateur accder
lcran par dfaut. Si vous installez Oracle8i, les utilitaires graphiques Java
ont besoin dun accs au serveur X Window. Tant que vous tes connect sous
le compte utilisateur oracle et que vous excutez les applications sous le
compte oracle, les applications auront accs au serveur X. Si vous tes
connect en tant que root, que vous passez au compte oracle avec la
commande su et que vous tentez dexcuter une application dans une fentre
X en tant que oracle, vous pouvez tre mis en chec. Pour lviter, sous le
compte utilisateur avec lequel vous vous tes connect, excutez la
commande xhost +localhost : la commande xhost permet des comptes
divers daccder au serveur X. Ensuite, sous lautre compte utilisateur, initia-
lisez la variable denvironnement DISPLAY localhost.
$ xhost +localhost
$ export DISPLAY=localhost:0.0
Paquetages Linux
Le passage de la version 5.2 de Red Hat Linux la version 6.0 a introduit des
changements fondamentaux dans les bibliothques du noyau. Red Hat 5.2
comprend les bibliothques glibc en version 2.0, et Red Hat Linux 6.0 les
nouvelles bibliothques en version 2.1 de glibc. Les applications compiles
avec glibc 2.0 doivent tre recompiles avec les nouvelles bibliothques.
Oracle8 a t compil pour Red Hat Linux 5.2 avec glibc 2.0, et exige une
compatibilit avec les anciennes bibliothques pour fonctionner sur les
versions plus rcentes de Red Hat Linux. Si vous dcidez dinstaller Oracle8
sur Red Hat 6.0 ou une version ultrieure, vous devez installer les biblioth-
ques rpondant la compatibilit. Oracle8i a t compil avec glibc 2.1 et par
consquent na pas besoin des paquetages de compatibilit, mais Oracle8i ne
fonctionnera pas sous les versions de Red Hat Linux antrieures la version
6.0 parce que les bibliothques sont incompatibles.
Les paquetages de compatibilit ne sont donc ncessaires que si vous installez
Oracle 8.0.5, et vous nen avez pas besoin si vous installez Oracle 8.1.5 sur
Red Hat Linux 6.0 ou 6.1. On trouve les paquetages sur le CD-ROM dinstal-
lation de Red Hat Linux ou sur un site ftp.
compat-binutils-5.2-2.9.1.0.23.1.i386.rpm
compat-egcs-5.2-1.0.3a.1.i386.rpm
compat-egcs-c++-5.2-1.0.3a.1.i386.rpm
compat-egcs-g77-5.2-1.0.3a.1.i386.rpm
compat-egcs-objc-5.2-1.0.3a.1.i386.rpm
compat-glibc-5.2-2.0.7.1.i386.rpm
compat-libs-5.2-2.i386.rpm
# cd /usr/local
# tar zxvf jre_1.1.6-v5-glibc-x86.tar.gz
# ln -s jre116_v5 jre
Attention. Certains problmes ont t rencontrs avec des versions du JRE autres
que la version 1.1.6v5 : par exemple, le programme dinstallation qui ne dmarre pas,
ou certaines tapes de linstallation qui ne se terminent pas. Ne considrez pas quune
version plus rcente fonctionnera mieux. Nutilisez pas non plus le JDK, pour les
mmes raisons. Si une installation dOracle antrieure a chou, il faut supprimer tous
les fichiers prcdemment installs avant de rinstaller.
Correctifs Oracle
Se connecter en tant quutilisateur oracle et crer un rpertoire appel
patches ; tlcharger les correctifs les plus rcents disponibles. Pour Oracle8,
tlcharger les fichiers depuis ftp://oracle-ftp.oracle.com/server/patchsets/
unix/LINUX/80patchsets/80510/ ou lOTN http://technet.oracle.com
lOTN vous demandera louverture dun compte gratuit. Les correctifs pour
Oracle8i se trouvent ladresse http://technet.oracle.com/support/tech/linux/
support_index.htm.
Placer les correctifs tlchargs dans le rpertoire des correctifs :
glibcpatch.tgz, lnxpatch.tgz, et linux_80510patchset.tgz. Si vous installez
Oracle8 sur Red Hat 5.2, vous navez pas besoin de glibcpatch.tgz. Pour
Oracle8i, il faut aussi le correctif linux_815patches.tgz. Lisez bien le
README relatif chaque correctif ; dautre part, il y aura aussi des FAQ
pour donner des pistes ou des critiques utiles. Si vous rencontrez des probl-
mes, ce sont les premires choses consulter.
Installer Oracle8
Oracle8 sappuie sur un programme dinstallation appel Software Asset
Manager, ou orainst. Le programme dinstallation est parfois peu commode.
Utiliser la touche TAB pour se dplacer entre les champs et boutons, la barre
despacement pour choisir une option et la touche ENTER pour activer un
bouton. Si un champ est trop court ( lcran) pour afficher son contenu
complet, slectionner le champ laide de la touche TAB, et utiliser la touche
flche droite pour afficher la suite du texte.
cd /mnt/cdrom/orainst
./orainst /c
Remarque. Si lon se sert dun CD-ROM et que le script orainst ne sexcute pas,
sassurer que le CD-ROM est bien mont avec le paramtre exec.
Figure 31
Programme dinstallation dOracle8
4. Choisir Custom Install. Appuyer sur la touche TAB pour passer la bote
de slection du type dinstallation, utiliser les flches pour choisir
Custom, et appuyer sur la touche ENTER pour continuer.
5. Entrer OK pour afficher le texte de README.
6. Choisir Install, Upgrade ou De-install software.
7. Choisir Install new product Do Not Create DB objects.
8. Vrifier ORACLE_HOME et ORACLE_BASE.
9. Accepter les options par dfaut pour les fichiers de trace (log).
10. Choisir Install from CD-ROM.
11. Choisir une langue.
12. Le programme dinstallation explique ensuite o le script root.sh sera
plac pour un usage ultrieur.
13. Lcran des options dinstallation apparat. Pour voir une description com-
plte dune option, placer le curseur sur loption laide de la touche TAB,
puis appuyer sur la flche droite du clavier ; appuyer sur la barre despace-
ment pour choisir une option ; ne pas choisir la documentation du serveur
Oracle8 parce quil y a une erreur dans la structure du rpertoire qui met
linstallation en chec ; ne pas choisir les pilotes JDBC ou lagent intelli-
gent ce moment de linstallation. Les options retenir sont les
suivantes : Client Software, Net8, TCP/IP Protocol Adapter, Oracle Unix
Installer, la version Standard ou Entreprise dOracle8, PL/SQL,
Pro*C/C++ et SQL*Plus.
14. Quand la slection est termine, choisir le bouton Install et appuyer sur la
touche ENTER.
15. Entrer OK la vue du message ulimit.
16. Choisir dba comme groupe dba.
17. Entrer OK sur linvite OSOPER.
18. Linstallation commence. Une fois acheve, un message indique The
requested action has been performed for the selected products Laction
requise a t excute pour les produits choisis.
19. Un message apparat, qui demande le compte root pour excuter le script
root.sh. Entrer OK.
20. Sortir du programme dinstallation.
21. Ouvrir une nouvelle fentre terminal et passer au compte root avec su. En
tant que root, aller dans le rpertoire $ORACLE_HOME/orainst et excuter
la commande sh root.sh. Vrifier les variables denvironnement
ORACLE_OWNER, ORACLE_HOME et ORACLE_SID. Si les variables ne
sont pas correctes, sortir du script et initialiser les variables denvironne-
ment avec les valeurs fournies prcdemment dans ce chapitre. Le nom
complet du chemin du rpertoire bin local est /usr/local/bin. Ne pas tenir
compte de lindication que ORACLE_HOME ne concorde pas avec le rper-
toire home du compte oracle.
Enter the full pathname of the local bin directory [/usr/lbin]: /usr/local/bin
Lnxpatch
Le correctif lnxpatch est un script de shell.
1. Aller dans le rpertoire contenant les correctifs.
2. Crer un rpertoire appel lnx.
mv lnxpatch.tgz lnx
cd lnx
5. Extraire le correctif.
sh glibcpatch.sh
80510patchset
Le fichier 80510patchset doit tre install par le programme dinstallation
Oracle, orainst, que vous avez utilis pour installer le serveur Oracle.
1. Crer un rpertoire appel 80510.
2. Transfrer le fichier 80510patchset.tgz dans le rpertoire 80510.
mv 80510patchset.tgz 80510
cd 80510
4. Extraire le correctif.
orainst /c
13. Entrer le chemin complet du rpertoire o le correctif 8051 est situ ; par
exemple, /home/oracle/patches/8.0.5/8051/.
14. Choisir une langue.
15. Crer un nouveau fichier root.sh.
16. Choisir OK pour sauvegarder le fichier root.sh prcdent.
17. Choisir OK au vu du message de ltape de post-installation.
18. Choisir les lments lists dans la bote de gauche, Oracle8 Standard et
Precomp.
19. Choisir Install.
20. Entrer Yes pour mettre jour chaque composant.
21. Entrer OK au vu du message ulimit.
22. Choisir dba en tant que groupe et entrer OK.
23. Entrer OK pour le groupe OSOPER.
24. Une fois linstallation termine, sortir du programme dinstallation.
25. Excuter le script root.sh en tant que root.
Glibcpatch
Le correctif glibcpatch est un script de shell.
1. Aller dans le rpertoire contenant les correctifs.
2. Crer un rpertoire appel glibc
3. Transfrer le fichier glibcpatch.tgz dans le rpertoire glibc.
mv glibcpatch.tgz glibc
cd glibc
5. Extraire le correctif.
sh glibcpatch.sh
cd /mnt/cdrom/orainst
./orainst /c
Installer Oracle8i
Linstallation dOracle8i est dlicate parce quil faut louvoyer entre les
bogues du sous-programme dinstallation pour la version 8.1.5. Le but est
dinstaller dabord le logiciel Oracle, puis dinstaller les correctifs, de crer
une base de donnes relle appele orcl et de dmarrer linstance.
Les instructions dinstallation qui suivent ont t excutes sur un systme
quip dune copie neuve de Red Hat Linux 6.1, incluant tous les correctifs
disponibles. Il faut sattendre ce que le programme dinstallation universel
Oracle (OUI, Oracle Universal Installer) achoppe sur un problme de
mmoire. Il faut au moins 128 Mo de RAM, et un espace dchange suffisant
pour commencer linstallation. Sassurer que le JRE Java est install et que le
lien symbolique /usr/local/jre existe ; que vous avez un compte Oracle, un
groupe dba et un groupe oinstaller Oracle sera membre des deux groupes,
oinstall tant le groupe primaire list dans /etc/passwd ; que les variables
denvironnement Oracle existent, laide de la commande env.
$ cd /mnt/cdrom/
$ cd /mnt/cdrom/install/linux
$. /runIns.sh
Figure 32
Programme dinstallation universel Oracle
Figure 33
Lancement du script orainstRootsh par OUI
6. La premire fois que Oracle8i est install sur un systme, apparat la bote
de dialogue de la figure 3.3 : elle demande le compte root pour excuter un
script appel /tmp/OraInstall/orainstRoot.sh. Ce script cre, dans le rper-
toire /etc, un fichier, appel oraInst.loc, qui contient lemplacement du
rpertoire oraInventory, et change le propritaire du groupe du rpertoire
oraInventory en oinstall. Si ce dialogue napparat pas, soit vous avez dj
install Oracle, soit le compte Oracle nest pas membre du groupe dba.
Ouvrir une nouvelle fentre terminal et passer au compte root avec la com-
mande su. Se mettre, en tant que root, dans le rpertoire /tmp/OraInstall et
entrer ./orainstRoot.sh. Quand le script orainstRoot.sh est termin, choisir
Retry dans la bote de dialogue.
# cd /tmp/orainstall
# /orainstRoot.sh
Figure 34
Installer les privilges
$ su
Password:
# cd /u01/app/oracle/product/8.1.5/
# sh root.sh
$ cd $ORACLE_HOME/install/utl
$ sh linux.sh
soit pris en compte. Voici quelques conseils propos des fichiers correctifs,
en cas de problme. Les versions antrieures des correctifs dOracle8 se
dcompressaient directement dans le rpertoire de travail courant, ce qui nest
pas trs propre. La plupart des archives tar crent un sous-rpertoire et y
dcompressent les fichiers. Avec Oracle sous Linux, il fallait crer un sous-
rpertoire et transfrer le correctif dans le rpertoire avant de le dcompresser.
Le correctif 8.1.5.0.1 tait mme pire : il dcompressait dans le rpertoire de
travail courant et, mystrieusement, le correctif chouait parce quil comptait
le nombre de fichiers dans le rpertoire, et quil trouvait un fichier en trop
le fichier de mise jour lui-mme. Il fallait alors liminer le fichier de mise
jour compress du rpertoire avant dinstaller le correctif. Oracle a fait des
merveilles avec le correctif pour 8.1.5.0.2 : le correctif se dcompressera dans
son propre sous-rpertoire ! La raison pour laquelle jai dcrit ces problmes
est quil nest pas sr quils ne ressurgissent pas dans les correctifs ultrieurs :
aussi soyez attentif, et lisez toute la documentation fournie avec le correctif.
De plus, il faut aussi toujours arrter le serveur de base de donnes quand on
installe des correctifs qui sappliquent lui.
1. Dcompresser le correctif :
$ cd /home/oracle/patches
$ tar zxvf linux_815patches.tgz
$ echo $ORACLE_HOME
/u01/app/oracle/product/8.1.5
$ cd linux_815patches
$ more README
./linux_815patches.sh
Figure 35
Assistant de configuration de base de donnes Oracle
Tableau 33
Options Oracle8i
Oracle Visual Information Retrieval Oracle8i Visual Information Retrieval (VIR) facilite
le reprage de similitudes dimages, sur la base de
critres tels que la couleur, la forme et la texture.
Tableau 33
Options Oracle8i
Figure 36
Paramtres dinitialisation de lassistant de configuration de base de donnes
Tableau 34
Emplacements des fichiers de donnes des tablespaces
Tablespace Emplacement
SYSTEM /u02/oradata/orcl/system01.dbf
USER /u02/oradata/orcl/user01.dbf
Tableau 34
Emplacements des fichiers de donnes des tablespaces
Tablespace Emplacement
ROLLBACK /u02/oradata/orcl/rbs01.dbf
INDEX /u02/oradata/orcl/indx01.dbf
TEMPORARY /u02/oradata/orcl/temp01.dbf
11. Lcran suivant contient des informations sur les journaux (logs redo).
Augmenter la taille des journaux 5 000 Ko (5 Mo). Les journaux sont
obligatoires pour ouvrir la base de donnes. Chaque transaction est enre-
gistre dans un journal utilis pour la restauration des donnes. Si vous
avez configur votre systme avec OFA, ranger les journaux dans les
emplacements suivants :
/u03/oradata/orcl/redo01.log et /u03/oradata/orcl/redo02.log.
12. Vrifier le paramtre de connexion. Les journaux sont commuts dans cer-
taines circonstances. Lintervalle entre les vrifications (checkpoint)
garantit quils seront commuts au moins une fois.
13. Lcran suivant affiche des informations globales du systme relatives
lusage de la mmoire. Le SGA influence beaucoup les performances de la
base de donnes. Une base de donnes de production exigera un suivi et
des ajustements du SGA. Les paramtres par dfaut sont suffisants pour
une base de donnes dessai.
14. Vrifier le chemin de dbogage, dans lequel sont crits les fichiers de trace
pour lutilisateur et les processus en arrire-plan.
15. Sauvegarder les informations dans un script de shell au lieu de laisser
lassistant de base de donnes Oracle crer la base de donnes. Choisir
Done quand cest fait. Sauvegarder le script dans le chemin par dfaut,
cest--dire /u01/app/oracle/product/8.1.5/install/sqlorcl.sh.
$ cd $ORACLE_HOME/install
$. /sqlorcl.sh
Post-installation
Maintenant quOracle est install, vous devez laisser la situation se dcanter
un peu avant de commencer vous en servir. Avant cela, vous devez peaufi-
ner certains points, par exemple changer certains mots de passe critiques,
mettre jour un nouveau format de date, et configurer Linux pour dmarrer et
arrter Oracle automatiquement.
Toutes les tables de base, ainsi que les vues du dictionnaire des donnes, sont
ranges dans le schma SYS. Ne modifier aucun objet du schma SYS ; cela
ne doit tre fait que par Oracle. Le compte SYSTEM reoit tous les privilges
systme pour la base de donnes, et sert crer les tables additionnelles ou les
vues ncessaires ladministration de la base de donnes. Le compte
SYSTEM est gnralement propritaire des tables et des vues utilises par les
outils Oracle.
nls_date_format = "YYYY-MM-DD"
# more /etc/oratab
# The last parameter tells dbstart whether it should start and stop Oracle (Y/N)
orcl:/u01/app/oracle/product/8.0.5:Y
Un niveau dexcution (run-level) est un tat logique qui dfinit une configu-
ration. Un systme peut fonctionner diffremment selon quil est de niveau 3
ou de niveau 4. Un systme Red Hat fonctionne normalement aux niveaux 3
ou 5. Le niveau 3 est considr comme le mode multi-utilisateur complet,
alors que le niveau 5 ne fournit quun cran de login X Window. Sous Red
Hat Linux, les scripts de contrle dexcution sont rangs sous /etc/rc.d/init.d.
Des liens symboliques sont crs sous ../rc0.d, ../rc1.d, ../rc2.d, ../rc3.d,
../rc4.d, ../rc5.d, et ../rc6.d, selon le niveau o se situe laction. Les liens
symboliques commencent par un S ou un K, selon quils dmarrent (start) ou
quils interrompent (kill), et sont suivis dun numro qui indique lordre
dexcution des scripts dans le rpertoire. La commande telinit sert changer
le niveau dexcution de Linux. Voir man init pour plus dinformations.
Vous pouvez utiliser le script suivant comme point de dpart. Copiez le
contenu dans un fichier appel oracle, dans le rpertoire /etc/rc.d/init.d. Vous
devez aussi le rendre excutable avec la commande : oracle u+x chmod. Vri-
fiez aussi que la variable denvironnement ORA_HOME est conforme votre
configuration.
# !/bin/bash
# Start and stop the Oracle Instance
#
# chkconfig: 345 91 19
# description: Starts the Oracle listener and instance
ORA_HOME=/u01/app/oracle/product/8.1.5
ORA_OWNER=oracle
if [ ! -f $ORA_HOME/bin/dbstart -o ! -d $ORA_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
case "$1" in
start)
# Startup the Oracle listener and instance
echo -n "Oracle startup: "
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
touch /var/lock/subsys/oracle
echo "Finished"
;;
stop)
# Shutdown the Oracle listener and instance
echo -n "Oracle shutdown: "
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle
echo "Finished"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: /etc/rc.d/init.d/oracle {start|stop|restart|reload}"
exit 1
esac
exit 0
Configuration du rseau
Le rseau sous Oracle8/8i sappelle Net8. Oracle8 et Oracle8i utilisent des
fichiers de configuration rseau similaires. Il ny a aucun utilitaire dassis-
tance la configuration du rseau dans Oracle8 : on les modifie la main.
Oracle8i met disposition un assistant crit en Java, appel Network
Assistant, qui configure le rseau.
Figure 37
Assistant Net8
orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(Host= 192.168.10.1)(Port= 1521))
(CONNECT_DATA = (SID = orcl))
)
Oracle8i propose lassistant Net8, pour configurer le rseau (voir figure 3.7).
Si vous navez quun seul serveur, continuez utiliser les noms dhte TCP
pour accder votre serveur. Certaines socits utilisent les Oracle Names
Servers, des rfrentiels centraliss de noms de service. Les clients peuvent
utiliser le Oracle Names Server comme ressource pour rechercher des instan-
ces Oracle. Deux applications Java netasst et netca servent configu-
rer le rseau sous Oracle8i.
Utiliser Oracle8/8i
Oracle est install, vous tes prt vous en servir. Cette section dcrit
comment dmarrer et arrter le serveur, quels processus sont ncessaires au
fonctionnement de la base de donnes, explique comment crer un compte ou
utiliser SQL*Plus, donne une vue densemble du dictionnaire des donnes
ainsi quune brve introduction sur la manire de charger des donnes dans la
base de donnes, ou den extraire.
Dmarrage et arrt
Oracle Server Manager, svrmgrl, et SQL*Plus peuvent dmarrer et arrter
linstance. La fonctionnalit du Gestionnaire de serveur tant intgre dans
SQL*Plus, Oracle envisage de ne plus distribuer lutilitaire lavenir. Je
prfre svrmgrl SQL*Plus pour excuter des tches dadministration de
base de donnes de base ; par consquent, cette section dcrira brivement cet
outil. Le l dans svrmgrl signifie en mode ligne. Quelques plates-formes dispo-
sent dune version graphique du Gestionnaire de serveur ; Linux nen fait pas
partie ; SQL*Plus sera dcrit plus loin dans ce chapitre. Le Gestionnaire de
serveur comprend un groupe de commandes dadministration de la base de
donnes. Les commandes STARTUP, SHUTDOWN et SGA SHOW sont prsen-
tes dans le tableau 3.5.
Tableau 35
Commandes STARTUP et SHUTDOWN du Gestionnaire de serveur
Commande Description
SHUTDOWN NORMAL Oracle attend que toutes les connexions soient fermes pour
sarrter
Tableau 35
Commandes STARTUP et SHUTDOWN du Gestionnaire de serveur
Commande Description
SHUTDOWN IMMEDIATE Toutes les transactions actives sont annules (rollback), et les
connexions sont fermes. Certaines instructions SQL peuvent
tre abandonnes.
SHUTDOWN ABORT Les instructions SQL en cours sont termines, les transactions
non valides ne sont pas annules (rollback), et toutes les
connexions sont fermes.
Une instance peut tre dmarre par la commande STARTUP et arrte par la
commande SHUTDOWN. Linstance est dmarre sans que la base de donnes
ne soit rellement monte laide de la commande STARTUP NOMOUNT, qui
ne sert normalement que pendant la cration de la base de donnes. La base
de donnes peut aussi tre dmarre et monte, mais sans tre ouverte, par la
commande STARTUP MOUNT. Ce procd est utile si lon veut renommer des
fichiers, activer ou dsactiver des options darchivage dans les journaux ou
excuter une restauration complte de la base de donnes. Pour ouvrir une
base de donnes, utiliser la commande ALTER DATABASE OPEN. La
commande STARTUP RESTRICT sert ouvrir la base de donnes en mode
restreint, qui rserve laccs la base de donnes aux utilisateurs qui dispo-
sent des privilges CREATE SESSION et RESTRICTED SESSION. On slec-
tionne un fichier de paramtre laide de la commande STARTUP
PFILE=initSID.ora. Dans la plupart des cas, la commande STARTUP de base
sera suffisante pour dmarrer la base de donnes.
SVRMGR> help
The following are SIMPLIFIED syntax descriptions. For complete syntax
descriptions, please refer to the Oracle Server Manager User's Guide.
EXIT
REM
SQL statements can also be executed.
Processus en arrire-plan
Quand Oracle fonctionne, on voit tout de suite que beaucoup de processus
diffrents se droulent. Faisons rapidement le tour des fonctions par proces-
sus. Passer une commande ps, qui montre bien que le nom de chaque proces-
sus contient le SID de linstance.
Il se peut que lon nait pas le mme ensemble de processus se droulant sur
une autre machine. Il y a au moins cinq processus Oracle dont on est sr :
lcriture de la base de donnes, lcriture du journal, le moniteur systme, le
moniteur de processus et le processus de checkpoint. Remarquer que le nom
de chaque processus est prcd par ora, et finit par le nom dinstance.
Lcriture de la base de donnes (DBW0) est responsable de lcriture des
donnes modifies dans les fichiers de donnes physiques. Quand les donnes
changent, elles sont places dans le cache de la base de donnes. intervalles
donns, lcriture crit les buffers modifis depuis le cache sur les fichiers de
la base de donnes. Lcriture de la base de donnes doit sassurer quil y a
suffisamment de buffers disponibles dans le cache. Les performances de la
base sont amliores du fait que les modifications se font dans un buffer
mmoire au lieu de se faire sur le disque. Des processus dcritures de base de
donnes multiples peuvent amliorer les performances, bien quen gnral, un
seul suffise.
Le processus dcriture du journal (LGWR) enregistre les modifications,
inscrites dans le cache de journalisation, dans les fichiers journaux. Lcriture
du journal excute des critures squentielles dans le fichier journal dans les
cas suivants : quand le cache du journal est plein au tiers, quand une alarme se
produit (toutes les trois secondes), quand une transaction est valide et avant
que lcriture de la base de donnes ncrive les blocs, modifis dans le cache
de la base, dans les fichiers de donnes.
Le moniteur systme (SMON) vrifie la cohrence de la base de donnes
louverture et commence la restauration, si ncessaire. Le moniteur de proces-
sus (PMON) rcupre les ressources des processus en chec. Le processus de
checkpoint (CKPT) est charg de mettre jour les informations dtat de la
base de donnes, chaque fois que des changements dans le cache sont enre-
gistrs.
Dautres processus, optionnels, prennent en charge larchivage, la rcupra-
tion, la rgulation et le serveur partag. Le processus darchivage (ARCn)
copie les journaux en ligne vers la mmoire de stockage, quand ils sont pleins
ou quand il y a commutation. Larchivage des journaux sinscrit dans la stra-
tgie de protection des bases de donnes. Sil se produit un crash de la base et
que les fichiers de donnes sont perdus, on repart de la sauvegarde pour
restaurer la base de donnes telle quelle tait un certain moment et on
utilise conjointement les journaux archivs pour rtablir ltat de la base de
donnes un moment ultrieur. Si la base de donnes est en mode journalisa-
tion et que le processus darchivage ne peut trouver despace libre, toutes les
transactions de la base de donnes seront abandonnes.
Le processus de rcupration (RECO) sutilise dans une configuration de base
de donnes distribue pour rsoudre les transactions en attente, phnomne d
un chec du rseau ou du systme. Le rgulateur (Dnnn) est utilis dans les
configurations de serveurs multithread. Il achemine les requtes de chaque
processus utilisateur vers les processus du serveur partag et renvoie les
rponses au processus utilisateur. Il y a au moins un rgulateur pour chaque
protocole de communication. Le processus de serveur partag (Snnn) sert
dans une configuration de serveur multithread, pour rpondre aux requtes
des clients.
Il y a encore trois processus que vous ne rencontrerez probablement pas : le
verrouillage (LCK0), la file des travaux (SNPn) et le moniteur de queue
(QMNn). Ces processus sont utiliss respectivement par Oracle Parallel
Server, le rafrachissement instantan des tables et Advanced Oracle Queuing.
Chaque processus gre son propre ensemble de tches. Il arrive quun proces-
sus entre en conflit avec un autre, pour une ressource. Par exemple, les critu-
res du journal et de la base de donnes qui essaieraient daccder un lecteur
en mme temps. De telles situations entrent en ligne de compte dans un envi-
ronnement de production consquent.
Crer un compte
Il y a trois choses savoir faire quand on cre un compte utilisateur. La
premire est de crer le compte lui-mme, la seconde de lui donner des droits
et la troisime, de lui allouer un quota sur un ou plusieurs tablespaces. Il y a
beaucoup de choses connatre pour traiter la scurit dans Oracle. Les
instructions suivantes vous aideront crer un compte de connexion de base
sans trembler. Il faut tre connect avec le privilge DBA pour crer des
Une fois le compte cr, il faut lui donner les droits pour la connexion la
base de donnes. Il y a deux types de privilges : systme et objet. Les privil-
ges systme donnent aux utilisateurs la possibilit dexcuter dans la base de
donnes des actions telles que la cration, la suppression et la mise jour des
tables, des vues, des segments de rollback et des procdures. Les privilges
dobjet donnent aux utilisateurs la possibilit daccder et de modifier des
objets de la base de donnes tels que les tables, les vues, les squences, les
procdures, les fonctions ou les paquetages. Il y a 80 privilges systme. La
commande GRANT accorde un privilge un utilisateur et la commande
REVOKE a leffet contraire. La vue DBA_SYS_PRIVS liste les privilges
systme accords aux utilisateurs. Un utilisateur peut identifier les privilges
systme disponibles dans la session courante en consultant la vue
SESSION_PRIVS. Comme il y a beaucoup de privilges individuels, il savre
difficile dentretenir des privilges multiples sur un grand nombre de comptes
utilisateur. Dans cette optique, Oracle gre les privilges en introduisant la
notion de rles. Les privilges peuvent tre assigns aux rles, qui leur tour
sont accords aux utilisateurs. Il y a une grande varit de rles prdfinis
dans Oracle. Les trois plus connus sont CONNECT, RESOURCE et DBA. Le
rle CONNECT donne les droits daccs et dutilisation de la base de donnes
suffisants pour la plupart des utilisateurs. Le rle RESOURCE fournit des
droits complmentaires, utiles pour les programmeurs de base de donnes. Le
rle DBA a tous les privilges. Cest la commande GRANT qui sert assigner
un rle un utilisateur. Un utilisateur peut tre membre de plusieurs rles.
User altered.
SQL> password
Changing password for PAT
Old password:
New password:
Retype new password :
SQL*Plus
SQL*Plus est linterface dorigine vers le serveur Oracle fournie par Oracle
sur la plate-forme Linux. Cest une application de type terminal qui accepte
des instructions SQL et des blocs PL/SQL. Dot de nombreuses fonctions,
dont la possibilit de formater la sortie des requtes SQL, SQL*Plus a lair
simple mais, en ralit, il est fonctionnellement trs riche. Des livres entiers
lui sont ddis. Cette section dcrira brivement certaines de ses caractristi-
ques les plus importantes. SQL*Plus sera install dans le rpertoire
$ORACLE_HOME/bin. Pour dmarrer lapplication, il suffit de taper sqlplus,
ou dajouter une chane de connexion, sqlplus pat/er34533.
Remarque : dans SQL*Plus, linvite par dfaut est SQL>. Vous pouvez en
changer laide de la commande SET : SET SQLPROMPT monprompt>. Pour
sortir de SQL*Plus, taper simplement EXIT. Les commandes SQL*Plus sont
indiffrentes la casse. Ds que lon voit le prompt SQL>, entrer des instruc-
tions SQL : une instruction doit finir par un point-virgule ou une barre oblique
(/) sur la ligne elle-mme, ou par une ligne blanche ; la ligne blanche termine
lentre de la commande SQL et la range dans un buffer, mais elle ne soumet
pas la requte.
Toutes les commandes SQL sont ranges dans le buffer. On rexcute le
buffer, en entrant une barre oblique (/) ou la commande RUN ; on voit son
contenu avec la commande LIST. Pour diter une commande, taper LIST :
chaque ligne aura un numro de ligne ; trouver la ligne changer et taper son
numro dans SQL*Plus. La ligne devient active : utiliser la commande
CHANGE pour modifier le texte. Par exemple, pour changer le mot all_objects
en user_objects, entrer la commande change/all_/user_.
Le buffer est facile dutilisation, mais il existe un meilleur moyen dditer des
commandes : lditeur. La variable SQL*Plus _editor contient le nom de
lditeur qui sera ouvert par SQL*Plus. La commande DEFINE permet
dinitialiser la valeur de _editor. Pour voir la valeur de _editor, tapez simple-
ment define _editor ; pour changer la valeur, tapez define _editor=vi.
SQL>define _editor
DEFINE _EDITOR = "ed" (CHAR)
SQL>define _editor=vi
SQL>define _editor
DEFINE _EDITOR = "vi" (CHAR)
La commande HOST peut servir passer des commandes Linux. Par exem-
ple, pour consulter un rpertoire dans SQL*Plus, utiliser la commande HOST
pour excuter la commande ls. Un raccourci pour HOST est le point dexcla-
mation (!) : SQL> !ls.
SQL> host ls
init.sql loop.sql
SQL> !ls
init.sql loop.sql
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
Les vues des performances dynamiques sont mises jour par le serveur
Oracle pendant toute la dure de son activit. Ces tables virtuelles ne sont pas
accessibles pour lutilisateur courant, et ne sont utilises que par ladministra-
teur de la base de donnes. Elles servent frquemment au rglage des perfor-
mance de la base elle-mme, celles des performances dynamiques tant mises
au point par V$.
Import/export
Il existe trois utilitaires pour importer ou exporter de gros volumes de
donnes dans la base de donnes Oracle : Export, Import et SQL*Loader.
Chaque utilitaire a un grand nombre doptions et de caractristiques. Lutili-
taire dexportation, appel exp, extrait les dfinitions dobjet et les donnes
dune base de donnes Oracle et les range dans un fichier binaire, souvent
appel un dump. Lutilitaire dimportation, imp, insre les donnes extraites
soit dans la mme base de donnes, soit dans une autre. Les fichiers dexpor-
WebDB
WebDB est un produit Oracle qui fournit une interface de type web pour la
base de donnes Oracle. Au dpart, WebDB est un kit de construction de
sites web, crit en PL/SQL. Il est inclus dans les bases de donnes et ne
requiert quun navigateur web standard. WebDB propose quelques fonc-
tions dadministration de base de donnes, dont la gestion de comptes et
dobjets, ainsi que des outils simples de dveloppement pilots par des
modles qui permettent lutilisateur final de concevoir ses propres pages
web, ses comptes rendus et ses formulaires, et propose des dossiers dans
lesquels lutilisateur peut ranger ses documents.
WebDB contient tous les composants ncessaires la ralisation dun site
complet, dont PL/SQL et HTTP Listener. Quand HTTP Listener reoit une
demande, il la transmet la passerelle PL/SQL qui transfre la demande au
serveur Oracle et renvoie les rsultats au client. Tous les fichiers web et les
donnes sont ranges dans le serveur. WebDB fait appel la scurit stan-
dard dOracle, ce qui rend la gestion des comptes individuels plus facile.
Linterface avec WebDB sappuie sur les protocoles standard dInternet.
Le client na pas besoin de bibliothques spciales ni dun logiciel rseau
pour se connecter au serveur WebDB. WebDB se fonde sur les compten-
ces dont disposent dj les DBA. WebDB convient pour un site intranet o
les utilisateurs accdent rgulirement la base de donnes. Il sert au
DBA, lutilisateur final et au dveloppeur.
tation (dump) ne peuvent tre lus que par lutilitaire Import. Export nest pas
une mthode typique de sauvegarde dune base de donnes, mais peut servir
crer une copie permanente dun schma, le dupliquer sur dautres serveurs,
ou larchiver, si un utilisateur quitte la socit. Le premier usage des utilitai-
res Export et Import est de passer des donnes dun serveur Oracle un autre.
Il faut excuter le script CATEXP.SQL, ou CATALOG.SQL, qui excute
CATEXP.SQL, pour configurer Oracle pour lutilitaire Import. Le script ne doit
tre excut quune seule fois.
SQL*Loader sert charger des donnes importes depuis dautres bases de
donnes. Il peut lire un fichier externe, contenant des donnes stockes dans
des formats varis. Par exemple, SQL*Loader peut importer un fichier de
largeur fixe, aussi bien quun enregistrement de longueur variable contenant
des dlimiteurs, tels que les tabulations, pour identifier les colonnes.
SQL*Loader a besoin dun fichier de contrle, qui dcrit les donnes et spci-
fie les fichiers de donnes en entre. Il produit un fichier journal et un fichier
de rejets, contenant les enregistrements rejets.
Logiciels tiers
De nombreuses applications tierces compltent Oracle sur la plate-forme
Linux. Nous nous en tiendrons quatre applications dans cette section :
Orasoft SQLWork, Orasoft Object Manager, Orac et Perl DBI.
Figure 38
Orasoft SQLWork
Orasoft
Orasoft (www.orasoft.org) est un projet actif dopen-source qui vise renfor-
cer la plate-forme Linux par des applications, la fois de grande qualit et
professionnelles. A ce jour, il existe cinq applications dont SQLWork, Proce-
dit, Session Monitor, Tables Navigator et ObjectManager. SQLWork est une
feuille de travail en SQL, Procedit sert diter du code PL/SQL, Session
Monitor suivre les connexions aux bases de donnes et Tables Navigator
permet de parcourir les tables Oracle. ObjectManager, le membre le plus
rcent de cet ensemble dapplications, est orient vers ladministration de la
base de donnes. Les fonctionnalits de Session Monitor et de Tables Naviga-
tor ont t reprises dans ObjectManager.
Figure 39
ObjectManager de Orasoft
SQLWork
Orasoft SQLWork est une feuille graphique de travail en SQL, qui propose
une interface graphique conviviale Oracle (voir figure 3.8). crit laide du
GIMP Toolkit (GTK), il est prinstall sur la plupart des distributions Linux.
Il offre beaucoup de possibilits, dont lhistorique, les signets, les impressions
et lexportation de rsultats dans un fichier. Les rsultats peuvent faire lobjet
dinterrogations libres (free-form) ou en passant par une prsentation en
grille, similaire celle dun tableur. La fonction dhistorique dispose dun
buffer pour stocker les commandes prcdentes ; la fonction de signet permet
de sauvegarder des instructions SQL pour un usage ultrieur, comme on le
fait avec un navigateur web. Les rsultats des requtes sont conservs dans un
fichier ou imprims.
ObjectManager
Orasoft ObjectManager (OM) est destin ladministration des bases de
donnes. Lcran dObjectManager est divis en deux parties (voir figure
3.9). La partie gauche de lcran donne une liste de dossiers qui reprsentent
les diffrents types dobjets disponibles dans le SGBDR Oracle. En ralit, il
ne sagit pas exactement dobjets. Par exemple, il existe un dossier qui
contient les connexions courantes la base de donnes. On utilise OM pour
consulter, supprimer et crer des objets, dont les tables, les index, les synony-
mes et les vues ; il donne aussi des informations sur les liens db, les procdu-
res, les vues, les paquetages, les dclencheurs, les synonymes, les squences
et les types. La partie droite de la fentre affiche des informations relatives
lobjet slectionn, rparties selon les sujets, accessibles via des tabulations.
Orac
Orac (www.kkitts.com/orac_dba/) est un outil dadministration de bases de
donnes conu pour les utilisateurs dots des privilges DBA (voir figure
3.10). Lapplication, open-source, est crite en Perl/Tk, un ensemble doutils
crits initialement pour fournir des fonctions graphiques au langage de script
Tcl. Tk est maintenant disponible pour Perl. Orac permet de raliser des
rapports, des graphiques et dditer les tables. Il regorge de rapports intres-
sants. Par exemple, on peut obtenir un rapport complet, avec diagramme
barres, de lutilisation de lespace. Il y a aussi un menu de rglage. Il faut un
peu de temps pour matriser linterface, mais une fois que vous lavez en
main, elle vous en fait gagner.
Perl/DBI
Perl est devenu un langage de programmation web courant. On obtient une
plate-forme Internet puissante en combinant Oracle avec Perl, le serveur web
Apache et Linux, et il est facile de faire fonctionner Oracle avec Perl. Se
connecter Oracle avec Perl ncessite deux paquetages, DBI et DBD. DBI est
une interface indpendante de base de donnes : cest un paquetage de fonc-
tions de base de donnes indpendant de la plate-forme. Le second compo-
sant, DBD, est un pilote de base de donnes. Chaque serveur de base de
donnes exige un pilote de base de donnes spcifique DBD::Oracle est la
version utilise avec Oracle. On tlcharge ces deux composants partir dun
site Comprehensive Perl Archive Network (CPAN). La liste des sites CPAN
est disponible sur http://www.perl.com/.
Figure 310
Orac
# !/usr/bin/perl
use DBI;
Rsum
Dans ce chapitre, nous avons pass en revue les concepts cls dOracle
comprendre pour travailler avec le SGBDR Oracle. Le plus important est la
diffrence entre une base de donnes et une instance. La base de donnes
reprsente les structures physiques, alors que linstance reprsente les structu-
res de la mmoire.
FAQ
Q. Pourquoi ne puis-je excuter aucun des utilitaires Oracle ?
R. Assurez-vous que le rpertoire $ORACLE_HOME/bin figure bien dans
votre PATH.
Q. Que reprsente le mot de passe du compte interne ? Quand jessaie de me
connecter en tant que compte interne dans le gestionnaire de serveur, il me
demande un mot de passe.
R. Vous tes probablement connect dans un compte qui nest pas membre du
groupe dba, consulter dans le fichier /etc/group, en tant que root.
Q. Le programme dinstallation Oracle choue et rclame un programme
manquant appel gmake. Pourquoi ?
R. Vrifiez si gmake est bien install sous /usr/bin. Sil est install, assurez-
vous que votre PATH comprend le rpertoire /usr/bin. Si gmake nexiste
pas, vous pouvez, en tant que root, crer un lien symbolique vers
make : ln s /usr/bin/make /usr/bin/gmake.
Dans ce chapitre
Installation
Besoins despace
Configuration
Autres outils
Ressources
Introduction
Informix, comme Oracle, est un produit de base de donnes puissant. Infor-
mix, Oracle et dautres bases de donnes professionnelles telles que Sybase et
DB2 de IBM, se concurrencent sur des plates-formes varies, mais elles
visent principalement la gestion des bases de donnes au niveau de lentre-
prise, o entrent en jeu de gros volumes, tant pour les transactions sur les
bases de donnes que pour la mmoire. Ces produits sont considrs comme
de srieux concurrents dans les projets de serveurs de base de donnes de
production, o lon rencontre certaines contraintes de charge propres lenvi-
ronnement des socits commerciales de taille moyenne grande.
Informix est lune des premires bases de donnes sur UNIX. Informix a t
dot du premier ISAM (Indexed Sequential Access Method) produit pour
UNIX, appel C-ISAM, encore disponible aujourdhui et que lon peut encore
trouver pour Linux. Tous les produits de base de donnes sur le march fonc-
tionnent avec une mthodologie ISAM, sans exception. Informix a beaucoup
inaugur dans le monde des bases de donnes, et peut maintenant concurren-
cer nombre de produits plus chers.
Tous les produits de base de donnes, dont beaucoup ne sont pas cits ici, se
heurtent une contrainte de conformit minimale aux standards ISO et SQL,
car ce sont des produits de base de donnes dentre de gamme. Ils se confor-
ment tous au point dentre minimum de compatibilit SQL de base ; en plus
des caractristiques dentre de gamme autorises par la spcification SQL,
ils sont aussi autoriss proposer des caractristiques de niveau avanc ou
optionnelles. Aucun diteur na implment toutes les spcifications SQL,
mais la plupart se conforment au minimum requis et choisissent dimplmen-
ter des caractristiques additionnelles quand ils ont lopportunit daugmenter
leur comptitivit. Pour plus dinformations sur le standard SQL, rechercher
sur le web. Les diteurs ajoutent aussi des caractristiques selon les besoins
des utilisateurs finals, ou quand la concurrence ajoute une caractristique,
apprcie des utilisateurs, ou dont ils ne peuvent simplement plus se passer.
Ce chapitre est consacr la manire dinstaller et de mettre en uvre un
moteur Informix dans lenvironnement dexploitation Linux. Laccent nest
pas mis seulement sur un moteur de base de donnes de niveau entreprise,
mais aussi sur un moteur adaptable la progression de Linux vers les plus
grands serveurs du march, surtout dans le march des systmes dexploita-
tion UNIX. Beaucoup de ce qui est abord ici sapplique aussi aux autres
versions UNIX de Informix Dynamic Server dans le reste du monde UNIX et,
un moindre degr, au monde NT. Dj, rassurez-vous, il ny a pas se
proccuper de comparaison avec NT : la plupart des moteurs dentreprise sont
proposs sur UNIX et NT et, dans certains cas, sur MVS (sur mainframes).
Les seuls ne pas se trouver sur UNIX sont les produits de base de donnes
de Microsoft, qui choisissent de promouvoir NT comme plate-forme talon.
Microsoft ne sest attaqu que depuis rcemment au march des bases de
donnes, sous la forme de produits de data warehousing et de transformation
de donnes, en complment de sa ligne de produits SQL Server. Sitt quune
plate-forme en architecture Intel x86 sera assez grande pour que NT la fasse
fonctionner aussi vite quune plate-forme UNIX ou autre, SQL Server aura sa
chance sur ce terrain. En attendant, vous remarquerez des diffrences sensi-
bles de performance entre UNIX et NT, et, bien sr, Linux. NT tend bien
fonctionner en utilisant Informix avec de petits groupes de travail, mais on
obtient de meilleurs ratios de performance avec Linux et UNIX.
On prfre dordinaire ce que lon connat dj. Si un dveloppeur a affaire
Informix en premier, il sera le plus souvent enclin donner la prfrence
Informix. Cest encore plus vrai quand on voit combien Informix est facile
grer, compar certains des autres produits. La raison en est sa simplicit :
une instance Oracle typique demande approximativement 600 Mo despace
disque, rien que pour le logiciel, sans parler de lespace supplmentaire
ncessaire aux bases de donnes. Une installation Oracle est bien plus
complique quInformix, non seulement du fait de lagencement du logiciel,
mais aussi de la configuration. Ouvrez le rpertoire du logiciel Oracle et vous
verrez la diffrence une fois que vous aurez install Informix.
Oracle demande beaucoup plus de temps installer et configurer quInfor-
mix, sans parler des performances, compares celles que lon obtient avec
Informix. Si Oracle est votre premier moteur, et Informix le second, vous
serez surpris de la simplicit de la mise en uvre. Par contre, si votre premier
moteur est Informix, et que vous essayez dinstaller le logiciel Oracle, vous
pourrez constater que cest une exprience riche denseignements.
Informix prend considrablement moins despace quOracle les outils
SDK de dveloppement du noyau et du moteur occupent moins de 150 Mo.
Cependant, cela peut varier selon les composants additionnels quun dve-
loppeur ajoute au rpertoire du logiciel Informix, connu habituellement dans
UNIX sous le nom de $INFORMIXDIR. Nous dcrirons en dtail, dans ce
chapitre, la variable denvironnement $INFORMIXDIR ainsi que tout ce dont
on a besoin pour mettre en uvre Informix, et le faire fonctionner rapidement
et de manire professionnelle.
En principe, une installation Informix peut tre termine en deux heures,
voire moins ; cependant, cela dpend un peu de la planification pralable.
Plus vous lavez planifie en amont, plus linstallation est rapide. Bien que les
moteurs Informix soient simples installer, prenez le temps de comprendre
les ramifications de lorganisation que vous mettez en place. Dites-vous bien
que cest vrai de nimporte quel logiciel ou autre produit de base de donnes.
Nous proposons ici un bon agencement de base sur lequel sappuyer, qui
fonctionnera pour la plupart des moteurs Informix la seule exception tant
le moteur standard, qui nest pas trait dans ce chapitre, car le moteur stan-
dard (SE, Standard Engine) ne tire pas vraiment profit du partage de la
mmoire partage, ni de beaucoup dautres caractristiques de Informix
Dynamic Server.
Le moteur standard est intressant dans les petits dploiements, quil sagisse
de sites ou de logiciels, o les contraintes oprationnelles exigent peu ou
aucune intervention humaine, ou bien quand les contraintes des donnes sont
trs faibles ou simples, ainsi que les caractristiques de la base de donnes.
SE fut le moteur de choix pour un grand nombre de marchs verticaux (VAR,
value-added resellers) qui y ont trouv un moteur simple, faible mainte-
nance et bas prix, adapt des applications UNIX varies. Mme si SE tait
laise dans des environnements peu coteux pendant presque toute la vie
dInformix, il nest pas question que son faible cot continue de tenir lieu de
critre unique. Il manque trop de choses SE pour en faire un choix judicieux
par rapport IDS dans le march actuel, sauf ne rechercher que les caract-
ristiques de base pour une base de donnes.
C-ISAM se situe encore en dessous ; cest le niveau le plus bas des produits
de base de donnes que propose Informix. C-ISAM est la base de la plupart
des produits de bases de donnes actuellement sur le march, y compris les
concurrents. Cependant, C-ISAM est extrmement limit et a une fentre
dutilisation troite, ce qui lexclut des options envisages dans la plupart des
situations. Garder lesprit que Informix a t la premire socit du march
des bases de donnes offrir un produit ISAM pour UNIX, puis quelle en est
venue offrir des produits ISAM plus sophistiqus avec son moteur standard,
qui permettait lutilisation du standard SQL pour accder la base de
donnes. C-ISAM est disponible sur Linux, et on peut en faire une copie pour
apprendre comment il fonctionne, et comment les autres produits de bases de
donnes lutilisent.
Informix Dynamic Server (IDS), appel lorigine Online Dynamic Server,
tire son nom de la manire dont il fonctionne. IDS effectue de lui-mme, de
manire dynamique, les ajustements ncessaires lors de son chargement, et
offre des options que lon peut changer sans avoir redmarrer le moteur. Il y
a, bien sr, des limites mais, pour lessentiel, ce moteur peut accepter une
charge importante et affiche encore des performances impressionnantes. IDS
est trs fiable et robuste, considrons-le comme le moteur de base, autant que
possible. limplmentation, il prsente peu prs la mme simplicit que
SE, et ne demande pas beaucoup plus de maintenance que ce que lon a connu
avec le moteur standard. IDS peut tre maintenu simplement, pour peu que
lon tienne compte du cycle doprations que ce moteur entrane.
IDS prsente, par rapport SE, deux avantages : des performances plus rapi-
des, mais aussi les types de donnes avancs. Vous trouverez que IDS ressem-
ble SE par beaucoup daspects, mais quil est beaucoup plus puissant et
obtient des performances bien meilleures que le moteur standard. Les gains
de performance, ainsi que les caractristiques avances, en font un choix
prfrable. Si vous tes dveloppeur et cherchez autre chose que les perfor-
mances, vous pouvez aussi tirer bnfice de la version IDS.2000, qui propose
les caractristiques objet-relationnel, non disponibles dans IDS 7.30. Installer
dabord IDS 7.30 titre dexercice pour acqurir une bonne connaissance du
moteur de base, puis migrer vers IDS.2000. Il y a des caractristiques suppl-
mentaires dans IDS.2000 dont vous naurez peut-tre jamais besoin mais,
dun autre ct, elles peuvent tre essentielles. Quelle que soit la vitesse, il
vaut mieux se familiariser dabord avec le plus simple des deux moteurs, puis
migrer vers le plus compliqu.
Pour une comparaison complte des produit SE, IDS et IDS.2000, rendez
visite au site web dInformix. En raison des limitations du SE, les sites les
plus srieux retiendront pour la plupart Dynamic Server comme le moteur
minimum parmi ceux qui sont offerts, voire tous. Ce nest que depuis peu que
le choix sest rvl dlicat, du fait que le cot dIDS a sensiblement chut, ce
qui est d en particulier lmergence de Linux, et la concurrence entre
SQL Server et dautres produits orients petits serveurs. Linux a t confront
cette situation depuis quelques mois, car le noyau sest enrichi au point que
Linux peut tre considr srieusement comme un serveur de base de
donnes. Les avantages de Linux sur NT continuent tre vidents en eux-
mmes ; cependant, mme avec Linux, on doit prendre soin de configurer le
serveur correctement pour obtenir des performances optimales. Un bon admi-
nistrateur se consacrera aux travaux prparatoires avant linstallation, et non
aprs.
Le moteur le plus rcent et le plus important chez Informix nest pas IDS
7.30, mais plutt IDS.2000, un moteur complet, objet-relationnel, qui va
jusqu offrir des possibilits daide la dcision, destins des sites qui
ncessitent des produits orients objet avancs de gestion de bases de donnes
relationnelle (SGBDR) compatibles SQL, que IDS ne peut fournir. Nous ne
traiterons pas dIDS.2000 dans ce chapitre, mais gardez lesprit que, pour
lessentiel, IDS.2000 fonctionne de la mme manire que IDS 7.30. Ce que
vous apprenez en IDS 7.30 pourra tre appliqu directement IDS.2000, tout
simplement parce que le moteur est le mme la base et que la technologie
sophistique objet-relationnelle y a t incorpore. Aussi trivial que cela
paraisse, il faut comprendre que, bien que ces deux moteurs soient sensible-
ment diffrents, leur comportement de base est en grande partie le mme. Ce
nest que lorsquon utilise les caractristiques du systme de gestion de base
de donnes objet-relationnelle (ORDBMS) que les moteurs se comportent
diffremment.
autres formats. Dans notre exemple dinstallation, nous travaillerons avec des
fichiers zip et RPM. Loutil de compression Linux unzip sera ncessaire
sassurer davoir install cet outil ou quelque autre outil qui comprenne le
format de fichier compress zip ne pas confondre avec le format gzip.
Ltape finale, rendre le logiciel oprationnel, dpend beaucoup du type de
matriel dont vous disposez, et de celui que vous voulez utiliser avec le logi-
ciel. Dans la plupart des cas, nous concevons une base de donnes comme le
principal occupant dune plate-forme base de serveur.
De nouveau, nous avons choisi de nous concentrer sur les serveurs Linux, lors
de notre installation. Les serveurs Linux sont parmi les plus courants, du fait
de la souplesse de cet environnement dexploitation, sans parler du cot
extrmement bas de lajout de ressources, dans les petits comme dans les
grands environnements. Une fraction, de jour en jour plus large, de la popula-
tion informatique se tourne vers Linux, et il se peut que cela reprsente une
bonne carte jouer, lavenir.
Installation
Nous dbattrons de linstallation en trois parties : acquisition et mise en place
du logiciel, installation et marquage, et initialisation du disque et oprations
sur le serveur.
Important. Les tapes suivantes seront menes sous le login root. Si vous navez pas
accs root, arrtez-vous et demandez la permission dutiliser le login root pour la
dure de linstallation. Une fois que le logiciel a t install, vous aurez encore besoin
du login root pour initialiser les rpertoires de donnes. Nutilisez pas un autre login
sauf si la documentation dinstallation Informix le prconise, ou vous signale quun login
non root est admis. Aprs linstallation et la configuration, vous pouvez vous passer du
login root, et utiliser le login informix pour ladministration courante.
Figure 41
Vue du fichier zip tlcharger, dans Karchiver
Une fois tous les fichiers extraits dans un rpertoire, on peut aussi voir le
contenu du fichier RPM, avec kpackage ; sassurer quil est install aussi sur
la machine. kpackage ne fait pas encore partie des paquetages dinstallation
de KDE standard, mais figure dans les versions alpha/bta des programmes
KDE (figure 4.2).
Notez la figure 4.2 que ces fichiers sont extraits directement dans le rper-
toire /root. Assurez-vous que vous avez assez de place pour conserver les
fichiers extraits. Les deux fichiers RPM extraire contiennent approximative-
ment 60 Mo de logiciel. Ils peuvent tre placs nimporte o pour linstant,
Figure 42
Vue des rpertoires crs aprs extraction des fichiers et dun RPM du client SDK
parce quils ne sont utiliss que pendant linstallation ; aprs quoi, on peut les
supprimer ou les ranger ailleurs, pour librer un peu despace sur le disque.
On peut aussi les graver sur un CD-ROM.
Pour dcompresser le contenu du fichier RPM, utiliser soit kpackage, soit les
commandes rpm stipules dans les documents dinstallation dInformix. ce
point, garder lesprit que si lon utilise kpackage pour installer le logiciel, il
ne pourra linstaller que dans /opt/informix : il faudra un rpertoire /opt pour
ce faire, sinon le programme kpackage chouera. Le mieux est dutiliser la
commande rpm sur la ligne de commande, parce que lon peut indiquer expli-
citement o mettre le logiciel, en sappuyant sur la variable $INFORMIXDIR.
Maintenant, il est grand temps dindiquer, dans cette variable denvironne-
ment, lendroit o mettre le logiciel Informix. Linitialiser dans le login root,
dans lequel on aura dj cr un id informix et un groupe informix. Utiliser la
commande dadministration du systme adquate pour crer ce nouvel id
utilisateur, et suivre la mthode recommande par la distribution Linux pour
ajouter les utilisateurs et les groupes. La plupart des distributions rcentes
proposent un programme pour cela, et il vaut mieux sen servir, plutt que
dditer les fichiers /etc/passwd et /etc/group, mme si ctait la manire de
procder des premires distributions de Linux et dUNIX.
Il est recommand de suivre les conseils dInformix, et dutiliser les comman-
des rpm en ligne pour faciliter linstallation ; cela facilite la besogne sil se
produit un incident. Les versions rcentes dInformix proposent une assis-
tance technique limite quand on achte le logiciel, et il ny a aucune raison
de ne pas suivre les instructions dinstallation qui sont fournies.
On peut consulter le site http://www.informix.com/informix/resource/install/
linux/0730x/01.fm.html, une documentation en ligne qui donne les instruc-
tions, tape par tape, pour installer le logiciel. Penser, cette tape de
linstallation, que nous venons seulement de trouver un lieu o installer le
Figure 43
Dmarrer linstallation du client SDK (Iconnect)
Installation et marquage
Crer un rpertoire /opt/informix/ids si vous avez un rpertoire /opt. Sinon,
crer un rpertoire informix sous le rpertoire o lon veut installer le logiciel.
Dhabitude, je cre un rpertoire /opt/informix/ids sous celui-ci, de sorte que,
sil faut installer dautres moteurs, on puisse crer des rpertoires spars
pour ces autres logiciels et conserver celui qui est dj install. Il faut donc
avoir un rpertoire /opt/informix/ids pour faire linstallation. On peut lappe-
ler comme on veut, condition dindiquer le nom du rpertoire dans la varia-
ble INFORMIXDIR. Dans notre cas, cela donne :
$ cd /root/ids730uc101_linux/connect210uc3
$ rpm iv prefix $INFORMIXDIR *.rpm
$ cd $INFORMIXDIR
$. /installconn
Quand le script dinstallation du client SDK est termin (figure 4.3), excuter
les mmes oprations pour installer le serveur :
$ cd /root/ids730uc101_linux/ids730uc10
$ rpm iv prefix $INFORMIXDIR *.rpm
$ cd $INFORMIXDIR
$. /installserver
Figure 44
Achvement avec succs de linstallation dun serveur IDS
On peut trouver un script qui supprime certains fichiers, mais il faut savoir
que la rinstallation choue, dans ce cas, si ces fichiers nexistent pas. Il
faudra extraire nouveau le logiciel, puis refaire linstallation de base partir
du rpertoire temporaire.
Un dernier point sur cette partie de linstallation : nenlevez pas le fichier tar
de iconnect tant que vous ntes pas certain de ne plus devoir le rinstaller. Il
faut esprer que le programme dinstallation du SDK ne cherche pas spciale-
ment le fichier tar dans ce rpertoire prcis, car cela demande deux fois plus
despace uniquement pour installer le SDK. lavenir, Informix permettra
de mettre ailleurs sur le systme les fichiers tar et les scripts dinstallation, en
vue des rinstallations, ce qui rduira lallocation despace pour le logiciel.
$ cd /opt/informix/links
$ ln s /dev/rdisk1 datadbs01
Figure 45
Exemple de listing du rpertoire de fichiers cooked dbspaces dont se sert le logiciel Informix pour
ranger les donnes
rent les diffrences entre disques bruts et fichiers cooked sur Linux. Beaucoup
de sites x86, en version NT de Informix Dynamic Server, se servent exclusi-
vement de fichiers cooked, simplement parce que les disques bruts sur NT
noffrent pas des gains de performance suffisants pour compenser les risques
les utiliser. Le Guide de ladministrateur tudie cette question en dtail.
Les fichiers cooked sont plus faciles grer dans la plupart des situations ; il
est conseill de les utiliser dans les environnements o lon veut une adminis-
tration simple et o lon nenvisage pas une charge extrmement lourde sur le
systme. Si lon a vraiment besoin de performances accrues, on aura la
plupart du temps intrt migrer vers une installation de disques bruts sur
UNIX. Tant que les disques bruts ne sont pas supports sur Linux, utiliser les
fichiers cooked.
Si vous crez cet ensemble minimal de dbspaces, vous aurez une installation
minimale qui peut convenir la plupart de vos besoins, dans le cadre de
linitiation au fonctionnement du moteur IDS. Il vous permettra aussi des
extensions faciles, en cas de besoin.
Disques et rpertoires
Voici la description du contenu des rpertoires /opt/informix/ids7.30 et
/opt/data :
Besoins despace
Combien despace faut-il rserver ? On peut prendre un disque de 2 Go et
allouer lespace comme suit :
pour les espaces oprationnels :
50 Mo pour les rootdbs ;
50 Mo pour le physdbs ;
100 Mo pour logsdbs ;
300 Mo pour tempdbs ;
soit 500 Mo au total ;
pour les espaces de donnes :
100 Mo pour dbs_dbs il contient seulement les entres de base de
donnes et ne sert pas pour les tables ;
250 Mo pour datadbs01 il peut tre plus petit si vous ne lutilisez
que pour la formation ; il contiendra des tables ;
250 Mo pour indexdbs01 l encore, il peut tre plus petit pour la
formation ; il ne contiendra que des index ;
soit 600 Mo au total.
Si vous avez rserv un disque de 2 Go, par exemple, vous avez maintenant
allou un total de 1 100 Mo pour dmarrer et il reste encore de lespace pour
des besoins futurs. Ce nest quun point de dpart, et pas ncessairement la
panace pour tous les systmes. Il sagit aussi doptions qui prservent les
ressources, sans gaspillage despace pour chaque dbspace. Les seules options
de ressources vraiment obligatoires sont celles de rootdbs et de physdbs, mais
mme celles-ci sont arbitraires : aprs avoir correctement configur le
systme, vous trouverez les tailles adaptes votre site. Dmarrer avec celles-
ci, et les changer plus tard si besoin est. Lespace des rootdbs ne servira plus
gure dsormais, aussi il est inutile de lagrandir au-del de 50 Mo ; dans la
plupart des cas, 20 Mo sont mme trop. Je nalloue 50 Mo que par prcaution.
/work est un systme de fichier mont la demande pour lespace de travail.
Rserver au moins 1 000 Mo pour ce disque. Cest un disque Linux qui sert
prparer les fichiers de chargement et grer les donnes exportes ou impor-
tes dans la base de donnes. Il est toujours utile davoir un espace de travail
sur le systme, spcifique de diffrents projets de base de donnes. Sous ce
rpertoire, vous pouvez crer des rpertoires de projet ou des rpertoires indi-
viduels, votre convenance.
Cela nest pas la seule raison dutiliser des lecteurs SCSI ; la performance en
est une autre. Malgr les progrs des lecteurs IDE, la plupart des sites conti-
nuent configurer des lecteurs SCSI et leur donner la prfrence. Si vous
avez dj configur votre lecteur, rservez un volume despace important
pour le logiciel et les donnes. Vous tes prt installer Informix.
Configuration
Maintenant que nous avons vu comment allouer lespace, nous allons confi-
gurer le serveur pour sa toute premire opration en ligne.
Comme indiqu au dbut de ce chapitre, il y a trois variables denvironne-
ment initialiser. Nous pouvons maintenant travailler avec la seconde varia-
ble, INFORMIXSERVER, et la troisime, ONCONFIG.
Dans le cadre de ce chapitre, nous nous intressons seulement la mise en
uvre du serveur, et non aux considrations sur les performances, qui pour-
ront tre abordes lors dun processus dapprentissage, quil sagisse des
essais ou des erreurs, laide de la documentation oprationnelle dInformix.
$INFORMIXDIR/etc/$ONCONFIG
Aller dans le rpertoire $INFORMIXDIR, et parcourir larbre des rpertoires.
RQWLQIRUPL[,'6
_BBDDRGLU
_BBELQ
_BBGEVVRGLU
_BBGHPR
_BBGEDFFHVV
_BBHWF
_BBIRUPV
_BBJOV
_BBFP
_BBFY
_BBOF
_BBFVBF]
_BBGDBGN
_BBGHBDW
_BBGHBFK
_BBGHBGH
_BBHQBDX
_BBHQBJE
_BBHQBXV
_BBHVBHV
_BBILBIL
_BBIUBEH
_BBIUBFD
_BBIUBFK
_BBIUBIU
_BBLVBLV
_BBLWBLW
_BBMDBMS
_BBNRBNU
_BBQOBEH
_BBQOBQO
_BBQRBQR
_BBRV
_BBSOBSO
_BBSWBEU
_BBSWBSW
_BBUXBUX
_BBVNBVN
_BBVYBVH
_BBWKBWK
_BB]KBFQ
_BB]KBWZ
_BBLQFO
_BBHVTO
_BBKSO
_BBOLE
_BBFOL
_BBGPL
_BBHVTO
_BBPVJ
_BBHQBXV
_BB
_BBUHOHDVH
_BBHQBXV
_BB
$ cd $INFORMIXDIR/etc
$ cp onconfig.std rebel_shm.cfg
Dans notre exemple, il sappelle rebel_shm.cfg. Le _shm la fin est une sorte
de convention : on peut avoir plusieurs instances diffrentes dInformix qui
$ vi rebel_shm.cfg
,1)250,;62)7:$5(,1&
7LWOHRQFRQILJVWG
'HVFULSWLRQ,QIRUPL['\QDPLF6HUYHU&RQILJXUDWLRQ3DUDPHWHUV
5RRW'EVSDFH&RQILJXUDWLRQ
52271$0(URRWGEV 5RRWGEVSDFHQDPH
52273$7+GHYRQOLQHBURRW 3DWK IRU GHYLFH FRQWDLQLQJ URRW GEVSDFH
52272))6(7 2IIVHW RI URRWGEVSDFH LQWR GHYLFH .E\WHV
52276,=( 6L]HRIURRWGEVSDFH.E\WHV
'LVN0LUURULQJ&RQILJXUDWLRQ3DUDPHWHUV
3K\VLFDO/RJ&RQILJXUDWLRQ
/RJLFDO/RJ&RQILJXUDWLRQ
/2*),/(6 1XPEHURIORJLFDOORJILOHV
/2*6,=( /RJLFDOORJVL]H.E\WHV
'LDJQRVWLFV
06*3$7+XVULQIRUPL[RQOLQHORJ6\VWHPPHVVDJHORJILOHSDWK
&2162/(GHYFRQVROH6\VWHPFRQVROHPHVVDJHSDWK
$/$50352*5$0XVULQIRUPL[HWFORJBIXOOVK$ODUPSURJUDPSDWK
6<6$/$50352*5$0XVULQIRUPL[HWFHYLGHQFHVK
6\VWHP$ODUPSURJUDPSDWK
7%/63$&(B67$76
6\VWHP$UFKLYH7DSH'HYLFH
7$3('(9GHYWDSHGHY 7DSHGHYLFHSDWK
7$3(%/. 7DSHEORFNVL]H.E\WHV
7$3(6,=( 0D[LPXP DPRXQW RI GDWD WR SXW RQ WDSH .E\WHV
/RJ$UFKLYH7DSH'HYLFH
/7$3('(9GHYWDSHGHY /RJWDSHGHYLFHSDWK
/7$3(%/. /RJWDSHEORFNVL]H.E\WHV
/7$3(6,=( 0D[ DPRXQW RI GDWD WR SXW RQ ORJ WDSH .E\WHV
2SWLFDO
6\VWHP&RQILJXUDWLRQ
6(59(5180 8QLTXHLGFRUUHVSRQGLQJWRD
#'\QDPLF6HUYHULQVWDQFH
'%6(59(51$0( 1DPHRIGHIDXOWGDWDEDVHVHUYHU
'%6(59(5$/,$6(6 /LVWRIDOWHUQDWHGEVHUYHUQDPHV
1(77<3( &RQILJXUHSROOWKUHDGVIRUQHWW\SH
'($'/2&.B7,0(287 0D[ WLPH WR ZDLW RI ORFN LQ GLVWULEXWHGHQY
5(6,'(17 )RUFHGUHVLGHQF\IODJ<HV 1R
08/7,352&(6625 IRUVLQJOHSURFHVVRU
#IRUPXOWLSURFHVVRU
180&38936 1XPEHURIXVHUFSXYSV
6,1*/(B&38B93 ,IQRQ]HUROLPLWQXPEHURIFSXYSVWRRQH
12$*( 3URFHVVDJLQJ
$))B6352& $IILQLW\VWDUWSURFHVVRU
$))B1352&6 $IILQLW\QXPEHURISURFHVVRUV
6KDUHG0HPRU\3DUDPHWHUV
/2&.6 0D[LPXPQXPEHURIORFNV
%8))(56 0D[LPXPQXPEHURIVKDUHGEXIIHUV
180$,2936 1XPEHURI,2YSV
3+<6%8)) 3K\VLFDOORJEXIIHUVL]H.E\WHV
/2*%8)) /RJLFDOORJEXIIHUVL]H.E\WHV
/2*60$; 0D[LPXPQXPEHURIORJLFDOORJILOHV
&/($1(56 1XPEHURIEXIIHUFOHDQHUSURFHVVHV
6+0%$6([/ 6KDUHGPHPRU\EDVHDGGUHVV
6+09,576,=( LQLWLDOYLUWXDOVKDUHGPHPRU\VHJPHQWVL]H
6+0$'' 6L]H RI QHZ VKDUHG PHPRU\ VHJPHQWV .E\WHV
6+0727$/ 7RWDOVKDUHGPHPRU\.E\WHV !XQOLPLWHG
&.37,179/ &KHFNSRLQWLQWHUYDOLQVHF
/586 1XPEHURI/58TXHXHV
/58B0$;B',57< /58SHUFHQWGLUW\EHJLQFOHDQLQJOLPLW
/58B0,1B',57< /58SHUFHQWGLUW\HQGFOHDQLQJOLPLW
/7;+:0 /RQJ WUDQVDFWLRQ KLJK ZDWHU PDUN SHUFHQWDJH
/7;(+:0 /RQJ WUDQVDFWLRQ KLJK ZDWHU PDUN H[FOXVLYH
7;7,0(287 7UDQVDFWLRQWLPHRXWLQVHF
67$&.6,=( 6WDFNVL]H.E\WHV
6\VWHP3DJH6L]H
%8))6,=('\QDPLF 6HUYHU QR ORQJHU VXSSRUWV WKLV FRQILJXUDWLRQ
SDUDPHWHU7R GHWHUPLQH WKH SDJH VL]H XVHG E\ '\QDPLF 6HUYHU RQ \RXU
SODWIRUPVHHWKHODVWOLQHRIRXWSXWIURPWKHFRPPDQG
RQVWDWE
5HFRYHU\9DULDEOHV
2))B5(&95<B7+5($'61XPEHURISDUDOOHOZRUNHUWKUHDGV
GXULQJIDVWUHFRYHU\RUDQRIIOLQHUHVWRUH
21B5(&95<B7+5($'61XPEHURISDUDOOHOZRUNHUWKUHDGV
GXULQJDQRQOLQHUHVWRUH
2))B5(&95<B7+5($'6 'HIDXOWQXPEHURIRIIOLQHZRUNHUWKUHDGV
21B5(&95<B7+5($'6 'HIDXOWQXPEHURIRQOLQHZRUNHUWKUHDGV
'DWD5HSOLFDWLRQ9DULDEOHV
'5$872PDQXDOUHWDLQW\SHUHYHUVHW\SH
'5$872 '5DXWRPDWLFVZLWFKRYHU
'5,17(59$/ '5 PD[ WLPH EHWZHHQ '5 EXIIHU IOXVKHV
LQVHF
'57,0(287 '5QHWZRUNWLPHRXWLQVHF
'5/267)281'XVULQIRUPL[HWFGUORVWIRXQG'5ORVWIRXQGILOHSDWK
&'59DULDEOHV
&'5B/2*%8))(56 VL]HRIORJUHDGLQJEXIIHUSRRO.E\WHV
&'5B(9$/7+5($'6 HYDOXDWRUWKUHDGVSHUFSXYSDGGLWLRQDO
&'5B'6/2&.:$,7 '6ORFNZDLWWLPHRXWVHFRQGV
&'5B48(8(0(0 0D[LPXP DPRXQW RI PHPRU\ IRU DQ\ &'5 TXHXH
.E\WHV
%DFNXS5HVWRUHYDULDEOHV
%$5B$&7B/2*WPSEDUBDFWORJ
%$5B0$;B%$&.83
%$5B5(75<
%$5B1%B;3257B&2817
%$5B;)(5B%8)B6,=(
,QIRUPL[6WRUDJH0DQDJHUYDULDEOHV
,60B'$7$B322/,60'DWD ,I WKH GDWD SRRO QDPH LV FKDQJHG EH VXUH WR
XSGDWH ,1)250,;',5ELQRQEDU &KDQJH WR
#LVPBFDWDORJ FUHDWHBERRWVWUDS SRRO QHZ QDPH!
,60B/2*B322/,60/RJV
5HDG$KHDG9DULDEOHV
5$B3$*(6 1XPEHURISDJHVWRDWWHPSWWRUHDGDKHDG
5$B7+5(6+2/' 1XPEHURISDJHVOHIWEHIRUHQH[WJURXS
'%63$&(7(03
'\QDPLF6HUYHUHTXLYDOHQWRI'%7(03IRU6(7KLVLVWKHOLVWRI
GEVSDFHVWKDWWKH'\QDPLF6HUYHU64/(QJLQHZLOOXVHWRFUHDWHWHPS
WDEOHVHWF,IVSHFLILHGLWPXVWEHDFRORQVHSDUDWHGOLVWRI
GEVSDFHVWKDWH[LVWZKHQWKH'\QDPLF6HUYHUV\VWHPLVEURXJKW
RQOLQH,IQRWVSHFLILHGRULIDOOGEVSDFHVVSHFLILHGDUH
LQYDOLGYDULRXVDGKRFTXHULHVZLOOFUHDWHWHPSRUDU\ILOHVLQ
WPSLQVWHDG
'%63$&(7(03 'HIDXOWWHPSGEVSDFHV
'803
7KHIROORZLQJSDUDPHWHUVFRQWUROWKHW\SHRIGLDJQRVWLFVLQIRUPDWLRQ
ZKLFKLVSUHVHUYHGZKHQDQXQDQWLFLSDWHGHUURUFRQGLWLRQDVVHUWLRQ
IDLOXUHRFFXUVGXULQJ'\QDPLF6HUYHURSHUDWLRQV
)RU'8036+0(0'803*&25(DQG'803&25(PHDQV<HVPHDQV1R
'803',5WPS 3UHVHUYHGLDJQRVWLFVLQWKLVGLUHFWRU\
'8036+0(0 'XPSDFRS\RIVKDUHGPHPRU\
'803*&25( 'XPSDFRUHLPDJHXVLQJ
JFRUH
'803&25( 'XPSDFRUHLPDJH
# :DUQLQJWKLVDERUWV'\QDPLF6HUYHU
'803&17 1XPEHURIVKDUHGPHPRU\RUJFRUHGXPSVIRU
DVLQJOHXVHU
VVHVVLRQ
),//)$&725 )LOOIDFWRUIRUEXLOGLQJLQGH[HV
PHWKRGIRU'\QDPLF6HUYHUWRXVHZKHQ
# GHWHUPLQLQJFXUUHQWWLPH
86(267,0( XVHLQWHUQDOWLPHIDVW
# JHWWLPHIURP26VORZ
3DUDOOHO'DWDEDVH4XHULHVSGT
0$;B3'435,25,7< 0D[LPXPDOORZHGSGTSULRULW\
'6B0$;B48(5,(6 0D[LPXPQXPEHURIGHFLVLRQVXSSRUWTXHULHV
'6B727$/B0(025< 'HFLVLRQVXSSRUWPHPRU\.E\WHV
'6B0$;B6&$16 0D[LPXPQXPEHURIGHFLVLRQVXSSRUWVFDQV
'$7$6.,3 /LVWRIGEVSDFHVWRVNLS
237&203,1'
!1HVWHGORRSMRLQVZLOOEHSUHIHUUHGZKHUH
SRVVLEOHRYHUVRUWPHUJHMRLQVDQGKDVKMRLQV
!,IWKHWUDQVDFWLRQLVRODWLRQPRGHLVQRW
UHSHDWDEOHUHDGRSWLPL]HUEHKDYHVDVLQ
EHORZ2WKHUZLVHLWEHKDYHVDVLQDERYH
!8VHFRVWVUHJDUGOHVVRIWKHWUDQVDFWLRQLVRODWLRQ
PRGH1HVWHGORRSMRLQVDUHQRWQHFHVVDULO\
SUHIHUUHG2SWLPL]HUEDVHVLWVGHFLVLRQSXUHO\
RQFRVWV
237&203,1' 7RKLQWWKHRSWLPL]HU
21'%63$&('2:1
'EVSDFHGRZQRSWLRQ &217,18( $%257 :$,7
/%8B35(6(59( 3UHVHUYHODVWORJIRUORJEDFNXS
23&$&+(0$; 0D[LPXPRSWLFDOFDFKHVL]H.E\WHV
+(7(52B&200,7*DWHZD\SDUWLFLSDWLRQLQGLVWULEXWHGWUDQVDFWLRQV
!+HWHURJHQHRXV&RPPLWLVHQDEOHG
RUDQ\RWKHUYDOXH !+HWHURJHQHRXV&RPPLWLVGLVDEOHG
+(7(52B&200,7
6WDWXVRIUHVWDUWDEOHUHVWRUH
5(67$57$%/(B5(6725(2))
5RRW'EVSDFH&RQILJXUDWLRQavant
52271$0(URRWGEV 5RRWGEVSDFHQDPH
52273$7+GHYRQOLQHBURRW 3DWKIRUGHYLFHFRQWDLQLQJURRWGEVSDFH
52272))6(7 2IIVHW RI URRW GEVSDFH LQWR GHYLFH .E\WHV
52276,=( 6L]HRIURRWGEVSDFH.E\WHV
5RRW'EVSDFH&RQILJXUDWLRQaprs
52271$0(URRWGEV 5RRWGEVSDFHQDPH
52273$7+/opt/data/rootdbs 3DWKIRUGHYLFHFRQWDLQLQJURRWGEVSDFH
52272))6(7 2IIVHW RI URRWGEVSDFH LQWR GHYLFH .E\WHV
52276,=( 6L]HRIURRWGEVSDFH.E\WHV
Notre systme se servira dun fichier cooked pour les rootdbs ; nous avons
mis jour cette variable. Rappelons que la taille de rootdbs peut tre fixe
50 Mo au lieu de 20 Mo. On peut larrondir 50 000 Ko, ce qui est presque la
mme chose ; modifiez la taille maintenant si vous le souhaitez (ligne ROOT-
SIZE), sinon laissez la valeur par dfaut de 20 000 Ko. Ce nest quune
prcaution. Personnellement, je donne un peu plus despace aux rootdbs pour
des raisons de scurit ; se souvenir quaprs configuration, il aura un usage
rel trs faible, sauf pour le moteur. Dans certains cas, le choix dun rootdbs
lgrement plus grand est judicieux : par exemple, si on laisse les logs logi-
ques ou le log physique dans les rootdbs.
Important. Si lon envisage de crer plus dune instance sur le serveur, renommer
rootdbs en rootdbs01, physdbs en physdbs01, logsdbs en logsdbs01 et tempdbs en
tempdbs01 si lon doit se rfrer ces dbspaces dans linstallation. De cette manire,
les noms sont cohrents avec les instances et sont plus faciles grer. Faire les chan-
gements appropris dans le fichier $ONCONFIG de ce serveur avant dexcuter oninit
i. Ne pas changer les options de PHYSDBS avant le premier oninit, quand on
excute oniniti. Faire ce changement aprs le dmarrage du moteur.
Quand on installe le moteur, le log physique et les logs logiques sont situs
dans les rootdbs ; nous allons les transfrer dans leurs propres espaces aprs
linstallation. De ce fait, les rootdbs seront trs peu utiliss et il vaut mieux ne
pas leur donner une taille importante qui serait un gaspillage despace disque.
La seule raison de changer cela maintenant est que lon ne peut pas le faire
plus tard, sauf si lon rinitialise linstance. Il faut donc dcider maintenant si
lon change la taille, ou si lon vivra toujours avec la taille de 20 Mo par
dfaut. Si on laisse 20 000 Ko, sassurer de crer un logsdbs et un physdbs
pour les logs logiques et le log physique, en suivant les instructions, donnes
plus loin dans ce chapitre, pour les transfrer dans leurs propres dbspaces.
Aprs dplacement des logs, il y aura approximativement 16 Mo inutiliss sur
les 20 Mo. Ce transfert est conseill, titre de pratique standard, qui donne,
plus tard, une souplesse totale quand il faut ajuster le nombre et la taille des
logs logiques ou la taille du log physique. Nous excuterons cette tape la
fin, quand le moteur sera en fonctionnement.
Poursuivons la configuration de notre serveur. Nous pourrons avoir ou non un
systme de bande pour la sauvegarde mais, pour linstant, dsactivons la
sauvegarde sur bande, jusqu ce que le serveur soit totalement oprationnel.
6\VWHP$UFKLYH7DSH'HYLFHavant
7$3('(9GHYWDSHGHY 7DSHGHYLFHSDWK
7$3(%/. 7DSHEORFNVL]H.E\WHV
7$3(6,=( 0D[LPXP DPRXQW RI GDWD WR SXW RQ WDSH .E\WHV
/RJ$UFKLYH7DSH'HYLFH
/7$3('(9GHYWDSHGHY /RJWDSHGHYLFHSDWK
/7$3(%/. /RJWDSHEORFNVL]H.E\WHV
/7$3(6,=( 0D[ DPRXQW RI GDWD WR SXW RQ ORJ WDSH .E\WHV
6\VWHP$UFKLYH7DSH'HYLFHaprs
7$3('(9GHYWDSHGHY 7DSHGHYLFHSDWK
7$3('(9/dev/null 7DSHGHYLFHSDWK
/7$3('(9GHYWDSHGHY /RJWDSHGHYLFHSDWK
/7$3('(9/dev/null /RJWDSHGHYLFHSDWK
/7$3(%/. /RJWDSHEORFNVL]H.E\WHV
/7$3(6,=( 0D[ DPRXQW RI GDWD WR SXW RQ ORJ WDSH .E\WHV
Les valeurs dorigine sont laisses en commentaires de sorte quil est facile de
revenir en arrire plus tard et de les changer, et quelles servent de rfrence.
Il est toujours bon de mettre les valeurs non retenues en commentaire
copier et changer la copie plutt que changer lentre dorigine. De cette
manire, on garde trace des changements.
Le jeu dunits de bande reste /dev/null, ce qui autorise le serveur IDS
fonctionner sans se soucier de lendroit o ira la sauvegarde pour linstant.
Plus tard, nous changerons cela pour une sauvegarde sur bande si nous en
avons une, ou nous le laisserons tel quel jusqu ce que nous dcidions
davoir une relle sauvegarde sur bande. /dev/null prsente un double intrt :
dune part, signifier au serveur IDS dignorer le priphrique de sauvegarde,
et dautre part, faire le ncessaire pour que le moteur soit au courant dven-
tuelles sauvegardes, notamment celle des logs logiques. Nous verrons les logs
logiques plus tard ; pour linstant, proccupons-nous seulement de dmarrer
le serveur.
Passons maintenant la section des diagnostics, et faisons l aussi quelques
changements.
'LDJQRVWLFVavant
06*3$7+XVULQIRUPL[RQOLQHORJ
6\VWHPPHVVDJHORJILOHSDWK
&2162/(GHYFRQVROH 6\VWHPFRQVROHPHVVDJHSDWK
$/$50352*5$0XVULQIRUPL[HWFORJBIXOOVK
$ODUPSURJUDPSDWK
6<6$/$50352*5$0XVULQIRUPL[HWFHYLGHQFHVK
6\VWHP$ODUPSURJUDPSDWK
7%/63$&(B67$76
Crer un rpertoire spar de logs pour les messages que le moteur mettra
sur son fonctionnement. Les valeurs par dfaut doivent tre modifies : crer
simplement un rpertoire maintenant, et autoriser le online.log et les messa-
ges de la console se placer dans ce nouveau rpertoire :
$ cd $INFORMIXDIR
$ mkdir logs
'LDJQRVWLFVaprs
06*3$7+RSWLQIRUPL[LGVORJVRQOLQHORJ
6\VWHPPHVVDJHORJILOHSDWK
&2162/(/dev/null
6\VWHPFRQVROHPHVVDJHSDWK
CONSOLE /opt/informix/ids/logs/console.log
# Pour notre installation initiale seulement !
$/$50352*5$0RSWLQIRUPL[LGVHWFORJBIXOOVK
$ODUPSURJUDPSDWK
6<6$/$50352*5$0RSWLQIRUPL[LGVHWFHYLGHQFHVK
6\VWHP$ODUPSURJUDPSDWK
7%/63$&(B67$76
6\VWHP&RQILJXUDWLRQavant
Cest ici que nous donnons un nom linstance du moteur et que nous lui
indiquons comment communiquer avec le rseau :
6\VWHP&RQILJXUDWLRQ aprs
Garder trace de ces noms ; remplacer la partie rebel par le nom dj fix.
Nous nous rfrerons ces options dans le fichier $INFORMIXDIR/etc/
sqlhosts, cest pourquoi il faut les retenir.
Il y a une mise jour faire concernant les logs logiques avant de dmarrer le
serveur, qui vite de relancer le moteur plus tard. Si lon a adopt le processus
de transfert des logs logiques en dehors des rootdbs, changer la valeur par
dfaut de LOGSMAX qui dmarre 6 en une valeur plus leve (mise en
gras dans lexemple de code qui suit). On trouve cette valeur dans la section
mmoire partage du fichier $INFORMIXDIR/etc/$ONCONFIG :
6KDUHG0HPRU\3DUDPHWHUV
/2&.6 0D[LPXPQXPEHURIORFNV
%8))(56 0D[LPXPQXPEHURIVKDUHGEXIIHUV
180$,2936 1XPEHURI,2YSV
3+<6%8)) 3K\VLFDOORJEXIIHUVL]H.E\WHV
/2*%8)) /RJLFDOORJEXIIHUVL]H.E\WHV
LOGSMAX 6 # Maximum number of logical log files
&/($1(56 1XPEHURIEXIIHUFOHDQHUSURFHVVHV
6+0%$6([/ 6KDUHGPHPRU\EDVHDGGUHVV
6+09,576,=( LQLWLDOYLUWXDOVKDUHGPHPRU\VHJPHQWVL]H
6+0$'' 6L]H RI QHZ VKDUHG PHPRU\ VHJPHQWV .E\WHV
6+0727$/ 7RWDOVKDUHGPHPRU\.E\WHV !XQOLPLWHG
&.37,179/ &KHFNSRLQWLQWHUYDOLQVHF
/586 1XPEHURI/58TXHXHV
/58B0$;B',57< /58SHUFHQWGLUW\EHJLQFOHDQLQJOLPLW
/58B0,1B',57< /58SHUFHQWGLUW\HQGFOHDQLQJOLPLW
/7;+:0 /RQJ WUDQVDFWLRQ KLJK ZDWHU PDUN SHUFHQWDJH
/7;(+:0 /RQJ WUDQVDFWLRQ KLJK ZDWHU PDUN H[FOXVLYH
7;7,0(287 7UDQVDFWLRQWLPHRXWLQVHF
67$&.6,=( 6WDFNVL]H.E\WHV
La changer en 50 :
LOGSMAX 50 0D[LPXPQXPEHURIORJLFDOORJILOHV
Cela permet dajouter plus tard des logs logiques sans avoir relancer le
moteur. Nous effectuerons cette manipulation au cours de linstallation, aussi
changeons cela ds maintenant.
Il est important de laisser toutes les autres options leur valeur par dfaut
jusqu ce que le moteur soit dmarr et fonctionne. En procdant aux ajuste-
ments par tapes, nous minimisons les risques dchec au dmarrage.
'DWD5HSOLFDWLRQ9DULDEOHVavant
'5$872PDQXDOUHWDLQW\SHUHYHUVHW\SH
'5$872 '5DXWRPDWLFVZLWFKRYHU
'5,17(59$/ '5 PD[ WLPH EHWZHHQ '5 EXIIHU IOXVKHV LQ VHF
'57,0(287 '5QHWZRUNWLPHRXWLQVHF
'5/267)281'XVULQIRUPL[HWFGUORVWIRXQG'5ORVWIRXQGILOHSDWK
'DWD5HSOLFDWLRQ9DULDEOHVaprs
'5$872PDQXDOUHWDLQW\SHUHYHUVHW\SH
'5$872 '5DXWRPDWLFVZLWFKRYHU
'5,17(59$/ '5 PD[ WLPH EHWZHHQ '5 EXIIHU IOXVKHV LQ VHF
'57,0(287 '5QHWZRUNWLPHRXWLQVHF
'5/267)281'/opt/informix/ids/etc/dr.lostfound '5ORVWIRXQGILOHSDWK
Passons ensuite la section de sauvegarde, un peu plus loin, pour une autre
modification :
%DFNXS5HVWRUHYDULDEOHV- avant
%$5B$&7B/2*WPSEDUBDFWORJ
%$5B0$;B%$&.83
%$5B5(75<
%$5B1%B;3257B&2817
%$5B;)(5B%8)B6,=(
%DFNXS5HVWRUHYDULDEOHV aprs
%$5B$&7B/2*/opt/informix/ids/logs/bar_act.log
%$5B0$;B%$&.83
%$5B5(75<
%$5B1%B;3257B&2817
%$5B;)(5B%8)B6,=(
$INFORMIXDIR/etc/sqlhosts
Ajouter ces entres au fichier $INFORMIXDIR/etc/sqlhosts :
/etc/services
Ajouter ces entres au fichier /etc/services de Linux (et non au fichier
$INFORMIXDIR/etc/services) :
Sassurer que ces numros de port peuvent tre utiliss ; sils ne peuvent
ltre, utiliser dautres numros de port disponibles. Tout nombre entre 0 et
65536 peut tre assign comme numro de port, y compris les nombres nga-
tifs. Beaucoup sont prassigns cest une sorte de convention dans le
monde UNIX aussi vitez dutiliser des numros de port dj assigns
dautres canaux Ethernet.
Une fois que vous avez modifi votre fichier /etc/services, vous devez red-
marrer votre rseau. Dans la plupart des cas, relancer inetd le forcera relire
le fichier /etc/services ; cependant, un redmarrage peut tre ncessaire dans
/opt/data/rootdbs
Pour utiliser un fichier cooked, il faut en crer un dans le rpertoire /opt/data
(figure 4.6) :
Le rootdbs doit maintenant avoir une taille de zro octet. Informix en est le
propritaire et il est dot de permissions utilisateur et groupe, mais daucune
permission publique. Il sera rw-rw---- quand on excute ls l sur le fichier des
rootdbs. Le rpertoire, dans lequel rsident les rootdbs, sera la proprit
dInformix et lid du groupe Informix.
Figure 46
Crer le rpertoire /opt/data, et crer les rootdbs pour linitialisation
$ oninit ivy
&KHFNLQJJURXSPHPEHUVKLSWRGHWHUPLQHVHUYHUUXQPRGHVXFFHHGHG
5HDGLQJFRQILJXUDWLRQILOH
RSWLQIRU
PL[LGVHWFUHEHOBVKPFIJ
VXFFHHGHG
&UHDWLQJ,1)250,;703LQI[GLUVVXFFHHGHG
&UHDWLQJLQIRVILOHRSWLQIRUPL[LGVHWFLQIRVUHEHOBVKP
RSWLQIRUPL[LGVHWFFRQIUHEHOBVKPVXFFHHGHG
:ULWLQJWRLQIRVILOHVXFFHHGHG
&KHFNLQJFRQILJSDUDPHWHUVVXFFHHGHG
$OORFDWLQJDQGDWWDFKLQJWRVKDUHGPHPRU\VXFFHHGHG
&UHDWLQJUHVLGHQWSRRONE\WHVVXFFHHGHG
&UHDWLQJEXIIHUSRRONE\WHVVXFFHHGHG
,QLWLDOL]LQJUKHDGVWUXFWXUHVXFFHHGHG
,QLWLDOL]LQJ$6)VXFFHHGHG
,QLWLDOL]LQJ'LFWLRQDU\&DFKHDQG6WRUHG3URFHGXUH&DFKHVXFFHHGHG
%ULQJLQJXS$'093VXFFHHGHG
&UHDWLQJ93FODVVHVVXFFHHGHG
2QOLQLQJDGGLWLRQDOFSXYSVVXFFHHGHG
2QOLQLQJ,2YSVVXFFHHGHG
)RUNLQJPDLQBORRSWKUHDGVXFFHHGHG
,QLWLDO]LQJ'5VWUXFWXUHVVXFFHHGHG
)RUNLQJ
LSFVKP
OLVWHQHUWKUHDGVVXFFHHGHG
)RUNLQJ
VRFWFS
OLVWHQHUWKUHDGVVXFFHHGHG
6WDUWLQJWUDFLQJVXFFHHGHG
,QLWLDOL]LQJIOXVKHUVVXFFHHGHG
,QLWLDOL]LQJORJFKHFNSRLQWLQIRUPDWLRQVXFFHHGHG
2SHQLQJSULPDU\FKXQNVVXFFHHGHG
2SHQLQJPLUURUFKXQNVVXFFHHGHG
,QLWLDOL]LQJGEVSDFHVVXFFHHGHG
9DOLGDWLQJFKXQNVVXFFHHGHG
&UHDWLQJGDWDEDVHSDUWLWLRQ
,QLWLDOL]H$V\QF/RJ)OXVKHUVXFFHHGHG
)RUNLQJEWUHHFOHDQHUVXFFHHGHG
UHEHOURRW,QLWLDOL]LQJ'%63$&(7(03OLVW
&KHFNLQJGDWDEDVHSDUWLWLRQLQGH[VXFFHHGHG
&KHFNLQJORFDWLRQRISK\VLFDOORJVXFFHHGHG
,QLWLDOL]LQJGDWDVNLSVWUXFWXUHVXFFHHGHG
&KHFNLQJIRUWHPSRUDU\WDEOHVWRGURS
)RUNLQJRQPRGHBPRQWKUHDGVXFFHHGHG
9HUERVHRXWSXWFRPSOHWH PRGH
rebel:root # onstat
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&2Q/LQH
8S.E\WHV
8VHUWKUHDGV
DGGUHVVIODJVVHVVLGXVHUWW\ZDLWWRXWORFNVQUHDGVQZULWHV
3'URRW
F3)URRW
F3URRW
H3%URRW
3'URRW
DFWLYHWRWDOPD[LPXPFRQFXUUHQW
3URILOH
GVNUHDGV SDJUHDGV EXIUHDGV FDFKHG GVNZULWV SDJZULWV EXIZULWV FDFKHG
Hourra ! Il fonctionne !
Si le moteur ne fonctionne pas, vous ne verrez pas ce dialogue ! Revenir en
arrire et sassurer que tout est initialis correctement. Recommencer linstal-
lation si ncessaire et tout vrifier pendant la procdure. Appeler ventuelle-
ment le support technique dInformix pour avoir plus daide sur linstallation.
rebel:root # cd /opt/data
rebel:root # ls -l
WRWDO
GUZ[UZ[U[LQIRUPL[LQIRUPL[-DQ
GUZ[U[U[URRWURRW-DQ
UZUZLQIRUPL[LQIRUPL[-DQURRWGEV
rebel:root #
rebel:root # onstat l
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&2Q/LQH
8S.E\WHV
3K\VLFDO/RJJLQJ
%XIIHUEXIXVHGEXIVL]HQXPSDJHVQXPZULWVSDJHVLR
3
SK\EHJLQSK\VL]HSK\SRVSK\XVHGXVHG
I
/RJLFDO/RJJLQJ
%XIIHUEXIXVHGEXIVL]HQXPUHFVQXPSDJHVQXPZULWVUHFVSDJHVSDJHVLR
/
6XEV\VWHPQXPUHFV/RJ6SDFHXVHG
2/'56$0
DGGUHVVQXPEHUIODJVXQLTLGEHJLQVL]HXVHGXVHG
8%
8%G
F8%
8%
8&/ E
E)
rebel:root # onstat m
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&2Q/LQH
8S.E\WHV
0HVVDJH/RJ)LOHRSWLQIRUPL[LGVORJVRQOLQHORJ
7XH-DQ
(YHQW DODUPV HQDEOHG
$/$50352*
RSWLQIRUPL[LGVHWFORJBIXOOVK
'5'5$872LV2II
5HTXHVWHG VKDUHG PHPRU\ VHJPHQW VL]H URXQGHG IURP .% WR .%
,QIRUPL[ '\QDPLF 6HUYHU 9HUVLRQ 8& 6RIWZDUH 6HULDO 1XPEHU
$$&$
,QIRUPL['\QDPLF6HUYHU,QLWLDOL]HG&RPSOHWH'LVN,QLWLDOL]HG
&KHFNSRLQW&RPSOHWHGGXUDWLRQZDVVHFRQGV
'DWDVNLSLVQRZ2))IRUDOOGEVSDFHV
2Q/LQH0RGH
%XLOGLQJ
V\VPDVWHU
GDWDEDVH
/RJLFDO/RJ&RPSOHWH
/RJLFDO/RJ&RPSOHWH
&KHFNSRLQW&RPSOHWHGGXUDWLRQZDVVHFRQGV
/RJLFDO/RJ&RPSOHWH
/RJLFDO/RJ&RPSOHWH
V\VPDVWHU
GDWDEDVHEXLOWVXFFHVVIXOO\
V\VXWLOV
GDWDEDVHEXLOWVXFFHVVIXOO\
&KHFNSRLQW&RPSOHWHGGXUDWLRQZDVVHFRQGV
&KHFNSRLQW&RPSOHWHG GXUDWLRQZDVVHFRQGV
ce stade, le moteur est en route, mais pas totalement prt fonctionner dans
un premier temps. Il faut encore initialiser certaines options supplmentaires
et des paramtres de configuration, tels que les espaces de base de donnes
dont nous avons parl auparavant dans ce chapitre. Le moteur est dj utilisa-
ble dans le cadre des 20 Mo des rootdbs, mais cest insuffisant pour une utili-
sation en tant que serveur de base de donnes. Parcourir les tapes suivantes,
qui rendront le systme oprationnel.
Nous avons galement parl du fichier console.log ; voici un exemple de
sortie quil conserve :
,QIRUPL['\QDPLF6HUYHU!!!/RJLFDO/RJ&RPSOHWH
,QIRUPL['\QDPLF6HUYHU!!!/RJLFDO/RJ&RPSOHWH
,QIRUPL['\QDPLF6HUYHU!!!/RJLFDO/RJ&RPSOHWH
,QIRUPL['\QDPLF6HUYHU!!!/RJLFDO/RJ&RPSOHWH
Comme vous pouvez le voir, ces sortes de messages nont pas vraiment
besoin dtre conservs dans un fichier de log, et la destination dans la ligne
CONSOLE de votre fichier ONCONFIG peut tre mise /dev/null. Cela vite
davoir grer la taille de ce fichier.
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&2Q/LQH
8S.E\WHV
6HJPHQW6XPPDU\
LG NH\ DGGU VL]H RYKG FODVV EONXVHG EONIUHH
5
GH 9
DH 0
7RWDO
VHJPHQWORFNHGLQPHPRU\
rebel:root # onstat d
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&2Q/LQH
8S.E\WHV
'EVSDFHV
DGGUHVV QXPEHUIODJV IFKXQN QFKXQNV IODJV RZQHU QDPH
HF 1 LQIRUPL[URRWGEV
DFWLYHPD[LPXP
&KXQNV
DGGUHVV FKNGEV RIIVHW VL]H IUHH ESDJHV IODJV SDWKQDPH
HI 32 RSWGDWDURRWGEV
DFWLYHPD[LPXP
Arrter le moteur
Maintenant que le moteur Informix fonctionne, comment peut-on larrter ?
Pour cela, utiliser la commande onmode ky :
$ onmode -ky
Configuration finale
Que faire ensuite ? Le moteur fonctionne, mais nest pas encore vraiment
oprationnel. La prochaine phase rendra le serveur utilisable, en particulier
pour les utilisateurs finaux.
Nous allons initialiser le moteur pour la configuration finale, celle qui devrait
convenir vos besoins partir dici. Assurez-vous que vous avez lespace
disque ncessaire pour les actions qui vont suivre. Si vous avez allou votre
espace disque comme indiqu au dbut de ce chapitre, vous tes maintenant
prt achever le travail.
Rappel
Revoyons rapidement quelques-uns des dbspaces dj cits.
Rootdbs : cr pendant linstallation et linitialisation de la base de
donnes.
Physdbs : contiendra le log physique ; doit tre transfr hors des rootdbs
dans son propre dbspace.
Logsdbs : contiendra les logs logiques ; doit tre transfr hors des
rootdbs dans leur propre dbspace.
Tempdbs : affect par dfaut aux rootdbs, pointe vers son propre dbspace,
et sert pour les tris, les requtes et les tables temporaires.
Dbs_dbs : contiendra des entres de base de donnes, mais aucune entre
de table.
Physdbs
Pour des questions de performance, on dplace le log physique dans son
propre dbspace. Le log physique est un buffer, ou cache, de lactivit de la
base de donnes, cest--dire des donnes vivantes qui doivent encore tre
incorpores la base de donnes. Le rimplanter dans son propre dbspace
permet daugmenter ou de diminuer sa taille selon les besoins, sans impact
sur les rootdbs, et daugmenter les performances.
Comme nous lavons vu, les rootdbs contiennent les cerveaux de chaque base
de donnes que vous crez sur un serveur, pour une instance. On peut avoir
des instances multiples dInformix ; chaque instance a ses propres rootdbs et
des dbspaces, spars de ceux des autres instances. Cest important car cela
minimise le risque li aux rootdbs. Rimplanter le log physique est lune des
premires tapes suivre pour sassurer que le rootdbs est son minimum
dactivit : garder trace de lendroit o se trouvent tous les lments des
bases de donnes et grer le moteur.
Sassurer que le moteur Informix fonctionne.
$ onstat
$ oninit v
Nutilisez pas loption i pour excuter oninit aprs avoir cr les rootdbs : ce
serait lquivalent du reformatage dun disque physique. Une seule
exception : oninit v, qui donne une trace dtaille du dmarrage du moteur.
Utiliser loption i sur un serveur de production na quune utilit : expdier
le travail.
Une fois que le moteur fonctionne, crer le premier physdbs avec des
commandes UNIX/Linux, et non avec des commandes Informix, comme on
la fait pour les rootdbs.
$ cd /opt/data
$ >physdbs
$ chown informix:informix physdbs
$ chmod 660 physdbs
rebel:root # onmode s
7KLVZLOOSHUIRUPD*5$&()8/6+87'2:1
'R\RXZLVKWRFRQWLQXH\Q"y
rebel:root # onstat
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&4XLHVFHQW
8S.E\WHV
8VHUWKUHDGV
DGGUHVV IODJV VHVVLGXVHU WW\ ZDLWWRXWORFNV QUHDGV QZULWHV
3' LQIRUPL[
F 3) LQIRUPL[
F 3 LQIRUPL[
H 3% LQIRUPL[
FF 3' LQIRUPL[
DFWLYHWRWDOPD[LPXPFRQFXUUHQW
3URILOH
GVNUHDGV SDJUHDGV EXIUHDGV FDFKHG GVNZULWV SDJZULWV EXIZULWV FDFKHG
Si lon regarde la premire ligne, on voit que Informix IDS est maintenant en
mode Quiescent ou mode mono-utilisateur. Cest le seul mode dans lequel on
peut se servir de onparams pour excuter certaines commandes parmi les plus
critiques, telles que dplacer le log physique dans un autre dbspace. Dans
dautres cas ou sur dautres plates-formes, onparams ne doit tre excut que
si le moteur est totalement arrt.
Maintenant, crons un physdbs. Pour ce faire, il faut dabord crer un dbspace
20 Mo pour physdbs avec la commande onspaces, puis drouler le log physi-
que laide de la commande onparams. Dans la suite du chapitre, les
commandes sont mises en gras dans les exemples de code.
rebel:root # ontape -s -L 0
$UFKLYHWRWDSHGHYLFH
GHYQXOO
LVFRPSOHWH
3URJUDPRYHU
rebel:root # onstat l
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&4XLHVFHQW
8S.E\WHV
3K\VLFDO/RJJLQJ
%XIIHU EXIXVHG EXIVL]H QXPSDJHVQXPZULWVSDJHVLR
3
SK\EHJLQ SK\VL]H SK\SRV SK\XVHG XVHG
I
/RJLFDO/RJJLQJ
%XIIHU EXIXVHG EXIVL]H QXPUHFV QXPSDJHV QXPZULWV UHFVSDJHV SDJHVLR
/
6XEV\VWHP QXPUHFV /RJ 6SDFHXVHG
2/'56$0
rebel:root # onstat -d
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&4XLHVFHQW
8S.E\WHV
'EVSDFHV
DGGUHVV QXPEHU IODJV IFKXQN QFKXQNV IODJV RZQHU QDPH
HF 1 LQIRUPL[URRWGEV
HID 1 LQIRUPL[ SK\VGEV
DFWLYHPD[LPXP
&KXQNV
DGGUHVV FKNGEV RIIVHW VL]H IUHH ESDJHV IODJV SDWKQDPH
HI 32 RSWGDWDURRWGEV
I 32 RSWGDWDSK\VGEV
DFWLYHPD[LPXP
$ onparams
8VDJHRQSDUDPV^DG'%VSDFH>VVL]H@_
GOORJLG>\@_
SVVL]H>G'%VSDFH@>\@`
D$GGDORJLFDOORJ
G'URSDORJLFDOORJ
S&KDQJHSK\VLFDOORJVL]HDQGORFDWLRQ
\$XWRPDWLFDOO\UHVSRQGV\HVWRDOOSURPSWV
rebel:root # onstat -d
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&4XLHVFHQW
8S.E\WHV
'EVSDFHV
DGGUHVV QXPEHU IODJV IFKXQN QFKXQNV IODJV RZQHU QDPH
HF 1 LQIRUPL[ URRWGEV
H 1 LQIRUPL[ SK\VGEV
DFWLYHPD[LPXP
&KXQNV
DGGUHVV FKNGEV RIIVHW VL]H IUHH ESDJHV IODJV SDWKQDPH
HI 32 RSWGDWDURRWGEV
H 32 RSWGDWDSK\VGEV
DFWLYHPD[LPXP
rebel:root # ls l
WRWDO
GUZ[UZ[U[LQIRUPL[LQIRUPL[-DQ
GUZ[U[U[URRWURRW-DQ
UZUZLQIRUPL[LQIRUPL[-DQSK\VGEV
UZUZLQIRUPL[LQIRUPL[-DQURRWGEV
physdbs est aussi lgrement plus grand physiquement, que rootdbs cest
parce que toutes nos commandes indiquent des tailles en Ko plutt quen Mo.
20 000 Ko est gal 20 480 000 octets, la taille que nous avons donne aux
rootdbs. 20 480 Ko est gal 20 971 520 octets, la taille relle du physdbs
que nous avons cr avec la commande onspaces, en utilisant une taille en
Ko et non en Mo.
quelques exceptions prs, les commandes Informix donnent les informa-
tions de taille en Ko et non en Mo. Il faut faire attention cette caractristique
des commandes Informix et lutiliser correctement, cest--dire penser
dabord en Ko, pas en Mo. Si vous pensez en Mo, faites-le seulement en
termes de conversion des Ko en Mo.
Logsdbs
Crons maintenant un logsdbs comme racine des logs logiques qui rsident
encore dans les rootdbs. Sassurer que le moteur est en mode quiescent, et
poursuivre la cration.
Nous allons crer 20 nouveaux logs logiques, de 1 Mo chacun, de sorte quil
nous faudra un dbspace de log logique dau moins 26 Mo, sinon plus. Il est
prfrable de le crer un peu plus grand, pour pouvoir ajouter des logs selon
les besoins. Notre premier logsdbs sera de 50 Mo, de manire disposer de
rserves pour la croissance. Nous avons six logs logiques dans les rootdbs et
nous en voulons 26, nous allons donc en crer 20 nouveaux.
Crons dabord notre logsdbs :
:$51,1*
$OHYHODUFKLYHRI5RRW'%6SDFHZLOOQHHGWREHGRQH
rebel:root # ontape -s -L 0
RQVWDW
$UFKLYHWRWDSHGHYLFH
GHYQXOO
LVFRPSOHWH
3URJUDPRYHU
rebel:root # onstat d
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&4XLHVFHQW
8S.E\WHV
'EVSDFHV
DGGUHVV QXPEHU IODJV IFKXQN QFKXQNV IODJVRZQHU QDPH
HF 1 LQIRUPL[ URRWGEV
H 1 LQIRUPL[ SK\VGEV
IF 1 LQIRUPL[ ORJVGEV
DFWLYHPD[LPXP
&KXQNV
DGGUHVV FKNGEVRIIVHWVL]H IUHH ESDJHVIODJVSDWKQDPH
HI 32 RSWGDWDURRWGEV
H 32 RSWGDWDSK\VGEV
IF 32 RSWGDWDORJVGEV
DFWLYHPD[LPXP
Maintenant que le dbspace du logsdbs existe, nous pouvons dplacer les logs
logiques, depuis le rootdbs, vers le logsdbs. Quand linstallation a dmarr,
elle a cr six logs logiques, il reste en ajouter 20. Pourquoi 26 ? Ajouter 20
logs est un bon exercice, et vous donnera une ide de la manire dont travaille
le moteur. Il vaut mieux avoir beaucoup de petits logs logiques ; sur ce point,
se reporter au Guide de ladministrateur.
Pour dplacer les logs logiques hors des rootdbs, il faut avoir de nouveaux
logs en place, dj disponibles pour le moteur, qui remplaceront les logs logi-
ques existants. Le nombre minimum de logs logiques est de trois. Pour ce
faire, nous allons indiquer au moteur quels sont les logs conserver et ceux
supprimer. Mais nous ne pouvons pas supprimer ou enlever les logs logiques
qui sont en cours dutilisation : il faut donc indiquer au moteur dutiliser les
nouveaux, pour que les anciens puissent tre supprims.
Crer logsdbs
Sassurer que lon a cr le nouveau dbspace logsdbs avec la commande
onspaces, comme nous lavons vu au dbut de cette section, et que le moteur
est en mode mono-utilisateur laide de la commande onmode sy :
rebel:root # onmode sy
Excuter une sauvegarde de niveau zro pour nettoyer toutes les entres de
log en attente :
rebel:root # ontape -s -L 0
$UFKLYHWRWDSHGHYLFH
GHYQXOO
LVFRPSOHWH
3URJUDPRYHU
rebel:root # onstat ld
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&2Q/LQH
8S.E\WHV
'EVSDFHV
DGGUHVV QXPEHU IODJV IFKXQN QFKXQNV IODJV RZQHU QDPH
HF 1 LQIRUPL[ URRWGEV
H 1 LQIRUPL[ SK\VGEV
HF 1 LQIRUPL[ ORJVGEV
DFWLYHPD[LPXP
&KXQNV
DGGUHVV FKNGEVRIIVHWVL]H IUHH ESDJHVIODJVSDWKQDPH
HI 32 RSWGDWDURRWGEV
H 32 RSWGDWDSK\VGEV
H 32RSWGDWDORJVGEV
DFWLYHPD[LPXP
3K\VLFDO/RJJLQJ
%XIIHU EXIXVHG EXIVL]H QXPSDJHV QXPZULWV SDJHVLR
3
SK\EHJLQ SK\VL]H SK\SRV SK\XVHG XVHG
/RJLFDO/RJJLQJ
%XIIHU EXIXVHG EXIVL]H QXPUHFV QXPSDJHV QXPZULWV UHFVSDJHV SDJHVLR
/
6XEV\VWHP QXPUHFV /RJ6SDFHXVHG
2/'56$0
rebel:root # onstat l
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&4XLHVFHQW
8S.E\WHV
3K\VLFDO/RJJLQJ
%XIIHU EXIXVHG EXIVL]H QXPSDJHVQXPZULWV SDJHVLR
3
SK\EHJLQ SK\VL]H SK\SRV SK\XVHG XVHG
/RJLFDO/RJJLQJ
%XIIHU EXIXVHGEXIVL]HQXPUHFV QXPSDJHVQXPZULWVUHFVSDJHV SDJHVLR
/
6XEV\VWHP QXPUHFV /RJ6SDFHXVHG
2/'56$0
chaque fois que lon ajoute un log, sans excuter de sauvegarde de niveau
zro laide de la commande ontape, on peut voir le nouveau log logique, en
excutant onstat l, marqu dun A. Ce nouveau log est cr mais nest pas
utilisable tant quon na pas excut de sauvegarde de niveau zro. Mme si
la sauvegarde est effectue dans /dev/null, le moteur pourra utiliser le nouveau
log logique.
Nous allons crer vingt nouveaux logs logiques de taille 1 Mo, pour un total
de 20 Mo dans lespace des logs logiques. On peut faire cela dans une boucle
for, ou rpter vingt fois la commande prcdente :
for log in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
do
LOG_COUNT= `expr $LOG_COUNT + 1 `
echo $LOG_COUNT
onparams -a -d logsdbs -s 1024
done
Quelle que soit la manire dont on les ajoute, la commande onstat permet de
voir les nouveaux logs logiques :
rebel:root # onstat l
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&4XLHVFHQW
8S.E\WHV
3K\VLFDO/RJJLQJ
%XIIHU EXIXVHG EXIVL]H QXPSDJHV QXPZULWV SDJHVLR
3
SK\EHJLQ SK\VL]H SK\SRV SK\XVHG XVHG
/RJLFDO/RJJLQJ
%XIIHU EXIXVHG EXIVL]H QXPUHFV QXPSDJHV QXPZULWV UHFVSDJHV SDJHVLR
/
6XEV\VWHP QXPUHFV /RJ6SDFHXVHG
2/'56$0
rebel:root # onstat -d
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&4XLHVFHQW
8S.E\WHV
'EVSDFHV
DGGUHVV QXPEHU IODJV IFKXQN QFKXQNV IODJV RZQHU QDPH
HF 1 LQIRUPL[ URRWGEV
H 1 LQIRUPL[ SK\VGEV
HF 1 LQIRUPL[ ORJVGEV
DFWLYHPD[LPXP
&KXQNV
DGGUHVV FKNGEV RIIVHW VL]H IUHH ESDJHV IODJV SDWKQDPH
HI 32 RSWGDWDURRWGEV
H 32 RSWGDWDSK\VGEV
H 32 RSWGDWDORJVGEV
DFWLYHPD[LPXP
On voit que logsdbs est en cours dutilisation et que rootdbs reste identique.
Nous allons maintenant rendre les nouveaux logs disponibles, en excutant
une sauvegarde de niveau zro. Voici le rsultat, avec onstat l :
rebel:root # ontape -s -L 0
$UFKLYHWRWDSHGHYLFH
GHYQXOO
LVFRPSOHWH
3URJUDPRYHU
rebel:root # onstat -l
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&4XLHVFHQW
8S.E\WHV
3K\VLFDO/RJJLQJ
%XIIHU EXIXVHG EXIVL]H QXPSDJHV QXPZULWV SDJHVLR
3
SK\EHJLQ SK\VL]H SK\SRV SK\XVHG XVHG
/RJLFDO/RJJLQJ
%XIIHU EXIXVHG EXIVL]H QXPUHFV QXPSDJHV QXPZULWV UHFVSDJHV SDJHVLR
/
6XEV\VWHP QXPUHFV /RJ6SDFHXVHG
2/'56$0
Maintenant, les nouveaux logs logiques peuvent tre utiliss, et nous pouvons
supprimer ceux des rootdbs. Pour ce faire, il faut indiquer au moteur quels
sont les logs utiliser comme logs courants, laide de la commande
onmode :
rebel:root # onmode
XVDJHRQPRGHDEF'G)NO0PQ2S45U6VX\=]
DNE\WHV!,QFUHDVHVKDUHGPHPRU\VHJPHQWVL]H
EYHUVLRQ!5HYHUW'\QDPLF6HUYHUGLVNVWUXFWXUHV
F>EORFN_XQEORFN@'R&KHFNSRLQW%ORFNRUXQEORFNVHUYHU
'PD[3'4SULRULW\DOORZHG!
G^VWDQGDUG_^SULPDU\_VHFRQGDU\VHUYHUQDPH!``VHW'5VHUYHUW\SH
))UHHXQXVHGPHPRU\VHJPHQWV
N6KXWGRZQFRPSOHWHO\
O)RUFHWRQH[WORJLFDOORJ
0GHFLVLRQVXSSRUWPHPRU\LQNE\WHV!
P*RWRPXOWLXVHURQOLQH
Q6HWVKDUHGPHPRU\EXIIHUFDFKHWRQRQUHVLGHQW
22YHUULGHVSDFHGRZQEORFNLQJDFKHFNSRLQW
S!FODVV!6WDUWXSRUUHPRYHYLUWXDOSURFHVVRUVRI
DVSHFLILFFODVV
4PD[GHFLVLRQVXSSRUWTXHULHV!
55HEXLOGWKH,1)250,;',5HWFLQIRV'%6(59(51$0(ILOH
U6HWVKDUHGPHPRU\EXIIHUFDFKHWRUHVLGHQW
6PD[GHFLVLRQVXSSRUWVFDQV!
V6KXWGRZQWRVLQJOHXVHU
X6KXWGRZQDQGNLOODOODWWDFKHGVHVVLRQV
\'RQRWUHTXLUHFRQILUPDWLRQ
=DGGUHVV!KHXULVWLFDOO\FRPSOHWHVSHFLILHGWUDQVDFWLRQ
]VLG!.LOOVSHFLILHGVHVVLRQLG
Il ne sagit pas seulement de transfrer lactivit des logs courants vers les
nouveaux logs logiques, mais aussi dexcuter un checkpoint, pour librer les
anciens logs avant de les supprimer. Ds que le moteur nutilise plus que les
nouveaux logs, nous pouvons supprimer les anciens. Il suffit dexcuter les
commandes suivantes sur les anciens logs, jusqu ce que onstat montre que
le moteur se sert des nouveaux logs. Ici, nous devons le faire six fois : la
sortie suivante montre les logs, suite trois commandes onmode l :
On voit dans cet exemple que le log de checkpoint est maintenant le log 9
dans les nouveaux logs, et que le dernier log sauvegard est le log 6. Excuter
maintenant onmode c, et le dernier log sauvegard sera le log 9 :
Maintenant que les logs courants sont les nouveaux et non les anciens, on
peut supprimer les anciens, comme ceci :
$ onparams d l 1 y
$ onparams d l 2 y
$ onparams d l 3 y
$ onparams d l 4 y
$ onparams d l 5 y
$ onparams d l 6 y
rebel:root # onparams -d -l 6 -y
/RJLFDOORJVXFFHVVIXOO\GURSSHG
:$51,1*
$OHYHODUFKLYHZLOOQHHGWREHGRQHRIWKHURRWGEV
EHIRUHOHYHORUDUFKLYHLVDWWHPSWHGDIWHUGURSSLQJWKHORJLFDOORJ
VHH'\QDPLF6HUYHU$GPLQLVWUDWRU
VPDQXDO
rebel:root # onstat -l
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&4XLHVFHQW
8S.E\WHV3K\VLFDO/RJJLQJ
%XIIHU EXIXVHG EXIVL]H QXPSDJHV QXPZULWV SDJHVLR
3
SK\EHJLQ SK\VL]H SK\SRV SK\XVHG XVHG
/RJLFDO/RJJLQJ
%XIIHU EXIXVHG EXIVL]H QXPUHFV QXPSDJHV QXPZULWV UHFVSDJHV SDJHVLR
/
6XEV\VWHP QXPUHFV /RJ6SDFHXVHG
2/'56$0
On voit aussi que les rootdbs ont rcupr un peu despace, en excutant la
commande onstat d :
rebel:root # onstat -d
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&4XLHVFHQW
8S.E\WHV
'EVSDFHV
DGGUHVV QXPEHU IODJV IFKXQN QFKXQNV IODJV RZQHU QDPH
HF 1 LQIRUPL[ URRWGEV
H 1 LQIRUPL[ SK\VGEV
HF 1 LQIRUPL[ ORJVGEV
DFWLYHPD[LPXP
&KXQNV
DGGUHVV FKNGEVRIIVHWVL]H IUHH ESDJHVIODJVSDWKQDPH
HI 32RSWGDWDURRWGEV
H 32 RSWGDWDSK\VGEV
H 32RSWGDWDORJVGEV
DFWLYHPD[LPXP
rebel:root # onstat -l
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&4XLHVFHQW
8S.E\WHV
3K\VLFDO/RJJLQJ
%XIIHU EXIXVHG EXIVL]H QXPSDJHV QXPZULWV SDJHVLR
3
SK\EHJLQ SK\VL]H SK\SRV SK\XVHG XVHG
/RJLFDO/RJJLQJ
%XIIHU EXIXVHG EXIVL]H QXPUHFV QXPSDJHV QXPZULWV UHFVSDJHV SDJHVLR
/
6XEV\VWHP QXPUHFV /RJ6SDFHXVHG
2/'56$0
rebel:root # ontape -s -L 0
$UFKLYHWRWDSHGHYLFH
GHYQXOO
LVFRPSOHWH
3URJUDPRYHU
rebel:root # onstat -l
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&4XLHVFHQW
8S.E\WHV
3K\VLFDO/RJJLQJ
%XIIHU EXIXVHG EXIVL]H QXPSDJHV QXPZULWV SDJHVLR
3
SK\EHJLQ SK\VL]H SK\SRV SK\XVHG XVHG
/RJLFDO/RJJLQJ
%XIIHU EXIXVHG EXIVL]H QXPUHFV QXPSDJHV QXPZULWV UHFVSDJHV SDJHVLR
/
6XEV\VWHP QXPUHFV /RJ6SDFHXVHG
2/'56$0
rebel:root # onstat -d
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&4XLHVFHQW
8S.E\WHV
'EVSDFHV
DGGUHVV QXPEHU IODJV IFKXQN QFKXQNV IODJV RZQHU QDPH
HF 1 LQIRUPL[ URRWGEV
H 1 LQIRUPL[ SK\VGEV
HF 1 LQIRUPL[ ORJVGEV
DFWLYHPD[LPXP
&KXQNV
DGGUHVV FKNGEV RIIVHW VL]H IUHH ESDJHV IODJV SDWKQDPH
HI 32 RSWGDWDURRWGEV
H 32 RSWGDWDSK\VGEV
H 32 RSWGDWDORJVGEV
DFWLYHPD[LPXP
Tempdbs
Les moteurs Informix doivent disposer dun espace de travail pour le tri des
requtes et dun endroit o placer les tables temporaires. Si lon ne prcise
rien pour ce faire, le moteur utilisera /tmp et son propre espace, appel
INFORMIXTEMP, situ habituellement dans le rpertoire /. Mais ce nest pas
correct : il faut crer un tempdbs qui permette au systme de contrler o se
produiront les tris et o seront places les tables temporaires.
En voici le rsultat :
:$51,1* $OHYHODUFKLYHRI5RRW'%6SDFHZLOOQHHGWREHGRQH
:$51,1* $OHYHODUFKLYHRI5RRW'%6SDFHZLOOQHHGWREHGRQH
:$51,1* $OHYHODUFKLYHRI5RRW'%6SDFHZLOOQHHGWREHGRQH
rebel:root # ontape -s -L 0
$UFKLYHWRWDSHGHYLFH
GHYQXOO
LVFRPSOHWH
3URJUDPRYHU
rebel:root # onstat -d
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&4XLHVFHQW
8S.E\WHV
'EVSDFHV
DGGUHVV QXPEHU IODJV IFKXQN QFKXQNV IODJV RZQHU QDPH
HF 1 LQIRUPL[ URRWGEV
H 1 LQIRUPL[ SK\VGEV
HF 1 LQIRUPL[ ORJVGEV
F 17 LQIRUPL[ WHPSGEV
HF 1 LQIRUPL[ GEVBGEV
FD 1 LQIRUPL[ GDWDGEV
EF 1 LQIRUPL[ LQGH[GEV
DFWLYHPD[LPXP
&KXQNV
DGGUHVV FKNGEV RIIVHW VL]H IUHH ESDJHV IODJV SDWKQDPH
HI 32 RSWGDWDURRWGEV
H 32 RSWGDWDSK\VGEV
H 32 RSWGDWDORJVGEV
32 RSWGDWDWHPSGEV
D 32 RSWGDWDGEVBGEV
G 32 RSWGDWDGDWDGEV
EG 32 RSWGDWDLQGH[GEV
DFWLYHPD[LPXP
Tous les espaces de bases de donnes essentiels sont maintenant crs et utili-
sables. Il ne reste plus quun petit problme : terminer la mise jour de quel-
ques options du fichier $INFORMIXDIR/etc/$ONCONFIG, et le systme sera
prt. Par exemple, lespace tempdbs nest pas utilis tant quil nest pas activ
dans $ONCONFIG.
Arrtons le moteur par la commande onmode ky :
$ onmode ky
Log physique
Remarquons que les options de physdbs ont t mises jour :
3K\VLFDO/RJ&RQILJXUDWLRQ
3+<6'%6SK\VGEV/RFDWLRQGEVSDFHRISK\VLFDOORJ
3+<6),/(3K\VLFDOORJILOHVL]H.E\WHV
Log logique
Le nombre de LOGFILES a t mis jour, mais LOGSIZE na pas chang : il
vaut mieux lui donner la valeur quil aura dans le systme.
Valeurs par dfaut :
/RJLFDO/RJ&RQILJXUDWLRQ
/2*),/(61XPEHURIORJLFDOORJILOHV
/2*6,=(/RJLFDOORJVL]H.E\WHV
Nouvelles valeurs :
/RJLFDO/RJ&RQILJXUDWLRQ
/2*),/(61XPEHURIORJLFDOORJILOHV
/2*6,=(1024/RJLFDOORJVL]H.E\WHV
Dans notre cas, indiquons 1024, cest--dire une taille de 1 Mo. Voir le Guide
de ladministrateur pour les dtails sur la taille des logs logiques.
Utilisation de la mmoire
La taille par dfaut de 8 Mo est trs minimaliste : il vaut mieux laugmenter
essayez diffrentes valeurs pour trouver celle qui convient le mieux :
taille par dfaut :
6+09,576,=(LQLWLDOYLUWXDOVKDUHGPHPRU\VHJPHQWVL]H
nouvelle taille :
6+09,576,=(LQLWLDOYLUWXDOVKDUHGPHPRU\VHJPHQWVL]H
On peut laisser la valeur par dfaut et tester dabord toutes les autres options,
puis agrandir ensuite la taille de la mmoire. Dans les exemples prsents la
fin de cette section, la trace du redmarrage du moteur montre que la valeur a
maintenant chang. Si cela vous pose un problme, ne changez ce paramtre
qu la fin.
Options LRU
Se reporter au Guide de ladministrateur et aux autres documentations
Informix au sujet des concepts sous-jacents ces nouvelles options. Nous
rappelons que laccent est mis ici sur linstallation, et que seules sont donnes
les quelques options ncessaires des performances initiales correctes il
vous appartient dapprofondir le reste.
Valeurs par dfaut :
/5861XPEHURI/58TXHXHV
/58B0$;B',57</58SHUFHQWGLUW\EHJLQFOHDQLQJOLPLW
/58B0,1B',57</58SHUFHQWGLUW\HQGFOHDQLQJOLPLW
Ces options sont traites dans plusieurs ouvrages ddis Informix qui
vous aideront normment. On trouve aussi une discussion intressante
dans le groupe de news USENET comp.databases.informix, propos de
lorigine de ces options. Les valeurs donnes ici reposent sur lexprience
et sur le constat dune amlioration des performances.
Nouvelles valeurs :
/58641XPEHURI/58TXHXHV
/58B0$;B',57<5/58SHUFHQWGLUW\EHJLQFOHDQLQJOLPLW
/58B0,1B',57<1/58SHUFHQWGLUW\HQGFOHDQLQJOLPLW
Options DBSPACETEMP
Il faut modifier cette option de manire ce que le nouveau dbspace tempdbs
soit utilis pour les tables temporaires et le tri des requtes.
Valeur par dfaut :
'%63$&(7(03'HIDXOWWHPSGEVSDFHV
Nouvelle valeur :
'%63$&(7(03tempdbs
Redmarrer le moteur
On redmarre le moteur Informix par la commande oninit v :
rebel:root # oninit v
&KHFNLQJJURXSPHPEHUVKLSWRGHWHUPLQHVHUYHUUXQPRGHVXFFHHGHG
5HDGLQJFRQILJXUDWLRQILOH
RSWLQIRU
PL[LGVHWFUHEHOBVKPFIJ
VXFFHHGHG
&UHDWLQJ,1)250,;703LQI[GLUVVXFFHHGHG
&UHDWLQJLQIRVILOHRSWLQIRUPL[LGVHWFLQIRVUHEHOBVKP
RSWLQIRUPL[LGVHWFFRQIUHEHOBVKPVXFFHHGHG
:ULWLQJWRLQIRVILOHVXFFHHGHG
&KHFNLQJFRQILJSDUDPHWHUVVXFFHHGHG
$OORFDWLQJDQGDWWDFKLQJWRVKDUHGPHPRU\VXFFHHGHG
&UHDWLQJUHVLGHQWSRRONE\WHVVXFFHHGHG
&UHDWLQJEXIIHUSRRONE\WHVVXFFHHGHG
,QLWLDOL]LQJUKHDGVWUXFWXUHVXFFHHGHG
,QLWLDOL]LQJ$6)VXFFHHGHG
,QLWLDOL]LQJ'LFWLRQDU\&DFKHDQG6WRUHG3URFHGXUH&DFKHVXFFHHGHG
%ULQJLQJXS$'093VXFFHHGHG
&UHDWLQJ93FODVVHVVXFFHHGHG
2QOLQLQJDGGLWLRQDOFSXYSVVXFFHHGHG
2QOLQLQJ,2YSVVXFFHHGHG
)RUNLQJPDLQBORRSWKUHDGVXFFHHGHG
,QLWLDO]LQJ'5VWUXFWXUHVVXFFHHGHG
)RUNLQJ
LSFVKP
OLVWHQHUWKUHDGVVXFFHHGHG
)RUNLQJ
VRFWFS
OLVWHQHUWKUHDGVVXFFHHGHG
6WDUWLQJWUDFLQJVXFFHHGHG
,QLWLDOL]LQJIOXVKHUVVXFFHHGHG
,QLWLDOL]LQJORJFKHFNSRLQWLQIRUPDWLRQVXFFHHGHG
2SHQLQJSULPDU\FKXQNVVXFFHHGHG
2SHQLQJPLUURUFKXQNVVXFFHHGHG
,QLWLDOL]LQJGEVSDFHVVXFFHHGHG
9DOLGDWLQJFKXQNVVXFFHHGHG
,QLWLDOL]H$V\QF/RJ)OXVKHUVXFFHHGHG
)RUNLQJEWUHHFOHDQHUVXFFHHGHG
,QLWLDOL]LQJ'%63$&(7(03OLVW
UHEHOURRW&KHFNLQJGDWDEDVHSDUWLWLRQLQGH[VXFFHHGHG
&KHFNLQJORFDWLRQRISK\VLFDOORJVXFFHHGHG
,QLWLDOL]LQJGDWDVNLSVWUXFWXUHVXFFHHGHG
&KHFNLQJIRUWHPSRUDU\WDEOHVWRGURS
)RUNLQJRQPRGHBPRQWKUHDGVXFFHHGHG
9HUERVHRXWSXWFRPSOHWHPRGH
rebel:root # onstat m
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&2Q/LQH
8S.E\WHV
0HVVDJH/RJ)LOHRSWLQIRUPL[LGVORJVRQOLQHORJ
0RQ-DQ
(YHQWDODUPVHQDEOHG
$/$50352*
RSWLQIRUPL[LGVHWFORJBIXOOVK
'5'5$872LV2II
5HTXHVWHGVKDUHGPHPRU\VHJPHQWVL]HURXQGHGIURP.%WR
.%
,QIRUPL[ '\QDPLF 6HUYHU 9HUVLRQ 8& 6RIWZDUH 6HULDO 1XPEHU
$$&$
,QIRUPL[ '\QDPLF 6HUYHU ,QLWLDOL]HG 6KDUHG 0HPRU\ ,QLWLDOL]HG
3K\VLFDO5HFRYHU\6WDUWHG
3K\VLFDO5HFRYHU\&RPSOHWH3DJHV5HVWRUHG
/RJLFDO5HFRYHU\6WDUWHG
/RJLFDO5HFRYHU\&RPSOHWH
&RPPLWWHG5ROOHG%DFN2SHQ%DG/RFNV
rebel:root # onmode ky
rebel:root # oninit v
rebel:root # onstat m
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&2Q/LQH
8S.E\WHV
0HVVDJH/RJ)LOHRSWLQIRUPL[LGVORJVRQOLQHORJ
&KHFNSRLQW&RPSOHWHGGXUDWLRQZDVVHFRQGV
,QIRUPL['\QDPLF6HUYHU6WRSSHG
0RQ-DQ
(YHQWDODUPVHQDEOHG
$/$50352*
RSWLQIRUPL[LGVHWFORJBIXOOVK
'5'5$872LV2II
5HTXHVWHG VKDUHG PHPRU\ VHJPHQW VL]H URXQGHG IURP .% WR .%
,QIRUPL[ '\QDPLF 6HUYHU 9HUVLRQ 8& 6RIWZDUH 6HULDO 1XPEHU
$$&$
2QFRQILJSDUDPHWHU6+09,576,=(PRGLILHGIURPWR
'DWDVNLSLVQRZ2))IRUDOOGEVSDFHV
2Q/LQH0RGH
&KHFNSRLQW&RPSOHWHGGXUDWLRQZDVVHFRQGV
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&2Q/LQH
8S.E\WHV
6HJPHQW6XPPDU\
LG NH\ DGGU VL]H RYKG FODVV EONXVHG EONIUHH
5
GH 9
H 0
7RWDO
VHJPHQWORFNHGLQPHPRU\
Votre systme est maintenant oprationnel et il peut tre mis entre les mains
de vos utilisateurs finaux !
Voici quelques derniers conseils. Quand on cre une base de donnes, il faut
la crer dans le dbspace dbs_dbs ; une table sera cre dans datadbs01 ; un
index, dans indexdbs01. Ces oprations sont dcrites dans la documentation
Informix : pour ce faire, on se sert du SQL standard et des commandes SQL
spcifiques des moteurs Informix. Les options dinitialisation qui ont t rete-
nues ici donnent la meilleure souplesse et laissent des rserves despace pour
la croissance du systme.
Autres outils
Voici une liste de quelques outils fournis avec le moteur de base de donnes
Informix.
onlog : explorateur de log logique qui permet de voir le contenu des logs
logiques. Il suffit dexcuter la commande onlog pour afficher le contenu
des logs logiques.
rebel:root # onstat -d
,QIRUPL['\QDPLF6HUYHU9HUVLRQ8&2Q/LQH
8S.E\WHV
'EVSDFHV
DGGUHVV QXPEHU IODJV IFKXQN QFKXQNV IODJV RZQHU QDPH
HF 1 LQIRUPL[ URRWGEV
H 1 LQIRUPL[ SK\VGEV
H 1 LQIRUPL[ ORJVGEV
HD 17 LQIRUPL[ WHPSGEV
HDEF 1 LQIRUPL[ GEVBGEV
HE 1 LQIRUPL[ GDWDGEV
HF 1 LQIRUPL[ LQGH[GEV
DFWLYHPD[LPXP
&KXQNV
DGGUHVV FKNGEV RIIVHW VL]H IUHH ESDJHV IODJV SDWKQDPH
HI 32 RSWGDWDURRWGEV
H 32 RSWGDWDSK\VGEV
H 32 RSWGDWDORJVGEV
H 32 RSWGDWDWHPSGEV
HH 32 RSWGDWDGEVBGEV
HF 32 RSWGDWDGDWDGEV
HD 32 RSWGDWDLQGH[GEV
DFWLYHPD[LPXP
on obtient ceci :
rebel:root # IDSspaces
,QIRUPL['%6SDFH5HSRUW0RQ-DQ(67
GDWDGEV
'% &KN '% 3DJHV3FW .LORE\WHV
1R 1R 6SDFH1DPH 7RWDO )UHH 8VHG )XOO 7RWDO )UHH 8VHG
GDWDGEV
GDWDGEV
GEVBGEV
'% &KN '% 3DJHV3FW .LORE\WHV
1R 1R 6SDFH1DPH 7RWDO )UHH 8VHG )XOO 7RWDO )UHH 8VHG
GEVBGEV
GEVBGEV
LQGH[GEV
'% &KN '% 3DJHV3FW.LORE\WHV
1R 1R 6SDFH1DPH 7RWDO )UHH 8VHG )XOO 7RWDO )UHH 8VHG
LQGH[GEV
LQGH[GEV
ORJVGEV
'% &KN '% 3DJHV3FW.LORE\WHV
1R 1R 6SDFH1DPH 7RWDO )UHH 8VHG )XOO 7RWDO )UHH 8VHG
ORJVGEV
ORJVGEV
SK\VGEV
'% &KN '% 3DJHV3FW.LORE\WHV
1R 1R 6SDFH1DPH 7RWDO )UHH 8VHG )XOO 7RWDO )UHH 8VHG
SK\VGEV
SK\VGEV
URRWGEV
'% &KN '% 3DJHV3FW.LORE\WHV
1R 1R 6SDFH1DPH 7RWDO )UHH 8VHG )XOO 7RWDO )UHH 8VHG
URRWGEV
URRWGEV
WHPSGEV
'% &KN '% 3DJHV3FW.LORE\WHV
1R 1R 6SDFH1DPH 7RWDO )UHH 8VHG )XOO 7RWDO )UHH 8VHG
WHPSGEV
WHPSGEV
rebel:informix $ IDSchunks 3
/LQX[UHEHO0RQ1RY&(7LXQNQRZQ
RSWLQIRUPL[LGVHWFUHEHOBVKPFIJ
5HSRUW2UGHU%\'DWD6SDFH1DPH'DWDEDVH&KXQN)LOH
GDWDGEV
'EV &KN )LOHV\VWHP 7RWDO3DJHV )UHH3DJHV )UHH
RSWGDWDGDWDGEV
GDWDGEV
'EV &KN )LOHV\VWHP 7RWDO3DJHV )UHH3DJHV )UHH
RSWGDWDGDWDGEV
RSWGDWDGDWDGEV
RSWGDWDGDWDGEV
GEVBGEV
'EV &KN )LOHV\VWHP 7RWDO3DJHV )UHH3DJHV )UHH
RSWGDWDGEVBGEV
LQGH[GEV
'EV &KN )LOHV\VWHP 7RWDO3DJHV )UHH3DJHV )UHH
RSWGDWDLQGH[GEV
ORJVGEV
'EV &KN )LOHV\VWHP 7RWDO3DJHV )UHH3DJHV )UHH
RSWGDWDORJVGEV
SK\VGEV
'EV &KN )LOHV\VWHP 7RWDO3DJHV )UHH3DJHV )UHH
RSWGDWDSK\VGEV
URRWGEV
'EV &KN )LOHV\VWHP 7RWDO3DJHV )UHH3DJHV )UHH
RSWGDWDURRWGEV
WHPSGEV
'EV &KN )LOHV\VWHP 7RWDO3DJHV )UHH3DJHV )UHH
RSWGDWDWHPSGEV
Dbaccess
Lun des outils les plus intressants fournis avec le moteur est Dbaccess.
Cest une application, en mode caractre, qui permet de faire des prlve-
ments directs sur le moteur, une base de donnes ou des tables. On peut aussi
faire des requtes sur les tables et des oprations de maintenance de base de
donnes sur toutes les bases de donnes dune instance particulire. La docu-
mentation de Dbaccess est disponible dans le Guide dutilisation de Dbac-
cess. Quand on excute Dbaccess, on obtient laffichage suivant :
'%$&&(66 4XHU\ODQJXDJH&RQQHFWLRQ'DWDEDVH7DEOH6HVVLRQ([LW
8VH64/TXHU\ODQJXDJH
3UHVV&75/:IRU+HOS
Dbaccess est facile utiliser et fonctionne bien dans une fentre VT-100. Il
vous offre un excellent bloc-notes pour travailler sur votre base de donnes. Il
existe aussi des outils graphiques, en cours de dveloppement chez Informix,
qui seront peut-tre inclus dans la distribution du moteur.
Onmonitor
Autre outil que nous navons pas utilis au cours de linstallation : onmonitor.
Il permet de surveiller le moteur et deffectuer des oprations de maintenance,
mais il nest ni trs souple ni trs facile utiliser.
Dans onmonitor, on peut voir ou changer les nombreuses options du moteur ;
cependant, la plupart des administrateurs Informix optent pour le contrle en
ligne de commande. Dans un environnement de production, plus vous avez de
contrles, plus vous prenez de risques, tout simplement parce quune seule
mauvaise commande peut effacer toutes les donnes de la socit. Excuter
onmonitor : la sortie suivante apparatra dans une interface en mode carac-
tre, sous la mme forme que les lignes de Dbaccess :
'\QDPLF6HUYHU 6WDWXV3DUDPHWHUV'EVSDFHV0RGH)RUFH&NSW
6WDWXVPHQXWRYLHZ'\QDPLF6HUYHU
2Q/LQH3UHVV&75/:IRU+HOS
Par exemple, onmonitor donne les mmes informations sur la base que la
commande onstat :
67$786 3URILOH8VHUWKUHDGV6SDFHV'DWDEDVHV/RJV$UFKLYH
'LVSOD\V\VWHPSURILOHLQIRUPDWLRQ
2Q/LQH3UHVV&75/:IRU+HOS
%RRW7LPH0RQ-DQ
&XUUHQW7LPH0RQ-DQ
Cest un programme dont vous aurez rarement besoin si vous apprenez utili-
ser la commande onstat et les options de $ONCONFIG. Il est beaucoup plus
facile et beaucoup moins risqu dditer le fichier $ONCONFIG la main et de
redmarrer le moteur. Il y a certaines choses que lon peut faire avec la
commande onmode pour viter de redmarrer le moteur, sans pour autant
utiliser onmonitor. Il est important de revoir toutes les commandes et les
programmes disponibles dans le rpertoire $INFORMIXDIR/bin. Un outil web
dadministration du systme est maintenant disponible pour ceux qui veulent
grer leur serveur avec un navigateur web.
Ressources
Quand on a besoin daide sur les produits Informix, on dispose de plusieurs
sortes de ressources : les unes se trouvent auprs de lassistance client, les
autres sont les contacts avec dautres clients ou professionnels dInformix.
Presse Informix
Plusieurs livres sont la disposition des utilisateurs Informix. La plupart
dentre eux sont crits par les meilleurs professionnels du monde Informix,
qui ont des annes dexprience des produits Informix. On trouve sur le site
web Informix les nouveaux titres ainsi que les parutions disponibles dans la
plupart des grandes librairies et des librairies web. Informix produit aussi la
plus grande part de sa documentation sur des ensembles de CD-ROM que
lon peut commander chez Informix, pour un prix moins lev que les docu-
ments imprims. Vous pouvez contacter votre bureau de ventes le plus proche
pour commander les CD-ROM.
Formation Informix
Informix propose lune des meilleures formations dans son domaine ; elle a
mme t prime. Des gens disposant de peu dexprience sur les produits
Informix ont t forms trs rapidement et parfaitement lutilisation des
produits, en suivant les cours proposs par Informix. Certains cours sur les
bases de donnes sont assez gnriques pour sappliquer dautres produits,
et offrent une base trs srieuse, sur laquelle btir une connaissance solide en
matire de base de donnes. Si votre proccupation essentielle concerne les
performances, ou si vous voulez approfondir vos connaissances du moteur de
base de donnes, prenez la formation directement applicable dans le cadre de
votre travail. Informix offre aussi des programmes de certification pour assu-
rer que votre effort et vos comptences sont reconnues dans un cadre tel que
celui des directions qui souhaitent apprcier votre professionnalisme. Plus
vous en savez, plus vous serez reconnu.
Rsum
Maintenant que vous avez install IDS pour Linux, que pouvez-vous en
faire ? Eh bien, pour commencer, connecter au serveur nimporte quelle inter-
face utilisateur compatible ODBC et commencer immdiatement dvelop-
per ou connecter des applications au moteur de base de donnes ; crer et
connecter des applications web et des clients directement au moteur avec
ODBC, JDBC ou des connexions rseau I-connect. Le domaine des applica-
tions nest limit que par votre imagination.
Informix IDS 7.3x est un moteur de base de donnes SQL trs puissant, avec
tout ce dont a besoin un serveur de base de donnes professionnel. Ce serveur
prsente des qualits de haute fiabilit et de robustesse adaptes une grande
varit doprations de stockage et de recherche de donnes, impliquant des
taux daccs de bas ou de haut volume. Certains des serveurs de base de
donnes les plus rapides en usage sont des serveurs Informix sur UNIX.
Informix a dpass les serveurs concurrents dautres diteurs et continue
mener le bal. La version Linux dIDS nest pas diffrente, en interne, de celles
des autres plates-formes UNIX ; les seules limites auxquelles on doit faire
face sont le noyau Linux courant et la plate-forme matrielle.
IDS 7.3 peut traiter de un N utilisateurs, la seule limite tant, bien sr, le
matriel. On peut tout apprendre de la version UNIX avec Linux, lexcep-
tion du chargeur haute performance et des disques bruts, qui ne sont pas
encore disponibles sur Linux. IDS est compatible un certain degr avec le
moteur standard (SE, Standard Engine), mais seulement pour les caractristi-
ques de base. Le moteur standard est plus limit et propose moins de types de
donnes que le moteur mmoire partage de IDS. Le moteur standard est
passif, base dISAM. SE est trs fiable mais ne dispose pas des caractristi-
ques les plus avances du moteur IDS. Si on les compare aux avions, SE est
un avion hlice, et IDS, un jet. Les deux sont des machines volantes, mais
chacun a un usage appropri.
Le temps total dinstallation est denviron deux heures, si vous avez prpar
votre environnement, ou plus, si vous ne lavez pas fait. Il est extrmement
important de lire le Guide de ladministrateur, pour se familiariser avec les
divers contrles et options relatifs au moteur.
FAQ
Q. Puis-je utiliser les produits Microsoft avec une base de donnes Informix
sur Linux ?
R. Bien sr ! Tout produit Microsoft ou compatible Microsoft qui peut se
connecter une base de donnes ODBC peut se connecter une base de
donnes Informix sur Linux. Il suffit dinitialiser la connexion rseau entre
le serveur Linux et le client Microsoft avant de se connecter.
Q. Puis-je connecter une base de donnes Informix sur Linux une base de
donnes Informix sur une autre plate-forme UNIX ?
R. Oui. Il faut configurer les paramtres rseau dans les fichiers de configura-
tion appropris et se relier deux serveurs de bases de donnes diffrents
pour travailler sur les deux simultanment. On peut aussi mettre en rela-
tion ces serveurs laide de la rplication des donnes.
Q. Quel est le matriel ncessaire pour initialiser une base de donnes
Informix ?
R. Linstallation complte peut occuper approximativement 500 Mo pour un
petit systme, davantage pour une plus grande base de donnes. Informix
peut fonctionner avec une mmoire aussi rduite que 8 Mo.
Q. Quel est le meilleur endroit pour trouver des informations sur Informix ?
R. Les FAQ Informix sont situes sur http://www.iiug.org, le site du groupe
international des utilisateurs dInformix. Outre la FAQ, on trouve sur ce
site une plthore doutils gratuits utilisables avec la famille des produits
Informix. Une bonne partie de lhistoire des moteurs Informix est dcrite
dans les FAQ. Ce site est une source riche doutils, de sous-programmes,
de programmes L4G, de programmes ESQLC, dastuces et de techniques
qui vous aident faire fonctionner lun des meilleurs moteurs de base de
donnes. Vous pouvez tlcharger ou dposer vos propres outils sur le site
IIUG, et dvelopper votre propre projet open-source avec dautres dve-
loppeurs.
Les FAQ vous aiguillent aussi vers dautres ressources Informix, dont le
rseau des dveloppeurs Informix : http://www.informix.com/idn (IDN,
Informix Developers Network). Cest un site web destin au dveloppeur
Informix srieux, quip de groupes de discussions, pour parler de sujets
divers avec dautres dveloppeurs, des administrateurs ou dautres partici-
pants. Il faut sinscrire pour avoir accs ce site web, mais il en vaut la
peine, et il faut le visiter souvent pour se tenir au courant des mises jour
et des amliorations du logiciel.
Dans ce chapitre
Installation
Configuration
Test de la base de donnes
Conception de la base de donnes
Forces et faiblesses
Introduction
Vers la mi-1998, jai men, pour une organisation but non lucratif, une
mission de dveloppement dune base de donnes, administre par lInternet,
dobjets dart numriss et catalogus. Cette organisation disposait dun
budget dexploitation modeste (comme toute organisation de ce type) et
ntait pas en mesure dinvestir des sommes importantes dans une solution de
base de donnes de grande marque : cest pourquoi Linux apparut comme le
choix vident. Aprs quelques semaines dexprimentation des bases de
donnes open-source et gratuites (freeware) pour Linux, sur quelques jeux de
test, nous avons t fortement dus par la lenteur des essais, quand nous
avons atteint les dizaines de milliers denregistrements. La volumtrie totale
devait passer de 200 000 enregistrements au dpart plusieurs millions : cette
solution ntait pas envisageable et ne fut donc pas retenue. Dcourags par
les performances des bases de donnes open-source, nous avons t obligs
de retenir NT, quip de Microsoft SQL Server 6.5, comme plate-forme de
base de donnes. Comme nous voulions conserver un serveur web fiable et
rapide (Apache) et Perl sur Linux, nous avons dmarr en utilisant le logiciel
Open Client de Sybase et la bibliothque Perl, crite par Michael Peppler.
Heureusement, il semble que Microsoft ait dispos de la version initiale de
SQL Server de Sybase, ce qui fait quOpen Client pouvait encore se connec-
ter. Nous ntions pas satisfaits des performances de SQL Server sur NT mais,
en mme temps, nous ntions pas en mesure de trouver une meilleure solu-
tion. Aprs environ un mois de dveloppement, nous avons entendu des
rumeurs selon lesquelles Sybase envisageait de porter la version 11.0.3 de
SQL Server sur Linux. De surcrot, ils loffraient gratuitement, et rien ntait
perdu de notre mois de dveloppement, puisque nous nous tions dj servis
de leur bibliothque client. Quand Sybase a diffus SQL Server, nous lavons
tlcharg et install. Sans aucune modification, la base de donnes de dve-
loppement que nous avions utilise sur SQL Server NT fonctionnait prs de
10 fois plus vite sous Sybase sur Linux. Nous avons t extrmement satis-
faits et nous nous sommes organiss pour dvelopper en totalit le produit sur
des logiciels gratuits. Depuis cette poque, Sybase a diffus Adaptive Server
Enterprise (ASE) 11.9.2 pour Linux, ainsi que beaucoup dautres produits.
ASE 11.9.2 est gratuit pour le dveloppement, mais une licence est ncessaire
pour le dploiement. Sybase offre toujours lutilisation et le dploiement
gratuits de SQL Server 11.0.3.
Dans ce chapitre, nous traiterons de linstallation de SQL Server Sybase sur
une plate-forme Linux et indiquerons au moins quelques rglages. Comme il
existe dj beaucoup de bons ouvrages consacrs lexcution et au rglage
de SQL Server Sybase, ce chapitre sintresse surtout ce qui doit tre fait
pour que SQL Server fonctionne correctement sur Linux.
Installation
Comme nous lavons indiqu en introduction, Sybase propose actuellement
deux versions de son serveur de base de donnes pour la plate-forme Linux.
SQL Server Sybase 11.0.3.3 est disponible en libre tlchargement sur le site
web de Sybase (http://www.sybase.com/products/databaseservers/linux/),
gratuit la fois pour le dveloppement et le dploiement. Adaptive Server
Enterprise (ASE) 11.9.2 est disponible en libre tlchargement sur le site de
Sybase, mais la licence nautorise lutiliser que sur une seule machine et
seulement pour le dveloppement. Pour dployer ASE 11.9.2 sur Linux, il
faut une autre licence, payante. Ce chapitre se concentre sur la version
11.0.3.3, qui correspond bien la nature de Linux parce quelle est gratuite,
mais une grande part des informations sappliquent aussi la version 11.9.2.
Flicitations Sybase pour avoir rendu ses serveurs de base de donnes sur
Linux faciles installer sur Red Hat Linux, en les distribuant au format RPM.
Sybase fonctionne sur les autres versions de Linux dotes du noyau en
version 2.0.36 ou suprieure, et de glibc2, mais lutilisateur de ces systmes
devra tlcharger et installer les utilitaires de gestion des paquets RPM
partir de http://www.rpm.org/.
Important. La version diffuse avec Red Hat Linux 5.2 a t lorigine dune certaine
confusion. Dans cette version, Sybase 11.0.3 tait ajout au CD-ROM supplmentaire
distribu avec la copie achete de Red Hat 5.2. Le RPM sur le serveur web de Sybase
tait sybase-11.0.3-1.rpm, et celui du CD-ROM, sybase-11.0.3-2.rpm : ceux qui
consultaient le site web ont donc t choqus de ne pas avoir la version la plus
rcente. En fait, la seule diffrence entre ces deux RPM tait que la seconde celle
de Red Hat ne lanait pas automatiquement le script dinstallation aprs linstallation
du RPM, car Red Hat avait demand Sybase de le reconfigurer parce que son outil
RPM graphique nacceptait pas ce script dinstallation engendr automatiquement. La
version disponible sur le site web de Sybase, la rdaction de ce livre, est la 11.0.3.3.
utiliser de prfrence car elle contient sans doute des corrections de bogues.
mais certains formats dunits brutes seront probablement admis dans les
versions ultrieures du noyau. Les administrateurs, qui pensent que ces units
sont ncessaires, avancent largument suivant lappui de leur conviction :
comme Sybase maintient son propre cache et part de lhypothse que tout ce
qui est crit sur le disque est vraiment crit quand il reprend le contrle aprs
une criture, des incohrences peuvent apparatre en cas de coupure de
lalimentation. En clair, Sybase considre quil y a eu criture sur le disque,
alors que Linux na fait que conserver les donnes dans son cache, en vue de
les crire ultrieurement ; sil y a une coupure avant que Linux nait relle-
ment (matriellement) crit, il est vident que cela produit des incohrences
au niveau du systme. Le meilleur argument que jaie entendu contre cela
postule que tout serveur de base de donnes dispose dune alimentation inin-
terruptible (UPS, uninterruptible power supply). Si lUPS avertit la machine
dune coupure, celle-ci a les moyens de sassurer que la base de donnes et le
reste du processus ont t arrts, en cas de rupture dalimentation, avant que
la batterie UPS ne soit puise.
Au sujet des possibilits en matire dunits de donnes, voici quelques
conseils. Si possible, ddier la machine entire la base de donnes, et lui
donner beaucoup de mmoire physique (autant que lon peut). Sybase peut
fonctionner avec 32 Mo de mmoire, sil ny a rien dautre sur la machine,
mais il y aura de nombreux accs aux disques, car il ne peut pas conserver
assez dinformations dans le cache. Il est recommand de ne pas utiliser
moins de 128 Mo de mmoire dans un serveur de base de donnes. Evidem-
ment, plus il y en a, meilleure est la performance. Si lon envisage de faire
simultanment des requtes multiples sur la machine, il vaut mieux se tourner
vers des processeurs multiples. Il est conseill de ne pas faire fonctionner un
serveur web et un serveur de base de donnes sur la mme machine. On peut
le faire, mais il faut savoir que la base de donnes sera beaucoup plus rapide
et plus ractive si la machine nest pas occupe faire autre chose.
Pour toute base de donnes non triviale, il faudra consacrer au moins trois
lecteurs SCSI au systme. Ne pas utiliser de lecteurs IDE pour un serveur de
base de donnes. Si lon souhaite un systme vraiment robuste, il vaut mieux
prvoir au moins six lecteurs SCSI, dans une configuration RAID, ce qui
permet de rcuprer les donnes en cas de panne dun priphrique. Le
premier lecteur physique peut tre assez petit (moins de 4 Go), car il ne
contiendra que le systme dexploitation Linux, lapplication de base de
donnes et trs peu dautres choses. Le second lecteur (volume RAID) sera
entirement ddi aux journaux de transactions des bases de donnes. Le troi-
sime peut alors tre entirement ddi aux units de base de donnes. Si lon
souhaite excuter des bases de donnes multiples sur une seule machine, il
vaut mieux placer chaque base de donnes dans sa propre unit, sur un disque
spar : ainsi les requtes nobligeront pas le disque faire des recherches sur
deux units situes sur le mme disque.
Installer Sybase
Aprs la mise jour de la machine et linstallation de Linux, telles que nous
venons de les dcrire, rassemblons quelques informations dont nous aurons
besoin pour installer Sybase. Dabord, il faut savoir quelles units correspon-
dent aux partitions sur les lecteurs physiques dj initialiss. Le programme
fdisk affiche toutes les informations relatives aux partitions sur un lecteur
physique. Voici un exemple dutilisation du programme fdisk :
# fdisk /dev/sda
7KHQXPEHURIF\OLQGHUVIRUWKLVGLVNLVVHWWR
7KHUHLVQRWKLQJZURQJZLWKWKDWEXWWKLVLVODUJHUWKDQ
DQGFRXOGLQFHUWDLQVHWXSVFDXVHSUREOHPVZLWK
VRIWZDUHWKDWUXQVDWERRWWLPHHJ/,/2
ERRWLQJDQGSDUWLWLRQLQJVRIWZDUHIURPRWKHU26V
HJ'26)',6.26)',6.
Nous avons besoin de savoir quelles partitions ont t rserves pour la parti-
tion matre et la partition sybsystemprocs. Supposons que ce sont les parti-
tions 5 et 6 du premier disque SCSI, correspondant respectivement aux
fichiers spciaux dunits /dev/sda5 et /dev/sda6. Nous devons aussi savoir
quelles autres partitions ont t rserves sur le second et le troisime lecteur
physique. Supposons que ce soient respectivement /dev/sdb1 et /dev/sdc1.
Se connecter sur la console Linux en tant que root et installer les paquetages
RPM par la commande suivante :
'R\RXZDQWWKLVVFULSWWRSURFHHGE\LQVWDOOLQJDQDFFRXQW">\Q@y
*URXSV\EDVHQRWIRXQG&UHDWHLWQRZ">\Q@y
*URXSDQGSHUPLVVLRQVIRURSWV\EDVHDUHVHW
8VHUV\EDVHQRWIRXQG&UHDWHLWQRZ">\Q@y
&KDQJLQJSDVVZRUGIRUXVHUV\EDVH
1HZ81,;SDVVZRUG
5HW\SHQHZ81,;SDVVZRUG
SDVVZGDOODXWKHQWLFDWLRQWRNHQVXSGDWHGVXFFHVVIXOO\
8VHUV\EDVHLVDYDLODEOHUHOHDVHXVHULGLVVHW
7KLVDFWLRQLVWKHGHIDXOWZKHQ\RXORJLQIRUWKHILUVWWLPH
5HUXQQLQJWKLVFRQILJXUDWLRQSURFHGXUHFDQEHLQLWLDWHGE\UHPRYLQJ
WKHUHDGPHDQGV\ELQLWILOHVIURPWKH
V\EDVH
LQVWDOODWLRQ
GLUHFWRU\
Figure 51
Invite de sybinstall.sh
SQSH
Le premier paquetage est une application X11, en lignes de commande, appe-
le sqsh (prononcer squish), disponible sur http://www.voicenet.com/
gray/sqsh.html sous la licence gnrale publique GNU (GPL). Cest une
application qui fournit une interface en lignes de commande, destine
excuter des instructions SQL, mais beaucoup plus agrable que le
programme isql inclus dans Sybase il vaut la peine de lessayer quand on est
administrateur dun serveur, dans un shell SQL. On peut tlcharger les sour-
ces et les paquetages binaires sur ce site.
Un conseil : rcuprez le paquetage binaire et installez-le quelque part dans le
chemin du systme. Une fois install, on peut lutiliser pour se connecter la
base de donnes depuis la ligne de commande, au lieu de se servir de isql. Ce
programme apporte de nombreuses amliorations isql, par exemple :
message de fin des commandes, avec dition de la ligne de commande ;
variables ;
redirection des commandes;
travaux en tches de fond ;
contrle des travaux ;
historique.
Bibliothques de dveloppement
Les bibliothques de dveloppement constituent dautres paquetages intres-
sants du logiciel client. Elles font la soudure entre le logiciel que lon
dveloppe et le serveur Sybase. Sybase 11.0.3.3 va de conserve avec lOpen
Client Library pour C mais, mme si lon ne dveloppe pas en C, il se peut
que lon ait lusage de ces bibliothques.
Le dveloppement avec Perl produit des scripts rapides et puissants qui
permettent de modifier des lments dans la base de donnes. Il y a actuelle-
ment deux interfaces Perl pour Sybase. La premire, et la plus ancienne, est le
paquetage sybperl, trs proche de lAPI C fournie avec lOpen Client Library
pour les applications Perl. Le second paquetage est un pilote DBI qui corres-
pond linterface DBI Perl. Ces paquetages prsentent des avantages et des
inconvnients. Le paquetage DBI permet de dvelopper du code Perl qui peut
tablir des connexions toutes les base de donnes dotes dun pilote DBI
(qui ressemble ODBC ou JDBC). Cependant, comme DBI est gnrique, il
y a certaines choses quil ne peut pas faire. Le paquetage sybperl donne toutes
les possibilits dont on dispose sur un serveur Sybase avec lOpen Client
Library de Sybase, mais il ne peut se connecter que sur un serveur Sybase.
Ces deux paquetages sont disponibles sur les sites CPAN. Essayer
http://www.cpan.org/, ou un site miroir.
Si lon prfre dvelopper en Java, Sybase propose un pilote JDBC crit en
pur Java, jConnect, sur son site http://www.sybase.com/products/internet/
jconnect/. Ce pilote fonctionne sur toute plate-forme qui dispose dune
machine virtuelle Java.
Configuration
Nous pouvons maintenant poursuivre la configuration, comme la spcifie le
script shell dinstallation. Nous allons nous connecter en tant quutilisateur
Sybase, puis excuter lapplication /opt/sybase/install/sybinit. Elle nous
proposera plusieurs crans de menus pour progresser dans linstallation.
Sur ma machine, quipe de Red Hat version 6.1, sybinit a des problmes
pour charger les fichiers de localisation. Je mtait servi de Red Hat 5.2 aupa-
ravant sans difficult, il sagit donc dun nouveau problme introduit avec
Red Hat 6.1., que jai essay danalyser. Ma conclusion est que les variables
denvironnement $LANG et $LC_ALL sont lorigine du problme. Il semble
que Sybase ne comprenne pas la localisation en_US indique dans ces varia-
bles. Il suffit de dsactiver ces variables pour que Sybase se serve de la valeur
par dfaut, US_english.
Une meilleure solution serait peut-tre dditer le fichier texte
/opt/sybase/locales/locales.dat. Ce fichier dfinit une mthode de reprsenta-
tion des chanes locales dans LANG et LC_ALL, que Sybase comprend.
Actuellement, il semble que Sybase a, sur la plate-forme Linux, ses propres
dfinitions locales des chanes ENGLISH, FRENCH, GERMAN et JAPANESE.
Il suffit dditer ce fichier et de changer les lignes :
[linux]
locale = ENGLISH, us_english, iso_1
locale = FRENCH, french, iso_1
locale = GERMAN, german, iso_1
locale = JAPANESE, japanese, eucjis
locale = default, us_english, iso_1
en :
[linux]
locale = en_US, us_english, iso_1
locale = ENGLISH, us_english, iso_1
locale = fr_FR, french, iso_1
6<%,1,7
5HOHDVHGLUHFWRU\RSWV\EDVH
(GLW9LHZ,QWHUIDFHV)LOH
&RQILJXUHD6HUYHUSURGXFW
&RQILJXUHDQ2SHQ&OLHQW6HUYHUSURGXFW
&WUOD$FFHSWDQG&RQWLQXH&WUO[([LW6FUHHQ"+HOS
(QWHUWKHQXPEHURI\RXUFKRLFHDQGSUHVVUHWXUQ
Figure 52
cran initial de lapplication sybinit
SQL Server et Backup Server seront configurs dans lordre pour que le
serveur de base de donnes Sybase fonctionne correctement. Configurer
dabord SQL Server en appuyant sur la touche 1, puis le serveur de sauve-
garde en appuyant sur la touche 2, dans lcran de la figure 5.3.
Lorsquil sagit dune nouvelle installation de SQL Server, choisir
1. Configure a new SQL Server dans lcran de la figure 5.4. La mme appli-
cation (sybinit) pourra tre utilise ultrieurement, en choisissant 2. Configure
&21),*85(6(59(5352'8&76
3URGXFWV
3URGXFW'DWH,QVWDOOHG'DWH&RQILJXUHG
64/6HUYHU6HS
%DFNXS6HUYHU6HS
&WUOD$FFHSWDQG&RQWLQXH&WUO[([LW6FUHHQ"+HOS
(QWHUWKHQXPEHURI\RXUFKRLFHDQGSUHVVUHWXUQ
Figure 53
cran de choix du produit (sybinit)
1(:25(;,67,1*64/6(59(5
&RQILJXUHDQHZ64/6HUYHU
&RQILJXUHDQH[LVWLQJ64/6HUYHU
8SJUDGHDQH[LVWLQJ64/6HUYHU
&WUOD$FFHSWDQG&RQWLQXH&WUO[([LW6FUHHQ"+HOS
(QWHUWKHQXPEHURI\RXUFKRLFHDQGSUHVVUHWXUQ
Figure 54
cran de configuration de SQL Server (sybinit)
an existing SQL Server, pour modifier les options que nous allons maintenant
initialiser.
cette tape de linstallation, il faut donner un nom au serveur SQL Server
(figure 5.5). Ce nom est simplement un nom logique qui indique aux clients
de cette machine quel SQL Server physique se connecter rellement
(adresse IP et numro de port). Si lon envisage dexcuter des instances
multiples de SQL Server sur la mme machine (ou si lon partage le fichier de
configuration des interfaces entre des serveurs et des clients multiples), les
serveurs doivent avoir des noms diffrents. Beaucoup de clients utilisent
SYBASE, en tant que nom de serveur SQL Server par dfaut, pour se connec-
ter : on peut ainsi laisser le nom de SYBASE. Pour changer le nom, choisir 1
et entrer le nouveau nom, puis appuyer sur Ctrl-A pour continuer.
Les actions proposes la figure 5.6 seffectuent dans lordre de la liste. La
premire tape est dajouter une entre au fichier des interfaces. Sybase se
sert de ce fichier texte (situ dans /opt/sybase/interfaces) pour indiquer aux
clients et au serveur ladresse IP et le port utiliser. Il contient la correspon-
dance entre les noms logiques et les paramtres, de telle sorte que les clients
puissent les utiliser pour se connecter aux serveurs.
$''1(:64/6(59(5
64/6HUYHUQDPH6<%$6(
&WUOD$FFHSWDQG&RQWLQXH&WUO[([LW6FUHHQ"+HOS
(QWHUWKHQXPEHURI\RXUFKRLFHDQGSUHVVUHWXUQ
Figure 55
cran de cration dun nouveau SQL Server (sybinit)
64/6(59(5&21),*85$7,21
&21),*85(6(59(5
6,17(5)$&(6),/((175<,QFRPSOHWH
0$67(5'(9,&(&21),*85$7,21,QFRPSOHWH
6<%6<67(0352&6'$7$%$6(&21),*85$7,21,QFRPSOHWH
6(7(5525/2*/2&$7,21,QFRPSOHWH
&21),*85('()$8/7%$&.836(59(5,QFRPSOHWH
&21),*85(/$1*8$*(6,QFRPSOHWH
&21),*85(&+$5$&7(56(76,QFRPSOHWH
&21),*85(625725'(5,QFRPSOHWH
$&7,9$7($8',7,1*,QFRPSOHWH
&WUOD$FFHSWDQG&RQWLQXH&WUO[([LW6FUHHQ"+HOS
(QWHUWKHQXPEHURI\RXUFKRLFHDQGSUHVVUHWXUQ
Figure 56
cran de configuration de SQL Server (sybinit)
6(59(5,17(5)$&(6),/((175<6&5((1
6HUYHUQDPH6<%$6(
5HWU\&RXQW
5HWU\'HOD\
$GGDQHZOLVWHQHUVHUYLFH
&WUOD$FFHSWDQG&RQWLQXH&WUO[([LW6FUHHQ"+HOS
(QWHUWKHQXPEHURI\RXUFKRLFHDQGSUHVVUHWXUQ
Figure 57
cran de configuration du fichier dinterfaces de SQL Server (sybinit)
(',77&36(59,&(
+RVWQDPH$GGUHVVZDQGHUHUGHIWHFKFRP
3RUW
1DPH$OLDV
'HOHWHWKLVVHUYLFHIURPWKHLQWHUIDFHVHQWU\
&WUOD$FFHSWDQG&RQWLQXH&WUO[([LW6FUHHQ"+HOS
(QWHUWKHQXPEHURI\RXUFKRLFHDQGSUHVVUHWXUQ
Figure 58
cran de configuration du fichier dinterfaces du TCP Service Listener de SQL Server (sybinit)
:$1'(5(5RQZDQGHUHUGHIWHFKFRP
6HUYLFHV
TXHU\WFS
:$1'(5(5
TXHU\WFSHWKHUZDQGHUHUGHIWHFKFRP
/2&$/6(59(5RQORFDOKRVW
6HUYLFHV
TXHU\WFS
/2&$/6(59(5
TXHU\WFSHWKHUORFDOKRVW
6<%$6(RQZDQGHUHUGHIWHFKFRP
6HUYLFHV
TXHU\WFS
TXHU\WFS
PDVWHUWFS
PDVWHUWFS
6<%$6(
TXHU\WFSHWKHUZDQGHUHUGHIWHFKFRP
TXHU\WFSHWKHUORFDOKRVW
PDVWHUWFSHWKHUZDQGHUHUGHIWHFKFRP
PDVWHUWFSHWKHUORFDOKRVW
Figure 59
Fichier dinterfaces cr par lapplication sybintit
([HFXWHWKH64/6HUYHU&RQILJXUDWLRQQRZ "y
:$51,1*
RSWV\EDVHPDVWHUGDW
LVDUHJXODUILOHZKLFKLVQRW
UHFRPPHQGHGIRUD6HUYHUGHYLFH
3UHVVUHWXUQ!WRFRQWLQXH
5XQQLQJWDVNFUHDWHWKHPDVWHUGHYLFH
%XLOGLQJWKHPDVWHUGHYLFH
'RQH
7DVNVXFFHHGHGFUHDWHWKHPDVWHUGHYLFH
5XQQLQJWDVNXSGDWHWKH64/6HUYHUUXQVHUYHUILOH
7DVNVXFFHHGHGXSGDWHWKH64/6HUYHUUXQVHUYHUILOH
5XQQLQJWDVNERRWWKH64/6HUYHU
ZDLWLQJIRUVHUYHU
6<%$6(
WRERRW
7DVNVXFFHHGHGERRWWKH64/6HUYHU
5XQQLQJWDVNFUHDWHWKHV\EV\VWHPSURFVGDWDEDVH
V\EV\VWHPSURFVGDWDEDVHFUHDWHG
7DVNVXFFHHGHGFUHDWHWKHV\EV\VWHPSURFVGDWDEDVH
5XQQLQJWDVNLQVWDOOV\VWHPVWRUHGSURFHGXUHV
'RQH
7DVNVXFFHHGHGLQVWDOOV\VWHPVWRUHGSURFHGXUHV
5XQQLQJWDVNVHWSHUPLVVLRQVIRUWKH
PRGHO
GDWDEDVH
'RQH
7DVNVXFFHHGHGVHWSHUPLVVLRQVIRUWKH
PRGHO
GDWDEDVH
5XQQLQJWDVNVHWWKHGHIDXOWFKDUDFWHUVHWDQGRUGHIDXOWVRUWRUGHU
IRUWKH64/6HUYHU
6HWWLQJWKHGHIDXOWFKDUDFWHUVHWWRLVRB
6RUWRUGHU
ELQDU\
KDVDOUHDG\EHHQLQVWDOOHG
&KDUDFWHUVHW
LVRB
LVDOUHDG\WKHGHIDXOW
6RUWRUGHU
ELQDU\
LVDOUHDG\WKHGHIDXOW
7DVNVXFFHHGHGVHWWKHGHIDXOWFKDUDFWHUVHWDQGRUGHIDXOWVRUWRUGHU
IRUWKH64/6HUYHU
5XQQLQJWDVNVHWWKHGHIDXOWODQJXDJH
6HWWLQJWKHGHIDXOWODQJXDJHWRXVBHQJOLVK
/DQJXDJH
XVBHQJOLVK
LVDOUHDG\WKHGHIDXOW
7DVNVXFFHHGHGVHWWKHGHIDXOWODQJXDJH
&RQILJXUDWLRQFRPSOHWHGVXFFHVVIXOO\
3UHVVUHWXUQ!WRFRQWLQXH
Figure 510
Processus dinstallation et de mise en route du serveur de base de donnes Sybase
%$&.836(59(5&21),*85$7,21
%DFNXS6HUYHUHUURUORJRSWV\EDVHLQVWDOOEDFNXSORJ
(QWHU0RGLI\%DFNXS6HUYHULQWHUIDFHVILOHLQIRUPDWLRQ
%DFNXS6HUYHUODQJXDJHXVBHQJOLVK
%DFNXS6HUYHUFKDUDFWHUVHWLVRB
%DFNXS6HUYHUWDSHFRQILJXUDWLRQILOHRSWV\EDVHEDFNXSBWDSHFIJ
&WUOD$FFHSWDQG&RQWLQXH&WUO[([LW6FUHHQ"+HOS
(QWHUWKHQXPEHURI\RXUFKRLFHDQGSUHVVUHWXUQ
Figure 511
cran de configuration du serveur de sauvegarde dapplications sybinit
1. Le terme anglais farm ( ferme ), quelque peu inhabituel en ce domaine, est adquat : il dsigne
bien un ensemble dentits, diffrentes les unes des autres mais dconomie semblable, qui prennent
tout leur sens au travers dune relation dynamique lensemble. N.d.T.
([HFXWHWKH%DFNXS6HUYHUFRQILJXUDWLRQQRZ "\
5XQQLQJWDVNXSGDWHWKH%DFNXS6HUYHUUXQVHUYHUILOH
7DVNVXFFHHGHGXSGDWHWKH%DFNXS6HUYHUUXQVHUYHUILOH
5XQQLQJWDVNERRWWKH%DFNXS6HUYHU
ZDLWLQJIRUVHUYHU
6<%B%$&.83
WRERRW
7DVNVXFFHHGHGERRWWKH%DFNXS6HUYHU
&RQILJXUDWLRQFRPSOHWHGVXFFHVVIXOO\
3UHVVUHWXUQ!WRFRQWLQXH
Figure 512
Processus de dmarrage initial du serveur de sauvegarde
export SYBASE=/opt/sybase
Attention : certains scripts et serveurs, qui accdent au serveur via les biblio-
thques client C ou Perl, vont aussi rechercher cette variable denvironne-
ment. Si les scripts CGI sybperl ou les applications clientes ne peuvent pas se
connecter au serveur, vrifiez quils disposent bien de la variable $SYBASE
dans leur environnement.
#cd /etc/rc.d/rc0.d
#ln s. ./init.d/sybase K05sybase
#cd /etc/rc.d/rc3.d
#ln s. ./init.d/sybase S95sybase
#cd /etc/rc.d/rc5.d
#ln s. ./init.d/sybase S95sybase
#cd /etc/rc.d/rc6.d
#ln s. ./init.d/sybase K05sybase
Aprs excution de ces commandes, toutes les bases de donnes Sybase et les
serveurs de sauvegarde de la machine seront dmarrs au prochain boot.
Pour crer une unit en tant que fichier du systme de fichiers, il suffit de
spcifier dans PHYSNAME le chemin du fichier crer ; pour crer une unit
sur une unit Linux (telle quune partition dun lecteur physique), indiquer
dans PHYSNAME le chemin du fichier virtuel de lunit ; le paramtre NAME
de disk init est un nom de chane unique qui rfrence lunit de base de
donnes sur ce serveur et VDEVNO le numro dunit de la nouvelle unit : il
devra tre suprieur au numro le plus lev connu du serveur. On peut trou-
ver les units en cours dutilisation et leurs numros avec la procdure stoc-
ke sp_helpdevice. SIZE est la taille de la nouvelle unit, un nombre entier de
blocs de 2048 octets. Quand on indique la taille dune unit de base de
donnes qui va occuper une partition, il faut sassurer quelle est bien gale
la taille de la partition elle-mme, car on ne peut avoir quune seule unit de
base de donnes sur une partition.
Maintenant, deux nouvelles units sont disponibles pour les bases de donnes
utilisateur de SQL Server. La premire, appele xact, contiendra les journaux
de transaction. Il est prfrable de placer les journaux de transaction sur un
fichier physique spar de la base de donnes : si lun des fichiers physiques
est abm, on peut reconstruire la base de donnes partir de lautre fichier.
La seconde unit, appele data1, contiendra les tables de donnes de la base
de donnes. Elle se nomme data1 car cest la premire cre : on y ajoute des
units de base de donnes (ou des lecteurs physiques) au fur et mesure que
la base de donnes grandit.
La prochaine tape consiste crer rellement des bases de donnes utilisa-
teur, qui rsideront dans les nouvelles units : pour ce faire, utiliser la
commande SQL de cration de base de donnes. Cette commande doit tre
excute avec une connexion la base de donnes master (taper use master).
La syntaxe de cette commande est :
Une fois ce nom cr, on peut spcifier la base de donnes par dfaut
laquelle la connexion se fait. Si aucune base de donnes par dfaut nest
spcifie, lutilisateur de ce nom sera plac dans la base de donnes master.
En gnral, ce nest pas ce que lon souhaite, parce quun utilisateur normal
ne doit pas avoir le droit de modifier cette base de donnes. On utilise la
procdure stocke sp_defaultdb dans la base de donnes master pour spci-
fier dans quelle base de donnes un utilisateur sera plac immdiatement
aprs la connexion.
Utilisateurs et groupes
Dans les grandes bases de donnes, o lon peut rpartir les utilisateurs en
un nombre quantifiable de groupes ayant un ensemble de droits prcis sur
les objets de la base de donnes, il est intressant de crer des groupes et
dattribuer les autorisations aux groupes. Cela permet dajouter ou denle-
ver facilement un nom dutilisateur au systme sans avoir se souvenir des
autorisations particulires ni mettre jour chacun des objets auxquels
lutilisateur a accs.
Cest particulirement vrai en matire de gestion du personnel : les
employs sont interchangeables et, ce titre, ne peuvent offrir de garantie
lentreprise. Il en rsulte quajouter ou supprimer des utilisateurs dans une
base de donnes reprsente vite un travail dinformaticien plein temps. Il
y aura aussi, invariablement, le cas du nouvel employ qui aura vraiment
besoin de certains accs pour mener bien un projet critique, mais naura
pas les autorisations voulues. Si cette personne est classe dans un type
particulier dutilisateur (par exemple les ventes ), il suffira de crer un
nouvel utilisateur faisant partie du groupe ventes pour que toutes les
autorisations applicables ce groupe lui soient attribues.
Par exemple, les noms de connexion crs ci-dessus seront placs dans la
base user_data, avec les commandes suivantes, excutes dans isql :
Les groupes sont des ensembles dutilisateurs qui ont les mmes autorisa-
tions. En utilisant les groupes, on peut spcifier des autorisations qui reposent
sur le type des utilisateurs et, quand le nombre dutilisateurs augmente, ajou-
ter de nouveaux utilisateurs aux groupes, sans avoir changer les autorisa-
tions sur tous les objets de la base de donnes. Pour crer un nouveau groupe
dans une base de donnes, se placer dans la base de donnes et excuter la
procdure stocke sp_addgroup. Cette procdure, qui na quun paramtre, le
nom du nouveau groupe, cre le groupe. Pour crer un groupe nomm editors
dans la base de donnes user_data, on utilisera la commande :
Dans une base de donnes, un utilisateur peut, sans que ce soit obligatoire,
avoir le mme nom quun nom de connexion. Par exemple, le propritaire de
la base de donnes est un utilisateur spcial nomm dbo, mais le nom de
connexion sa est le dbo de toutes les bases de donnes. Pour ajouter un nom
de connexion qui sera dbo dune base de donnes particulire, ajouter dabord
ce nom comme il a t dcrit auparavant, puis crer un alias de lutilisateur
dbo. On le fait avec la procdure stocke sp_addalias : le nom de connexion
spcifi correspond lutilisateur spcifi pour la base de donnes courante.
Cette mme procdure stocke donne tous les alias dun utilisateur. Ainsi,
pour spcifier que le nom de connexion brad sera dbo de la base de donnes
user_data, on excutera les commandes suivantes dans isql, en tant quadmi-
nistrateur (sa) :
la limite, seul le dbo a lautorisation de faire nimporte quoi dans une base
de donnes. chaque objet (table, vue, procdure stocke ou colonne) de la
base de donnes est associ un ensemble dautorisations, pour chaque utilisa-
teur ou groupe. Le dbo a le droit daccorder des autorisations aux autres utili-
sateurs de la base de donnes pour certaines actions sur certains objets. La
procdure dattribution dautorisations un utilisateur ou un groupe leur
donne ou enlve cette autorisation (slection, mise jour, insertion,
Par exemple, ces commandes accordent au groupe editors le droit de lire les
donnes des tables auteurs, chapitres et livres il faut, bien sr, crer
dabord ces tables :
# /etc/rc.d/init.d/sybase status
On voit apparatre une ligne par serveur de base de donnes et par processeur
dont on dispose. La sortie fait tat de la machine qui excute un serveur de
base de donnes appel SYBASE et dun serveur de sauvegarde appel
SYB_BACKUP. Si seule la premire ligne apparat (USER PID...), cela signifie
que le serveur de base de donnes Sybase ne fonctionne pas. Pour le dmarrer,
excuter la commande :
/etc/rc.d/init.d/sybase start
Excuter ensuite la commande sybase status, une seconde fois, pour vrifier
sil fonctionne. Si ce nest pas le cas, vrifier le journal derreurs dans le
fichier indiqu sybinit. Le fichier par dfaut est /opt/sybase/install/errorlog.
Remdier toutes les erreurs signales et redmarrer le serveur avec la
commande sybase start.
Quand on a la certitude que le serveur de base de donnes fonctionne, on peut
sy connecter comme lun des trois utilisateurs qui ont t crs. Pour se
connecter au serveur, depuis la ligne de commande, excuter la commande :
et entrer le mot de passe. On doit alors voir linvite 1>. Elle indique que lon
peut envoyer une nouvelle requte la base de donnes et que lon est sur la
premire ligne de la requte. On peut entrer une requte en SQL avec autant
de retours la ligne que lon veut : chaque fois que lon appuie sur la touche
Entre, le numro sincrmente de un dans linvite. Quand on est satisfait de
la commande, on tape go sur une nouvelle ligne puis on appuie sur la touche
Entre. Isql envoie alors la requte au serveur et affiche les rsultats lcran.
Important. Beaucoup de commandes Sybase produisent une sortie plus large que 80
colonnes. Si on les excute dans une fentre xterm ou une console qui dispose de 120
colonnes au moins, la sortie sera beaucoup plus lisible. Dans certains exemples qui
suivent, le code a t modifi lgrement, pour obtenir une prsentation en colonnes
qui en facilite la lecture.
1> sp_help
2> go
1DPH 2ZQHU 2EMHFWBW\SH
V\VDOWHUQDWHV GER V\VWHPWDEOH
V\VDWWULEXWHV GER V\VWHPWDEOH
V\VFROXPQV GER V\VWHPWDEOH
V\VFRPPHQWV GER V\VWHPWDEOH
V\VFRQVWUDLQWV GER V\VWHPWDEOH
V\VGHSHQGV GER V\VWHPWDEOH
V\VJDPV GER V\VWHPWDEOH
V\VLQGH[HV GER V\VWHPWDEOH
V\VNH\V GER V\VWHPWDEOH
V\VORJV GER V\VWHPWDEOH
V\VREMHFWV GER V\VWHPWDEOH
V\VSDUWLWLRQV GER V\VWHPWDEOH
V\VSURFHGXUHV GER V\VWHPWDEOH
V\VSURWHFWV GER V\VWHPWDEOH
V\VUHIHUHQFHV GER V\VWHPWDEOH
V\VUROHV GER V\VWHPWDEOH
V\VVHJPHQWV GER V\VWHPWDEOH
V\VWKUHVKROGV GER V\VWHPWDEOH
V\VW\SHV GER V\VWHPWDEOH
V\VXVHUPHVVDJHVGER V\VWHPWDEOH
V\VXVHUV GER V\VWHPWDEOH
UHWXUQVWDWXV
Elle montre tous les objets (ici, les tables systme) de la base de donnes,
ainsi que leur propritaire. On peut alors excuter sp_help avec lune de ces
tables en paramtre et lon obtient la liste des colonnes de la table. Par exem-
ple, si lon excute sp_help sysusers, on obtient la liste que voici :
'DWDBORFDWHGBRQBVHJPHQW :KHQBFUHDWHG
V\VWHP -DQ$0
URZVDIIHFWHG
NH\W\SH REMHFW UHODWHGBREMHFW REMHFWBNH\V UHODWHGBNH\V
IRUHLJQ V\VDOWHUQDWHV V\VXVHUV VXLG
VXLG
FRPPRQ V\VREMHFWV V\VXVHUV XLG
XLG
FRPPRQ V\VSURWHFWV V\VXVHUV XLG
XLG
FRPPRQ V\VW\SHV V\VXVHUV XLG
XLG
SULPDU\ V\VXVHUVQRQH VXLG
2EMHFWLVQRWSDUWLWLRQHG
UHWXUQVWDWXV
Elle nous donne toutes sortes dinformations dont nous navons pas ncessai-
rement besoin, mais nous indique les colonnes de la table et leur type. Elle
indique galement quels sont les index de cette table, et sur quelles colonnes
portent ces index.
Commenons crer nos propres objets en crant une nouvelle table. Soit, par
exemple, un site web utilisateur qui autorisera les connexions avec un nom
dutilisateur et un mot de passe. Il faut videmment connatre les utilisateurs
un instant donn, ainsi que leur mot de passe. Nous sommes aussi, probable-
ment, intresss par certaines informations personnelles telles que leur nom,
leur adresse postale et leur adresse e-mail.
Pour ranger toutes ces informations et les utiliser facilement, nous crons la
table suivante :
Remarquez que lon obtient une erreur en ajoutant un autre utilisateur brad
avec le mme nom dutilisateur. Cest parce que nous avons ajout
username une clause PRIMARY KEY, qui implique que ce champ soit unique.
Sybase refuse dinsrer la mme cl deux fois dans ce champ.
Nous allons maintenant extraire quelques informations de la base de donnes,
par exemple, la liste de tous les utilisateurs, trie sur le nom. La commande
suivante nous sert cela :
Lopration de tri sur cette table prendrait un temps assez long si la table tait
bien remplie, car nous navons pas dclar dindex sur cette colonne. Un
index sur une colonne rend les tris et les rfrences la colonne incroyable-
ment plus rapides. Une bonne conception de base de donnes exige de dcider
quelles colonnes indexer. On ne peut pas se permettre dindexer chaque
colonne car cela augmente la charge sur la base de donnes, et joue la fois
sur la taille (pour conserver les arbres dindex) et sur la vitesse (pour mettre
jour les arbres dindex quand les tables changent). Pour crer un index sur les
colonnes lname et fname de sorte que le rapport prcdent soit plus rapide, on
excute la commande :
Finalement, pour supprimer cette table qui ne nous intresse pas vraiment
ce nest quun test on passe la commande :
ERRNBWLWOH FKDSWHUBQXPFKDSWHUBWLWOHOQDPHIQDPH
7KH:LOG'DWDEDVH0RGHO &KDSWHU 8VHU -RH
7KH:LOG'DWDEDVH0RGHO &KDSWHU 8VHU -RH
7KH:LOG'DWDEDVH0RGHO &KDSWHU 8VHU 6DOO\
Problmes
Cette section traite de quelques problmes qui surviennent quand on se sert de
Sybase. Certains dentre eux sont gnriques de Sybase et affectent toutes les
plates-formes, dautres sont spcifiques de la version Linux de Sybase.
Si lon dcide dutiliser des colonnes identit, il faut tre prudent. Dabord,
Sybase ne permet pas dinsrer ses propres valeurs dans la colonne identit
dune table, sauf si on le spcifie lavance. Pour indiquer cette option
Sybase, excuter la commande suivante :
Aprs avoir excut cette commande, on peut insrer des valeurs dans la
colonne identit, tout comme dans nimporte quelle colonne NUMERIC.
Remettre loption identity_insert off pour cette table quand on en a termin.
Quand identity_insert est remise off, Sybase redmarre la production de
valeurs pour les colonnes identit une valeur gnre suprieure la valeur
maximum de la colonne courante.
Si lon utilise des colonnes identit dans Sybase pour des valeurs de temps, on
peut remarquer qu partir dun certain point la colonne identit commence
contenir des nombres vraiment trs grands, avec un cart important entre les
nombres successifs. Cela est d au fait que Sybase se sert dune optimisation
appele le moment critique de lidentit. Quand on insre la premire ligne
dans une table avec une colonne identit, Sybase rserve en ralit un ensem-
ble de nombres pour les affecter plus rapidement lors dinsertions ultrieures
cest le moment critique de lidentification. En effet, si la base de donnes
est arrte avec loption nowait, ou bien en cas durgence, Sybase ne sait pas
si tous les numros de lensemble ont dj t utiliss. Par consquent, il red-
marre en allouant un autre ensemble de nombres, do lcart important dans
la srie des numros assigns. On peut rsoudre ce problme en ditant le
fichier SYBASE.cfg dans /opt/sybase et en affectant une faible valeur au
facteur de moment critique, mais la seule manire dviter que ce problme
ne se produise est de sassurer que la base de donnes est toujours arrte
correctement (voir, plus loin, les scripts rc de Sybase).
Un dernier point important : la variable globale, bien spciale, @@IDENTITY.
Cest une variable globale, affecte chaque session, qui contient toujours la
dernire valeur didentit assigne lors de la dernire insertion : elle donne
donc le nombre qui a t assign en dernier, loccasion dune insertion dans
une table ayant une colonne didentit.
Voici un exemple illustr par la figure 5.13.
(1 row affected)
Figure 513
Exemple de session isql qui illustre lusage de la variable @@IDENTITY
Conformit SQL
Un problme trs important : Sybase 11.0.3.3 ne supporte pas directement la
syntaxe JOIN dans la clause FROM des instructions SQL. La plupart des
nouvelles bases de donnes permettent de joindre deux tables lies par une
relation de cl primaire ou trangre dans une clause JOIN. Sybase propose la
mme fonctionnalit quune clause de jointure, mais celle-ci sappuie sur les
oprateurs *=, = et =* dans la clause WHERE. Cette limite nest pas un vrai
dfaut, mais elle engendre une certaine gne lors de la migration dune base
de donnes dune plate-forme une autre. Toutes les instructions SQL
migrer doivent tre converties dans une syntaxe base doprateurs au lieu de
la syntaxe de JOIN.
La figure 5.14 prsente une base de donnes imaginaire qui garde lhistorique
des auteurs de ce livre, chapitre par chapitre. Comme on le voit, il ny a que
deux tables, lune appele auteurs et lautre chapitres. La table des chapitres
dfinit un lien rfrentiel vers la table des auteurs, de manire ce que chaque
chapitre corresponde un auteur dfini dans la table des auteurs.
Figure 514
Code SQL pour crer deux tables lies
INSERT INTO authors (fname, lname, initial) VALUES ('Brad', 'Dietrich', 'W')
INSERT INTO chapters (chapter_number, author_lname, title)
VALUES (6, 'Dietrich', 'Sybase')
Figure 515
Code SQL pour remplir les tables
Dans la figure 5.15, on renseigne la table auteurs avec le nom de lauteur dun
chapitre, et la table des chapitres avec le titre du chapitre et lauteur du chapi-
tre. Si nous nutilisons pas, pour author_lname, une valeur pour laquelle nous
aurons dj cr une ligne dans la table des auteurs, Sybase met un message
derreur. Cest leffet souhait quand on stipule que la colonne se rfre une
autre colonne de la table des auteurs. La plupart des bases de donnes actuel-
les utilisent la syntaxe JOIN dans la clause FROM de linstruction SELECT
pour retrouver les informations de ces deux tables. Linstruction de la figure
5.16 est linstruction qui servirait dans la plupart des bases de donnes :
Figure 516
Code SQL pour retrouver le titre et lauteur dun chapitre en utilisant la syntaxe JOIN
Figure 517
Code SQL pour retrouver le titre et lauteur dun chapitre en utilisant la syntaxe de Sybase
Tableau 51
Correspondance entre la syntaxe de JOIN et les oprateurs de Sybase
INNER JOIN =
LEFT JOIN *=
RIGHT JOIN =*
Environnement dexcution
On trouve une description vraiment fouille des rglages de Sybase SQL
Server dans la documentation des paquetages RPM, ainsi que sur le site web
de Sybase http://sybooks.sybase.com/. Il y a notamment deux sujets que lon
se doit daborder dans ce chapitre : cela amliorera sensiblement les perfor-
mances de Sybase SQL Server pour Linux, et vous pargnera des migraines.
Il reste que la mise jour de cette valeur pose un lger problme. Sybase a t
dvelopp pour fonctionner sur des machines SMP, et donc il alloue toujours
une grande part de la mmoire au titre de la mmoire partage, de sorte que
tous ses propres processus (sur chaque processeur) puissent accder sa
mmoire. Linux, dans sa configuration par dfaut, nautorise pas les segments
de mmoire partage dpasser la taille denviron 32 Mo. Heureusement,
avec lavnement du noyau 2.2.x de Linux, cette valeur par dfaut peut tre
change lors du boot au travers du fichier systme /proc/sys. Pour stipuler un
segment de mmoire partage plus grand, excuter la commande suivante :
Elle fait passer la taille maximale du segment de mmoire partage 128 Mo.
Le maximum thorique que Linux autorise est 1 Go.
Il faut ajouter ce qui suit, quelque part dans vos scripts rc, de sorte que cela se
produise lors du boot, avant que le serveur Sybase ne soit dmarr : ajouter
ceci dans le script /etc/rc.d/init.d/sybase de sorte quil se lit comme :
start)
echo n "Setting Shared Memory Max to 128MB ... "
echo 134217728 > /proc/sys/kernel/shmmax
echo "done"
echo -n "Starting Sybase ASE ... "
( cd ${SYBASE}/install ;
unset LANG ; unset LC_ALL ;
Scripts rc de Sybase
Malheureusement, le script rc fourni par Sybase (/etc/rc.d/init.d/sybase)
provoque larrt de Sybase SQL Server, avec nowait, quand on lui demande
de sarrter. Si lon se sert de colonnes identit (colonne entire incrmenta-
tion automatique de Sybase), cela peut tre cause dennuis dus de grands
carts entre les valeurs de ces colonnes. La solution ce problme est de
changer le script rc pour arrter Sybase SQL Server avec loption wait, au lieu
de nowait. Voici ce quil faut modifier :
stop)
echo -n "Shuting down Sybase ASE configured servers: "
killproc dataserver
killproc backupserver
# Add your own openserver applications.
echo
;;
stop)
echo -n "Stopping Sybase SQL Server"
/opt/sybase/bin/isql -Usa -P******* -S$DSQUERY <<EOSQL
shutdown SYB_BACKUP with nowait
go
shutdown
go
exit
EOSQL
echo
;;
Cest une menace potentielle pour la scurit, puisque le mot de passe sa est
stock dans ce fichier. Bien protger ce fichier des indiscrets par la
commande chmod 700 /etc/rc.d/init.d/sybase. Seul lutilisateur root pourra
excuter ce fichier, et aucun autre utilisateur ne pourra le lire, lcrire ou
lexcuter.
Tempdb
Sybase se sert dune base de donnes appele tempdb, qui gre toutes les
tables temporaires dont il se sert pour produire les requtes complexes telles
que les GROUP BY, ORDER BY ou les jointures. Cette base de donnes,
dans la configuration par dfaut de Sybase SQL Server, est une base de
donnes de 2 Mo sur lunit master. Je trouve personnellement cette base de
donnes trop petite (jai rencontr des erreurs lies au manque despace) et
trop lente. Beaucoup de gens recommandent de la placer sur un disque RAM
pour la rendre plus rapide, de sorte quelle puisse dpasser la taille de 2 Mo.
Le noyau par dfaut de Red Hat 6.1 a une taille maximale par dfaut, celle des
disques RAM de 4 Mo. Si vous souhaitez avoir un tempdb sur un disque
RAM de plus de 4 Mo, il faut diter le fichier /etc/lilo.conf et ajouter la ligne
suivante la section du noyau de dmarrage, avant dexcuter la commande
lilo pour rinstaller LILO :
append=ramdisk_size=<size in KB>
Supposons que lon ait spcifi, dans /etc/lilo.conf, la taille du disque RAM
utiliser pour la base de donnes tempdb, on peut envisager dajouter cette
unit la base de donnes Sybase. Par consquent, pour que /dev/ram (le
disque RAM) soit une unit de la base de donnes, excuter la commande
suivante dans isql (sa).
# /opt/sybase/bin/isql -U sa
Password:
1> disk init name="tempdbdev", physname="/dev/ram", vdevno=4, size=10000
(Note: remplacer =10000 par le nombre de blocs de 2ko que vous
avez spcifi dans ramdisk_size dans le fichier /etc/lilo.conf file)
2> go
device segment
------------------------------ ----------------------------------------------
master default
master logsegment
master system
tempdbdev default
tempdbdev logsegment
tempdbdev system
(return status = 0)
1> sp_helpdb
2> testdb
3> go
The specified database does not exist.
(return status = 1)
1> sp_helpdb
2> tempdb
3> go
device segment
------------------------------ --------------------------------------------
master -- unused by any segments --
tempdbdev default
tempdbdev logsegment
tempdbdev system
(return status = 0)
Rsum
Ce chapitre a prsent linstallation et la configuration de Sybase SQL Server
sur Red Hat Linux 6.1. Sybase est un fidle partisan de la communaut Linux
et la prouv, en lui offrant ce serveur quelque peu ancien et en lui proposant
son serveur actuel aux mmes conditions quaux produits NT. Sybase SQL
Server 11.0.3.3 est un produit dj ancien et il lui manque certaines caractris-
tiques des produits les plus rcents tels que Oracle 8i mais, compte tenu du
prix et des performances, il a contribu au succs de beaucoup de projets
antrieurs que jai mens. Comme je lai dit au dbut de ce chapitre, jai
travaill sur une base de donnes vraiment importante pour une socit, sans
quil soit question dargent, et Sybase a parfaitement relev le dfi.
Cela dit, je dois une grande part de ce succs lexcellence de lassistance et
de laide que jai obtenues de la plupart des acteurs en ligne cits dans ce
chapitre. La liste de diffusion de Sybase sur Linux comprend beaucoup de
bons DBA Sybase, de bonne volont, et de dveloppeurs qui rpondent trs
volontiers aux questions, et qui, en tout cas, mont apport des rponses.
FAQ
Q. Comment peut-on crer, dans Sybase, une colonne numrique qui sincr-
mente automatiquement ?
R. Sybase se sert des colonnes IDENTITY cette fin. La syntaxe pour crer
une colonne identit est : CREATE TABLE <tablename> ( table_id
NUMERIC(<size,>0) IDENTITY). Dhabitude, ces colonnes servent sassu-
rer quil existe une cl primaire sur la table : elles peuvent ainsi tre spci-
fies comme cls primaires. Voir, la section Problmes , quelques-uns
des problmes qui touchent les colonnes identit.
Q. Je veux juste une petite base de donnes est-ce que jai vraiment besoin
de lui consacrer deux lecteurs physiques ?
R. Non. Il est recommand, du point de vue de la restauration, que les jour-
naux de transaction et les donnes soient situs sur des supports physique
diffrents, pour le cas o lun de ces supports physiques tomberait en
panne. Si vous avez une petite base de donnes et que vous tes prt
prendre le risque dune panne dune unit, vous pouvez mettre les jour-
naux de transaction et les donnes sur la mme unit. En fait, vous pouvez
spcifier que vos fichiers de base de donnes soient des fichiers du
systme des fichiers, si vous ne voulez pas leur consacrer une partition
entire non formate.
Q. Les index de mes tables ne semblent pas fonctionner. Que se passe-t-il ?
R. Sybase ne reconstruit pas les index chaque fois que vous insrez de
nouvelles donnes dans une table. Loptimiseur de requte de Sybase se
voit impartir le travail, trs dur, de dcider si un index de la table est suffi-
samment jour, ou si un balayage de la table peut savrer plus rapide. Si
vous avez des tables dont les donnes changent, ou qui font lobjet
dajouts frquents, Sybase reconstruira priodiquement les index de ces
tables. On peut forcer la mise jour par la commande update statistics
<table> dans isql.
R. Sybase crit une entre dans le journal de transactions pour chaque tran-
saction excute sur la base de donnes. En cas de modification impor-
tante des donnes par des INSERT, UPDATE ou DELETE, on peut en arriver
remplir le fichier journal de transaction, ce qui conduit la commande
relle attendre, en arrire-plan, quil y ait assez despace dans le journal
pour continuer. Pour forcer lexcution de cette commande, se connecter
la base de donnes en tant quutilisateur sa et vider le journal de transac-
tions pour la base de donnes en cause (spcifier loption de mise jour
no_log si le journal est vraiment plein). Cela ne videra pas les transactions
en cours dexcution, si bien que si les changements se font en une seule
grande transaction (par exemple, DELETE FROM <table> sur une grosse
table) il se peut que cette action ne puisse pas se terminer parce quil ny a
pas assez despace dans le journal de transactions pour lcrire tout
entire. Dans ce cas, dcomposer la transaction en tches plus petites, les
excuter une une, puis vider le journal de transactions.
Q. Ny a-t-il aucun moyen de vider automatiquement le journal de
transactions ?
R. Si. Sybase offre la possibilit de tronquer le journal, chaque fois quil fait
un checkpoint. Un checkpoint est une vrification priodique de Sybase
qui sert voir si les donnes du fichier des donnes sont cohrentes avec
ce quelles devraient tre. Il se produit toutes les deux secondes. On peut
indiquer Sybase de vider le journal de transactions ce moment, en
excutant la commande suivante, connect en tant que sa dans la base de
donnes master :
Dans ce chapitre
Prparer linstallation de DB2 sur une
station de travail Red Hat
Installer DB2
Configurer le centre de contrle
Installer un client DB2
Configurer un client DB2 pour
communiquer avec un serveur DB2
Introduction
Dans un monde qui semble repousser de jour en jour ses frontires tout en se
concentrant, il devient important de disposer de bases de donnes capables
dembrasser au mieux tout ce quil contient. Une base de donnes
universelle , pour mriter ce titre, se doit justement dtre : universelle.
DB2 version 6.1 est vraiment une base de donnes universelle !
Voyons cela de plus prs :
Universelle quant aux applications de gestion de datawarehouse, daide
la dcision, de recherche approfondie de donnes, de systmes transac-
tionnels (OLTP), et dcisionnels (OLAP).
Universelle quant sa capacit. DB2 est la seule base de donnes sur le
march, capable de couvrir un domaine allant des applications de bureau
aux systmes de traitement parallle haut de gamme, ce qui est vital pour
des entreprises qui dpendent de transactions sur une grande chelle, de la
maintenance de datawarehouse, et dactivits de recherche approfondie de
donnes. Tout cela, alli la fiabilit et la puissance que lon sattend
trouver chez IBM, ainsi que la facilit de sa mise en uvre utilisation et
installation , a conduit PCWeek baptiser DB2 le serveur de base de
donnes le plus avanc techniquement sur le march .
Universelle quant aux accs. Dans le monde cbl daujourdhui, une
base de donnes se doit dtre universellement accessible, de sorte que
tout utilisateur, quels que soient le systme et le rseau, bnficie daccs
faciles la base de donnes. Non seulement DB2 fonctionne sur les syst-
mes dexploitation les plus courants Linux, Windows NT, Windows 9x,
OS/2, AIX, PTX, HP-UX et Solaris Sun , mais en plus on peut accder
une base de donnes DB2 depuis une plage dapplications de client plus
large. Mais ce sont surtout les supports Java et JDBC de DB2 qui rendent
laccs la base de donnes vraiment universel. A laide de JDBC
(Connectivit Java la base de donnes), on peut fournir un accs client
DB2 via un Applet Java lger . Les applications de client lger JDBC
fonctionneront avec nimporte quel navigateur Web quip de Java : les
personnes qui font une recherche dinformations peuvent ainsi accder
une base de donnes, partir dune station de travail de leur organisme, en
lanant un navigateur Web (Netscape Navigator fait partie de DB2).
Il faut garder lesprit quaussi bien le cycle de dveloppement, que la
courbe dapprentissage, pour des applications JDBC de client lger, sont
trs rapides : il est ainsi facile de se maintenir niveau, malgr les change-
ments qui interviennent dans les conditions de travail et dchange, sans
augmenter les cots de programmation et dapprentissage. Autrement dit,
on peut toujours construire en Java des applications client hautement
sophistiques, tandis que lon accde des donnes DB2 par JDBC.
Ce chapitre vous fera parcourir les tapes drouler pour installer un serveur
DB2, crer une base de donnes exemple, configurer les outils graphiques
dadministration, installer un client DB2, et configurer une connexion entre
un serveur DB2 et un client DB2.
Important. Si lon utilise la commande rpm qa pour lister les progiciels installs sur
Red Hat version 6.0 ou version 6.1, seule apparat la bibliothque libstdc++ 2.9.0 ; au
minimum, DB2 ncessite la bibliothque libstdc++ 2.8.0, comprise dans linstallation de
base, ce dont on sassure en vrifiant le contenu du rpertoire /usr/lib.
rpm i pdksh-5.2.13-3
On peut maintenant installer DB2 sur une station de travail qui fonctionne
avec Red Hat version 5.2 ou version 6.0. Aller la section Installer la base de
donnes universelle DB2 version 6.1 sur Linux Red Hat, plus loin dans ce
chapitre.
commande :
Par exemple, pour installer pdksh-5.2.14-1 sur Red Hat version 6.1, entrer
la commande :
rpm i pdksh-5.2.14-1
On peut maintenant installer un produit DB2 sur une station de travail qui
fonctionne avec Red Hat version 6.1.
Installer DB2
Cette section vous fera dcouvrir linitialisation et linstallation dun serveur
DB2, ainsi que la cration dune base de donnes dexemple, qui sera utilise
pour vrifier linstallation. Avant dexcuter les tches prsentes dans cette
section, il faut tre sr que toutes les tapes ncessaires linstallation de
DB2 sur la station de travail se sont bien droules, comme expos la
section prcdente. Une fois linstallation termine, on la vrifie localement,
en se connectant la base de donnes dexemple que lon a cre et en acc-
dant aux donnes.
Les directives donnes dans cette section supposent que vous installiez et
configuriez votre serveur DB2 en vous servant des options par dfaut fournies
avec loutil dinstallation du programme dinstallation de DB2. Ce dernier est
un programme dinstallation base de menus, qui vous assiste de bout en
Excuter linstallation
Maintenant que la station de travail Red Hat est quipe de DB2, on est prt
installer la base de donnes universelle DB2 version 6.1. Les directives
donnes dans cette section supposent que lon installe ldition du groupe de
travail de la base de donnes universelle DB2 sur une station de travail qui-
pe de DB2 Red Hat, vierge de toute copie de DB2.
cd /mnt/cdrom
6. Si lon installe DB2 sur une station de travail qui fonctionne avec Red Hat
version 6.1, ne pas oublier de se mettre dans le rpertoire cr limpl-
mentation du fichier de mise jour. Pour plus dinformations, se reporter
au fichier readme.txt fourni avec la mise jour.
7. Entrer la commande ./db2setup pour dmarrer le programme dinstalla-
tion de DB2. Le fentre dinstallation de DB2 V6 souvre, comme la
figure 6.1.
Figure 61
Fentre dinstallation de DB2 version 6.1
8. Dans la liste des produits, choisir le produit DB2 installer. Pour notre
exemple, choisir DB2 UDB Workgroup Edition. Appuyer sur la touche TAB
pour changer loption en surbrillance, et sur la touche ENTRE pour choisir
ou enlever la slection dune option. Pour plus dinformations, ou une
assistance pendant linstallation de DB2, choisir Help.
9. Pour personnaliser linstallation, choisir Customize, droite du produit
DB2 slectionn. Les options que lon peut choisir pendant une installa-
tion de DB2 sont montres la figure 6.2. Select all choisira tous les com-
posants optionnels pour cette installation.
Figure 62
Fentre de personnalisation pour dition DB2 Workgroup
Dans notre exemple, cette liste peut tre personnalise, mais il faut sassu-
rer que lon a au moins slectionn les composants Java Support et
Control Center, et choisir OK.
Figure 63
Personnaliser les messages de produit DB2
Figure 64
Personnaliser la bibliothque de produit DB2
Figure 65
Fentre de cration des services DB2
13. Choisir Create a DB2 instance pour crer une instance, qui sera utilise
pour ranger la base de donnes dexemple. Quand on choisit cette option,
la fentre dinstance DB2 souvre (figure 6.6).
Le programme dinstallation de DB2 gnrera un utilisateur par dfaut,
qui sera connu en tant que propritaire de linstance. Cet utilisateur aura
lautorisation administrateur systme (SYSADM) sur linstance. Un utili-
sateur qui a lautorisation SYSADM sur une instance a le contrle complet
et lautorit sur tous les objets de linstance. Dans notre exemple, admettre
les valeurs par dfaut. Entrer un mot de passe dans le champ Password et
Figure 66
Fentre dinstance DB2
Figure 67
Proprits dune instance
Pour notre exemple, choisir les options Auto start DB2 Instance at system
boot et Create a sample database for DB2 Instance. Le choix de ces
options provoquera lauto-dmarrage de linstance que le programme
dinstallation de DB2 cre, chaque fois que le systme sera relanc ; cela
cre aussi une base de donnes exemple appele SAMPLE. Loption
dauto-dmarrage vite lutilisateur SYSADM davoir dmarrer lins-
tance chaque redmarrage de la station de travail.
Les slections par dfaut pour le type dauthentification et les protocoles
de communication sont bonnes dans notre exemple.
15. Choisir OK.
16. Vous serez invit crer un compte utilisateur, qui servira lexcution
des fonctions dfinies par lutilisateur (UDF, ou User-Defined Functions)
et des procdures stockes, comme on le voit la figure 6.8.
Figure 68
Fentre dutilisateur fenced
Dans notre exemple, admettre les valeurs par dfaut, et spcifier un mot de
passe diffrent pour cet utilisateur, comme pour lutilisateur propritaire
de linstance, puis choisir OK ; sachant que le mot de passe par dfaut pour
cet utilisateur est encore ibmdb2. On est renvoy lcran de cration des
services DB2, comme on la vu la figure 6.5.
Il nest pas ncessaire de passer par cet utilisateur dans notre exemple.
Pour plus dinformations sur les procdures stockes et les UDF, se repor-
ter au Guide dadministration.
17. Choisir Create the Administration Server pour crer le serveur dadminis-
tration. Souvent appel le DAS, il sagit dune instance spciale, rserve
aux tches dadministration. Elle est utilise par le centre de contrle pour
effectuer des tches administratives distance. Pour plus dinformations
sur le serveur dadministration, se reporter au Guide dadministration.
Quand on choisit cette option, la fentre du serveur dadministration
souvre (figure 6.9).
Figure 69
Fentre du serveur dadministration
Figure 610
Fentre de nom DB2SYSTEM
Noter ce nom, et appuyer sur OK. Retour la fentre de cration des servi-
ces DB2, montre la figure 6.5.
18. Choisir OK pour commencer linstallation de DB2. La fentre de rsum
souvre (figure 6.11). Le rsum liste tous les composants que le pro-
gramme dinstallation de DB2 tentera dinstaller et de configurer. Pour
revoir la liste des composants, choisir More et utiliser les touches du cur-
seur pour naviguer dans le rapport. Quand cest termin, choisir Continue.
Figure 611
Fentre de rsum
Remarque. Si le rsum ne comprend pas les composants que vous voulez installer,
ou sil contient des composants que vous ne voulez pas installer, choisir encore Conti-
nue. Vous aurez la possibilit de revenir en arrire et de modifier ces slections dans
ltape suivante.
19. Le choix Continue fait apparatre une fentre contextuelle, qui vous avertit
que linstallation est sur le point de commencer, comme montr la
figure 6.12. Si vous tes satisfait de vos slections et voulez commencer
installer DB2, choisissez OK. Pour modifier vos slections, choisissez
Cancel.
Figure 612
Fentre contextuelle davertissement
20. Quand linstallation est faite, la fentre de rapport dtat souvre. Elle
liste, comme la figure 6.13, toutes les actions effectues par le pro-
gramme dinstallation de DB2 et, pour chaque tche, donne une indication
sur son droulement (succs ou non).
Figure 613
Fentre de rapport dtat
Pour revoir la liste entire, balayer le contenu du rapport laide des fl-
ches. Si lon reoit des messages derreur immdiatement aprs linstalla-
tion, consulter la trace (log) de linstallation laide de loption View Log.
La figure 6.14 prsente un exemple de fichier log, qui contient les erreurs
rsultant des tches dinstallation.
Quand cest termin, choisir OK, puis Close, et dsactiver toutes les fen-
tres restantes en slectionnant OK.
Vous avez fini dinstaller votre serveur DB2 !
Figure 614
Le fichier log
Vrifier linstallation
Maintenant que DB2 est install, accder aux donnes de la base de donnes
exemple (SAMPLE), pour vrifier linstallation.
Pour accder la base de donnes SAMPLE, parcourir les tapes suivantes.
1. Se connecter au systme en tant que propritaire de linstance que le pro-
gramme dinstallation de DB2 a cre pendant linstallation. Dans notre
exemple, entrer la commande :
su db2inst1
Remarque. Si lon utilise cette mthode pour se connecter au systme, pour vrifier
linstallation, il faut entrer cette commande avec le paramtre , comme dans lexemple
prcdent. Si lon entre su db2inst1, on a en retour un message derreur, parce que
DB2 ne lit pas correctement le profil DB2.
4. Entrer ensuite, pour choisir une liste de tous les employs qui appartien-
nent au dpartement 20 dans la table staff, la commande :
Important. Il faut entrer cette commande entre doubles quotes (" ") pour que Linux
ninterprte pas lastrisque comme le signe dune commande de systme dexploita-
tion. Quand on entre une commande DB2 comprenant un caractre qui peut avoir une
signification spciale au niveau du systme, penser mettre le contenu de la
commande entre quotes, comme ici.
4 record(s) selected.
cd /tmp
Important. Cela ne cre le chemin que pour la session courante, ce qui suffit dans
notre exemple. Pour le rendre permanent, il faut ajouter cette mise jour votre profil.
db2jstrt 6790
db2cc 6790
Figure 615
Fentre didentification du centre de contrle
Figure 616
Le centre de contrle
Les directives donnes dans cette section supposent que lon installe et confi-
gure le client DB2 en se servant des options par dfaut fournies avec loutil
dinstallation du programme dinstallation de DB2. Ce dernier est un
programme base de menus, qui vous assiste de bout en bout dans les tches
dinstallation et de configuration de DB2, qui prennent beaucoup de temps.
Les directives donnes dans cette section supposent aussi que vous ne mainte-
niez pas de versions prcdentes dun produit DB2 sur votre station de travail,
ou lutilisateur par dfaut db2inst. Si vous avez cet utilisateur sur votre
systme, enlevez-le laide de la commande userdel. Je vous recommande de
suivre les instructions de ce chapitre sur une station de travail vierge de toute
installation de produit DB2.
cd /mnt/cdrom
Si lon installe DB2 sur une station de travail qui fonctionne avec Red Hat
version 6.1, ne pas oublier de se mettre dans le rpertoire cr limpl-
mentation du fichier de mise jour. Pour plus dinformations, se reporter
au fichier readme.txt, fourni avec la mise jour.
5. Entrer la commande ./db2setup pour dmarrer le programme dinstalla-
tion de DB2. La fentre dinstallation de DB2 V6 souvre comme la
figure 6.17.
6. Dans la liste des produits, choisir le produit DB2 installer. Dans notre
exemple, choisir DB2 Administration Client. Appuyer sur la touche TAB
pour changer loption en surbrillance, et sur la touche ENTRE pour choisir
ou enlever la slection dune option. Pour plus dinformations, ou une
assistance pendant linstallation dun client DB2, choisir Help.
Figure 617
Fentre dinstallation de DB2 version 6.1
Figure 618
Fentre de personnalisation dun client dadministration de DB2
8. Select all retiendra toutes les options pour cette installation de client DB2.
Dans notre exemple, personnaliser cette liste de manire installer les
composants Java Support et Control Center, puis choisir OK.
9. Pour personnaliser les messages de DB2, choisir loption Customize
approprie : la fentre des messages de produit DB2 apparat (figure 6.19).
Pour notre exemple, les options par dfaut sont bonnes. Choisir OK.
10. Pour personnaliser la bibliothque de produit DB2, choisir loption
Customize approprie. La fentre des messages de produit DB2 souvre
(figure 6.20). La valeur par dfaut ne signifie pas linstallation de la docu-
Figure 619
Personnaliser les messages de produit DB2
Figure 620
Personnaliser la bibliothque de produit DB2
Figure 621
Fentre de cration des services DB2 pour un client DB2
Figure 622
Fentre dinstance DB2 pour un client DB2
En cas dchec sur le mot de passe, cest le mot de passe par dfaut
ibmdb2 qui sera utilis. Je vous recommande de ne pas utiliser le mot de
passe par dfaut : comme il est utilis pour toutes les installations de pro-
duits DB2, et est par consquent bien connu, son utilisation prsente un
Remarque. Nous allons utiliser les mmes ID utilisateur et mot de passe sur le
serveur DB2 et sur le client DB2, pour simplifier notre scnario dexemple.
Figure 623
Fentre de rsum
Remarque. Si le rsum ne comprend pas les composants que vous voulez installer,
ou sil contient des composants que vous ne voulez pas installer, il faut quand mme
choisir Continue, pour revenir en arrire et diter ces slections ltape suivante.
14. Aprs que lon a choisi Continue, une fentre contextuelle apparat, pour
signaler que linstallation va commencer (figure 6.24). Pour commencer
installer le client DB2, choisir OK ; pour modifier les slections, Cancel.
15. Quand linstallation est termine, la fentre de rapport dtat souvre.
Cette fentre (figure 6.25) liste toutes les actions effectues par le pro-
gramme dinstallation de DB2, et indique, par tche, le rsultat. Pour
revoir la liste entire, faire dfiler le contenu du rapport laide des fl-
ches. En cas de messages derreur la fin de linstallation, revoir la trace
(log) de linstallation en slectionnant View Log. Un exemple de fichier
log est prsent la figure 6.26.
Figure 624
Fentre contextuelle davertissement
Figure 625
Fentre de rapport dtat
Enfin, choisir OK, puis Close, et dsactiver toutes les fentres restantes en
slectionnant OK.
Flicitations ! Vous avez russi installer et configurer un client DB2, et vous
tes prt le configurer pour communiquer avec un serveur DB2 distance.
Attention : pour utiliser le centre de contrle sur cette station de travail, il faut
encore, auparavant, parcourir quelques tapes. Dans notre exemple, ce nest
pas ncessaire, car nous ne nous servirons pas du centre de contrle sur la
station de travail client de DB2. Si vous souhaitez utiliser ultrieurement le
centre de contrle sur votre station de travail, vrifiez les tapes franchies en
vous reportant la section Configurer le centre de contrle, plus avant dans
ce chapitre. Pour connecter un client DB2 une base de donnes qui rside
sur un serveur DB2 distance, voir la prochaine section.
Figure 626
Le fichier log
Remarque. Si lon veut maintenir la portabilit des clients DB2 de type UNIX, qui
passent par les services dinformation rseau (NIS), et que lon ne dispose pas dun
serveur de nom, mettre jour le fichier /etc/hosts, situ sur le serveur matre NIS.
o :
9.21.125.124 est ladresse IP du serveur DB2 distance ;
db2server est le nom dhte du serveur DB2 distance ;
# Signifie le dbut dun commentaire qui dcrit cette entre.
Remarque. Si le serveur nest pas dans le mme domaine que le client, il faut donner
un nom de domaine compltement qualifi tel que db2server.vnet.com, o vnet.com
est le nom de domaine.
Tableau 61
Paramtres TCP/IP requis pour la communication client-serveur DB2
nexion au fichier des services client DB2 pour TCP/IP. Par exemple :
db2cdb2inst1 50000/tcp
# nom de service du client DB2 & port correspondant au serveur DB2
o :
db2cdb2inst1 est un nom local arbitraire, qui reprsente le numro de
port sur le client DB2.
50000 est le numro de port auquel correspond le paramtre svcename,
dans le fichier de configuration du gestionnaire de base de donnes sur
le serveur DB2 distant dans le fichier /etc/services du serveur DB2
distant. Le numro de port utilis sur le client DB2 doit correspondre au
numro de port utilis sur le serveur DB2.
tcp est le protocole de communication.
# indique le dbut dun commentaire qui dcrit cette entre.
Remarque. Si lon veut maintenir la portabilit de clients DB2 de type UNIX, qui
passent par les services dinformation rseau (NIS), mettre jour le fichier /etc/servi-
ces, situ sur le serveur matre NIS.
Par exemple, pour cataloguer sur le nud db2server une base de donnes
distante, catalogue avec lalias de base de donnes SAMPLE (de sorte
quelle ait localement lalias de base de donnes SAMPLE), entrer la
commande :
Tableau 62
Paramtres de base de donnes requis pour la communication client-serveur
Nom de nud Un surnom local pour le serveur DB2 distant auquel db2server
(node_name) on veut se connecter. Un ordinateur est souvent
considr comme un nud. Utiliser le mme nom
que quand vous avez catalogu le nud dans ltape
prcdente.
o :
database_alias est lalias du client DB2 pour la base de donnes DB2
distante.
Important. On nest pas oblig de donner les paramtres userid et password quand
on se connecte la base de donnes DB2 distante. A linstallation du client DB2, vous
avez cr un utilisateur avec les mmes ID dutilisateur (db2inst1) et mot de passe que
sur le client, pour simplifier le scnario dexemple. Si vous aviez t connect au client
DB2 avec un ID utilisateur non encore dfini sur le serveur DB2 distant, il vous faudrait
utiliser les paramtres userid et password pour spcifier un utilisateur valide.
Important. Il faut entrer cette commande entre doubles quotes (" ") pour que Linux
ninterprte pas lastrisque comme le signe dune commande du systme dexploita-
tion. Quand on entre une commande DB2 comprenant un caractre qui peut avoir une
signification spciale au niveau du systme, penser mettre le contenu de la
commande entre quotes, comme ici.
4 record(s) selected.
Dpannage de la connexion
En cas de problmes la connexion du client DB2 au serveur DB2, vrifier
les lments suivants :
1. Sils sont utiliss, les fichiers /etc/services et /etc/hosts ont t mis jour
correctement.
2. Le nud a t catalogu avec les rfrences correctes : nom dhte ou
adresse IP, et nom de service ou numro de port. Attention : le numro de
port (ou le nom de service) doit correspondre au numro de port utilis sur
le serveur DB2. Pour vrifier ces initialisations, entrer la commande sui-
vante, en tant quutilisateur db2inst1 :
Rsum
Alors, o en sommes-nous ? Eh bien, croyez-le ou non, vous avez russi l o
nombre de socits de par le monde en sont encore travailler dur! Installer
un serveur DB2, le configurer pour les outils graphiques et les communica-
tions, puis crer une base de donnes exemple ; enfin installer un client DB2
et retrouver des donnes sur le serveur DB2 travers une connexion LAN
utilisant TCP/IP. Ce nest pas rien !
Il nest pas bien difficile de voir les progrs que Linux a accomplis en quel-
ques annes. Linux offre aux utilisateurs une stabilit, des fonctionnalits et
une qualit qui lui permettent de se placer en bon concurrent des plates-
formes actuellement sur le march. Des millions dutilisateurs du monde
entier ont choisi Linux, pour des applications allant des serveurs Web et e-
mail aux applications dentreprise, verticales ou relatives aux services. Linux
nest plus dsormais un projet damateurs, que les professionnels de linfor-
matique utilisent en coulisse, loin des regards indiscrets de la direction. Il a
pris sa place, et ladite quipe de direction ferait bien den tenir compte. Il
suffit de jeter un il sur les projets des grands distributeurs, ou ceux des
constructeurs, quil sagisse de logiciel ou de matriel, pour constater que
Linux est prsent. Voir aussi du ct de la bourse : impossible dignorer le
rcent dmarrage en trombe des IPO de Linux, et lengouement quils dclen-
chent.
Oui, il y a vraiment une Linux-Mania, qui tombe en plein milieu de lre des
bases de donnes. Maintenant vous avez les billes pour tirer parti de ce
que daucuns considrent comme parmi leurs meilleurs atouts, Red Hat et
DB2.
FAQ
Q. Javais dmarr le programme dinstallation de DB2, mais jai d en sortir
anormalement. Quand jessaie de le redmarrer, jobtiens en retour le
message derreur de la figure 6.27.
Figure 627
Erreur reue quand une instance prcdente de programme dinstallation de DB2
ne sest pas termine correctement.
rm /tmp/.db2inst.lck
Figure 628
Avertissement montr quand vous ne choisissez pas de crer
le serveur dadministration sur un produit de serveur.
Figure 629
Fentre du programme dinstallation de DB2 aprs avoir install un produit DB2.
Tableau 63
Installer des clients DB2 multiples sans avoir Supplment dinstallation et de configuration de
lancer le programme dinstallation de DB2 DB2 et DB2 Connect
chaque station de travail client DB2
Charger des donnes dans vos bases de donnes Guide des utilitaires et des transferts de donnes
ou exporter des donnes dune base de donnes avec DB2
DB2 existante
Trouver des rponses des problmes poss par Guide de dpannage de DB2
DB2
Accder des donnes qui rsident sur un hte DB2 connexion rapide pour dbutants
ou une base de donnes DB2 AS/400
Dans ce chapitre
Installation dune distribution
binaire ou RPM
Installation dune distribution source
Configuration de la scurit
Optimisation des performances
Problmes et dpannage
Introduction
MySQL est une base de donnes complexe, mais son installation ne lest pas
autant quon pourrait le penser. En prparant un peu les dcisions avant de
dmarrer linstallation, on peut en faire un parcours paisible. Avant de
commencer, il faut disposer dune machine Linux et despace disque en abon-
dance. La machine devra avoir peu prs de 30 40 Mo despace disponible
pour les fichiers dinstallation et la base de donnes. La mmoire est aussi un
facteur cl plus il y a de mmoire pour la base de donnes, mieux cest. En
gnral, 64 mga-octets suffiront.
MySQL est fourni dans des distributions varies, chacune prsentant des
aspects positifs et ngatifs. Il y a des distributions binaires, des installations
RPM (Red Hat Package Manager pour Red Hat Linux) et des distributions
sources. Les distributions binaires et les distributions RPM sont les plus faci-
les initialiser et peuvent sexcuter en quelques minutes : elles initialisent et
configurent la plus grande part de linstallation votre place. Les distribu-
tions sources prennent plus de temps installer et initialiser, mais sont plus
puissantes, et permettent lutilisateur de configurer et de rgler son installa-
tion. Les distributions sources permettent de disposer librement dune distri-
bution binaire cre spcialement, qui peut tre optimise pour un type parti-
culier de plate-forme, ce qui permet de gnrer une base de donnes qui
fonctionnera aussi vite que possible sur une plate-forme donne.
Dautre part, chaque distribution a son propre niveau de dveloppement ;
certaines sont des distributions la limite des ressources, rserves ceux qui
veulent vrifier les nouvelles caractristiques, mme si elles tombent
frquemment en panne. Les versions stables, recommandes pour une
premire utilisation, contiennent toutes les caractristiques majeures, et sont
parfaitement robustes et bien testes. Les dernires versions sont destines
ceux qui migrent depuis des versions anciennes et se placent derrire les
versions stables. Elles ont seulement un rle historique. Pour tout type de base
de donnes appel tre le support dune application, il faut utiliser les
versions stables. La plupart du temps, moins davoir besoin dune nouvelle
caractristique en cours de dveloppement dans les nouvelles versions, une
version stable fournira toutes les caractristiques ncessaires.
Linstallation de ces distributions, en particulier pour les distributions RPM et
binaires, est traite dans la suite du chapitre et ne prendra pas beaucoup de
temps. Elles sont trs faciles installer et montrent la bonne voie pour tirer le
meilleur parti de la puissance de MySQL dans une application. Une distribu-
tion source demande des tapes supplmentaires, mais pas trs complexes et
bien dtailles. Aprs avoir install une distribution source, on peut sattaquer
la plupart des autres distributions open-source. Pour avoir de la puissance,
utiliser une distribution source qui optimise la vitesse et le fonctionnement de
la base de donnes. Mme si lon ninstalle pas les autres types de distribu-
tions, il est bon de les connatre et davoir une ide de la manire de les initia-
liser, pour le cas o lon aurait changer de plate-forme ou migrer vers un
autre type de distribution.
Une fois linstallation faite, les tapes suivantes concernent la scurit de la
base de donnes. Sassurer que seuls les utilisateurs autoriss peuvent accder
la base de donnes est une tape trs importante. Il faudra, selon les applica-
tions, tre trs attentif la scurit de la base de donnes, en particulier dans
les applications de-commerce o lon est en prsence de donnes trs sensi-
bles, par exemple les numros de carte de crdit. Chaque utilisateur devra
avoir un mot de passe. Les utilisateurs auront des privilges accords, en
fonction du type dusage quils font de la base de donnes. Si un utilisateur ne
fait que consulter les tables, pourquoi lui donner le droit dexcuter toutes les
commandes sur la base de donnes ? On peut jouer des notions dutilisateurs
et de privilges pour viter les accs non autoriss la base de donnes.
Toute base de donnes se doit dtre disponible en permanence. Crer des
scripts personnaliss sur le serveur pour sassurer que la base de donnes est
toujours oprationnelle : les scripts de dmarrage de la base de donnes
sassurent que la base de donnes fonctionne constamment et minimisent les
temps darrt. Il y a dautres outils qui donnent des informations vitales
propos de la base de donnes et de son fonctionnement, qui facilitent ladmi-
nistration de la base de donnes et permettent dexcuter toutes les tches
courantes dun administrateur. Il existe encore dautres moyens doptimiser
les performances de linstallation MySQL, tels que les attributs de perfor-
mance de la base de donnes MySQL, loptimisation par recompilation de la
distribution et les diffrentes options relatives au matriel. Toutes ces tapes
mneront une application de base de donnes puissante.
Installation
Avant dinstaller MySQL, il faut dabord faire un choix parmi trois versions.
Celle qui est recommande est la version stable 3.22.X. Elle est teste fond,
ne propose aucune caractristique qui na pas t essaye, est prte pour la
production et est aussi recommande pour une premire utilisation. La
version de dveloppement, 3.23.X, est surtout destine aux dveloppeurs qui
contribuent lamlioration de MySQL ; elle a beaucoup de caractristiques
nouvelles insuffisamment testes, et nest pas recommande dans un environ-
nement de production. La version prcdente, 3.21.X, est une version dsap-
prouve, dont le principal intrt est de donner, surtout aux anciens utilisa-
teurs, un moyen daccder la version 3.22 sans grand changement de
Conventions dappellation
Les distributions MySQL sont dans le rpertoire Downloads. Lors de la publi-
cation de cet ouvrage, la distribution de dveloppement la plus rcente tait la
version 3.22.32. Les exemples qui suivent montrent les diffrents types de
formatage rpertoris pour chacune. Le X indique la version mineure.
Si un nom de chemin apparat, cest que loutil est install dans le rpertoire
indiqu. Si lon ne dispose pas de ces outils, se reporter la documentation de
la distribution Linux pour savoir comment les ajouter. Lemplacement des
fichiers est aussi dtermin par les options de la variable denvironnement
PATH. Si rien napparat, allez voir directement dans les rpertoires. On peut
aussi utiliser rpm pour Red Hat Linux :
shell$ scripts/mysql_install_db
Creating db table
Creating host table
Creating user table
Creating func table
Creating tables_priv table
Creating columns_priv table
To start mysqld at boot time you have to copy support-files/mysql.server
to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
This is done with.:
/bin/mysqladmin -u root password 'new-password'
See the manual for more instructions.
Plus tard, il faudra aussi loutil rpm, fourni avec la distribution Red Hat
Linux. Sil na pas t install, se reporter la documentation Red Hat. Les
fichiers de la base de donnes peuvent tous tre installs simultanment
comme suit :
shell# rpm -vi MySQL-3.22.X-1.PLATFORM.rpm MySQL-client-3.22.X-x.PLATFORM.rpm
Loutil gcc doit tre en version 2.81 ou suprieure. La commande qui suit
affiche la version disponible :
shell$ gcc v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/specs
gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
shell$. /make
shell$. /scripts/mysql_install_db
Creating db table
Creating host table
Creating user table
Creating func table
Creating tables_priv table
Creating columns_priv table
To start mysqld at boot time you have to copy support-files/mysql.server
to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
This is done with:
/usr/local/mysql/bin/mysqladmin -u root password 'new-password'
See the manual for more instructions.
Ces lignes montrent que la base de donnes fonctionne, et sous quel utilisa-
teur et donnent des informations systme propos du processus. Si ces lignes
napparaissent pas, cela signifie que la base de donnes nest pas dmarre. Il
faut alors vrifier les tapes prcdentes et sassurer que lon peut dmarrer la
base de donnes. Dans la plupart des configurations, des oprations telles que
lajout dutilisateurs et de privilges ne peuvent se faire que lorsque la base de
donnes fonctionne.
Configuration
La disposition du rpertoire mysql est initialise de deux manires diffrentes,
selon la distribution qui a t installe. Pour les distributions binaires, il
prsente cet aspect :
Scurit
On consolide une application, si lon restreint laccs des utilisateurs la base
de donnes et quon leur laisse la possibilit de nexcuter que certaines
actions. Cest une tape importante sur laquelle il faut insister. Si la base de
donnes est simplement destine lvaluation du produit, ce nest pas nces-
saire. Par contre, tout service ou application qui utilisera cette base de
donnes pour stocker des donnes sensibles devra tre scuris.
Commenons par changer le mot de passe de lutilisateur root dans la base de
donnes, comme suit :
Il faut aussi sassurer que tout nouvel utilisateur cr dans la base de donnes
a un mot de passe.
Un autre moyen facile dinitialiser MySQL de manire sre est de lexcuter
comme son propre utilisateur. Excuter le dmon comme un nouvel utilisa-
teur et lui attribuer toutes les permissions de fichier : cela vite laltration par
dautres utilisateurs et le rend plus sr. De mme, ne pas excuter le dmon
comme root : cela djoue les tentatives des pirates qui sattaquent au dmon
pour obtenir les privilges root. Si vous avez install le RPM Red Hat, cette
partie de la configuration vous concerne. Si vous avez install une distribu-
tion source ou binaire, il vous faut parcourir dautres tapes.
On cre un utilisateur pour excuter la base de donnes, mysql par exemple.
On linsre dans le fichier des mots de passe laide de adduser :
Sitt que lentre de cet utilisateur est cre dans /etc/passwd, on ldite pour
pointer le rpertoire correct de la base de donnes (/my/path/mysql/var) avec
le shell appropri (par dfaut, cest le bon). Lutilisateur doit tre propritaire
de tous les fichiers, ce quon obtient avec chmod :
Privilges
MySQL autorise les utilisateurs excuter certaines actions sur la base de
donnes en fonction de leurs privilges ; ceux-ci sont rangs dans une table et
vrifis quand lutilisateur essaie dexcuter une action. Le tableau suivant
indique les privilges accords dans MySQL (tableau 7-1).
Tableau 71
Privilges accords dans MySQL
Privilge Signification
Tableau 71
Privilges accords dans MySQL
Privilge Signification
En gnral, les utilisateurs ne disposeront pas des fonctions les plus puissan-
tes, telles grant, alter, file, process et shutdown, rserves ladministrateur.
Aprs avoir chang le mot de passe de root, ajoutons quelques nouveaux utili-
sateurs. Il y a essentiellement deux moyens dajouter de nouveaux utilisateurs
la base de donnes : soit on se sert de loption grant, soit on insre, par des
commandes SQL, de nouvelles lignes dans la table des utilisateurs. Avec
grant, il faut dabord sassurer que la base de donnes est en route et utiliser
mysql pour sy connecter :
mysql>
_5HORDGBSULY_HQXP
1
<
___1__
_6KXWGRZQBSULY_HQXP
1
<
___1__
_3URFHVVBSULY_HQXP
1
<
___1__
_)LOHBSULY_HQXP
1
<
___1__
_*UDQWBSULY_HQXP
1
<
___1__
_5HIHUHQFHVBSULY_HQXP
1
<
___1__
_,QGH[BSULY_HQXP
1
<
___1__
_$OWHUBSULY_HQXP
1
<
___1__
URZVLQVHWVHF
Ds que lon voit linvite mysql, cela signifie que lon est au niveau de
commande de la base de donnes et que lon peut excuter des commandes
SQL. Voici, par exemple, les instructions GRANT pour crer un compte admi-
nistrateur dba :
Il existe deux autres tables pour accorder les droits daccs. La table db tient
la liste des utilisateurs qui peuvent accder aux bases de donnes, des htes
depuis lesquels ils se connectent et des privilges qui leur sont accords. Elle
se prsente comme ceci :
mysql> describe db ;
_)LHOG_7\SH_1XOO_.H\_'HIDXOW_([WUD_
_+RVW_FKDU__35,___
_'E_FKDU__35,___
_8VHU_FKDU__35,___
_6HOHFWBSULY_HQXP
1
<
___1__
_,QVHUWBSULY_HQXP
1
<
___1__
_8SGDWHBSULY_HQXP
1
<
___1__
_'HOHWHBSULY_HQXP
1
<
___1__
_&UHDWHBSULY_HQXP
1
<
___1__
_'URSBSULY_HQXP
1
<
___1__
_*UDQWBSULY_HQXP
1
<
___1__
_5HIHUHQFHVBSULY_HQXP
1
<
___1__
_,QGH[BSULY_HQXP
1
<
___1__
_$OWHUBSULY_HQXP
1
<
___1__
URZVLQVHWVHF
Une autre table, host, dtermine quels sont les htes autoriss se connecter
une base de donnes. La table host se prsente comme suit :
_'URSBSULY_HQXP
1
<
___1__
_*UDQWBSULY_HQXP
1
<
___1__
_5HIHUHQFHVBSULY_HQXP
1
<
___1__
_,QGH[BSULY_HQXP
1
<
___1__
_$OWHUBSULY_HQXP
1
<
___1__
URZVLQVHWVHF
Contrle daccs
Une fois que lon a configur les privilges, les utilisateurs et les noms dhte
auxquels on accorde laccs, chaque connexion sera value en vue de dter-
miner si elle sera autorise. MySQL cherche dabord le nom dutilisateur et
lhte. Quand une connexion sopre, tous les paramtres sont compars aux
entres de la liste. La comparaison est effectue du dbut la fin, jusqu ce
quune correspondance soit trouve. Si ce nest pas le cas, la demande est
rejete. Pour que la vrification soit exhaustive, il faut sassurer que la liste
est trie correctement, car la base de donnes ne vrifie pas tous les cas et
sarrte la premire correspondance.
Si la connexion est autorise, le logiciel vrifie que lon a accs la base de
donnes ou aux bases laquelle on essaie daccder. Il consulte les
tables host et db pour vrifier si lhte a bien accs la base de donnes
souhaite. la diffrence de la vrification prcdente, les tables seront
consultes en fonction du type daccs souhait.
Pour les requtes de type administration, il ne vrifie que la table des utilisa-
teurs, car cest la seule table o se situent les privilges de ladministrateur. Si
lutilisateur a le privilge, laction est autorise, sinon elle est rejete. Les
requtes qui sont lies une base de donnes et qui manipulent les lignes
dune table sont dabord vrifies dans la table des utilisateurs : si lutilisateur
na pas le privilge adquat, le logiciel vrifie alors dans les tables host et db
si lautorisation doit tre accorde ou non ; si lutilisateur ne figure pas dans
la table db, la demande est rejete ; si le champ host de lutilisateur nest pas
renseign, il dtermine, par une rfrence croise avec la table host, si laccs
doit tre accord.
Il suffit de grer une simple liste de contrle daccs, pour spcifier les utilisa-
teurs qui peuvent se connecter une base de donnes, et depuis quels htes.
Cest extrmement efficace. On peut ainsi exclure toute intervention prove-
nant dun domaine externe, et nautoriser que les utilisateurs dun rseau local
ou dots dadresses IP spcifies.
Installation du systme
Pour que la base de donnes fonctionne en permanence, on doit initialiser le
systme de manire ce quil dmarre la base de donnes automatiquement
lors du boot. On lindique dans le rpertoire /etc/rc.d de la machine. Si lon a
install la distribution RPM, cest dj fait. On peut crer un fichier pour
initialiser lenvironnement ainsi que le nom des chemins et charger le dmon
de la base de donnes. Pour ce faire, nous allons crer un script rc. Crer des
scripts rc exige le privilge root et ne peut tre fait que par ladministrateur.
Crer dabord un nouveau script, appel mysql, dans le rpertoire rc. Se
placer dans /etc/rc.d/init.d et crer le fichier mysql. Ici, nous allons initialiser
lenvironnement de la base de donnes. Tout script dmarre en demandant au
systme quel shell utiliser pour lancer execute :
# !/bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin
basedir=/my/path/mysql
pid_file=/my/path/mysql/var/mysqld.pid
mysql_daemon_user=mysql
export PATH
mode=$1
cd $basedir
case "$mode" in
'start')
# Start daemon
if test -x bin/safe_mysqld
then
# Startup database
bin/safe_mysqld --user=$mysql_daemon_user --pid-file=$pid_file &
else
echo "Can't execute $basedir/bin/safe_mysqld"
fi
;;
'stop')
# Stop daemon using the pid file
if test -f "$pid_file"
then
mysqld_pid=`cat $pid_file`
echo "Stopping database with pid $mysqld_pid"
kill $mysqld_pid
else
echo "Cannot find $pid_file."
fi
;;
*)
# usage
echo "usage: $0 start|stop"
exit 1
;;
esac
Performance
Les performances de MySQL peuvent tre optimises lors de la compilation :
le flag static rend la base de donnes le plus rapide possible ; de mme, se
servir de sockets UNIX et non de connexions rseau.
La configuration matrielle peut aussi amliorer les performances : stocker la
base de donnes sur des disques multiples pour diminuer le temps dattente
des mouvements de tte et de recherche des pistes, puisque plusieurs disques
font le travail au lieu dun seul. Cette technique est connue sous le nom de
striping. Pour un striping plus grande chelle, il faut se servir dun RAID
(Redundant Array of Independent Disks) qui donne de meilleurs rsultats.
Les liens symboliques contribuent aussi aux gains, en tablissant des liens
vers des rpertoires, dans des distributions places sur dautres lecteurs. On
peut encore supprimer les fichiers dchange, car cela vite que le systme
dexploitation ne perturbe les accs la base de donnes en bloquant les ttes
de lecture pour les changes entre la mmoire et les disques.
Le dmon MySQL lui-mme peut tre rgl, grce de nombreuses variables.
On les gre laide de loutil mysqladmin.
_SLGBILOH_KRPHEVFKZDEP\VTOYDUREVLGLDQSLG_
_SRUW__
_SURWRFROBYHUVLRQ__
_UHFRUGBEXIIHU__
_VNLSBORFNLQJ_21_
_VNLSBQHWZRUNLQJ_2))_
_VRFNHW_WPSP\VTOVRFN_
_VRUWBEXIIHU__
_WDEOHBFDFKH__
_WKUHDGBVWDFN__
_WPSBWDEOHBVL]H__
_WPSGLU_WPS_
_YHUVLRQ__
_ZDLWBWLPHRXW__
Tableau 72
Variables de contrle des performances
Variable Signification
Tableau 72
Variables de contrle des performances
Variable Signification
Tableau 72
Variables de contrle des performances
Variable Signification
Problmes
Selon la distribution Linux, MySQL peut prsenter quelques problmes lors
de lexcution. MySQL fonctionne au mieux avec les versions les plus rcen-
tes de glibc, la bibliothque C sur laquelle repose la base de donnes. MySQL
demande au moins une version 2.0.7 de glibc, et la plupart des problmes sont
relatifs aux versions antrieures de cette bibliothque. On trouve le numro de
la version installe sur le systme laide de la commande :
glibc-2.0.7-19
glibc-devel-2.0.7-19
Threads
MySQL se sert des threads sous Linux. Les threads sont de petites parties de
programme qui permettent de donner la machine plus de travaux traiter
quun processus unique. Si le dernier glibc est install, cela doit fonctionner
sans avoir installer de nouveaux programmes. Il peut tre tlcharg
http://www.mysql.com/Downloads/Linux.
Cependant, avec les versions glibc 2.1.1 ou antrieures, un problme se
produit avec les commandes INSERT DELAYED. Un correctif est disponible
http://www.mysql.com/Downloads/Patches/glibc-pthread_cond_timedwait.patch.
Environnement dexcution
Une fois MySQL install, on dispose doutils varis pour rassembler les
informations concernant la base de donnes. Le premier, mysqladmin,
excute la plupart des tches de ladministrateur dont on a besoin : cration et
suppression de bases de donnes, criture physique (flush) des tables, change-
ment des mots de passe utilisateurs, rechargement, ainsi que larrt ou la
recherche du statut de la base de donnes.
Aller dabord dans le rpertoire bin de linstallation MySQL :
shell$ cd /my/path/mysql/bin
shell$. /mysqladmin
Tableau 73
Outils disponibles dans mysqladmin
Outils Utilisation
Tableau 73
Outils disponibles dans mysqladmin
Outils Utilisation
Dpannage
En cas dincident sur le serveur de base de donnes MySQL, il existe un
fichier de trace dans le rpertoire des donnes avec une extension .err. De
manire gnrale, il contient lhistorique des erreurs. Sil ny a aucune infor-
mation concernant la cause de la panne, on peut lancer mysqld avec loption
dexcution log qui ajoute des informations relatives lactivit de la base
de donnes, ou loption debug, qui donne encore plus dinformations.
Quelques points vrifier :
Avoir la version la plus rcente de la distribution.
Avoir glibc, ou libc, le plus rcent (selon la distribution).
Vrifier les permissions des utilisateurs sur tous les fichiers appartenant
lutilisateur de base de donnes.
Vrifier le statut avec mysqladmin pour sassurer que, lors du chargement,
il ne sest rien pass danormal.
Problmes de connexion : sassurer que le contrle daccs est initialis
correctement pour lutilisateur, le mot de passe et le nom dhte, et que le
serveur fonctionne rellement (on peut le vrifier avec la commande ps).
Sassurer quaucun autre programme nutilise les mmes ports que
MySQL.
Si un thread est mort, dtruire tous les autres threads avant de redmarrer
la base de donnes.
Essayer la connexion localement et distance. Si la connexion distance
choue, vrifier que les options rseau sont actives. Si la connexion locale
choue, sassurer que les sockets UNIX sont actifs.
Vrifier quil y a assez de connexions pour tous les clients.
Vrifier quil y a suffisamment de mmoire pour la base de donnes : les
besoins en ressources des trs grandes bases augmentent rapidement.
Vrifier que les options de performance sont rgles correctement pour la
taille des tables et que les tables ne sont pas trop grandes.
Vrifier quaucun changement significatif ne sest produit dans le fonc-
tionnement de la base de donnes depuis limpression de cet ouvrage. Se
reporter la documentation fournie avec MySQL.
Rsum
De prime abord, linstallation de MySQL intimide, mais en revoyant les
options et en vous formant sur ce qui convient le mieux votre besoin, vous
pouvez mettre demble en service la base de donnes. MySQL est propos
dans des distributions varies : binaire, RPM et source. Les distributions
binaires sont adaptes un type particulier de plate-forme et ne peuvent tre
utilises sur aucune autre. Elles sont relativement faciles installer mais
peuvent exiger un accs root pour tre installes dans les rpertoires au niveau
du systme. Les distributions RPM sont les plus faciles manier, mais seule-
ment si lon dispose de Red Hat Linux. Ces distributions effectuent mme une
partie de la configuration votre place. Les dernires distributions, recom-
mandes, sont les distributions source. Elles sont proposes avec une docu-
mentation et des exemples abondants, et peuvent tre personnalises et adap-
tes vos besoins.
MySQL est constamment en dveloppement, comme on peut le voir daprs
le nombre de niveaux des distributions. Les distributions stables sont recom-
mandes non seulement pour leur stabilit, mais encore pour la gamme de
caractristiques testes quelles proposent. Les distributions toutes neuves
sont destines tester les nouvelles caractristiques qui vont enrichir la base
de donnes. Les anciennes versions dsapprouves ne sont pas utiles, sauf si
vous en tes utilisateur. Maintenir jour une distribution stable, aujourdhui
la version 3.22, offrira toutes les caractristiques et les garanties quant la
stabilit exige dune application.
La base de donnes mise en service doit tre aussi disponible que possible. La
mthode de dmarrage par dfaut du dmon MySQL est safe_mysqld, un
script qui suit ltat du dmon de la base de donnes : si la base de donnes a
t interrompue ou arrte, il la redmarre automatiquement. Il y a une autre
mthode pour sassurer que le dmon MySQL est dmarr lors du boot : en
crant, dans le rpertoire /etc, un script rc que lon peut lier aux diffrents
niveaux dexcution de la machine, on sassure que lorsque la machine est
redmarre, MySQL est dmarr avec les autres programmes du serveur.
Les dernires tapes de linstallation concernent loptimisation de la distribu-
tion. On peut optimiser la version compile si lon a une distribution source.
Lavantage de disposer des sources est que lon peut compiler avec diffrentes
options pour tirer le meilleur parti de la plate-forme. Il existe aussi des mtho-
des, au niveau du matriel, pour acclrer la base de donnes. Enfin, il y a des
flags dexcution spcifique du dmon de la base de donnes MySQL qui
permettent de rgler et de modifier les variables pour acclrer encore la base
de donnes. Une fois que vous avez termin linstallation, cr les utilisateurs
de base de donnes, et mme essay damliorer la performance de la base de
donnes, vous vous sentirez dans votre lment.
FAQ
Q. Comment excuter plusieurs serveurs MySQL sur ma machine ?
R. Cela peut tre fait de deux manires.
Avec la distribution source, vous disposez de flags de configuration spci-
fiques qui autorisent la base de donnes pointer vers diffrents emplace-
ments et utiliser des ports diffrents :
Dans ce chapitre
Installation
Configuration
Tester la base de donnes
Dpannage
Forces et faiblesses de Progress
Introduction
La base de donnes Progress est intgre, littralement, dans des milliers de
paquetages de taille moyenne des plus rpandus aujourdhui (par exemple,
MFG/Pro de qad Inc., Symix, Unifi de FiServ et Trend de NxTrend). En fait,
Progress vient en tte du march des bases de donnes intgres (voir
http://www.progress.com/services/pressrm/releases/pr_gartner_041499.htm
pour les dtails) et cest lun des plus grands acteurs de lmergence, sur le
march, de lASP (Association of Shareware Professionals). Les paquetages
qui reposent sur le systme de gestion de base de donnes relationnelle
Progress sont utiliss par 60 % des entreprises, figurent au classement de
Fortune 500 et rapportent plus de 2,5 milliards de dollars de revenu annuel
aux associs de Progress. Et pourtant Progress Software Corporation (PSC)
na pas la notorit laquelle on pourrait sattendre pour une socit dont le
chiffre daffaires annuel se situe autour de 300 millions de dollars et qui a
ralis plus de 80 000 installations dans une centaine de pays.
Ce phnomne est peut-tre d la stratgie de marketing furtif retenue
par PSC, qui consiste vendre principalement par un rseau de revendeurs.
Progress a toujours fond ses programmes de ventes sur la vente aux dve-
loppeurs de logiciels plutt que sur les ventes directes aux grands distribu-
teurs dinformatique. Cela sest avr extrmement fructueux depuis 15 ans
puisquil existe maintenant une plage de plus de 4000 applications dvelop-
pes laide de la base de donnes et du L4G. Mais, comme PSC doit viter
dentrer en conflit avec ses propres dveloppeurs-revendeurs, le nom de beau-
coup de partenaires de Progress est plus connu que Progress lui-mme.
Quimporte la stratgie de vente, Progress, en tant que plate-forme, a beau-
coup offrir. La base de donnes a toutes les caractristiques dune solution
OLTP (systme transactionnel) grande chelle, et prsente dj lavantage
de ne pas avoir besoin dun administrateur de base de donnes temps plein
pour fonctionner. Progress sadapte aisment aux systmes, depuis les PC
individuels avec 32 Mo de RAM aux plus grands serveurs multiprocesseurs
de IBM, HP, Sun, Compaq et DEC. Le L4G est un langage complet qui
nexige aucun code L3G pour couvrir tout le champ dune application. Plus
de 90 % des applications ne contiennent que du code L4G et, grce lenvi-
ronnement dapplication runtime, sont totalement portables sur toute grande
plate-forme UNIX, dont Linux.
Au premier trimestre 2000, PSC propose la version 8.3 de Progress pour
Linux. Cest la plate-forme de dploiement la plus avance, actuellement
utilise par la plupart des paquetages base de Progress. La version la plus
rcente de Progress, la version 9, sera disponible sur Linux quand la version
9.1 sera publie, vers la fin du premier trimestre 2000. Les versions antrieu-
res la version 8.3 ne sont pas natives et fonctionnent sur Linux laide du
Installation
Linstallation de Progress est un processus simple en trois tapes : installer
dabord les excutables partir du mdia, changer tous les paramtres du
noyau, puis installer lenvironnement. Aprs linstallation, on est prt crer
une premire base de donnes.
Conditions pralables
Linstallation du mdia Progress est un processus simple qui excute les
scripts fournis sur le CD-ROM. Avant de commencer, il faut sassurer que
lon a approximativement 100 Mo despace libre pour le logiciel. Selon les
produits achets, on peut avoir besoin de moins despace disque. Sassurer
galement de la licence, Progress Software Corporation License
Addendum , fournie avec les produits. On lappelle familirement la feuille
verte, daprs la couleur du papier sur laquelle elle est imprime.
Nous postulons, pour la suite de lexpos, que vous disposez dun ordinateur
fonctionnant dj sous Linux, quip dun lecteur CD-ROM oprationnel. Si
lon souhaite accder la base de donnes en mode client-serveur, on a besoin
de TCP/IP ; les terminaux passifs nen ont pas besoin. Progress a t officiel-
lement test sur Red Hat Linux version 6.1, mais fonctionnera sur la plupart
des distributions offrant un noyau stable 2.2.12 ou suprieur. Le processus
dcrit ici a t test sur la version 6.1 de Mandrake, similaire Red Hat.
Installer
Placer le CD-ROM dans le lecteur et le monter. La commande exacte varie
selon la distribution mais, en gnral, elle est de la forme :
Vrifier que le rpertoire courant se trouve sur autre chose que le CD-ROM.
Si on oublie cela, le script dinstallation rappelle quil ne peut sexcuter
directement depuis le CD-ROM. Excuter lutilitaire dinstallation proinstall.
Un cran daccueil saffiche (figure 8.1) : appuyer simplement sur la touche
Entre pour passer aux donnes de configuration de produit (figure 8.2).
PQWFGURPSURLQVW
_:HOFRPH_
__
_:(/&20(727+(352*5(6662)7:$5(_
_,167$//$7,2187,/,7<_
__
_5HOHDVH%_
_&RS\ULJKWF_
_3URJUHVV6RIWZDUH&RUS_
_$OO5LJKWV5HVHUYHG_
__
__
_>(QWHU 2.@_
Figure 81
cran daccueil de linstallation
Cest le cur de linstallation o lon entre les numros de srie et les cls
du produit. Les touches de fonction sont dcrites sur le ct droit ; utiliser la
touche Tab pour naviguer entre les champs. Entrer dabord le nom de la
socit, ou un autre identifiant unique. Cela nest pas essentiel il nest
utilis nulle part ailleurs que dans linstallation. Se servir de la feuille verte
pour entrer le numro de srie du premier produit. Le numro de version sera
dj rempli, appuyer simplement sur Tab pour passer au champ suivant. On
_3URGXFW&RQILJXUDWLRQ'DWD_
_>(QWHU $GGLWLRQDO@_
_&RPSDQ\1DPH*HRII&UDZIRUGBBBBBBBBBBBBBBBB>&WUO( 'RQH@_
_6HULDO1XPEHU>&75/7 4XLW@_
_5HOHDVH1XPEHU%BBBBBBBBBBBB>&75/1 5HOHDVH1RWHV@_
_&RQWURO1XPEHU*70"8:;;"05>&75/9 9LHZ@_
_>7$% 1H[W)LHOG@_
__
__
Figure 82
Saisie des numros de produit et des codes de contrle
_7\SH'HYLFHDQG'HVWLQDWLRQ_
_6HOHFW7\SHRI,QVWDOODWLRQ_
_6HOHFW'HVWLQDWLRQ3DWKQDPH_
_&RQWLQXHZLWK,QVWDOODWLRQ_
_9LHZ5HOHDVH1RWHV_
_&DQFHO_
_4XLW,QVWDOODWLRQ_
Figure 83
Options dinstallation
On est alors invit confirmer que lon installe tous les produits : rpondre
simplement Y. Lcran suivant, intitul Type, Device, and Destination, est
reprsent la figure 8.3. Dans les installations partir dun CD-ROM, il ny
a besoin daucune information supplmentaire pour le priphrique (device),
il suffit dentrer le type et la destination. Utiliser les flches pour slectionner
Type of installation et appuyer sur Entre. Utiliser encore les flches pour
_/DQJXDJH6HOHFWLRQ_
_*HUPDQ_
_6SDQLVK_
_)UHQFK_
_(QJOLVK,QWHUQDWLRQDO_
_
(QJOLVK$PHULFDQG_
_0DNH'HIDXOW_
_&RQWLQXHZLWK,QVWDOODWLRQ_
_&DQFHO_
'LVN6SDFH5HTXLUHGIRU3URGXFWVE\WHV
'LVN6SDFH5HTXLUHGIRU,QVWDOODWLRQE\WHV
'LVN6SDFH5HPDLQLQJ$IWHU,QVWDOODWLRQ E\WHV
Figure 84
Slection de la langue
_&XVWRP6HOHFW3URGXFWV_
_
(QWHUSULVH'DWDEDVH86(56_
_
&OLHQW1HWZRUNLQJ86(56_
_
*/'HYHORSPHQW86(5_
_,QVWDOO6HOHFWHG3URGXFWV_
_&KDQJH'HVWLQDWLRQ3DWKQDPH_
_&DQFHO_
_4XLW,QVWDOODWLRQ_
Figure 85
Slection des produits
dinstaller certains utilitaires optionnels (figure 8.5). Tous les produits entrs
dans le premier cran apparaissent ici, avec un astrisque qui indique quils
seront installs. En slectionnant un produit et en appuyant sur la touche
Entre, on obtient une liste complte des paquetages compris dans le produit.
En particulier, il est conseill de choisir tous les paquetages, sauf si lon
manque despace disque. La plupart des paquetages sont dj slectionns par
dfaut, mais il y en a un, en particulier, qui peut se rvler utile. Ceux qui
migrent leurs systmes vers la version native Linux de Progress doivent
savoir que les utilitaires de migration des bases de donnes version 8.2 ne
sont pas activs par dfaut, mais quils doivent tre installs. Ils font partie
des options proposes avec les produits de dploiement de base de donnes
tels que Enterprise Database, WorkGroup Database, ou Stand Alone Data-
base.
Aprs avoir vrifi tous les produits et confirm les slections, choisir Install
Selected Products laide des flches et appuyer sur Entre. Lutilitaire
dinstallation demande de confirmer que lon est prt commencer
linstallation ; entrer Y pour oui. Une dernire question se rapporte la copie
des scripts dans /usr/bin (figure 8.6). Cest une survivance de lpoque o
/usr/bin tait lendroit appropri o ranger de tels scripts.
_&RS\6FULSWV"_
__
_&RS\WKHVFULSWVWRXVUELQ"_
__
_>< <(6@>1 12@_
Figure 86
Copie des scripts de shell, en option
Il vaut mieux rpondre Non et ajouter $DLC/bin au PATH des utilisateurs qui
ont accs ces scripts (cest--dire les programmeurs et les administrateurs
les utilisateurs finaux nont pas besoin daccder la base de donnes
laide de ces scripts).
Ensuite, Progress commence dcompresser les fichiers du CD-ROM. Selon
la vitesse du systme et le nombre de produits, cela prend habituellement
entre 5 et 15 minutes. On reoit enfin la confirmation que linstallation du
mdia est termine.
Paramtres du noyau
Maintenant que tous les produits Progress ont t copis depuis le CD-ROM,
il se peut que le noyau Linux ait besoin dtre configur. Progress se sert de
deux ensembles principaux de ressources contrles par le noyau Linux la
mmoire partage et les smaphores. Avant de dcider des valeurs exactes de
chaque paramtre, il est bon de faire un petit retour sur ces ressources, pour
mieux les comprendre et les initialiser correctement.
La mmoire partage sert attribuer de la RAM destine aux accs multi-
utilisateur. Au lieu dcrire toutes les informations de la base de donnes
directement sur le disque, o chaque utilisateur provoquera une opration
dentre/sortie lente, Progress se sert de la RAM, plus rapide, comme dune
sorte de dpt denregistrements de la base de donnes. Les blocs sont lus
depuis le disque dans la zone de mmoire partage (connue aussi en tant que
buffer pool, ou cache) o ils sont alors disponibles non seulement pour lutili-
sateur qui a demand les donnes, mais pour tous les utilisateurs du systme.
Le moteur de base de donnes Progress est multithread et tire profit des SMP,
sous rserve quil y ait des processeurs multiples. Comme plusieurs utilisa-
teurs peuvent tenter simultanment de modifier la mmoire partage, Progress
se sert, si besoin est, dune autre ressource, les smaphores, pour verrouiller
les parties touches de la mmoire partage, et pour assurer que ces opra-
tions sur la mmoire partage sont atomiques. En ralit, les smaphores sont
seulement utiliss pour les oprations lentes ; les verrouillages mutex1, ou
les latches, sont utiliss pour les oprations rapides .
Les blocs de donnes modifis sont ventuellement sauvegards sur le disque
et limins de la mmoire mais pas toujours immdiatement. Si cela vous
semble dangereux, rassurez-vous : le systme de base de donnes a t conu
solide comme un roc. Bien que Oracle ait la rputation dtre lpreuve des
pannes intempestives, Progress a en ralit le meilleur score dans cette cat-
1. mutex (Mutual Exclusion Service) : qui oprent lexclusion rciproque ; latches : verrous de type
bascule. N.d.T.
gorie, si lon se fie des tudes menes par des utilisateurs, tel le Rapport
annuel du VAR2 Business.
Progress a incorpor des techniques qui grent la concurrence, la restauration
aprs une panne, ainsi que des modles de gestion de donnes qui garantissent
lintgrit de la base de donnes en conservant les blocs frquemment utiliss
dans le pool, en vue dune rutilisation (ce qui limine partiellement de
coteuses oprations dentre/sortie). Les dtails de ces modles sont
complexes et sortent du cadre de cet ouvrage. Pour plus dinformations,
consulter la section des documents techniques du PEG (Progress Email
Group), http://www.peg.com. Les architectes du moteur de base de donnes,
dsigns couramment comme lquipe moteur, ont crit plusieurs excellents
livres blancs, qui expliquent le fonctionnement interne de la base de donnes.
Voici maintenant une liste de paramtres, et de valeurs leur affecter. La
plupart dentre elles reposent soit sur le nombre dutilisateurs du systme, soit
sur le nombre de bases de donnes. Les fichiers den-ttes sem.h et shm.h
contiennent la description de ces paramtres dans le noyau Linux. Ces deux
fichiers se trouvent gnralement dans /usr/src/linux/include/linux.
Mmoire partage
Les trois paramtres initialiser sont :
SHMMNI : nombre didentifiants de mmoire partage ;
SHMSEG : nombre de segments de mmoire partage par processus ;
SHMMAX : taille maximale dun segment de mmoire partage.
Smaphores
Trois autres paramtres sont initialiser :
SEMMNI : nombre didentifiants de smaphore ;
SEMMNS : nombre de smaphores pour le systme ;
SEMMSL : nombre de smaphores par identificateur.
Progress se sert denviron cinq smaphores pour son propre usage interne,
plus un smaphore pour chaque utilisateur connect un instant donn la
base de donnes. SEMMSL doit contenir le nombre maximum dutilisateurs
connects la base de donnes, supposer quils le soient tous
simultanment : lui donner une valeur gale au nombre maximum dutilisa-
teurs dans la base de donnes plus cinq, et ajouter 10 % par scurit.
SEMMNS, dans la plupart des noyaux Linux, contient en gnral le produit
SEMMNI * SEMMSL. Ce nest pas mauvais en soi, mais cela suppose que
chaque utilisateur se connecte chaque base de donnes. Sil ny a quune
base de donnes, on na pas besoin dun autre calcul, mais, en cas de bases de
donnes multiples, cela peut conduire un gaspillage. Dans le doute, laisser
le calcul tel quel. Mais si lon envisage de crer une trs grande base de
donnes ainsi quune trs petite, telle une base de donnes de dveloppement
avec seulement cinq utilisateurs, comparer aux 400 utilisateurs du systme
de production, il vaut mieux modifier SEMMNS. Une bonne rgle empirique
est dutiliser promon dans chaque base de donnes pour trouver le nombre
maximum dutilisateurs par base et dadditionner tous ces nombres. Ajouter,
au total, cinq utilisateurs par base, puis 10 % par scurit.
Dans certaines variantes dUNIX, il existe aussi des structures de smaphores
Undo et une map des smaphores (SEMUME/SEMMAP) mais, dans Linux,
elles ne sont plus utilises.
Installation de lenvironnement
Pour initialiser lenvironnement Linux pour Progress, il suffit de fixer quel-
ques variables denvironnement et, ventuellement, de modifier les htes
TCP/IP et les fichiers des services tches qui doivent tre familires tout
administrateur de systme Linux. Si lon utilise une application en mode
caractre, il faudra aussi modifier la dfinition du terminal dont se sert
Variables denvironnement
Progress se sert de deux variables denvironnement Linux : DLC et TERM. La
variable DLC doit pointer vers le rpertoire o a t install Progress. Norma-
lement, elles auront les valeurs suivantes (en Bash) :
DLC=/opt/progress/dlc83b
TERM=linux
Export DLC TERM
3. curse : juron ; dans ce cas, raction du systme sous forme dun message crit lcran. N.d.T.
les cinq premires touches de fonction. Bien que certains mulateurs accor-
dent des touches supplmentaires, Progress na que les touches relles
dans le fichier PROTERMCAP. On peut soit modifier le fichier PROTERMCAP,
soit utiliser une mulation qui a un ensemble complet de touches de fonction.
Les entres spcifiques de PROTERMCAP sont dcrites en dtail dans les
manuels techniques de Progress et sortent du cadre de cet ouvrage. Mais voici
quelques conseils gnraux dutilisation de PROTERMCAP. Laisser le fichier
de configuration dorigine tel quel et, au lieu de le modifier, en faire une copie
et initialiser une variable denvironnement Linux, appele PROTERMCAP, qui
contient le nom du chemin compltement qualifi du nouveau fichier
PROTERMCAP (cest un cas o il est bon de personnaliser et dcraser les
options par dfaut).
Deux autres problmes peuvent se poser la configuration du terminal : la
touche espace arrire (backspace) et linterruption Linux. Progress sattend
ce que le caractre espace arrire soit Ctrl-H, mme sur les terminaux DEC o
il est dfini en ralit par Ctrl-? (cest--dire, la touche Delete). Progress
sattend aussi ce que la touche de suppression soit une fonction de suppres-
sion de caractre, ce qui interfre avec certaines options o la touche de
suppression du terminal est programme en tant que touche dinterruption.
Dans les deux cas, utiliser la commande stty dans le .profile de lutilisateur
pour changer ces valeurs. Ctrl-C est gnralement admis comme touche alter-
native dinterruption et il est compatible avec les dfinitions de terminal four-
nies dans Progress :
name 1000/tcp
Crer une ligne par base de donnes, en remplaant nom par un identifiant
unique propre chaque base de donnes. On peut utiliser le nom rel de la
base de donnes comme identifiant, ce qui le rend plus facile identifier.
Configuration
Configurer une base de donnes Progress nest pas difficile. Il y a quelques
dcisions prendre et la base de donnes relle pourra tre cre. Dabord,
examinons les structures de rpertoire dont se sert Progress, puis nous dbat-
trons de larbitrage entre espace et vitesse du disque.
Structure de rpertoire
La configuration de la structure des rpertoires pour une base de donnes
Progress est une partie importante de la prparation, en amont du dploiement
dune application. Bien entendu, on peut se contenter de tout mettre en vrac
dans un seul grand rpertoire, sans plus sen soucier. Cette solution nest pas
seulement inlgante, mais elle prsente linconvnient de grever ladminis-
tration des donnes. Une structure de rpertoire bien conue et organise est
essentielle pour quun site fonctionne bien. En gnral, on cre des systmes
de fichiers spars, correspondant certains usages de la base de donnes et
de lapplication. De cette manire, on peut disposer les systmes de fichiers
sur diffrents disques configurs et en rgler finement les options, telles que
le type fs, la taille de bloc, le type RAID et, quand on se sert des fichiers de
journaux, beaucoup dautres aspects du systme de fichiers. Pour ce faire, on
conseille la structure suivante (tableau 8.1) :
Tableau 81
Tableau des rpertoires
/opt/progress/dlc83b tablir des rpertoires distincts par version de Progress : les mises jour,
les tests et les rollbacks ventuels seront beaucoup plus faciles.
/mnt/db Les fichiers .db, .st et .d# sont tous ici. Ce sera un groupe de disques
agrgs par bandea et mis en miroir, dune taille de bloc fs adapte la
taille de bloc db et dots des options maximales de fiabilit et de
rcuprabilit.
Tableau 81
Tableau des rpertoires
/mnt/bi Les systmes de fichier .bi et .ai seront sur des disques en miroir, non
/mnt/ai agrgs par bande, dots de caractristiques de systme de fichiers
visant la fiabilit et la rcuprabilit maximales.
/mnt/logs tablir un systme de fichier pour les fichiers lg et les autres donnes de
surveillance. Recopier les logs quotidiens dans ce systme de fichiers
toutes les nuits. Il na pas besoin dtre en miroir ou agrg par bande
des disques anciens conviennent. Mettre en uvre une stratgie
darchivage qui place tous les fichiers dans des rpertoires ayant pour nom
la date aaaa.mm.jj de manire avoir un historique utilisable. Archiver les
fichiers .ai de la mme manire.
/mnt/source Ces systmes de fichiers seront rapides et fiables mais ils nont pas besoin
/mnt/rcode dtre rcuprables au plus haut degr lagrgat par bande (striping) et
/mnt/tmp la mise en miroir suffisent. Le full logging (une option de journalisation du
fs, actuellement non disponible sur Linux) nest pas ncessaire puisque
/mnt/scripts
lon peut tout rcuprer partir de la sauvegarde, mais la fiabilit est
importante, car les sessions dutilisateur peuvent tomber en panne en cas
dindisponibilit des fichiers rangs sur ces systmes de fichiers.
/mnt/recover Dlimiter une zone pour rcuprer les sauvegardes dans la plupart des
scnarios de restauration, il est indiqu de conserver la base de donnes
endommage pour le cas o la sauvegarde serait endommage, elle
aussi, ou bien mal faite. Ce systme de fichiers aura les mmes
caractristiques que le systme de fichier db.
a. striped : agrgat par bandes (strip) ; les blocs sont crits en utilisant les disques de lensemble successivement,
ce qui donne, avec un peu dimagination, un aspect de bandes. N.d.T.
Mme si lon na quune base de donnes petite ou peu utilise, qui ne semble
pas justifier lusage de disques multiples et le rglage individuel des systmes
de fichiers selon la mthode de cration et dappellation de systmes de
fichiers qui prcde, on peut toujours mettre en place cette organisation
comme une structure de rpertoire simple et monter les systmes de fichiers
selon les besoins : cela facilite les futures adaptations et volutions. Cette
conception est une garantie de succs des migrations futures.
Ddier un disque au fichier .ai est important pour les mme raisons, et pour
une autre encore : les images aprs constituent un moyen de reprise avec
restauration actualise. Si les fichiers .ai sont sur le mdia qui a t endom-
mag lors de lvnement lorigine de la restauration, on est en prsence
dun cercle vicieux. Autant que possible, consacrer un disque aux images
aprs . Si lon ne peut pas, on naura quune protection limite contre les
pannes matrielles srieuses et les erreurs de ladministrateur (par exemple, le
reformatage dun disque). On se sert encore des images aprs qui
protgent aussi derreurs, beaucoup plus probables, des utilisateurs, par exem-
ple, supprimer tous les clients pour effectuer des reprises intervalles
rguliers. Mais on ne tire tous les avantages de cette fonctionnalit que si le
fichier se trouve sur un disque distinct.
La mise en miroir des fichiers .ai et .bi est une bonne ide pour ne perdre ni
lun ni lautre, sous aucun prtexte. Mais cela ne signifie pas le remplace-
ment, ni de lun ni de lautre. Le fichier .bi est essentiel la restauration aprs
une panne totale. Comme la mise en miroir reproduit fidlement les erreurs
humaines telles que le scnario prcdemment voqu de la suppression de
tous les clients ou mme un simple rm * malencontreux dans le mauvais
rpertoire, seules les images aprs peuvent vous aider sortir de ces
impasses. La mise en miroir amliore les temps mais ne protge de rien.
Lagrgat par bandes des fichiers .bi et .ai est inutile il va lencontre de la
nature squentielle des entres/sorties et peut mme limiter le dbit ventuel
de ces fichiers. RAID 5 est, bien sr, totalement inadapt ces fichiers.
Les systmes dots dune mmoire fortement contrainte ou chargs de requ-
tes mal indexes peuvent se trouver confronts des taux dentres/sorties
trs lourds, dans la zone de fichiers provisoires dfinie par le paramtre de
dmarrage de session T. Cest un systme de fichiers o Progress cre les
fichiers temporaires destins divers usages. En principe, ces fichiers ne sont
pas lis (unlinked) et sont par consquent invisibles, mais ils peuvent tre
rendus visibles laide du paramtre t (minuscule). Les principaux types de
fichiers trouvs dans la zone T sont :
Srta<pid> : le fichier de tri stockage de la dfinition de la requte client
et du r-code ;
Lbia<pid> : limage avant locale stockage des sous-transactions ou
des variables qui permettra les undo ;
DBIa<pid> : zone de dbordement des tampons de tables provisoires.
Multivolume
Progress propose deux types dorganisation de bases de donnes. Les bases de
donnes volume simple sont les plus faciles crer mais ont une taille maxi-
male de 2 giga-octets (la limite dun appel systme lseek()). Les fichiers de
donnes ont galement la mme limite de 2 Go dans les bases de donnes
multivolumes, mais ils peuvent tre combins pour disposer dune plus
grande capacit de stockage. Ds la version 9 de Progress, toutes les bases de
donnes seront multivolumes, ce qui, associ aux amliorations prvisibles de
performance face la ncessit de grer des fichiers plus grands, fait du
multivolume le choix recommand.
Les bases de donnes Progress sont rparties en quatre types de fichiers ou
extents : image-avant, image-aprs, donnes et le fichier DB. Le fichier
image-avant donne Progress la possibilit dannuler les transactions inache-
ves. Les fichiers image-avant sont identifis par des extensions de fichier
.b1, .b2, etc. ou seulement .bi pour une base de donnes simple volume. Les
fichiers image-aprs se terminent par .a1, .a2, etc. et servent la restauration
actualise. Les fichiers de donnes contiennent la fois les donnes et les
index. Chacun de ces fichiers est dcrit dans un fichier de structure et prend sa
place dans une collection qui forme la base de donnes. Le nom du fichier de
structure finit par .st ; il sert crer son quivalent binaire, le fichier .db
une fois que la base de donnes a t cre, le fichier .st nest plus ncessaire
mais peut tre recr laide de lutilitaire prostrct et il est judicieux de le
garder titre de documentation.
Les tapes de cration de nouvelles bases de donnes sont bien dcrites dans
la documentation Progress ; nanmoins, nous prfrons proposer un exemple.
Il faut dabord crer un fichier .st contenant la liste de tous les fichiers, dfinis
par leur type (image-avant, image-aprs, donnes), leur longueur, fixe ou
variable, et sils sont fixes, leur taille en blocs de 1 Ko (ou ce que lon cre
comme taille de bloc de base de donnes 1 Ko tant la valeur par dfaut). Il
ne peut y avoir quune image avant et un fichier de donnes de longueur
variable. Pour rester simple, dfinissons un fichier de structure avec un fichier
fixe pour limage-avant et un fichier variable pour les donnes. Il est conseill
de grer limage-aprs car elle donne la capacit de rgnrer la base de
donnes dans son dernier tat correct, mme aprs la dernire sauvegarde.
Elle nest pas traite dans lexemple qui suit pour plus de simplicit. Le
fichier de structure peut sappeler, par exemple, mydata.st et ressembler :
%PQWELP\GDWDEI
%PQWELP\GDWDE
'PQWGEP\GDWDGI
'PQWGEP\GDWDG
Vrifier les fichiers des divers systmes dexploitation crs, suite cette
tape, .db, .b1, .b2, .d1, .d2, etc. Remarquer que le fichier .db nest pas dcrit
dans le fichier de structure, mais quil en drive. Le fichier .db est cr dans le
rpertoire spcifi par le troisime paramtre pass la commande prostrct :
/mnt/db/mydata. Tous ces fichiers constituent la base de donnes, mais sans
ltape finale, il nexiste encore aucune structure interne la base de
donnes : on dit quil sagit dune base de donnes void. Pour lui en donner
une, on copie une base de donnes vide (blank) dans la base void laide de la
commande procopy :
elle rside dans le rpertoire DLC, o les excutables Progress ont t instal-
ls. Progress trouvera la base de donnes vide laide de la variable denvi-
ronnement $DLC. Il existe aussi plusieurs versions secondaires de la base de
donnes vide, selon la taille des blocs. Pour crer une base de donnes avec
une taille de bloc de 8 Ko, utiliser empty8 au lieu de empty dans la commande
procopy. Il faut se souvenir que la taille de bloc variable est une caractristi-
que de la licence enterprise. Toutes les bases de donnes workgroup ont une
taille de bloc fixe 1 Ko.
La base de donnes est maintenant disponible pour un accs en mode mono-
utilisateur. Il faut dmarrer un agent multi-utilisateur pour donner les autorisa-
tions ncessaires en mode multi-utilisateur. Utiliser la commande proserve
pour dmarrer cet agent. Sans autres options, lagent autorisera 10 utilisateurs
sur le systme local accder la base de donnes. Pour autoriser un plus
grand nombre dutilisateurs, utiliser loption n. Pour un accs en rseau,
utiliser H N S. Ces options, ainsi que nombre dautres paramtres lis aux
performances, seront dcrits plus loin ; ils le sont aussi dans le manuel de
rfrence de ladministration systme de Progress.
Calibrage du cache
Le plus grand consommateur de RAM, dans la plupart des installations
Progress, est le cache dtermin par le paramtre B. Cest une grande zone
de mmoire partage utilise comme cache des blocs de disque, en vue
damliorer les performances.
Surtout, ne pas le rgler en fonction du nombre dutilisateurs, mais daprs le
nombre dentres/sorties que le sous-systme disque peut grer. Au dpart,
essayer de situer les oprations dentre/sortie physiques en dessous dun
seuil tel que les disques soient utiliss entre 25 et 50 %, quil ny ait aucune
file dattente et que le temps de service soit infrieur 20 ms. Si les disques
ont un temps daccs moyen de 10 ms, ils peuvent excuter 100 oprations
dentre/sortie alatoires par seconde et peuvent soutenir le rythme de 25 50
oprations dentre/sortie par seconde, sans risque de file dattente.
Il est probable que le nombre dutilisateurs aura une influence sur le nombre
de demandes daccs la base de donnes, mais leur relation avec le taux
dchec est non linaire. Elle suit une courbe de la forme :
R = L / sqrt((C * B )
o :
R = nombre doprations E/S physiques
L = nombre doprations E/S logiques
Nombre
Lectures Taux de
-B doprations Taux dchec
logiques succs
dentre/sortie
1 000 000 5 000 11 547 98.845% 1.155%
1 000 000 10 000 8 165 99.184% 0.816%
1 000 000 15 000 6 667 99.333% 0.667%
1 000 000 20 000 5 774 99.423% 0.577%
1 000 000 25 000 5 164 99.484% 0.516%
1 000 000 30 000 4 714 99.529% 0.471%
1 000 000 35 000 4 364 99.564% 0.436%
1 000 000 40 000 4 082 99.592% 0.408%
1 000 000 45 000 3 849 99.615% 0.385%
1 000 000 50 000 3 651 99.635% 0.365%
1 000 000 55 000 3 482 99.652% 0.348%
1 000 000 65 000 3 203 99.680% 0.320%
1 000 000 70 000 3 086 99.691% 0.309%
1 000 000 75 000 2 981 99.702% 0.298%
1 000 000 80 000 2 887 99.711% 0.289%
Figure 87
Exemple doptimisation de la taille de la RAM, en fonction des entres/sorties
B = taille du cache
C = une certaine constante (autour de 1,5)
Ainsi, il ny a pas vraiment de rgle, pour dterminer la valeur X de RAM par
utilisateur, que lon peut appliquer ici. Mais pour assurer un dmarrage en
trombe, une valeur de 2 4 Mo par utilisateur est gnralement une bonne
estimation. Ds que lon dispose dun certain nombre de donnes, on peut
rgler plus prcisment cette valeur pour une meilleure concordance avec les
entres/sorties. La figure 8.7 illustre un exemple.
Excuter Progress
Le processus dexcution quotidienne dune base de donnes Progress ne
reprsente pas, de manire gnrale, un travail plein temps. En principe, on
crit, une fois pour toutes, des scripts de dmarrage, darrt et de sauvegarde
de la base de donnes. Par la suite, on consacre surtout son temps recueillir
des donnes pour vrifier les performances du systme, et ventuellement les
optimiser. Beaucoup de systmes fonds sur Progress fonctionnent pendant
des annes sans attention particulire dun administrateur.
export TMP=/mnt/tmp
export MTH=`date +%m
export DAY=`date +%d
export LOGS=/mnt/logs/$MTH.$DAY
export SRV=`uname `
export SCRIPTS=/mnt/scripts
export DLC=/opt/progress/dlc83b
export DBNAME=/mnt/db/sports
msg()
{
MSG=$1 ; shift
echo "$MSG"
echo `date` "$MSG" >> $LOGS/start.log
# Start server
#
. /mnt/scripts/env
strt()
{
CMD=$1
USR=$2
GTX=$3
WHO=$4
if [ ! -d $LOGS ]; then
mkdir $LOGS
chmod 755 $LOGS
fi
sleep 5
msg "Database startup has completed"
# Start session
#
if [ -f $TMP/User_Lockout ]; then
clear
cat $TMP/User_Lockout
sleep 30
exit 0
fi
# continue startup
# Stop server
#
if [ ! -d $LOGS ]; then
mkdir $LOGS
chmod 755 $LOGS
fi
if [ $? = "0" ]; then
msg "*** DATABASE DID NOT SHUTDOWN WITH JUST -BY" dba
msg "*** Attempting to force shutdown with -F option..."
Sauvegarder la base
Il y a deux approches de la sauvegarde dune base de donnes Progress. On
peut utiliser soit le programme PROBKUP fourni par Progress, soit un sous-
programme de sauvegarde externe, comme tar ou cpio, ou un produit
commercial. La seule manire de sauvegarder correctement une base de
donnes en ligne est de se servir de PROBKUP. Une sauvegarde externe ne
peut pas sauvegarder correctement une base de donnes Progress en service :
elle doit tre arrte au pralable.
Une excellente mthode de sauvegarde est de combiner les deux mthodes en
se servant de PROBKUP pour faire une sauvegarde sur disque, puis dune
commande externe pour copier les fichiers disque sur bande. Si lon dispose
dassez despace disque, cette approche prsente plusieurs avantages :
moins de temps darrt une sauvegarde sur disque est beaucoup plus
rapide quune sauvegarde sur bande ;
moins de temps de restauration dans beaucoup de scnarios de restaura-
tion, avoir les fichiers de sauvegarde sur disque conomise le temps
dobtenir les bandes depuis un emplacement extrieur au site, gain qui
vient sajouter la vitesse accrue des accs disque, par rapport aux accs
bande ;
une couche supplmentaire de protection on na jamais trop de
sauvegardes ;
la capacit de combiner facilement les lments non bases de donnes de
lapplication sur une seule bande.
Voici un exemple de script de sauvegarde :
# Backup
#
. /mnt/scripts/env # export TMP=/mnt/tmp
if [ -f $TMP/User_Lockout ]; then
clear
cat $TMP/User_Lockout
sleep 30
msg *** Backup of active database??? dba
exit 0
fi
# continue backup
msg *** Starting PROBKUP of $DBNAME
$DLC/probkup $DBNAME /mnt/dump/$DBNAME.bak >> $LOGS/backup.log 2>&1
msg *** PROBKUP of $DBNAME complete with status $?
tar cvf /mnt/dump/$DBNAME.bak >> $LOGS/backup.log 2>&1
msg *** Backup of $DBNAME complete with status $ ?
Surveillance
Progress propose un excellent moniteur de base de donnes, en mode carac-
tre, connu sous le nom de PROMON. Les administrateurs doivent se familia-
riser avec PROMON et son mode interactif et, par ailleurs, saccoutumer
lordre dapparition des valeurs pour leur systme. Mais la vraie puissance de
cet outil rside dans la constitution dune synthse historique de lactivit sur
une longue priode de temps. On peut alors utiliser ces donnes pour valider
une hypothse concernant un problme et dcider dune action de manire
beaucoup plus cible et fiable. Le script suivant peut servir de base pour
rassembler les donnes :
# Monitor
#
2
1
s
p
x
EOF
Ce script dmarre PROMON, choisit le menu R&D (plus dtaill que le menu
par dfaut), et rgle lintervalle dchantillonnage 300 secondes et le
nombre de lignes par page de la sortie 9999. Il retourne au menu prcdent,
va lcran de rsum dactivit, rcupre le rsum depuis le dmarrage de
la base de donnes, chantillonne lactivit pendant cinq minutes et sort.
$FWLYLW\ 6XPPDU\
WRPLQVHF
cd /mnt/tmp
cd /mnt
ls -l db bi ai > $LOGS/dblist.$TM
df > $LOGS/df.$TM
who u > $LOGS/who.$TM
ps aux > $LOGS/ps.$TM
netstat -i > $LOGS/netstat.$TM
vmstat > $LOGS/vmstat.$TM
top b n1 > $LOGS/top.$TM
Les donnes captures sont susceptibles de fournir des indications trs impor-
tantes concernant ltat du systme dans son entier pendant la priode durant
laquelle un chantillonnage particulier sest effectu.
La surveillance de la base de donnes et du systme dexploitation nest
quune partie du combat peut-tre la plus importante et celle qui offre le
plus dopportunits pour surveiller lapplication elle-mme. La complainte de
lutilisateur, cest lent , est srement lun des aspects les plus frustrants du
travail de ladministrateur. Quest-ce qui est lent ? et Comment est-ce
lent ? sont les deux questions cls, auxquelles il est souvent trs difficile de
rpondre. Une technique simple pour glaner quelques ides de rponses est
dexcuter une session, en tche de fond, qui mesure les temps de rponse et
rassemble les statistiques dutilisation de lapplication. Cela ncessite une
petite procdure en L4G :
/* zippy.p */
do while true.
Pause 30.
If time < next_time then next.
Next_time = 300 * integer( time / 300 ).
Next_time = next_time + 300. /* increment time by 5 minutes. */
Do rcount = 1 to 20:
Stime = etime.
Find next customer no-lock no-wait no-error.
Find next order no-lock no-wait no-error.
Find next order-line of order no-lock no-wait no-error.
Find next salesrep no-lock no-wait no-error.
Find next state no-lock no-wait no-error.
End.
Ttime = etime.
L = " ".
W = 0.
Utime = etime( yes ).
/* 5 writes */
do I = 1 to 5:
utime = etime.
Do for state TRANSACTION:
find first state exclusive-lock no-wait.
if available state then
state.state = state.state.
else
l = "x".
end.
w[i] = etime utime.
End.
Utime = etime.
Curord = current-value( next-ord-num ).
Oldord = ( if oldord = 0 then 0 else ( curord oldord )).
T = 0.
Mw = 0.
Do I = 1 to 5:
t = t + w[i].
Mw = max( mw, w[I] ).
End.
Wt = t / 5.
T = 0.
Mr = 0.
Do I = 1 to 100:
t = t + r[i].
Mr = max( mr, r[I] ).
End.
Rt = t / 100.
Oldord = curord.
End.
Return.
$ tail f /mnt/log/01.12/zippy.dat
Dpannage
Il y a peu redire sur une base de donnes Progress. La plupart des problmes
se produisent sans doute du fait dutilisateurs forcens. Voici quelques-uns
des scnarios les plus probables.
La capture des messages par la commande trap du shell nest pas une bonne
initiative : elle met en dfaut le fonctionnement de ces messages et conduit
un tat trs instable du systme. Si lon sort dune session _progress, que lon
tape trap et que lon obtient une sortie quelconque, alors le systme est en tat
de risque. Le problme le plus courant dans ce scnario est un processus
demballement (runaway) un processus qui tente de consommer tout le
temps CPU disponible. Sil y a un trap, il faut sen dbarrasser.
Le comportement de kill -8 (SIGFPE) varie selon les versions de Progress.
Dans certaines versions, il agit comme un message non gr cest--dire
quil vide la mmoire et que le processus meurt sans tentative srieuse de
nettoyage, ce qui revient, pour lessentiel, la mme chose que kill -9. Cest
mauvais : si lon a laiss un verrou, cela peut entraner larrt de la base de
donnes. Dans les versions les plus rcentes (dont la version 8.3b de Linux),
cette commande se comporte comme si SIGHUP avait t envoy, mais elle
cre aussi un fichier procore.
Avec kill 10 (SIGUSR1), dans les versions rcentes, le processus cre un
fichier procore et un fichier protrace, sans autre impact sur le processus (qui
reste en fonctionnement). Cest une caractristique super bien quelle ne
soit pas encore trs bien prise en charge (elle nest documente nulle part et le
support technique ignore souvent son existence). Le fichier protrace est trs
intressant il contient une trace de la pile L4G, dont le numro de ligne
indiquant o en tait le processus au moment o il a t signal . Cest trs
pratique pour dpister ce quun utilisateur faisait (vraiment) quand il a t
suspendu .
kill 9 (SIGKILL) nest jamais bon et nest jamais vraiment ncessaire. Il
existe un mythe selon lequel kill 9 est bon parce que cela marche
toujours . Cest faux un processus bloqu dans certains tats (tels que D
ou disk-wait) ne ragira rien, y compris kill 9.
Quand on utilise kill 9, le processus dtruit ne peut pas tre nettoy (cest une
caractristique UNIX kill 9 est dfini comme uncatchable, impossible
rattraper). Le chien de garde (watchdog) remarque que le client est parti et
tente alors darrter la session et de nettoyer tout ce qui est actif sous le
compte du client. Il finit par nettoyer la plupart du temps. Quelquefois une
ressource critique est verrouille, et il ny a aucun moyen de nettoyer parce
que les donnes ncessaires qui taient dans lespace mmoire du client ont
disparu. Face cette ventualit, le chien de garde arrte la base de donnes
si lon nutilise pas de watchdog, lagent (broker) le fera. Ce problme
nest pas aussi important quil en a lair : si un verrou a t maintenu (il y en a
toujours quand le chien de garde arrte brutalement la base de donnes),
personne na rien fait dautre quessayer de contourner le problme, de toute
faon, les utilisateurs sont bloqus, et ils ne le savent pas encore.
Forces et faiblesses
Comme tout produit, Progress nest pas parfait. Bien quil offre un vaste
ensemble de caractristiques, que seules possdent les bases de donnes de
classe professionnelle, il lui manque certaines des options les plus chres
disponibles chez les quatre grands . Voici un expos de ses forces et de ses
faiblesses.
Le L4G
Pour beaucoup de raisons, le L4G (langage de quatrime gnration) de
Progress est la fois sa plus grande force et une faiblesse. Le L4G est un
langage procdural conu pour crire une application entire. Depuis le tout
dbut, Progress Software Corporation (PSC) a tenu cette promesse, comme en
tmoignent les nombreuses applications de ses partenaires, qui ne font gure
appel au L3G (langage de troisime gnration). Il ne sagit pas seulement de
produits marginaux, mais des produits industrialiss des diteurs de logiciel
tels que FiServ, qad Inc., Symix et NxTrend. Dun autre ct, les L4G sont
perus comme propritaires et ferms. Progress ne fait pas exception et, en
fait, le manque de pilotes ODBC abordables a jusqu rcemment renforc le
caractre ferm du produit. un certain niveau, cest un faux problme
puisquen fait toutes les bases de donnes ont leurs propres extensions SQL
propritaires et que la portabilit du code est limite un petit sous-ensemble
de lapplication.
Orientation OLTP
Depuis le dbut, le moteur de base de donnes a t construit comme un
moteur de transactions. En fait, contrairement aux autres bases de donnes, il
est impossible de modifier des donnes sans passer par une transaction il
en rsulte une trs forte intgrit des donnes. Le L4G lui-mme a des carac-
tristiques orientes vers le monde OLTP. Traditionnellement, SQL sappuie
sur les ensembles, ce qui signifie qu un instant donn, les enregistrements
sont regroups dans un ensemble, avant dtre traits. Pour les applications en
ligne, ce nest pas aussi efficace et naturel que le L4G qui sattache trouver
un enregistrement unique et le rend disponible lapplication immdiatement.
Cependant, il y a un revers au modle OLTP pur, cest laide la dcision. Les
accs orients ensemble sont de loin plus performants que les recherches indi-
viduelles denregistrements quand il sagit de statistiques et de prvisions
grande chelle. Les gnrateurs de rapports ODBC attendent de telles caract-
ristiques une rapidit au moins gale celle de la vitesse dexcution du SQL.
Progress supporte la spcification SQL-88, la plus ancienne, mais il nest pas
optimis pour ce type daccs. Les rapports fonctionnent plutt bien mais,
dans beaucoup de cas, sont inefficaces et crits en mauvais SQL : le SQL
gnr par ordinateur, en particulier, ne fonctionne pas aussi vite que le L4G
natif pour les mme rapports.
Toutefois, cette situation est en train de changer. La version 9 introduit lente-
ment le moteur SQL-92, rcemment crit. PSC a crit un produit entirement
nouveau qui sappuie sur le mme gestionnaire de mmoire que le produit
L4G courant. Le nouveau produit ne se contente pas seulement de se confor-
mer au standard de langage le plus rcent, il est optimis pour excuter SQL.
Ce nouveau produit sera commercialis avec la version 9.1 de Progress.
Cot de proprit
Progress est propos un prix abordable pour les socits ordinaires pas
seulement en termes dinvestissement initial, mais aussi en termes de cot de
fonctionnement. Aujourdhui, la plupart des installations Progress nont pas
dadministrateur de base de donnes temps plein. La base de donnes na
besoin dtre reconfigure que dans trs peu de cas, tels quune augmentation
significative du nombre dutilisateurs. La plupart des administrateurs
Progress partagent leur temps entre une heure ou deux de surveillance de leur
base de donnes et dautres tches banales dadministration du systme. Un
systme qui peut convenir plusieurs milliers dutilisateurs tout en tant
oprationnel avec une administration de base de donnes minimale est un
remarquable succs.
PSC a autoris le groupe Aberdeen valuer les cots initiaux et les cots
long terme de la base de donnes Progress, compare aux bases de donnes
qui ciblent les environnements grands et petits. Les rsultats peuvent tre
consults sur le site web de Progress, http://www.peg.com.
Internationalisation
Linternationalisation couvre une large varit de sujets, tels la version
Double Byte de Progress destine aux jeux de caractres asiatiques, la traduc-
tion des messages derreur de Progress, la date rgionalise et les formats
numriques, ou les tables de fusion fournissant des capacits de tri qui
reposent sur les ensembles de caractres nationaux. Progress met tout cela
disposition au travers dun riche ensemble de fonctionnalits de gestion de
caractres.
Aucun BLOB
Les grands objets binaires (BLOB, Binary Large OBjects) sont des donnes
telles que les clips vido et audio, ou les donnes gospatiales. La version
courante de Progress ne gre pas ces donnes, mais un support minimal est
prvu lavenir. Les objets plus petits, jusqu une taille de 32 Ko, sont
grs ; on peut aussi se servir de la base de donnes comme dun index de
BLOB, rangs en tant que pointeurs de fichiers. Cependant, si lon a des
contraintes de gestion dobjets multimdia trs importants, Progress nest
probablement pas la bonne solution.
/* websrvr.p */
define variable I as integer no-undo.
define variable req as character no-undo.
define variable outpipe as character no-undo.
do while true :
input from value( "/tmp/cgi-pipe" ) no-echo.
import unformatted req.
outpipe = substring( req, 1, index( req, "&" ) - 1 ).
output to value( outpipe ) unbuffered.
put unformatted "Content-type : text/html" skip(1).
put unformatted skip(1).
I = I + 1.
put unformatted
"<html><head><title>Bogus Response</title></head></html>" +
"<body><p>" +
"Sample Bogus Response #" + string( I, >>>>9 ) +
"</p></body></html>".
output close.
input close.
end.
return.
# Start daemon
#
. /mnt/scripts/env # export TMP=/mnt/tmp
if [ -f $TMP/User_Lockout ] ; then
clear
cat $TMP/User_Lockout
sleep 30
exit 0
fi
# startup
/* sportssrvr.p */
do while true :
put unformatted
"<html><head><title>Customer List</title></head></html>" +
"<body><br><br><B><I>Customers :</B></I><br>"
"<table><th>Number</th><th>Name</th><th>Address</th>"
"<th>City</th><th>State</th><th>Zip</th><th>Country></th>".
for each customer no-lock :
put unformatted "<tr>"
"<td>" customer.cust-num "</td>"
"<td>" customer.name "</td>"
"<td>" customer.address "</td>"
"<td>" customer.city "</td>"
"<td>" customer.state "</td>"
"<td>" customer.postal-code "</td>"
"<td>" customer.country "</td>"
"</tr>".
end.
end.
return.
Rsum
La base de donnes Progress prouve depuis des annes quelle est un produit
extrmement fiable, aussi facile utiliser qu administrer. Linstallation
reprsente peine plus quune copie du mdia et linitialisation de quelques
variables. Bien quil y ait beaucoup de caractristiques telles que la restaura-
tion avance (roll forward) et le commit deux phases, il ny a rien dobliga-
toire et ladministration est simple. Les nombreuses options de dmarrage
permettent de personnaliser le fonctionnement de Progress, daugmenter les
performances et dquilibrer lutilisation des ressources. Bien que Progress
soit un excellent choix pour les PME sensibles aux cots, certaines grandes
entreprises peuvent exiger des caractristiques de fonctionnement 24 heures
sur 24, non disponibles dans la version 8.3 fournie sur Linux. En dehors de
ces caractristiques de haut de gamme, Progress fournit toutes les caractristi-
ques vraiment importantes que les bases de donnes de renom proposent un
prix beaucoup plus lev.
FAQ
Q. Quel est lge de Progress Software Corporation (PSC) ?
R. Au dbut, PSC a dmarr sous le nom de Data Language Corp., en 1981.
Cest lorigine du nom de la variable DLC utilise lors de linstallation. Le
produit sappelle Progress depuis sa commercialisation, en 1983. Pour
bnficier de cette image, le nom de la compagnie a chang en 1987. PSC
est cote depuis 1991 et connue au Nasdaq sous lappellation de PRGS.
Q. Quelle est la diffrence entre les versions Workgroup et Enterprise de la
base de donnes ?
R. Workgroup a t conue pour tre utilise par un maximum de 35 utilisa-
teurs, et strictement 50 utilisateurs. La plupart des caractristiques de
performance haut de gamme, tels les blocs de base de donnes variables,
lcriture de pages de background ou le paramtre spin, ne sont pas
disponibles. Toutes les caractristiques de base, restauration avance, tol-
rance aux pannes, mise en rseau, connexions de base de donnes multi-
ples dans une connexion simple et commit deux phases sont communes
aux deux bases de donnes. Mais les utilisateurs, quels que soient leurs
besoins, ont intrt ne pas ngliger, le cas chant, le choix Enterprise, si
des performances sont attendues.
Q. Progress est-il disponible linternational ?
R. Oui. En fait, Progress a des bureaux partout dans le monde. Dans certains
cas o Progress nest pas prsent, des rseaux de distribution nationaux
ont t crs. Chaque bureau a sa propre politique et ses tarifs, aussi
nayez pas peur de vous adresser votre bureau local. La liste est disponi-
ble sur le site web de Progress.
Q. Y a-t-il un niveau RAID recommand avec Progress ?
R. On ne recommande aucun RAID avec parit (2, 3, 4, 5, 7, ). Les rsul-
tats des RAID avec parit sont une parodie de performance. Cela nest fait
que pour vous rendre fidle un diteur de RAID, car vous aurez en
permanence besoin damlioration et de mise niveau pour tirer des
performances raisonnables dun tel systme. RAID 0 (striping) et RAID 1
(mirroring) fonctionnent sans parit et sont, par consquent, de bons choix
(en particulier sils sont combins). Vous devez ajouter de la RAM et
mentir en quelque sorte sur les rsultats de demandes dentres/sorties
(cache criture aprs coup ou cache criture au fur et mesure )
pour amliorer les performances des RAID avec parit, alors que lon
amliore les performances des systmes agrg par bande (striped) et en
miroir en ajoutant des disques. Le disque est moins cher que la RAM (en
particulier la RAM exige pour les RAID et les serveurs haut dbit) et
vous pouvez en ajouter beaucoup plus (il y a toujours des limites strictes
sur le volume de RAM que lon peut ajouter, sans mme tenir compte du
budget...). Et il y a aussi la question des consquences dans la RAM en cas
de panne dalimentation. Si une criture du cache est autorise (il faut
quelle le soit, pour obtenir des performances dcentes, si on laisse de ct
la parodie concernant les RAID), une seule petite erreur et votre base de
donnes est nettoye (sachant que les batteries de sauvegarde sont souvent
en dfaut) parce que la zone a menti Progress, cest--dire na pas
montr ce qui est vraiment sur le disque, ce qui rend la restauration aprs
la panne trs contestable.
Dire Non RAID 5 (et ses cousins).
Q. Pourquoi Progress ne fonctionne-t-il pas avec RAID 5 ?
R. Progress fonctionne avec RAID 5. Mais, comme toute autre base de
donnes, il fonctionne beaucoup, mais vraiment beaucoup plus vite avec
dautres technologies de disque. Progress nest pas au courant du type de
systme RAID que vous utilisez. Seuls les utilisateurs auront une opinion.
Q. Je me sers de la version courante de Progress qui utilise les binaires SCO
et iBCS. Que dois-je faire pour passer la version Linux native ?
R. Dabord, appeler vos commerciaux PSC et modifier votre licence pour la
plate-forme Linux, puis installer les binaires natifs comme dcrit dans ce
chapitre. Vrifiez que vous avez choisi un rpertoire part pour cette
version de Progress. Modifiez vos variables denvironnement, en particu-
lier la variable $DLC, et le reste de vos scripts existants de dmarrage,
darrt, de sauvegarde, etc. seront prts fonctionner. La seule chose
ncessaire est de convertir la base de donnes au format de la version 8.3
pour Linux. Si vous utilisez dj le format 8.3 pour SCO, il ny a pas lieu
de faire la conversion. Avec la version 8.2, il sagit seulement de tronquer
le fichier .bi, par la commande proutil dbname C truncate bi. Cependant,
ces deux mthodes ne sont pas garanties par Progress. Pour des versions
plus anciennes de Progress, ou par scurit, crer une nouvelle base de
donnes version 8.3 avec le binaire Linux, puis effectuer un dchargement
et un rechargement de la base de donnes.
Q. Je sais que le L4G Progress dispose dune interface graphique sous MS
Windows et que Linux admet Progress avec un client en mode caractre.
Mais puis-je utiliser aussi X Window ?
R. Oui, mais seulement avec lancienne version 7 de Progress, qui nest pas
un portage natif sous Linux (en dautres termes, les binaires SCO se
servant de lmulation iBCS). Au moment o la version 8 tait en chantier,
lquipe marketing a rvis le nombre de licences vendues en environne-
ment graphique sous UNIX et a trouv ce nombre un peu restreint. Une
dcision marketing a t de geler le support X Window au niveau de la
version 7 de Progress. Ctait aussi lpoque o X Window signifiait un
Dans ce chapitre
Installation de PostgreSQL
Installation et configuration de la version
source de PostgreSQL
Valider et vrifier linstallation de
PostgreSQL
Gestion et scurit dune base de
donnes PostgreSQL
Ressources et outils sur lInternet
Introduction
Tous les systmes informatiques au monde sappuient sur des bases de
donnes pour ranger et retrouver les informations. Un ordinateur sert ranger,
retrouver et traiter des informations, ce quil doit faire trs vite, pour faire
gagner du temps aux humains. En mme temps, le systme doit tre simple,
robuste, rapide, fiable, conomique et trs facile utiliser. Une base de
donnes est la partie du systme la plus vitale, parce quelle stocke les infor-
mations critiques de toutes les entreprises. Les industries, telles les tlcom-
munications, celles du secteur de lautomobile, les banques, les compagnie
ariennes, etc. ne peuvent fonctionner de manire efficace sans systme de
base de donnes. Les systmes de bases de donnes les plus rpandus repo-
sent sur les spcifications des standards SQL, de lISO et de lANSI (aux
tats-Unis). Les spcifications actuelles les plus utilises dans lindustrie sont
les standards SQL ISO/ANSI 1992/98. Sans un standard tel que SQL
ANSI/ISO, il serait trs difficile pour le client de dvelopper une application
dun ct, et de lexcuter par ailleurs sur dautres systmes de bases de
donnes. Lutilisateur final veut quune application soit dveloppe une fois
pour toutes, afn de pouvoir passer par SQL ISO, ODBC ou JDBC, et la
dployer sur divers systmes de bases de donnes.
PostgreSQL est actuellement la plus avance des bases de donnes objet rela-
tionnelle open-source au monde. Postgres, dveloppe lorigine par le
dpartement informatique de luniversit de Berkeley, a beaucoup innov
dans le domaine des concepts objet-relationnel . Il offre, outre le langage
SQL92/SQL3, les fonctionnalits suivantes : intgrit des transactions, fonc-
tions dfinies par lutilisateur, procdures stockes, dclencheurs et extensibi-
lit de type. PostgreSQL descend en droite ligne du code source originaire de
Berkeley ; il fait partie du domaine public, et il est daccs gratuit. Il existe
des millions de bases de donnes PostgreSQL, installes titre de serveurs de
base de donnes, tant sur le web que pour des applications. Cest un systme
de base de donnes relationnelle objet trs sophistiqu (ORDBMS).
PostgreSQL fonctionne sur Solaris, SunOS, HPUX, AIX, Linux, Irix, Digital
Unix, BSDi, NetBSD, FreeBSD, SCO UNIX, NEXTSTEP, Unixware et pres-
que toutes les variantes dUNIX. Un portage sur Microsoft Windows NT a t
ralis laide du progiciel cygwin32 de Cygnus.
Fiche didentit :
Titre : Base de donnes SQL PostgreSQL (Systme de gestion de base de
donnes relationnelle objet).
Version actuelle : 7.0.
ge : PostgreSQL a maintenant 15 ans, il a vu le jour en 1985.
Se procurer PostgreSQL
Si lon envisage dutiliser PostgreSQL sur un systme dexploitation Linux,
on peut acheter les CD-ROM Linux de Red Hat, de Debian ou de Slackware
qui contiennent dj PostgreSQL sous forme de paquetages (code source et
binaire), ou bien les acheter en ligne sur lun de ces sites web :
Linux System Labs : http://www.lsl.com/
Red Hat : http://www.redhat.com/
Cheap Bytes Inc. : http://www.cheapbytes.com/
Debian : http://www.debian.org/vendors.html
Lorganisation PostgreSQL vend aussi un CD-ROM PostgreSQL, qui contient
le code source complet et les fichiers binaires destins de nombreux syst-
mes dexploitation UNIX, ainsi quune documentation en ligne : le site prin-
cipal du CD-ROM PostgreSQL est http://www.postgresql.org
# cd /mnt/cdrom/RedHat/RPMS
# man rpm
# ls postgre*.rpm pour voir la liste des paquetages
# rpm -qpi postgre*.rpm | less informations sur les paquetages
# rpm -qpl postgre*.rpm | less liste des fichiers de chaque paquetage
# ps -auxw | grep -I postmaster
# rpm -i postgre*.rpm
# man chkconfig
# chkconfig add postgresql
# /etc/rc.d/init.d/postgresql start
# man xhost
# xhost +
# su - postgres
bash$ man createdb
bash$ createdb mydatabase
bash$ man psql
bash$ psql mydatabase
..... in psql press up/down arrow keys for history line editing or give \par
bash$ export DISPLAY=<hostname:>0.0
bash$ man pgaccess
bash$ pgaccess mydatabase
bash$ cd /usr/doc/postgresql*
bash$ man gv
bash$ gv admin.ps.gz
bash$ gv maximum-rpm.ps.gz
Dtails de linstallation
Cette section explique en dtail chacune des tapes de la section prcdente
Installation rapide de PostgreSQL .
Insrer le CD-ROM Red Hat Linux le plus rcent dans le lecteur, se connecter
en tant que root, puis passer les commandes suivantes:
# mount /mnt/cdrom
# cd /mnt/cdrom/RedHat/RPMS
# ls postgre*.rpm
postgresql-6.5.2-1.i386.rpm
postgresql-devel-6.5.2-1.i386.rpm
postgresql-jdbc-6.5.2-1.i386.rpm
postgresql-odbc-6.5.2-1.i386.rpm
postgresql-perl-6.5.2-1.i386.rpm
postgresql-python-6.5.2-1.i386.rpm
postgresql-server-6.5.2-1.i386.rpm
postgresql-tcl-6.5.2-1.i386.rpm
postgresql-test-6.5.2-1.i386.rpm
Pour consulter les informations sur les RPM PostgreSQL, utiliser loption -i
rpm et la commande pipe it to less, pour les voir page par page. Voir la page
du manuel en ligne en tapant man less.
Quelquefois, il vaut mieux vrifier la liste des fichiers contenus dans les
paquetages RPM. Pour voir la liste des fichiers du RPM PostgreSQL RPM :
# /etc/rc.d/init.d/postgresql stop
# rpm -i postgre*.rpm
init.d/postgresql
rc0.d/K15postgresql
rc1.d/K15postgresql
rc2.d/K15postgresql
rc3.d/S85postgresql
rc4.d/S85postgresql
rc5.d/S85postgresql
rc6.d/K15postgresql
# /etc/rc.d/init.d/postgresql start
qui lance le processus Linux postmaster, lequel va tre lcoute des requ-
tes sur le port TCP 5432. Pour consulter le processus, taper
# xhost +
Le + aprs xhost signifie que lon donne accs laffichage tous les utilisa-
teurs UNIX du systme. Pour plus dinformations, se reporter un manuel
standard de X Window, ou consulter la page du manuel en ligne :
# man xhost
# su - postgres
bash$ id
postgres(uid=10 gid=4)
On est prt crer une premire base de donnes ! Cela se fait avec la
commande createdb. Voir la page de manuel en ligne avec man createdb.
cre une base de donnes nomme mydatabase. Quand celle-ci est cre, on
peut y accder avec linterface psql.
Pour consulter la documentation en ligne, taper :
qui lance le programme psql, avec linvite psql. Dans psql, on utilise les
flches pour diter une ligne de lhistorique, ou bien la commande \s. Mainte-
nant, on peut entrer toutes les commandes SQL standard linvite psql. Se
reporter un guide ou un manuel SQL pour plus dinformations. On sort du
programme psql par la commande \q, qui ramne linvite bash$.
Pour utiliser linterface pgaccess de PostgreSQL, il faut exporter une varia-
ble denvironnement Linux appele DISPLAY :
ou bien :
bash$ cd /usr/doc/postgresql*
bash$ gv admin.ps.gz
bash$ man gv
Le gcc install doit tre en version 2.81 ou suprieure. Vrifier la version par
la commande :
shell$ gcc v
Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66/specs
gcc version egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)
$ gunzip postgresql-7.0.tar.gz
$ tar -xvf postgresql-7.0.tar
$ mv postgresql-7.0 /usr/src
Avant de dmarrer
La construction de PostgreSQL ncessite la commande GNU make, qui ne
fonctionne pas avec dautres programmes make. Sur les systmes Linux
GNU, make de GNU est loutil par dfaut ; sur dautres systmes, il se peut
quil soit install sous le nom de gmake. Par la suite, nous utiliserons gmake
pour nous rfrer make de GNU, indpendamment du nom quil porte sur le
systme. Pour vrifier la prsence de make GNU, entrer :
$ gmake version
$ df -k
tant donn le prix actuel des disques durs, il faudra probablement tudier
une configuration assez grande et rapide avant de mettre une base de donnes
en production.
Attention. Il faut sassurer que la base de donnes nest pas en cours de mise jour
lors de la sauvegarde. Si ncessaire, arrter postmaster, diter les permissions conte-
nues dans le fichier /usr/local/pgsql/data/pg_hba.conf pour nautoriser quun seul
utilisateur, puis relancer postmaster.
$ ps ax | grep postmaster
$ kill pid
4. Configurer le code source pour le systme. Cest cette tape que lon
peut spcifier le chemin dinstallation rel pour le processus de construc-
tion et choisir ce qui doit tre install. Se placer dans le sous-rpertoire src
et entrer
$. /configure
suivi de toutes les options. Pour une premire installation, on peut ne rien
mettre. Pour consulter la liste complte des options, taper :
. /configure help
$ gmake
$ gmake install
$ LD_LIBRARY_PATH=/usr/local/pgsql/lib
$ export LD_LIBRARY_PATH
/usr/local/pgsql/lib
$ mkdir /usr/local/pgsql/data
$ chown postgres /usr/local/pgsql/data
$ su - postgres
$ /usr/local/pgsql/initdb -D /usr/local/pgsql/data
$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
On peut aussi rcuprer les anciens fichiers pg_hba.conf et tous les autres
fichiers utiliss pour lauthentification, tels les fichiers de mots de passe.
Ceci termine linstallation au sens strict. Pour vous rendre la vie plus facile et
plus agrable, nhsitez pas essayer les suggestions ci-aprs.
On se facilite la tche en initialisant quelques variables denvironnement.
Dabord, pour inclure /usr/local/pgsql/bin (ou son quivalent) dans son
PATH, ajouter la ligne qui suit dans le fichier de dmarrage du shell, par
exemple /.bash_profile (ou dans /etc/profile, si on veut laffecter chaque
utilisateur) :
PATH=$PATH:/usr/local/pgsql/bin
$ cd /usr/src/pgsql/postgresql-7.0/doc
$ gmake install
MANPATH=$MANPATH:/usr/local/pgsql/man
$ cd /usr/local/pgsql/doc
$ gunzip -c user.ps.tz | lpr
Voici comment faire dans le cas o ghostscript est install sur le systme
et que lon utilise une imprimante laser :
$ gunzip user.ps.gz
$ gshp -sOUTPUTFILE=user.hp user.ps
$ gzip user.ps
$ lpr -l -s -r manpage.hp
# !/bin/sh
[ -x /usr/local/pgsql/bin/postmaster ] && {
su -l pgsql -c 'exec /usr/local/pgsql/bin/postmaster
-D/usr/local/pgsql/data
-S -o -F > /usr/local/pgsql/errlog' &
echo -n ' pgsql'
}
On peut placer les sauts de ligne comme on le voit ici. Le shell est assez
intelligent pour passer outre une fin de ligne sil rencontre une expression
inacheve. Lexec ne tient compte que dun seul niveau du shell sous le
processus postmaster, de sorte que le parent est init.
Dans Red Hat Linux, ajouter un fichier /etc/rc.d/init.d/postgres.init, qui se
comporte comme lexemple de contrib/linux/. Crer un lien symbolique
vers ce fichier dans /etc/rc.d/rc5.d/S98postgres.init.
Excuter les tests de non-rgression pour vrifier que PostgreSQL fonc-
tionne sur la machine comme prvu. Cest impratif avant de mettre un
serveur en production. Le fichier /usr/src/pgsql/postgresql-7.0/src/test/
regress/README contient toutes les instructions ncessaires pour excu-
ter et interprter les tests de non-rgression.
# man xhost
# xhost +
# su - postgres
bash$ view /usr/bin/pgaccess
bash$ export DISPLAY=<hostname of your machine:>0.0
bash$ createdb mydb
bash$ pgaccess mydb
Une belle interface graphique prsente diffrents boutons pour crer des
formulaires, des tables, des requtes, des rapports, etc. Pour plus dinforma-
tions sur pgaccess, visiter le site http://www.flex.ro/pgaccess. Si vous avez
des commentaires ou des suggestions faire, nhsitez pas envoyer un e-
mail teo@flex.ro.
bash$ cd /usr/lib/pgsql/python
bash$ createdb thilo
bash$ psql thilo
thilo=> create table test (aa char(30), bb char(30) );
bash$ /usr/bin/python
>>> import _pg
>>> db = _pg.connect('thilo', 'localhost')
>>> db.query("INSERT INTO test VALUES ('ping', 'pong')")
>>> db.query("SELECT * FROM test")
HLQV_]ZHL
SLQJ_SRQJ
URZ
>>>CTRL+D
bash$
bash$ su - root
# cp /usr/lib/pgsql/python/_pg.so /usr/lib/python1.5/lib-dynload
bash$ cd /usr/doc/postgresql-7.0.0/examples/perl5
bash$ perl. /example.pl
bash$ cd /usr/doc/postgresql-7.0.0/examples/libpq++
bash$ su root --> pour changer la proprit des exemples
# chown -R postgres /usr/doc/postgresql-7.0.0/examples
# exit
bash$ g++ testlibpq0.cc -I/usr/include/pgsql -I/usr/include/pgsql/libpq++
-lpq++ -lpq -lcrypt
bash$. /a.out
bash$ cd /usr/doc/postgresql-7.0.0/examples/jdbc
bash$ echo $CLASSPATH
CLASSPATH=/usr/lib/jdk-x.x.x/lib/classes.zip
bash$ cd /usr/doc/postgresql-7.0.0/examples/ecpg
bash$ ecpg test1.pgc -I/usr/include/pgsql
bash$ cc test1.c -I/usr/include/pgsql -lecpg -lpq -lcrypt
bash$ createdb mm
bash$. /a.out
bash$ cd /usr/doc/postgresql-7.0.0/examples/sql
bash$ make
bash$ sql_exe
# su - root
# rpm -i postgresql*test.rpm
# rpm -i postgresql*.src.rpm
# cd /usr/src/redhat/SPECS
# more postgresql*.spec
pour savoir quel paquetage RPM systme on doit installer. Excuter ce qui
suit pour prparer le paquetage :
# cd /usr/src/redhat/BUILD
# chown -R postgres postgresql*
# su - postgres
bash$ cd /usr/src/redhat/BUILD/postgresql-7.0.0/src/test/regress
bash$ more README
bash$ make clean; make all runtest
bash$ more regress.out
# su - root
# rpm -i postgresql*.src.rpm
# cd /usr/src/postgresql7.0.0
# man patch
# patch -p0 < patchfile
# make clean
# make
Les fichiers correctifs se trouvent dans les correctifs de PostgreSQL sur le site
ftp://ftp.postgresql.org/pub/patches.
Rpertoires du systme
Si vous avez install le RPM PostgreSQL, le rpertoire pgsql sera dans
/var/lib/pgsql, et le rpertoire doc dans /usr/doc/postgresql-x-x-x, o x-x-x est
le numro de version de PostgreSQL. Par consquent, il faut ajouter ce rper-
toire au chemin de commande du shell. Si lon utilise une variante du shell C
de Berkeley, comme csh ou tcsh, on ajoutera
PATH=/usr/local/pgsql/bin:$PATH
export PATH
Dmarrer postmaster
On ne peut rien faire dune base de donnes si le processus postmaster nest
pas lanc. Ladministrateur du site devra garder lesprit nombre de tches et
de vrifications faire avant de dmarrer postmaster. Elles sont dcrites dans
les sections dinstallation et de configuration de ce manuel. Cependant, si les
instructions dinstallation de Postgres ont t suivies la lettre, la simple
commande ci-dessous suffit dmarrer postmaster :
% postmaster
Pour ne pas voir ces messages, on utilise loption -S, comme S ilence, qui
les inhibe :
% postmaster -S
Les pg_options
Le fichier optionnel data/pg_options contient les options dexcution utili-
ses par le back-end, un processus qui tourne en tche de fond, pour contrler
les messages de trace et les autres paramtres rglables quil gre. Le fichier
est relu par le back-end quand il reoit un signal SIGHUP, ce qui permet
lutilisateur de changer les options dexcution son gr sans avoir red-
marrer Postgres. Les options spcifies dans ce fichier peuvent tre des flags
de dbogage utiliss par le paquetage de trace (backend/utils/misc/ trace.c),
ou des paramtres numriques pris en compte par le back-end pour adapter
son comportement.
Toutes les pg_options sont initialises zro au dmarrage du back-end. Les
options nouvelles ou celles qui sont modifies sont lues par tous les nouveaux
back-ends leur dmarrage. Pour quun changement soit pris en compte par
tous les back-ends en fonctionnement, il faut envoyer un signal SIGHUP au
postmaster, qui le renvoie automatiquement tous les back-ends. On peut
aussi activer le changement pour un back-end particulier en lui envoyant
directement le SIGHUP.
Les pg_options peuvent aussi tre stipules avec loption T de Postgres :
rable que tous les appels printf soient remplacs par la macro PRINTF et
modifier les sorties sur stderr de manire utiliser EPRINTF : on contrle
ainsi que toutes les sorties de manire uniforme.
Le format du fichier pg_options est le suivant :
# comment
option=integer_value # donne une valeur loption
option # met loption 1
option+ # met loption 1
option- # met loption 0
Noter que keyword peut aussi tre labrviation du nom dune option dfinie
dans backend/utils/misc/trace.c. Par exemple, le fichier pg_options peut
contenir les valeurs suivantes :
verbose=2
query
hostlookup
showportnumber
Options dfinies
Les options dfinies actuellement sont dcrites dans le tableau suivant :
Tableau 91
Options dexcution de PostgreSQL
Options Description
Tableau 91
Options dexcution de PostgreSQL
Options Description
Scurit
La scurit des bases de donnes est traite plusieurs niveaux :
Protection du fichier de base de donnes. Tous les fichiers stocks dans les
bases de donnes sont protgs contre la lecture par tout compte autre que
celui du super-utilisateur Postgres.
Les connexions dun client au serveur de base de donnes sont, par dfaut,
autorises seulement via un socket UNIX local, et non des sockets TCP/IP.
Le back-end doit tre dmarr avec loption i pour autoriser des clients
se connecter distance.
Les connexions des clients peuvent tre restreintes une adresse IP et/ou
un nom dutilisateur laide du fichier pg_hba.conf, dans PG_DATA.
Les connexions des clients peuvent tre authentifies via dautres paqueta-
ges externes.
Chaque utilisateur reoit dans Postgres un nom dutilisateur et, en option,
un mot de passe. Par dfaut, les utilisateurs nont pas de droits daccs en
criture aux bases de donnes quils nont pas cres.
Les utilisateurs peuvent tre affects des groupes et les accs aux tables
peuvent tre restreints selon les privilges du groupe.
Authentification de lutilisateur
Lauthentification est le processus par lequel postmaster et le serveur sassu-
rent que lutilisateur qui demande laccs aux donnes est bien celui quil
prtend tre. Tous les utilisateurs qui font appel Postgres sont contrls par
comparaison avec le contenu de la classe pg_user. Cependant, la vrification
de lidentit relle de lutilisateur est assure de diffrentes manires :
Depuis le shell dutilisateur : un back-end, dmarr depuis un shell utilisa-
teur, mmorise le user-id de lutilisateur (rel) avant dexcuter un setuid
luser-id de lutilisateur postgres. Le user-id rel sert de base au contrle
daccs. Aucune autre authentification nest effectue.
Depuis le rseau : si le systme Postgres est conu comme distribu, le
port TCP Internet du processus postmaster est accessible nimporte qui.
Ladministrateur configure le fichier pg_hba.conf dans le rpertoire
PGDATA : il spcifie le systme dauthentification utilis, selon lhte qui
fait la connexion et la base de donnes laquelle il se connecte. Voir dans
pg_hba.conf(5) la description des systmes dauthentification disponibles.
Bien sr, une authentification fonde sur lhte dans UNIX nest pas
labri dintrus qui dissimulent volontairement leur hte dorigine. Ces
problmes de scurit ne sont pas du ressort de Postgres.
Contrle de lhte
Le contrle de lhte dsigne les contrles de base que PostgreSQL exerce sur
les clients autoriss accder une base de donnes, et la manire dont les
utilisateurs de ces clients doivent sauthentifier. Chaque systme de base de
donnes contient un fichier nomm pg_hba.conf, dans son rpertoire
PGDATA : il indique qui a le droit de se connecter une certaine base de
donnes. Un client qui accde une base de donnes doit figurer dans lune
des entres de pg_hba.conf. Sinon, toutes les connexions quil tente sont reje-
tes, accompagnes du message derreur correspondant, qui signifie lchec
de lauthentification de lutilisateur.
Le fichier pg_hba.conf est un ensemble denregistrements, raison dun par
ligne. Les lignes blanches et les lignes commenant par un caractre de
commentaires (#) sont ignores. Un enregistrement est constitu de champs
spars par des espaces et/ou des tabulations.
Les connexions des clients peuvent se faire laide de sockets du domaine
UNIX ou de sockets du domaine Internet (cest--dire, TCP/IP). Les
connexions faites laide des sockets UNIX sont contrles par des enregis-
trements de la forme suivante :
o
database spcifie la base de donnes laquelle cet enregistrement sappli-
que ; la valeur all quil sapplique toutes les bases de donnes ;
mthode_authentification stipule la mthode impose aux utilisateurs
pour sauthentifier lors de la connexion cette base de donnes, via des
sockets UNIX. Ces mthodes seront dcrites plus loin.
Les connexions faites laide de sockets Internet sont contrles par des enre-
gistrements de la forme :
Ladresse TCP/IP fait lobjet dun ET logique avec le masque TCP/IP spcifi
et ladresse TCP/IP du client qui se connecte. Si les deux rsultats sont gaux,
lenregistrement est retenu pour la connexion. Si une connexion concorde
avec plusieurs enregistrements, cest le premier trouv dans le fichier qui est
utilis. Ladresse et le masque TCP/IP sont spcifis dans la notation avec des
points dcimaux. Si la connexion ne concorde avec aucun des enregistre-
ments, cest la mthode de rejet de lauthentification qui sapplique (voir plus
loin).
Mthodes dauthentification
Les mthodes dauthentification suivantes valent aussi bien pour les sockets
du domaine TCP/IP que pour ceux du domaine UNIX :
trust : la connexion est autorise sans condition.
reject : la connexion est rejete sans condition.
crypt : le client doit fournir le mot de passe de lutilisateur, qui est envoy
crypt ( laide de crypt(3)) et compar au mot de passe contenu dans la
table pg_shadow. Sils concordent, la connexion est autorise.
password : le client doit fournir le mot de passe de lutilisateur. Il est
envoy en clair et compar au mot de passe contenu dans la table
pg_shadow. Si les mots de passe concordent, la connexion est autorise.
Un mot de passe peut tre spcifi aprs le mot-cl password : il sert
vrifier le mot de passe au lieu de la table pg_shadow. Voir pg_passwd.
Les mthodes dauthentification suivantes ne valent que pour les sockets du
domaine TCP/IP :
krb4 : Kerberos V4 est utilis pour authentifier lutilisateur.
krb5 : Kerberos V5 est utilis pour authentifier lutilisateur.
ident : lidentit du serveur sur le client sert authentifier lutilisateur
(RFC 1413). Un nom de map optionnel peut tre spcifi aprs le mot-cl
ident : il permet de relier les noms dutilisateurs de ident leurs noms
dutilisateurs dans Postgres. Les correspondances sont gres dans le
fichier $PGDATA/pg_ident.conf.
Voici quelques exemples :
7RXWHFRQQHFWLRQYLDOHVVRFNHWV8QL[WUXVW
ORFDOWUXVW
7RXWHFRQQHFWLRQYLDOHV7&3,3GHFHWWHPDFKLQHWUXV
KRVWDOOWUXVW
2QQHVDLWULHQGHFHWWHPDFKLQHUHMHFW
KRVWDOOUHMHFW
&HOOHFLQHSHXWSDVFU\SWHURQGHPDQGHOHVPRWVGHSDVVHHQFODLU
KRVWDOOSDVVZRUG
/HVDXWUHVPDFKLQHVSHXYHQWIRXUQLUGHVPRWVGHSDVVHFU\SWpV
KRVWDOOFU\SW
Authentification Kerberos
Kerberos est un systme dauthentification scuris au standard des profes-
sionnels et adapt aux rseaux informatiques publics.
Disponibilit
Le systme dauthentification Kerberos nest pas distribu par Postgres. Les
versions de Kerberos sont en gnral fournies en option par les diteurs de
systme dexploitation. De plus, une distribution du code source peut tre
obtenue depuis Athena, projet du MIT.
Important. Vous pouvez obtenir la version MIT mme si votre diteur fournit une
version de Kerberos, car certains portages des diteurs ont t dlibrment dnatu-
rs ou rendus incompatibles avec la version du MIT.
Installation
Les notices de Kerberos dcrivent en dtail son installation. Sassurer que le
fichier de cl du serveur (srvtab ou keytab) est dune manire ou dune autre
accessible au compte Postgres.
Postgres et ses clients peuvent tre compils pour utiliser la version 4 ou la
version 5 des protocoles Kerberos du MIT mettre la valeur approprie dans
la variable KRBVERS du fichier src/Makefile.global. On peut aussi changer
lemplacement o Postgres sattend trouver les bibliothques associes, les
fichiers den-tte et son propre fichier de cls du serveur. Aprs compilation,
Postgres doit tre enregistr en tant que service Kerberos : voir les modes
opratoires de Kerberos et les pages de manuel associes pour plus de dtails
sur lenregistrement de services.
Mise en uvre
Aprs linstallation initiale, Postgres fonctionnera dans tous les cas comme un
service Kerberos normal. Pour plus de dtails sur lutilisation de lauthentifi-
cation, voir dans le Guide de lutilisateur PostgreSQL les sections relatives
postmaster et psql.
Tableau 91
Exemples de paramtres Kerberos
Paramtre Exemple
utilisateur frew@S2K.ORG
utilisateur aoki/HOST=miyu.S2K.Berkeley.EDU@S2K.ORG
hte postgres_dbms/ucbvax@S2K.ORG
bash# su - postgres
bash$ man createuser
bash$ createuser
Fonctions et rgles
Les fonctions et les rgles permettent lutilisateur dinsrer, dans le serveur,
du code que les autres utilisateurs peuvent excuter sans le savoir, ce qui
donne une relative impunit aux utilisateurs qui introduisent des chevaux de
Troie. La seule protection relle est deffectuer un contrle serr du droit de
dfinir des fonctions (par exemple, se servir de champs SQL pour enregistrer
des relations) et des rgles. On peut aussi tirer parti des traces daudit et des
alertes sur pg_class, pg_user et pg_group.
Les fonctions crites en nimporte quel langage, sauf SQL, sexcutent dans
le serveur avec les permissions de lutilisateur Postgres (le serveur lui-mme
fonctionne avec son user-id rel et ses droits attribus dans Postgres). Les
utilisateurs peuvent donc changer les structures internes des donnes du
serveur travers des fonctions autorises. Cest pourquoi, entre autres, de
telles fonctions peuvent contourner tout contrle daccs du systme. Cest un
problme inhrent aux fonctions C dfinies par lutilisateur.
Tout comme les fonctions SQL, les rgles fonctionnent toujours sous liden-
tit et les permissions de lutilisateur qui a fait appel au serveur.
Mises en garde
Il nexiste pas de mthode qui gre lencryptage des donnes dans Postgres
(bien quil ny ait rien qui interdise lutilisateur de crypter ses donnes dans
des fonctions dfinies par lutilisateur). De mme, il ny a aucune mthode
pour grer les connexions rseau cryptes, sauf attendre une rcriture
complte du protocole front-end/back-end.
Les noms dutilisateurs, les noms de groupe et les identifiants systme asso-
cis (par exemple, le contenu de pg_user.usesysid) sont supposs tre
uniques au sein dune base de donnes. Si ce nest pas le cas, il faut sattendre
des rsultats imprvisibles.
Noter que lon doit spcifier largument -h pour que le client utilise le
socket TCP plutt que le socket UNIX. On peut omettre largument de
port si lon a 5432 comme extrmit de la passerelle.
Localisation secondaire
Il est possible de crer une base de donnes un emplacement autre que
lemplacement par dfaut de linstallation. Se souvenir que tout accs une
base de donnes se produit rellement via le back-end de la base de donnes,
de sorte que tout emplacement spcifi doit tre accessible par le back-end.
Les emplacements secondaires de bases de donnes sont crs et rfrencs
par une variable denvironnement, qui donne le chemin absolu de lemplace-
ment de stockage. Elle doit avoir t dfinie avant le dmarrage du back-end,
et pouvoir tre crite depuis le compte de ladministrateur de Postgres. Tout
nom de variable denvironnement valide peut servir rfrencer un emplace-
ment, bien que lusage dun nom de variable prfix par PGDATA soit recom-
mand, pour viter la confusion et les conflits avec dautres variables.
Pour tester le nouvel emplacement, crer une base de donnes de test laide
de la commande :
% createdb dbname
% psql dbname
dbname=>
Cette invite indique que le terminal est lcoute et que lon peut entrer des
requtes SQL dans lespace de travail du terminal. Le programme psql ragit
aux codes dchappement qui commencent par le caractre \ (barre inver-
se). Par exemple, on obtient laide sur la syntaxe des diverses commandes
SQL de Postgres en tapant :
dbname=> \h
Aprs avoir entr une requte dans lespace de travail, on envoie le contenu
de lespace de travail au serveur Postgres en entrant :
dbname=> \g
dbname=> \i filename
dbname=> \q
% dropdb dbname
Cette action efface physiquement tous les fichiers UNIX associs la base de
donnes. Elle ne peut tre annule, aussi doit-on lutiliser avec une grande
prudence. On peut aussi dtruire une base de donnes dans une session SQL
laide de la commande :
Sauvegarde et restauration
Postgres met disposition deux utilitaires de sauvegarde du systme :
pg_dump pour la sauvegarde dune seule base de donnes et pg_dumpall
pour la sauvegarde de toute linstallation en une seule tape.
et restaure par :
Attention. Toute base de donnes doit tre sauvegarde dans les rgles. Postgres
gre ses propres fichiers dans le systme de fichiers, il nest donc pas recommand de
compter sur le systme de sauvegarde du systme de fichiers pour assurer la sauve-
garde dune base de donnes : dans ce cas, la restauration ne serait pas fiable.
et recharger avec
% createdb dbname
% gunzip -c filename.dump.gz | psql dbname
ou bien
et recharger avec
% createdb dbname
% cat filename.dump.* | pgsql dbname
Il est prfrable davoir une machine UNIX ddie chaque serveur de base
de donnes PostgreSQL, pour obtenir de meilleures performances : aucune
autre application ne doit fonctionner sur cette machine. On na pas besoin
dun moniteur couleur pour le serveur de base de donnes, car on peut ladmi-
nistrer distance partir dune station de travail PC couleur. Se servir dun
commutateur KVM permet de contrler de nombreuses machines avec un
seul moniteur et un seul clavier !
$ postmaster -i -p 666
FATAL: StreamServerPort: bind() failed: Permission denied
Is another postmaster already running on that port?
Ce message ne signifie pas que lon a satur lespace disque, mais que la
limite du nombre de smaphores SysV du noyau est infrieure au nombre de
smaphores que Postgres veut crer. Comme ci-dessus, on peut contourner le
problme en dmarrant postmaster avec un nombre rduit de processus de
back-end (option N), mais il faudra augmenter la limite du noyau.
Messages de dbogage
Il arrive que postmaster imprime des messages souvent utiles au dpannage.
Pour voir les messages de dbogage du postmaster, le dmarrer avec loption
d et rediriger la sortie vers un fichier de trace :
% postmaster -S
pg_options
Le fichier data/pg_options contient les options dexcution utilises par le
back-end pour contrler les messages de trace et dautres paramtres rgla-
bles du back-end. Lintrt de ce fichier est dtre relu par un back-end quand
il reoit un signal SIGHUP, ce qui permet de changer les options dexcution
la demande sans redmarrer Postgres. Les options spcifies dans ce fichier
peuvent tre des flags de dbogage, utiliss par le paquetage de trace
(backend/utils/misc/trace.c), ou des paramtres numriques utiliss direc-
tement par le back-end pour adapter son comportement. Les options ou para-
mtres nouveaux doivent tre inclus dans les fichiers backend/utils/misc/
trace.c et backend/include/utils/trace.h.
# comment
option=integer_value # donne une valeur loption
option # met loption 1
option+ # met loption 1
option- # met loption 0
keyword peut tre aussi labrviation du nom dune option dfinie dans
backend/utils/misc/trace.c. Voir le tableau de la section Les pg_options ,
page 389, pour la liste complte des options et des valeurs possibles.
Support technique
Lorganisation PostgreSQL vend des prestations dassistance technique aux
socits et le revenu gnr sert soutenir les principaux sites web et un
certain nombre de sites miroir (web et ftp) dans le monde. Il sert aussi finan-
cer la Recherche & Dveloppement, ainsi qu la production de la documen-
tation imprime, des guides et manuels destins aux clients.
On peut aussi obtenir une assistance auprs de socits de conseil profession-
nelles telles que Red Hat, Anderson2, et WGS (Work Group Solutions). Ils ont
une trs bonne expertise en C et C++ (PostgreSQL est crit en C).
Pour les contacter :
Red Hat Corp, division consulting base de donnes :
http://www.redhat.com
Work Group Solutions : http://www.wgs.com
Andersen Consulting : http://www.ac.com
On peut aussi utiliser les listes de diffusion et les groupes de news Usenet.
Pour toute question technique, ou autre problme, envoyer un e-mail :
pgsql-questions@postgresql.org
groupe de news : comp.databases.postgresql.general
groupe de news : comp.databases.postgresql.hackers
groupe de news : comp.databases.postgresql.doc
2. Lauteur mentionne Anderson, mais il semble quil sagisse dAndersen Consulting : cest, en tous
cas, le nom qui apparat ladresse indique ensuite - www.ac.com. N.d.T
Listes de diffusion
Voici une srie de listes de diffusion PostgreSQL auxquelles on peut faire
appel pour obtenir la fois des nouvelles, des informations et des rponses
des questions en rapport avec PostgreSQL.
Tcl/Tk : http://www.scriptics.com ;
Extension oriente objet de Tcl appele INCR : http://www.tcltk.com ;
Java FreeBuilder : ftp://ftp.redhat.com/pub/contrib/i386/free*.rpm ;
SpecTCL : ftp://ftp.redhat.com/pub/contrib/i386/spec*.rpm ;
Java RAD Tool pour PostgreSQL Kanchenjunga :
http://www.man.ac.uk/whaley/kj/kanch.html.
Spcifications DBI
Il existe quelques sources dinformation sur DBI :
Spcification DBI :
http://www.hermetica.com/technologia/perl/DBI/doc/dbispec
Informations sur les listes de diffusion de DBI :
http://www.hermetica.com/technologia/perl/DBI/tidbits
Site web du Perl DBI Journal : http://www.tpj.com
The Perl5 Database Interface, un ouvrage crit par Alligator Descartes et
publi chez OReilly and Associates.
Les listes de diffusion auxquelles on peut sinscrire sont :
Liste de diffusion : http://www.fugue.com/dbi
dbi-announce : envoyer un e-mail dbi-announce-request@fugue.com
(corps du message : subscribe)
groupe de discussion gnral dbi-users : envoyer un e-mail
dbi-users-request@fugue.com (corps du message : subscribe)
Archives des listes de diffusion amricaines :
http://outside.organic.com/mail-archives/dbi-users/
Archives des listes de diffusion europennes :
http://www.rosat.mpe-garching.mpg.de/mailing-lists/PerlDB-Interest
Pour le support commercial et la formation, sadresser :
http://www.perl.co.uk/tpc
Rfrence SQL :
http://www.contrib.andrew.cmu.edu/ shadow/sql.html
Interroger SQL Pro :
http://www.inquiry.com/techtips/thesqlpro/
Sites utiles sur les bases relationnelles SQL Pro :
http://www.inquiry.com/techtips/thesqlpro/usefulsites.html
Sources destines aux programmeurs :
http://infoweb.magi.com/ steve/develop.html
Sites SGBD :
http://info.itu.ch/special/wwwfiles
voir le fichier : comp_db.html
Composants de base de donnes :
http://www.compapp.dcu.ie/databases/f017.html
Edition sur le Web :
http://www.stars.com/Tutorial/CGI/
Dictionnaire informatique :
http://wfn-shop.princeton.edu/cgi-bin/foldoc
DBMS Lab/Links :
http://www-ccs.cs.umass.edu/db.html
FAQ de SQL :
http://epoch.CS.Berkeley.EDU:8000/sequoia/dba/montage/FAQ
voir le fichier : SQL_TOC.html
Bases de donnes SQL :
http://chaos.mur.csu.edu.au/itc125/cgi/sqldb.html
Page de conception des bases de donnes RIT :
http://www.it.rit.edu/wjs/IT/199602/icsa720/icsa720postings.html
Site de liens vers les bases de donnes :
http://www.pcslink.com/ej/dbweb.html
Guides de programmation sur le web :
http://www.eng.uc.edu/jtilley/tutorial.html
Ressources de dveloppement :
http://www.ndev.com/ndc2/support/resources.htp
Liste de requtes : http://ashok.pair.com/sql.htm
MAGE SQL divers :
http://jazz.external.hp.com/training/sqltables/main.html
Liste de ressources Internet
http://www.eit.com/web/netservices.html
Rsum
Quand on a explor toutes les bases de donnes gratuites, dont le code source
est disponible, on saperoit que PostgreSQL est le systme de base de
donnes objet relationnel SQL le plus volu, le plus utilis et le plus robuste
au monde.
PostgreSQL prsente lavantage que le gros du travail est dj fait. Il dispose
de pilotes ODBC et JDBC, dont on peut se servir pour crire des applications
indpendantes des bases de donnes. Les applications PostgreSQL qui se
servent des pilotes ODBC et JDBC sont facilement portables sur dautres
bases de donnes telle Oracle, Sybase et Informix, et vice versa.
On peut se demander : pourquoi PostgreSQL ? La rponse est vidente :
comme il faut beaucoup de temps pour dvelopper un systme de base de
donnes partir de zro, le bon sens commande de choisir un systme de base
de donnes qui satisfait dj les conditions suivantes :
le code source est disponible (selon le systme de code open-source) ;
aucune chane de licence ni de proprit associe ;
distribu sur lInternet ;
en dveloppement depuis plusieurs annes ;
conforme aux standards tels quISO/ANSI SQL 92 (et SQL 89) ;
conforme aux besoins futurs tels que SQL 3 (SQL 98)
des fonctions avances.
PostgreSQL satisfait toutes ces conditions, cest donc le logiciel qui rpond
la question.
FAQ
Q. Pourquoi, quand je lance initdb, a plante ?
R. Vrifiez que vous navez pas de binaires dune version prcdente dans
votre chemin (si le message WARN:heap_modifytuple : repl is \9 apparat).
Vrifier que lensemble des chemins est correct et que lutilisateur
Postgres possde bien les bons fichiers.
Q. Comment installer PostgreSQL ailleurs que dans /usr/local/pgsql ?
R. La mthode la plus simple est de spcifier loption -prefix quand on
excute la configuration. Si lon a oubli de le faire, diter le fichier
Makefile.global et modifier POSTGRESDIR en consquence, ou crer un
fichier Makefile.custom et y dfinir POSTGRESDIR.
Q. Quand je dmarre postmaster, je reois un message Bad system call ou un
dump du noyau. Pourquoi ?
R. Cela peut tre d divers problmes, mais la premire chose faire est de
sassurer que lon a bien install les extensions systme V dans le noyau.
PostgreSQL a besoin dun noyau qui supporte la mmoire partage et les
smaphores.
Q. Quand jessaie de dmarrer postmaster, je reois un message derreur
IpcMemoryCreate. Pourquoi ?
R. Soit vous navez pas configur correctement la mmoire partage dans le
noyau, soit il vous faut lagrandir. La taille ncessaire dpend la fois de
larchitecture et du nombre de buffers et de processus de back-end confi-
gurs pour postmaster. Dans la plupart des systmes, avec le nombre de
buffers et de processus par dfaut, il faut un minimum de 1 Mo environ.
Q. Quand jessaie de dmarrer postmaster, je reois un message derreur
IpcSemaphoreCreate. Pourquoi ?
R. Si le message derreur est IpcSemaphoreCreate : semget failed (No space
left on device), cest que le nombre de smaphores du noyau est insuffi-
sant. Postgres a besoin dun smaphore par processus de back-end. titre
de solution provisoire, dmarrer postmaster avec une limite plus petite que
le nombre de processus de back-end. Utiliser -N avec un paramtre inf-
rieur la valeur par dfaut, qui est de 32. La bonne solution, ensuite, est
daugmenter les paramtres SEMMNS et SEMMNI du noyau.
Sil sagit dun autre message derreur, cest que vous navez pas confi-
gur du tout le support des smaphores dans votre noyau.
cd /usr/local/pgsql
. /bin/postmaster >server.log 2>&1 &
Dans ce chapitre
Plates-formes dapplication web
Dmarrage
Enjeux de la conception
Conception du schma
Flux de donnes
Connectivit de PHP
Introduction
Ce chapitre est consacr la construction, du dbut la fin, dune application
web, qui ressemble celle qui est associe aux achats par cartes de crdit dans
les magasins (reprsente la figure 10.1). Pour des raisons de taille, cette
application ne traitera pas entirement des problmes de scurit, mais nous
dbattrons quand mme des questions inhrentes une telle application les
versions ultrieures auront une scurit renforce. Lapplication complte
qui comprend le code source, le script de la base de donnes et les instructions
dinstallation est disponible sous la licence publique GNU version 2
(GPLv2), sur les sites www.syngress.com et www.sourceforge.net.
Figure 101
Une application de-commerce
Cold Fusion
Cold Fusion de Allaire est un autre produit propritaire, facile apprendre et
utiliser. Bien quil nait, traditionnellement, t disponible que pour
Windows NT, Allaire a rcemment commenc sa conversion vers diverses
variantes dUNIX dont HP-UX, Solaris et Linux. Cold Fusion se sert de bali-
ses intgres de type HTML, mlanges au HTML standard, pour btir une
page personnalise pilote par une base de donnes. Pour plus dinformations,
voir le site http://www.allaire.com.
Zope
Zope est une excellente plate-forme dapplication web open-source qui incor-
pore une base de donnes hirarchique, oriente objet, qui comprend des
autorisations intgres et un environnement de dveloppement web. Zope
dispose aussi de modules qui se connectent aux plus grands moteurs de bases
de donnes, et offre tous les avantages des bases de donnes relationnelles
traditionnelles orientes objet, ainsi que beaucoup des fonctionnalits de PHP.
Langages de script
De nombreux langages de script open-source, tels Perl, Python et TCL,
offrent la capacit dcrire des scripts. Beaucoup dentre eux peuvent tre
intgrs dans Apache ou dautres serveurs web, et viter les problmes de
scurit et de performance qui se produisent avec CGI. Ces langages sont un
excellent choix pour un dveloppement web, en particulier si on les manie
bien. Pour plus dinformations, visiter lun des sites : http://www.perl.com,
http://www.python.org ou http://www.tcl.com.
PHP
PHP est un langage dapplication open-source extrmement rpandu, destin
concurrencer directement ASP et JSP. Il propose des modules pour IMAP,
POP3, LDAP, XML, PDF, Postscript, FTP, WebDAV, Oracle, MySQL,
mSQL, Informix, PostgreSQL, Sybase et beaucoup dautres moteurs de bases
de donnes, trop nombreux pour tous les citer ici. Il fonctionne sous Linux,
UNIX et Windows NT. Du fait que PHP est disponible gratuitement, avec son
code source, et quil est inclus dans Red Hat Linux, nous dvelopperons
lapplication en PHP avec lexcellent moteur de base de donnes MySQL.
Daprs Netcraft, PHP est implant sur plus dun million de serveurs web et
progresse trs vite. Voir http://www.php.net pour dautres informations.
Apache
Apache est, de loin, la plate-forme de serveur web la plus rpandue
(http://www.apache.org), avec approximativement 60 % de parts de march
daprs Netcraft. IIS de Microsoft vient en seconde position avec 22 % de
parts de march. Apache affiche de grandes performances, mais ce nest pas
son seul atout : il y a une abondance de fonctions additionnelles et de modules
disponibles, il est extrmement stable et offre une bonne scurit, fonctionne
sur tous les systmes dexploitation courants, est trs extensible, gratuit et
open-source. Apache sappuie sur le serveur web NCSA. Les dveloppeurs
Dmarrage
Consultez, dans votre manuel Red Hat, les instructions dinstallation de PHP,
de MySQL et des paquetages RPM dApache. Dans les versions les plus
rcentes de Red Hat, ces RPM sont inclus dans les CD-ROM et nont pas
besoin dtre tlchargs.
Nous recommandons de tlcharger et dinstaller phpMyAdmin (figure 10.2),
qui facilite le dveloppement dun nouveau systme de base de donnes.
PhpMyAdmin est un gestionnaire de base de donnes de type web pour les
bases de donnes MySQL et propose, srieux avantage, un code source
complet utiliser quand on dveloppe ses propres applications en PHP. On
peut aussi tlcharger et installer lapplication relle, disponible gratuitement
sur www.syngress.com ou www.sourceforge.net.
Enjeux de la conception
Nous avions certaines ides en tte en concevant notre application dachat
distance : maintenance facile, extensibilit, clart du code et une interface
conviviale.
Clart
Comme la clart est un point sensible, nous avons dcid de ne pas inclure de
systme sophistiqu de gnration didentifiant de session. Nous avons aussi
dvelopp toute lapplication sous forme dun seul script PHP : tout y est
accessible, de sorte que lURL de base du navigateur ne change que sil se
dplace dans le site. Pour distinguer un utilisateur dun autre, nous crons un
Figure 102
Utiliser phpMyAdmin pour dvelopper un nouveau systme de base de donnes
Extensibilit
Lune des plus grandes barrires qui freinent la maintenabilit est imputable
du code difficile comprendre. PHP comprend des caractristiques qui
permettent de dvelopper de grands projets, parmi lesquelles de trs avances,
tels les objets et les gabarits (dans FastTemplate) que nous nutilisons pas ici.
PHP4 (Zend) et PHP3 (avec PHPLib) proposent aussi des versions plus sres
du point de vue du contrle de session. Bien sr, PHP dispose de fonctions
Interface conviviale
Lune de nos proccupations a t doffrir la capacit de feuilleter les offres
du magasin et dajouter des lments une commande virtuelle sans que
lutilisateur ait donner dinformations personnelles, tout en lui facilitant
certaines tches : enregistrer, se connecter, choisir des produits dans un ordre
quelconque, sans tre oblig de retrouver leur rfrence par la suite. Nous
cherchions aussi simplifier ladministration du magasin.
Conception du schma
Une version complte, gratuite et scurise de cette base de donnes est en
cours de dveloppement open-source. Les dtails sont disponibles sur
www.syngress.com ou www.sourceforge.net. Le code donn ici nest pas
vraiment scuris et nous conseillons vivement de ne pas limplmenter tel
quel dans un environnement de production. Mais nous verrons, dans la
section qui concerne la scurit, quelles sont les failles traiter avant un
usage en production.
Nous avons dvelopp une structure de base de donnes (figure 10.3), confor-
mment aux buts que nous nous sommes fixs. Cette structure de base de
donnes, qui est compose de six tables, propose une dfinition claire et
vidente des donnes utilises par la base de donnes. Reportez-vous ce
schma lors de la lecture de la section suivante.
Flux de donnes
Quand lutilisateur se connecte au site web, une session est cre pour lui et il
est dot dun cookie qui contient une valeur simple, session_id. Ce
session_id contient un numro unique qui sert de cl primaire dans la table
sessions. Ici, cest MySQL qui auto-incrmente la cl primaire ; nous dcon-
seillons cette pratique pour les raisons expliques dans la section relative la
scurit.
Quand la session est cre, le champ session_status de lutilisateur a une
valeur de 0. Ce session_status signifie que lutilisateur navigue sans tre
Figure 103
Structure de la base de donnes
authentifi. Comme lutilisateur doit sauthentifier avant tout achat dun arti-
cle, il ne dispose pas encore du bouton de caisse. Lutilisateur est autoris
feuilleter et ajouter des lments sa liste (la table des carts) sans authentifi-
cation. Aprs authentification (ou enregistrement), session_status passe 1,
ce qui signifie que lutilisateur dispose maintenant du bouton de caisse, et
aussi que luser_id est plac dans la table sessions.
Quand lutilisateur clique sur la caisse, session_status passe 2, ce qui signi-
fie que lutilisateur a achev la transaction. ce stade, il est possible
denvoyer des e-mails automatiquement lacheteur et au vendeur, indiquant
quune transaction a eu lieu. Pour des raisons de scurit videntes, il ne faut
jamais envoyer par e-mail un numro de carte de crdit non crypt. Le
meilleur moyen denvoyer un e-mail sera une URL unique (par exemple,
http://www.shoppingcart.org/view_session_id=323), qui enverra limage de
la liste dans une page, de telle sorte que personne ne puisse intercepter ce
courrier pour obtenir une information sensible, ou un destinataire protg
par un login. Pour simplifier, nous navons pas implment ce code dans
lexemple.
< ?php
phpinfo();
?>
MYSQL_CONNECT($db_server,$db_username,$db_password) OR DIE("Unable to
connect to database");
$row=mysql_fetch_array($result)) ;
$item_id=$row["item_id"] ;
Scurit
Nimporte quel pirate remarquera que si son numro de session est 444, il
suffit, dans son cookie personnel, de changer ce numro en 443 pour dtour-
ner la session dun autre utilisateur. La plupart des applications scurises
dachat, ou autres, sur le web combattent ce problme en gnrant un identi-
fiant unique de session difficile deviner, en se servant dune combinaison de
la date, de lheure, dun nombre alatoire, de ladresse IP de lutilisateur ou
de son nom dhte, etc. Un schma compliqu et sophistiqu est thorique-
ment inviolable.
Conclusion
Dans ce chapitre, une application de-commerce a t btie laide de
MySQL et de PHP. Nous restons attentifs toute implmentation de ce code.
Lapplication complte avec le code source, le script de la base de donnes
et les instructions dinstallation est disponible gratuitement sous la licence
publique GNU version 2 (GPLv2) sur www.syngress.com ou www.source-
forge.net. Si vous ne connaissez pas la GPL (GNU General Public License),
sa description, ainsi que le texte de la licence, sont disponibles sur
http://www.gnu.org/copyleft/gpl.html.
FAQ
Q. Nous navons aucune expertise en PHP dans notre entreprise, mais nous
avons quelques experts en Perl. Y a-t-il dautres applications open-source
de-commerce ?
R. Oui. Lune des applications les plus compltes est Minivend, crit en Perl
(http://www.minivend.com). Une autre excellente application en Perl est
OpenCart (http://www.cdrom.com, http://www.opencart.com/), dvelop-
pe et utilise par Walnut Creek CDROM. Pour dautres exemples, en
PHP ou dautres langages, consulter le site de Freshmeat.Net sur
http://www.freshmeat.net.
Q. Quel est le plus rapide des serveurs web ?
R. Cela dpend sur quoi fonctionne votre serveur et, bien sr, de ce que vous
en attendez. En gnral, pour un serveur statique, les pages web tradition-
nelles (telles que les pages HTML traditionnelles), contrairement celles
gnres par PHP, ASP, ou dautres langages, le serveur web le plus
simple sera le plus rapide. Les serveurs les plus sophistiqus comprennent
des mmoires caches et dautres caractristiques, lies la performance,
pour amliorer la vitesse des fonctions les plus vitales (comme la gnra-
tion de pages dynamiques), mais ces caractristiques elles-mmes indui-
sent une certaine charge quand elles ne sont pas ncessaires. En gnral,
les fonctions de scurit ralentissent elles aussi le serveur. Ainsi, si la
vitesse est lobjectif principal, il faudra peser soigneusement les diverses
options et les comparer votre besoin. En gnral, Apache est une trs
bonne solution car il offre un excellent quilibre des caractristiques et des
performances.
Q. Est-ce que jai besoin de permissions particulires pour utiliser lapplica-
tion de-commerce fournie dans ce chapitre ?
R. Lapplication de-commerce a t conue sur un serveur hberg par
Hurricane Electric http://www.he.net. Aucun accs root ou autre accs
inhabituel nest ncessaire.
Q. O puis-je trouver des professionnels PHP ?
R. Si lon a des difficults trouver des professionnels qualifis en PHP, le
mieux est de les chercher o ils se cachent. Les moyens conseills sont de
poster un message sur les offres demploi http://phpbuilder.com ou
http://www.schaffner.net/emp/. On peut aussi envoyer un message une
liste de diffusion PHP.
Application de-commerce
de Jamie Becker
Copyright (c) 2000, Jamie Becker, jamiebecker@ring0.com
Ce programme est un logiciel gratuit : il peut tre redistribu et/ou modifi
selon les termes de la licence publique gnrale GNU, publie par la Free
Software Foundation ; soit la version 2 de la licence, soit (au choix) toute
version ultrieure.
Ce programme est publi dans le but dtre utile, mais SANS AUCUNE
GARANTIE, pas mme de garantie implicite quant son adquation une
quelconque commercialisation, quil sagisse dune stricte revente, ou bien
dun arrangement, compte tenu dune utilisation particulire. Voir la licence
publique gnrale GNU pour plus de dtails.
On doit obtenir une copie de la licence publique gnrale GNU en mme
temps que ce programme ; si ce nest pas le cas, crire
Free Software Foundation, Inc.,
59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
ou consulter les sites www.gnu.org ou www.fsf.org
pour obtenir le texte complet de la licence.
<?PHP
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// Please see www.gnu.org or www.fsf.org for the full text of the license.
function init_db_variables()
{
global $db_server;
global $db_username;
global $db_password;
$db_server='localhost';
$db_username='username';
$db_password='password';
$db_name=shopcart;
}
function set_color_theme()
{
// Set color scheme
global $body_background_color;
global $body_font_color;
global $top_header_color;
global $top_header_font_color;
global $top_header_company_font_color;
global $main_index_tab_color;
global $main_index_tab_font_color;
global $index_tab_color;
global $index_tab_font_color;
global $dividing_hline_color;
global $dividing_vline_color;
global $shopping_cart_color;
global $shopping_cart_font_color;
global $browse_color;
global $browse_font_color;
global $shopping_cart_width; // minimum width
global $shopping_cart_height; // minimum height
global $company_name;
global $search_categories; // if $search_categories=='current', only the
// current category will be searched.
global $table_row_rows;
global $table_row_cols;
$table_row_rows=5;
$table_row_cols=30;
$body_background_color='336699';
$body_font_color='000000';
$top_header_color='336699';
$top_header_font_color='EEEEEE';
$top_header_company_font_color='EEEEEE';
$main_index_tab_color='990000';
$main_index_tab_font_color='EEEEEE';
$index_tab_color='003366';
$index_tab_font_color='EEEEEE';
$dividing_hline_color='990000';
$dividing_vline_color='990000';
$shopping_cart_color='336699';
$shopping_cart_font_color='FFFFFF';
$browse_color='FFFFFF';
$browse_font_color='336699';
$shopping_cart_width='100'; // minimum width
$shopping_cart_height='0'; // minimum height
$company_name='phpshopcart.sourceforge.net';
// if $search_categories=='current', only the current category will be
// searched.
// $search_categories=='current';
}
// Set up cookies
function init_cookies()
{
global $session_id;
if (!isset($session_id)):
// session_status values:
// 0 - not logged in, just browsing...
// 1 - logged in
// 2 - purchase completed.
$query = "INSERT INTO sessions (session_status) VALUES('0')";
$result = MYSQL_QUERY($query);
$session_id=mysql_insert_id();
setcookie("session_id",$session_id);
// Warning - note that this is inherently insecure. For example, it would
// be easy to simply increment your cookie ID on your browser and hijack
// someone's session. It would be better to generate a pseudorandom number
// or a unique ID that couldn't be easily guessed. DO NOT implement this on
// a production machine.
endif;
}
Endif;
}
// Log in user
function login_user()
{
global $login;
If ($login):
global $user_id;
global $user_password;
global $session_id;
global $session_status;
global $login_success;
$query="SELECT user_password from users WHERE user_id='$user_id'";
$result=mysql_query($query);
$num_results=mysql_num_rows($result);
If ($num_results!=0):
$row=mysql_fetch_array($result);
$test_password=$row["user_password"];
If ($test_password == $user_password):
$query = "UPDATE sessions SET user_id = '$user_id' WHERE session_id =";
$query = $query." '$session_id'";
$result = MYSQL_QUERY($query);
$query = "UPDATE sessions SET session_status = '1' WHERE session_id =";
$query = $query." '$session_id'";
$result = MYSQL_QUERY($query);
$session_status=1;
$login_success=1;
Else:
$login_success=0;
Endif;
Else:
$login_success=0;
Endif;
Endif;
}
// Layout Page
function layout_page()
{
global $company_name;
global $body_background_color;
global $body_font_color;
Print "<HTML>\n";
Print "<HEAD>\n";
Print "<TITLE>\n$company_name</TITLE>\n";
Print "</HEAD>\n";
Print "<BODY MARGINWIDTH=0 MARGINHEIGHT=0 LEFTMARGIN=0
TOPMARGIN=0 ";
Print "TEXT='$body_font_color' VLINK='$body_font_color' ";
Print "BGCOLOR='#$body_background_color' ";
Print "ALINK='$body_font_color' LINK='$body_font_color'>\n";
}
global $top_header_font_color;
global $top_header_company_font_color;
global $company_name;
global $search;
global $category_id;
global $session_status;
global $uc_user_first_name;
global $PHP_SELF;
Print "<TABLE BORDER=0 WIDTH='100%' CELLSPACING='0' CELLPADDING='0' ";
Print "BGCOLOR='#$top_header_color'>\n";
// Print "<TR><TD>\n<IMG SRC='img/clear.gif'>\n</TD>\n</TR>\n";
Print "<TR><TD ALIGN='LEFT'>";
Print "<FONT FACE='Helvetica, Verdana, Arial' SIZE=+4 COLOR=";
Print "'$top_header_company_font_color'>";
Print "<EM>$company_name</EM></FONT></TD>\n";
If ($session_status == 1):
Print "<TD COLSPAN=2 ALIGN='CENTER'><FONT FACE=";
Print "'Helvetica, Verdana, Arial' COLOR='$top_header_font_color'>";
Print "Welcome, $uc_user_first_name!</FONT></TD>\n";
Endif;
Print "<TD ALIGN='RIGHT'><FONT FACE='Helvetica, Verdana, Arial'";
Print "COLOR='$top_header_font_color' SIZE=-2><FORM
ACTION='$PHP_SELF'";
Print " METHOD=POST>\n";
Print "<INPUT TYPE=text NAME='search' VALUE='$search'>";
Print "<INPUT TYPE=hidden NAME='current_category_id' VALUE='$category_id'>";
Print "<INPUT TYPE=SUBMIT
VALUE='Search'></FORM></FONT></TD></TR>\n";
Print "</TABLE>\n";
}
Print "BGCOLOR='#$dividing_vline_color'>";
Print "<IMG SRC='img/clear.gif' HEIGHT=1 WIDTH=1></TD>\n";
}
global $browse_font_color;
global $browse_color;
If (register_form!=""):
Print "<FONT FACE='Helvetica, Verdana, Arial' COLOR='#$browse_font_color'>\n";
Print "<H1>Please write this down!</H1>";
Print "<CENTER><TABLE BORDER=0 WIDTH=75% VALIGN=TOP CELLSPACING='0'";
Print "CELLPADDING='0' BGCOLOR='#$browse_color'>";
Print "<TR><TD><FONT FACE='Helvetica, Verdana, Arial' COLOR=";
Print "'#$browse_font_color'>Your user ID is:</TD>";
Print "<TD><FONT FACE='Helvetica, Verdana, Arial' COLOR=";
Print "'#$browse_font_color'>$user_id</TD></TR>";
Print "<TR><TD><FONT FACE='Helvetica, Verdana, Arial' COLOR=";
Print "'#$browse_font_color'>Your password is:</TD>";
Print "<TD><FONT FACE='Helvetica, Verdana, Arial' COLOR=";
Print "'#$browse_font_color'>$user_password</TD></TR>";
Print "</TABLE>";
Endif;
}
// Create_account
function create_account()
{
global $PHP_SELF;
global $browse_color;
global $browse_font_color;
// Start Create Account Form
// We recommend that this form is secured in secure server!!
Print "<CENTER><TABLE BORDER=0 WIDTH=75% VALIGN=TOP CELLSPACING='0' ";
Print "CELLPADDING='0' BGCOLOR='#$browse_color'>";
Print "<FORM ACTION='$PHP_SELF' METHOD=POST>";
Print "<INPUT TYPE=hidden NAME='register_form' VALUE='1'>\n";
row_form("Your First Name:","user_first_name","");
row_form("Your Last Name:","user_last_name","");
row_form("Your Mail Address:","user_mail_address","");
row_form("Your Credit Card:","user_credit_card","");
row_form("Password:","user_password","");
// OR row_form("Password:","user_password","password");
// Recommend you confirm password if you conceal what is typed
Print "<TR><TD COLSPAN=2 ALIGN=CENTER><INPUT
TYPE=SUBMIT></FONT></TD></TR>";
Print "</FORM>";
Print "</TABLE></CENTER>";
}
Endif;
$upper_limit=$lower_limit+4;
$result=mysql_query("SELECT * FROM items WHERE
category_id=$category_id");
$num_results=mysql_num_rows($result);
$upper_limit=$num_results+$lower_limit-1;
Print "<CENTER><TABLE WIDTH=60% BORDER=0>";
Print "<TR><TD ALIGN=CENTER><B>";
Print "<FONT FACE='Helvetica, Verdana, Arial' COLOR='#$browse_font_color'>\n";
Print "Displaying $category_name from $lower_limit to $upper_limit:</TD></TR>";
Print "</FONT>\n";
Print "</B></TD></TR>";
WHILE ($row=mysql_fetch_array($result))
{
$item_id=$row["item_id"];
$item_name=$row["item_name"];
$item_description=$row["item_description"];
$item_price=$row["item_price"];
Print "<TR><TD>";
Print "<a href='$PHP_SELF?review_item_id=$item_id'>\n";
Print "<FONT FACE='Helvetica, Verdana, Arial' COLOR=";
Print "'#$browse_font_color'>";
Print "$item_name \$$item_price";
Print "</FONT>\n";
Print "</a>\n";
Print "</TD></TR>\n";
}
Print "</TABLE>";
Print " </TD></TR>\n";
}
// Start of Program
// Note
// NO PROGRAM STATEMENTS SHOULD EXIST OUTSIDE OF A FUNCTION
// BEFORE THIS SECTION!
init_db_variables();
set_color_theme();
connect_db();
If ($image_id != ""):
display_image();
exit();
Endif;
init_cookies();
logout_user();
register_user();
login_user();
read_user_info();
layout_page();
init_category();
header_table();
start_shop_browse_table();
start_shop_column();
delete_item();
buy_item();
print_shopping_cart();
divide_colv();
start_browse_column();
divide_lineh();
category_table();
divide_lineh();
inform_auth();
// Change browse window based on action:
If ($checkout!=""):
checkout();
Endif;
If ($review_item_id!=""):
review_item();
ElseIf ($admin!=""):
admin();
ElseIf ($admin_add!=""):
admin_add_item();
ElseIf($register_form!=""):
inform_user();
ElseIf ($reviewbuy_item_id!=""):
review_purchase();
ElseIf ($create_account!=""):
create_account();
ElseIf ($search!=""):
search_column();
Else:
browse_column();
Endif;
// Display page footer
end_shop_column();
divide_colv();
end_browse_column();
end_shop_browse_table();
?>
# phpMyAdmin MySQL-Dump
# http://phpwizard.net/phpMyAdmin/
#
# Host: localhost Database : shopcart
# --------------------------------------------------------
#
# Table structure for table 'carts'
#
# --------------------------------------------------------
#
# Table structure for table 'categories'
#
# --------------------------------------------------------
#
# Table structure for table 'images'
#
# --------------------------------------------------------
#
# --------------------------------------------------------
#
# Table structure for table 'sessions'
#
# --------------------------------------------------------
#
# Table structure for table 'users'
#