You are on page 1of 510

Bases de donnes

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.
David Egan Paul Zikopoulos
Bases de donnes
sous
Linux
DITIONS EYROLLES
61, Bld Saint-Germain
75240 Paris Cedex 05
www.editions-eyrolles.com
Traduction autorise de louvrage en langue anglaise intitul :
DBAs Guide to Databases on Linux, including Oracle and MySQL,
by David Egan and Paul Zikopoulos.
Syngress Publishing Inc., ISBN : 1-928994-04-0
Traduction de langlais par Martine Chalmond
Le code de la proprit intellectuelle du 1
er
juillet 1992 interdit en effet expressment la
photocopie usage collectif sans autorisation des ayants droit. Or, cette pratique s'est gn-
ralise notamment dans les tablissements d'enseignement, provoquant une baisse brutale
des achats de livres, au point que la possibilit mme pour les auteurs de crer des uvres
nouvelles et de les faire diter correctement est aujourd'hui menace.
En application de la loi du 11 mars 1957, il est interdit de reproduire intgralement ou
partiellement le prsent ouvrage, sur quelque support que ce soit, sans autorisation de l'diteur ou du
Centre Franais d'exploitation du droit de Copie, 20, rue des Grands Augustins, 75006 Paris.
2000, Syngress Publishing Inc. All rights reserved.
ditions Eyrolles, 2000. Version eBook (ISBN) de l'ouvrage : 2-212-28068-8
Dpt lgal : septembre 2000
N dditeur : 6159
Remerciements
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.
copyright ditions Eyrolles
Les auteurs
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
VIII
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.
copyright ditions Eyrolles
Les auteurs
IX
Bryan Schwab (B.S. Computer Engineering, Florida Atlantic University) est
ingnieur principal chez Billpoint, une entreprise spcialise dans les portails
(eBay), o il est responsable du dveloppement de la logistique (back end)
pour le-commerce, dont les serveurs de commandes et dexpditions, les
spcifications de scurit, les systmes de monitoring et lintgration dappli-
cations stratgiques majeures. Aprs plus de 10 ans dexprience de lingnie-
rie de logiciel, Bryan se spcialise dans les architectures de base de donnes
back end sur Linux, Solaris, FreeBSD, OpenBSD et Windows NT/9X. Il a
conu et implment des systmes dinformation pointus et des programmes
de gestion de grande envergure pour des socits telles que Wired Digital ou
NetGravity. Il crit dans Wired Magazine et Webmonkey.
Tim Schaefer est administrateur de base de donnes Informix et consultant
en data warehousing. Il travaille actuellement pour Galaxy Latin Americ
DirecTV, Fort Lauderdale, Floride. Il a travaill sur des bases des donnes
Informix de toutes tailles, allant du systme quip du moteur standard sur
machine Xenix 80286, avec seulement 16 Mo de mmoire, jusqu des entre-
pts de donnes grande chelle quips de Informix Extended Parallel
Server (XPS). Il est dans linformatique depuis 1985, depuis le collge
(universit Webster de Saint-Louis), et travaille avec les produits Informix
depuis 1988. A son actif, retenons sa participation un groupe international
de dveloppeurs et dhommes daffaires choisis pour promouvoir les avanta-
ges dInformix sur Linux. Il gre aussi le site InxUtil, http://www.inxutil.com,
un site web ddi aux outils Informix, et simplique activement dans le
groupe des utilisateurs Informix Sud Floride Ft Lauderdale. Tim est aussi un
adepte de la plonge sous-marine, et le mieux, pour le rencontrer, est daller
faire un tour, certains week-ends de printemps et dt, sur la cte de Ft.
Lauderdale ; on le trouvera au milieu des poissons, des paves et des rcifs.
On peut aussi joindre Tim tschaefe@bellsouth.net
Alavoor Vasudevan Al Dev (B.E. Osmania University, M.S University
of Texas El Paso), a dmarr sa carrire informatique en 1985. Depuis lors,
il a beaucoup travaill avec les bases de donnes sous Unix/C/C++/SQL. Il a
une exprience du e-commerce, de Linux et de HTML. Parmi ses travaux
annexes figurent lcriture dun bon nombre de documentations pour
Linux/UNIX ainsi que le dveloppement de logiciels pour Linux/UNIX. Al
Dev vit Pearland, Texas ; la semaine, il est consultant pour des socits
implantes Houston et dans les environs.
Paul Zikopoulos est un membre senior de lquipe de dveloppement et
dinformation sur DB2, spcialis dans linstallation de DB2 et les problmes
de configuration. Il a plus de cinq ans dexprience sur la base de donnes
universelle DB2 ; il a crit des articles dans de nombreux magazines et des
livres sur DB2. Paul est largement certifi IBM : IBM Certified Advanced
Technical Expert (DRDA et Cluster/EEE) et IBM Certified Solutions Expert
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
X
sur la base de donnes universelle DB2. On peut le joindre
paulz_ibm@yahoo.com. Paul souhaite remercier Susan Williams et Darin
McBride, dveloppeurs IBM, de leur aide et leur passion pour DB2 et Linux.
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.
copyright ditions Eyrolles
Table des matires
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
XII
Trouver les pilotes.......................................................................... 20
Migrer vers des stations de travail Linux.............................................. 20
Distributions de Linux ........................................................................ 21
Revue rapide des distributions .............................................................. 21
Debian GNU/Linux 2.1 .................................................................. 22
Caldera OpenLinux 2.3................................................................... 22
TurboLinux 4.0.............................................................................. 22
Linux Red Hat 6.1.......................................................................... 22
Linux Mandrake PowerPack 6.1...................................................... 23
SuSE Linux 6.3.............................................................................. 23
Rcapitulation des serveurs de base de donnes................................ 23
SPIRO-Linux................................................................................. 24
Corel Linux ................................................................................... 24
Rflchir avant la mise jour ou la migration ................................. 25
Compatibilit matrielle........................................................................ 25
Environnement de test .................................................................... 27
Mise jour............................................................................................. 27
Migrer depuis un autre systme dexploitation..................................... 27
Choisir une distribution......................................................................... 28
Comment entamer le processus.......................................................... 28
Formation de lquipe ........................................................................... 29
Solutions prsenter votre directeur.............................................. 29
Faire une analyse correcte des cots ................................................ 30
Rsum.................................................................................................. 30
FAQ....................................................................................................... 31
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
copyright ditions Eyrolles
Table des matires
XIII
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
XIV
Installation relle physique ................................................................... 62
Installation des paquetages ................................................................... 64
Installer Debian en jouant Tetris ................................................... 64
Linux Loader (LILO) et disquette de dmarrage .................................. 64
Configuration de LILO................................................................... 64
Disque de boot durgence ............................................................... 64
Installation termine ! ........................................................................... 65
Configurer le serveur pour une base de donnes.................................. 65
Points vrifier ..................................................................................... 66
Autres versions de Linux .................................................................... 66
Exemples de scnarios de base de donnes........................................... 67
Rsum.................................................................................................. 68
FAQ....................................................................................................... 69
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
copyright ditions Eyrolles
Table des matires
XV
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
XVI
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
copyright ditions Eyrolles
Table des matires
XVII
Autres outils........................................................................................191
Dbaccess...............................................................................................194
Onmonitor ............................................................................................195
Ressources...........................................................................................196
Support technique Informix..................................................................196
Site web Informix..................................................................................197
Groupe de news Usenet comp.databases.informix...............................197
Groupe international des utilisateurs Informix (IIUG)........................197
Presse Informix ....................................................................................197
Formation Informix..............................................................................198
Rsum ................................................................................................198
FAQ.....................................................................................................199
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
XVIII
Problmes .......................................................................................... 233
Colonne Identit (auto-incrmente) .................................................. 233
Conformit SQL................................................................................ 235
Environnement dexcution................................................................. 237
Utilisation de la mmoire par Sybase............................................. 237
Scripts rc de Sybase ..................................................................... 238
Tempdb....................................................................................... 239
Rsum................................................................................................ 242
FAQ..................................................................................................... 243
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
copyright ditions Eyrolles
Table des matires
XIX
Installation dune distribution binaire.................................................293
Installation dune distribution RPM....................................................294
Installation dune distribution source..................................................294
Configuration......................................................................................296
Scurit.................................................................................................297
Privilges..............................................................................................298
Contrle daccs ..................................................................................302
Installation du systme.........................................................................303
Performance.........................................................................................305
Problmes............................................................................................308
Threads.................................................................................................309
Environnement dexcution..................................................................309
Dpannage...........................................................................................311
Rsum ................................................................................................312
FAQ.....................................................................................................314
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
XX
Calibrage du cache.............................................................................. 337
Excuter Progress.............................................................................. 339
Grer la base de donnes .................................................................... 339
Dmarrer la base de donnes......................................................... 340
Dmarrer une session ................................................................... 342
Arrter la base de donnes ............................................................ 343
Sauvegarder la base...................................................................... 344
Surveillance................................................................................. 345
Dpannage........................................................................................... 350
Utilisateurs suspendus, emballements et autres psychodrames ........ 350
Forces et faiblesses............................................................................. 352
Le L4G................................................................................................. 352
Orientation OLTP................................................................................ 353
Restauration aprs panne lpreuve des balles .......................... 353
Cot de proprit................................................................................. 354
Indexation des mots ............................................................................. 354
Internationalisation ............................................................................. 354
Fonctionnement 24 heures sur 24 ....................................................... 355
Aucun BLOB........................................................................................ 355
Pas de requtes parallles................................................................... 355
Aucune gestion de verrouillage distribu............................................ 356
Rsum................................................................................................ 359
FAQ..................................................................................................... 360
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
copyright ditions Eyrolles
Table des matires
XXI
Valider linstallation de PostgreSQL...................................................381
Les exemples de PostgreSQL.........................................................381
Tester linterface Tcl/Tk................................................................381
Tester linterface Python PyGreSQL..........................................382
Tester linterface Perl....................................................................382
Tester les interfaces libpq++ et libpq..............................................383
Tester les interfaces Java ...............................................................383
Tester linterface ecpg...................................................................384
Tester linterface ODBC................................................................384
Tester linterface MPSQL Motif-Worksheet ...................................384
Tester les exemples SQL, les types dfinis par lutilisateur
et les fonctions .............................................................................384
Vrifier linstallation de PostgreSQL...............................................385
Appliquer les corrections durgence....................................................386
Comment sassurer de la fiabilit de PostgreSQL ?............................386
Rpertoires du systme.........................................................................387
Utiliser Postgres sur UNIX/Linux
en environnement runtime ................................................................388
Dmarrer postmaster ...........................................................................388
Les pg_options .....................................................................................389
Options dfinies............................................................................390
Scurit................................................................................................392
Authentification de lutilisateur ...........................................................392
Contrle de lhte.................................................................................393
Mthodes dauthentification.................................................................394
Authentification Kerberos ....................................................................394
Disponibilit.................................................................................395
Installation ...................................................................................395
Mise en uvre..............................................................................395
Crer des utilisateurs ...........................................................................396
Crer des groupes ................................................................................396
Ajouter et supprimer des utilisateurs ...................................................397
Contrle des accs ...............................................................................397
Fonctions et rgles ...............................................................................398
Mises en garde .....................................................................................398
Scuriser les connexions TCP/IP.........................................................398
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
XXII
Excuter une passerelle scurise via ssh ....................................... 399
Gestion des disques et support des grandes bases de donnes ...... 399
Localisation secondaire....................................................................... 400
Grer une base de donnes ............................................................... 401
Crer une base de donnes.................................................................. 401
Accder une base de donnes ........................................................... 402
Dtruire une base de donnes ............................................................. 403
Sauvegarde et restauration.................................................................. 403
Grandes bases de donnes................................................................... 404
Utiliser un botier de commutation avec PostgreSQL......................... 405
chec au dmarrage de postmaster .................................................... 406
Problmes de connexion du client ....................................................... 407
Messages de dbogage ........................................................................ 408
pg_options ........................................................................................... 408
Ressources PostgreSQL sur lInternet ............................................ 410
Support technique................................................................................ 410
Listes de diffusion................................................................................ 411
Comptes e-mail pour PostgreSQL ................................................. 411
Listes de diffusion en anglais ........................................................ 411
Archives de listes de diffusion....................................................... 412
Listes de diffusion en espagnol...................................................... 412
Outils graphiques pour PostgreSQL ................................................... 413
Pilotes ODBC, JDBC et UDBC........................................................... 414
Interfaces Perl et DBI.......................................................................... 415
Interface Perl 5 pour PostgreSQL.................................................. 415
Perl DBI, de quoi sagit-il ? .......................................................... 416
DBD-Pg-0.89, pilote DBI pour PostgreSQL................................... 417
Support technique pour DBI ......................................................... 417
DBI, Perl et DBperl, de quoi sagit-il ? .......................................... 417
Spcifications DBI ....................................................................... 418
Guides pour PostgreSQL..................................................................... 418
Ressources sur lInternet............................................................... 418
Sites de rfrence de PostgreSQL ....................................................... 420
Rsum................................................................................................ 420
FAQ..................................................................................................... 421
copyright ditions Eyrolles
Table des matires
XXIII
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
copyright ditions Eyrolles
Introduction
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
2
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.
copyright ditions Eyrolles
Introduction
3
Chapitre 8 - Installer et grer Progress sur Linux. Progress est habi-
tuellement nglig par la plupart des DBA. Il est souvent inclus dans des
applications tierces, mais cest en soi une trs bonne base de donnes.
Chapitre 9 - PostgreSQL sur Linux. PostgreSQL est disponible dans
plusieurs distributions Linux. Cest un logiciel Open Source, comme
MySQL, qui prsente lavantage dtre facile dmarrer dans le cadre
dune petite application de base de donnes. Cependant, sa flexibilit est
limite.
Chapitre 10 - Dvelopper une application web. On donne ici un exem-
ple dapplication des base de donnes au contexte du Web.
Les groupes Usenet en ligne, les livres blancs et les groupes dutilisateurs
sont des ressources intressantes pour changer des ides entre professionnels
de linformatique. Dans ce but, nous avons indiqu, tout au long du livre, des
contacts et des ressources accessibles sur le web.
Bases de donnes sous Linux
Vous avez probablement dj pris la dcision dimplmenter une base de
donnes sous Linux. La stabilit et la fiabilit du systme dexploitation
Linux conviennent bien une base de donnes. En tant que systme dexploi-
tation Open Source, Linux dispose dune bonne assistance et fait lobjet de
mises jour en permanence. Lutilisateur doit bien comprendre ds le dbut
que les versions majeures du noyau et les corrections mineures de bogues
doivent tre appliques rgulirement au systme dexploitation.
Il faut aussi tre attentif au matriel qui hberge le serveur de base de
donnes. Le traitement de la redondance y est intgr. Il est fortement
conseill de disposer de disques multiples dans une configuration de type
RAID (Redundant Array of Independent Disks). Des bases de donnes diff-
rentes appellent des configurations adaptes, diffrentes. Il va de soi que le
maximum possible de mmoire sera install ; la meilleure base de donnes
chouera misrablement si le matriel ne rpond pas.
Le systme dexploitation et le serveur tant mis en place, plusieurs questions
se posent :
Que doit faire la base de donnes ?
De quel environnement de production spcifique dispose-ton : petit,
moyen ou grand ?
Est-ce une application critique ?
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
4
Cette application ncessite-t-elle de lassistance ?
Les bases de donnes traites dans ce livre ont chacune leur force et leur
faiblesse. Si la dcision nest pas dj prise, ou mme si elle lest, chacune
sera prise en considration. Une rflexion supplmentaire ne nuit pas, tant que
la solution nest pas implmente.
Oracle se situe toujours en tte, dans lesprit de la plupart des gens, du point
de vue de la souplesse et de la fiabilit. Mais Oracle requiert des administra-
teurs hautement qualifis, ainsi que des contrats dassistance avec la socit
distributrice. Cette combinaison, ainsi que le cot lev des licences commer-
ciales dOracle, exclut gnralement les petites socits qui ont besoin de
petites bases de donnes. Informix suit le mme modle. Il sagit dune base
de donnes hautement fonctionnelle et fiable, mais ses cots dacquisition et
dassistance sont souvent, eux aussi, levs.
Sybase, enfin, se prsente comme un bon compromis, une solution viable.
Mme si elle ne peut prtendre proposer un ensemble de caractristiques aussi
riche que celui dOracle ou dInformix, elle na certainement pas de lacunes
sur lessentiel. Son cot est plus accessible et, si lon est familiaris avec
Microsoft SQLServer, sa configuration est immdiate. Sybase sadapte la
plupart des applications et, en mme temps, est stable. On peut dire la mme
chose de DB2, peut-tre un peu plus dlicate maintenir, mais tout aussi riche
en fonctions et susceptible dvoluer quOracle. Le cot des applications
commerciales est, lui aussi, moins lev. Progress entre dans cette catgorie.
Les bases de donnes en accs libre (freeware), telles MySQL et PostgreSQL,
sont de trs bonnes solutions dentre de gamme. Le cot en est trs attrayant,
bien sr elles sont gratuites. Ces bases de donnes sont faciles installer et
maintenir. Un utilisateur novice, avec laide de ce livre, peut les installer et
les dmarrer en un jour ou deux seulement. Le principal inconvnient de ces
bases de donnes est leur taille limite : elles ont souvent des problmes de
performance au-del dun million denregistrements. Mais il existe une solu-
tion parfaitement viable : dmarrer avec une base de donnes freeware, puis
migrer vers lune des plus grandes. Exporter les tables en SQL puis importer
le SQL dans une autre base de donnes ne pose pas de problme. Passer du
temps ds le dbut sur une solide conception de la base de donnes et sur un
bon modle de donnes vite de se mettre martel en tte. Cest vrai, bien sr,
pour toutes les implmentations de base de donnes, mais ce lest particuli-
rement dans une situation de migration des donnes.
Appuyez-vous sur ce livre pour valuer les solutions qui rpondent le mieux
vos besoins, sachant quen dernier ressort, vous seul tes mme de prendre
une dcision.
copyright ditions Eyrolles
Introduction
5
Plus de bases de donnes pour plus de
satisfaction
Les bases de donnes dhier sont une ple esquisse des applications puissan-
tes produites aujourdhui par les entreprises de pointe. Les dcideurs et les
administrateurs se trouvent maintenant face une foule doptions, car la stan-
dardisation via SQL rend les donnes trs portables. Lutilisation des BLOB
(Binary Large OBjects, grands objets binaires) permet de ranger des images et
des programmes dans des bases de donnes. La technologie XML (eXtensible
Markup Language), relativement nouvelle, permet de prsenter les donnes,
qui taient souvent verrouilles un niveau de deux ou trois couches dappli-
cation, instantanment sur le web. Dune manire gnrale, les bases de
donnes dont il est question dans ce livre peuvent se classer en deux
catgories : traditionnelle et Open Source.
Bases de donnes traditionnelles
Les bases de donnes traditionnelles sont, en principe, programmes par de
grands diteurs de logiciel et font lobjet dune assistance. Lavantage le plus
sensible de ce modle est le support de produit. Pour un certain cot de main-
tenance annuelle, lditeur met disposition le dpannage et la mise jour du
produit. Les trs grandes entreprises dont les systmes dinformation reposent
sur de grandes bases de donnes se refusent absolument maintenir les
couches sous-jacentes, ou annexes, ce que ce modle de support propose.
Linconvnient vident du modle traditionnel est la lenteur de lditeur
modifier ses produits et lui ajouter de nouvelles caractristiques. Il faut
souvent des mois, voire des annes, de dveloppement pour que les technolo-
gies les plus rcentes parviennent lutilisateur final. Autre inconvnient
majeur : ces socits, comme nimporte quelle entreprise, sont obliges
dadopter une tactique commerciale entranant la hausse du cot des licences
individuelles, qui deviennent prohibitives pour beaucoup dutilisateurs.
Lditeur est habituellement lobjet dune concurrence intense, de sorte que
les produits apparaissent trop tt et que des corrections sont souvent ncessai-
res. Prenons lexemple dOracle 8i : cette version longuement attendue
dOracle a t programme pour tre compatible avec lInternet, mais elle est
pleine de bogues. Ces bogues ont t corrigs dans la deuxime version
dOracle 8i, qui ne fut publie quun an plus tard. Cest le scnario avec
lequel beaucoup dditeurs jonglent en permanence.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
6
Bases de donnes Open Source
Le modle de dveloppement de logiciel le plus rcent est lOpen Source. Il a
le grand avantage de reposer sur une communaut de dveloppement. Il y a
normalement un ou des responsables du code en nombre restreint, mais tout
lInternet comme quipe de dveloppement potentielle. Le logiciel qui en
rsulte est revu et mis jour souvent. La version la plus rcente dune certaine
partie du logiciel hrite des caractristiques et de la technologie les plus
rcentes. Cela, bien sr, a pour consquence fcheuse que ces caractristiques
peuvent ne pas avoir t entirement testes. Ladministrateur systme doit
tre vigilant quant aux nouvelles mises jour et additions, et il faut un utilisa-
teur avanc pour maintenir le systme. Les grandes entreprises se heurtent au
fait que lon ne dispose pas de lassistance et de la compatibilit traditionnel-
les lassistance incombe ladministrateur. En toute honntet, cest exac-
tement de cette manire que cela fonctionne dans la plupart des socits.
Ladministrateur fait appel ses propres connaissances et sappuie sur les
informations obtenues dans les sites web et les groupes de news relatifs au
logiciel en question.
Utiliser au mieux sa base de donnes
Avoir une base de donnes sur un serveur Linux est une bonne chose, mais
que peut-on en faire ? Pour tout un chacun, la rponse est : Dieu reconnatra
les siens . Grer les donnes du personnel, les contraintes clients, corrler
des donnes marketing, amliorer la performance dun systme de comman-
des, et bon nombre dautres applications seront conues et programmes.
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.
copyright ditions Eyrolles
Introduction
7
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.
Les bases de donnes, leur avenir
Le web a explos au cours des trois dernires annes. Utiliser des bases de
donnes sur le web est dores et dj entr dans les moeurs. Stocker des infor-
mations sur les clients et les utilisateurs, accder aux profils personnels, trier
et cataloguer des donnes et des informations sur les produits accessibles aux
clients est en passe de devenir le nouveau standard le modle qui pilotera
le e-commerce. La recherche approfondie de donnes, les portails et les
commandes par correspondance sont au coeur de ngociations en cours,
concernant lavenir des CEO.
Dans le cadre de ce livre, nous avons prsent un scnario dachat la carte
(commandes par correspondance), pour illustrer lune des utilisations possi-
bles des bases de donnes. Les serveurs web sont un lment cl de lutilisa-
tion des bases de donnes sur le web, et nous en prsentons un bref aperu.
Nous esprons surtout que vous tiendrez ce livre pour une rfrence utile,
susceptible de vous aider mettre en place une base de donnes sur Linux,
quel quen soit lusage.
A qui sadresse cet ouvrage ?
Ce livre est, en tout premier lieu, destin aux administrateurs de base de
donnes et aux utilisateurs de Linux soucieux damliorer leurs comptences
et leur comprhension des diverses bases de donnes existantes. Nous esp-
rons que vous fermerez ce livre sur une meilleure comprhension de la
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
8
conception des bases de donnes et de leur implmentation en gnral. Un
strict ensemble dinstructions, excuter de manire quasi mcanique, pour
installer et configurer une base de donnes a, certes, son intrt, mais ce livre
tente daller au-del : vous faire mieux comprendre le systme dexploitation
Linux, quand il est utilis comme serveur de base de donnes.
copyright ditions Eyrolles
I
1
Le systme
dexploitation
Linux
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
10
Brve histoire de Linux
Le systme dexploitation Linux na cess de se dvelopper depuis sa cra-
tion, en 1991 : Linus Torvalds commena alors crire un systme dexploi-
tation, fond sur UNIX, destin fonctionner dans lenvironnement PC Intel.
Diplm de luniversit de Helsinki, en Finlande, Linus vit lintrt que
prsentait un PC de base, en tant que systme de bureau, par rapport aux
terminaux passifs. En ce temps-l, le cot du logiciel de bureau et du systme
dexploitation associ interdisaient ltudiant ou lutilisateur moyen de
disposer dun PC quip des produits (logiciels) ncessaires. Dans le but de
rsoudre ce problme, et daugmenter les ressources de lcole o il
travaillait, Linus se mit au travail et dcida de redvelopper le code Minix (un
clone dUnix microkernel) pour crer quelques utilitaires simples, pour lui-
mme. Il sentit que cela en valait la peine, mme si, dans un premier temps,
cela ne servait qu permettre lcole dutiliser quelques anciens PC comme
terminaux passifs pour se connecter des serveurs (principaux) matres.
Linus, la recherche dides de dveloppement et de ressources, souvrit de
son projet la communaut Internet. Dbut 1992, seulement une centaine de
personnes avaient utilis Linux. Le noyau Linux originel tait trs compact et
ne proposait que les fonctionnalits de base. La communaut Internet sest
vite mobilise et a soutenu sans dfaillance le dmarrage du projet. Trs vite,
des centaines, puis des milliers de programmeurs ont spontanment propos
leur collaboration, ainsi que des enrichissements sous forme de dveloppe-
ments personnels. Cela a permis un dveloppement trs rapide, qui a mis
profit beaucoup de bonnes volonts pour dboguer et tester le code de Linux.
En peu de temps, Linus a remplac tout le code Minix par son propre code,
enrichi des contributions des autres volontaires. En sappuyant sur la commu-
naut ppen-source, qui tait encore dans sa prime jeunesse, Linus a livr
Linux au monde entier.
En termes de dveloppement dutilitaires, il ny avait pas, et il ny a toujours
pas, de meilleure conception dun utilitaire. Nimporte qui peut dvelop-
per ce quil estime tre un utilitaire rellement utile. Il est vident que, dans
les faits, on trouve pour la mme fonction de base, plusieurs utilitaires ; beau-
coup sont conus de sorte que, si vous tes dj familiaris avec un utilitaire,
Linux vous en fournira un compltement quivalent du point de vue fonction-
nel. Par exemple, il existe au moins une douzaine dditeurs de fichiers dispo-
nibles, tant en version X Window quen version texte.
Prs dune dcennie plus tard, Linux commence trouver sa place dans la
communaut professionnelle en tant que moyen viable, et souvent suprieur,
de remplacer beaucoup dautres systmes dexploitation de bureau et de
serveurs. Linux a pris dassaut dans un domaine nouveau celui des
copyright ditions Eyrolles
Le systme dexploitation Linux
CHAPITRE I
11
serveurs de bases de donnes ainsi que le prouvent les nombreuses allian-
ces entre les divers diteurs de Linux et certains des grands diteurs de bases
de donnes, tels Oracle ou IBM. Cet ouvrage se propose de prsenter les
forces de Linux en tant que plate-forme serveur de base de donnes, dexami-
ner plusieurs solutions de base de donnes, et de dcrire quelques exemples
dapplications relles.
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
12
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.
Lavenir du dveloppement de Linux
Le code source est public : mme si Linus dcide darrter de travailler,
quelquun dautre peut facilement prendre le code source et poursuivre le
dveloppement. Et le noyau nest quune petite, quoique trs importante,
partie de Linux. La plupart des centaines dutilitaires ont t raliss dans le
cadre du projet GNU ou manent de lopen-source.
Linus nest pas lunique dveloppeur du noyau au monde. Beaucoup de gens
ont t mis contribution ce jour, et dautres le seront encore. Alan Cox,
notamment, a contribu au dveloppement du noyau dans des domaines tels
que la gestion des nouveaux matriels ou la prise en compte des contraintes
des nouveaux processeurs. titre dexemple de communaut dintrt, AMD
fournit tous les dtails du processeur Athlon Alan Cox. Les noyaux raliss
dans un avenir trs proche doivent atteindre des vitesses record, si lon veut
les optimiser pour fonctionner sur une machine Athlon.
Tableau 11
Utilitaires UNIX de base fournis avec chaque distribution Linux
Opration Ligne de commande ou fichier
Manipulation de fichier cp, mv, rm, ln, touch, ls, cat, more, >, >>, 2>, <
Installation ifconfig, mount, showmount, /etc/printcap, /etc/hosts
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
copyright ditions Eyrolles
Le systme dexploitation Linux
CHAPITRE I
13
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.
Pourquoi payer une version commerciale de Linux ?
Les versions commerciales offrent des bonus supplmentaires, non disponi-
bles dans les versions gratuites, bien que le support physique ait lair identi-
que. La diffrence se situe dhabitude dans quelques produits ou services
valeur ajoute, compris seulement dans le produit commercial. Par exemple,
Red Hat Linux, quand on lachte auprs dun distributeur, comprend de 30
180 jours dassistance gratuite linstallation, ainsi quune souscription au
service central web de mise jour. La distribution Debian propose une assis-
tance illimite pour ses sites ftp et web. On peut aussi acheter ces services
dassistance et de mise jour sur la base dun contrat annuel chez Red Hat ou
dautres fournisseurs. Cest de cette manire que Red Hat gagne de largent et
investit dans le dveloppement des fonctionnalits nouvelles de ses produits.
Les versions commerciales sont censes tre maintenues, et proposer habi-
tuellement une procdure simplifie dinstallation et une interface unifie.
ses dbuts, Linux donnait un ensemble dinstructions de base pour installer la
distribution Linux. Il fallait alors configurer fichiers, imprimantes, cartes
rseau et cartes son individuellement. Les versions actuelles ont toujours au
moins une interface dinstallation, parfois en couleur, et base de menus (les
plus courantes), ou sont en mode graphique (X Window), comme la version
courante de Red Hat.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
14
Diffrences entre Linux et les autres
systmes dexploitation
Linux est un clone dUNIX, crit pour tre compatible avec POSIX, partout
o cest possible. Linux a dabord t crit pour la plate-forme Intel, puis il a
t port sur PowerPC, Macintosh, Amiga, quelques ordinateurs Atari, et
mme sur le Palm Pilot. Si vous connaissez les commandes de base, lorgani-
sation du systme de fichiers et les utilitaires gnraux de toute autre variante
dUNIX, vous les connaissez sur Linux. Si vous tes utilisateur de Microsoft
Windows ou de Macintosh, vous ne serez peut-tre pas laise au dbut, mais
vous verrez vite que tout y est similaire.
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.
copyright ditions Eyrolles
Le systme dexploitation Linux
CHAPITRE I
15
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.
Architectures multiprocesseurs (SMP)
Sorti de la bote, Linux prendra en charge jusqu seize processeurs, selon les
variantes. Cette exploitation du multiprocesseur fait de Linux une plate-forme
excellente pour un serveur de base de donnes, capable de grer simultan-
ment beaucoup de threads. La plupart des grands diteurs vendent des
serveurs multiprocesseurs spcifiques des bases de donnes et des services
web. Le noyau Linux est bien conu pour grer ces processeurs multiples : il
propose une utilisation quasi-complte de tous les processeurs supplmentai-
res, au lieu dun ratio dutilisation qui dcline chaque ajout dun nouveau
processeur.
Mmoire virtuelle 32 bits (et 64 bits sur RISC)
Linux sappuie sur tous les services de gestion de la mmoire en 32 bits du
processeur pour fournir une mmoire virtuelle de 4 Go sur les plates-formes
Intel, et de 16 exaoctets
1
quand on se sert de Linux 64 bits sur un processeur
RISC. Chaque nouveau processus cre un processus utilisateur indpendant
avec 2 Go despace virtuel (disponible sil le faut ; en ralit, il nutilise que
la RAM ncessaire pour le support du processus). Cela procure scurit et
indpendance entre tous les processus du systme.
Compatibilit binaire, le format ELF
Linux a adopt une stratgie de conception dapplications fonde sur les
formats binaires standardiss ELF (Executable and Linking Format) et les
bibliothques partages, similaires aux bibliothques de liens dynamiques
(DLL), mais non compatibles. Cela permet dexcuter les applications sur des
systmes dexploitation multiples sans les recompiler. SCO UNIX 4.2, SVR4,
1. 1 exaoctet = 1024 petaoctets = 1024 * 1024 teraoctets = 1024*1024*1024 gigaoctets
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
16
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.
Oprations en mode noyau compltement protg
Le systme dexploitation Linux excute toutes les applications en mode
noyau compltement protg (cest--dire quaucun processus ne peut circon-
venir le systme dexploitation). Aucune application utilisateur ne peut inter-
frer avec une autre, sauf si lautorisation a t spcifie, et il ny a aucun
accs direct aux matriels dans Linux. Ce sont les deux principaux problmes
rencontrs avec les systmes dexploitation de type DOS, qui les rendent
particulirement vulnrables aux virus et dautres problmes de scurit.
Interface graphique X Window gratuite
Linterface graphique utilisateur de Linux est totalement gratuite. Elle repose
sur une version du standard XFree86 du systme X Window (la plupart des
programmes compatibles X existants fonctionneront sous Linux sans aucune
modification). Le systme X Window existe depuis le dbut des annes 1980,
prcdant la conception de Microsoft Windows. Vous pouvez mme remar-
quer que le nouveau look de Win9x/NT ressemble beaucoup au standard
X Window, dans lequel nous avons baign bien plus longtemps.
Applications Windows/DOS, VMWare
Avec la plupart des versions de Linux, sont fournis un paquetage dmulation
de DOS appel DOSEMU et un paquetage dmulation de Windows, WINE :
ils fournissent un support de base aux applications propres , qui nessaient
pas de forcer les rgles en accdant directement au matriel ou en utilisant des
API non documentes.
Un autre bon point pour Linux : le paquetage dmulation de machine
virtuelle appel VMWare offre un support complet de Windows NT, 9.x et
3.x, qui permet Linux dtre un systme dexploitation hte pour un ou
plusieurs de ces systmes dexploitation htes installs dans un monde
virtuel, partageant avec Linux la mmoire et les ressources matrielles locales
copyright ditions Eyrolles
Le systme dexploitation Linux
CHAPITRE I
17
galement et simultanment. On a littralement la fois Linux et un ou
plusieurs systmes dexploitation Windows fonctionnant en mme temps sur
la mme machine, dans des fentres X Window diffrentes ! On peut donc
fournir lun ou lautre de ces bureaux tout utilisateur du rseau quip dun
PC relativement puissant (cest--dire avec le matriel appropri : 266 MHz
ou plus, 96 Mo RAM ou plus, et lespace disque en quantit suffisante).
noter que VMWare offre un produit de machine virtuelle quivalent pour NT.
On installe Linux comme systme dexploitation hte sur NT et on excute
les deux bureaux ensemble partir dune fentre Windows. On peut tlchar-
ger, depuis ladresse www.vmware.com, une version dessai gratuite de
30 jours, pour lun ou lautre des systmes.
Fonctions rseau tendues
Les fonctions rseau sont sans doute le meilleur argument de vente de la
plupart des versions de Linux. Il comprend des protocoles natifs et une bonne
assistance au niveau application pour presque tous les autres systmes
dexploitation rseau couramment utiliss sur les matriels PC. En outre, il y
a un support mdia tendu pour divers types dinterfaces, autres que lEther-
net standard et Token Ring, tels que ISDN et mme Ham Radio.
Un support complet des protocoles natifs est fourni pour Macintosh, DOS,
Windows NT/9x/3.x, Novell et OS/2 en rseau, sous forme de paquetages
complmentaires divers, ce qui fait que Linux se prsente comme un serveur
ou un client local natif ces autres systmes dexploitation.
Services web standard
Le support des services Internet est fourni par le serveur web Apache, le
produit de serveur web dominant, qui excute les services http sur lInternet,
ainsi que des versions compltes des dernires interfaces CGI : Perl, Java, etc.
Linux est un excellent serveur web ; Apache est une application web de haut
niveau qui a intgr des hooks pour toutes les grandes bases de donnes utili-
sant ces interfaces CGI. La seule interface web ne pas tre propose est
Active Server Pages (ASP). Le support dASP est disponible chez de
nombreux diteurs tiers.
Services UNIX standard
Linux supporte tous les services UNIX standard : e-mail, FTP, news UseNet,
Telnet, POP, IRC, NFS, DNS, NIS, SNMP, Kerberos, etc., ce que lon attend
de tout systme Internet. Pour une vue densemble beaucoup plus prcise de
ce quest Linux, consulter le site web international de Linux
http://www.li.org/li/index.shtml.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
18
Pourquoi choisir Linux
Les systmes dexploitation sont tous soumis aux mmes contraintes de base :
fiabilit, scurit, fonctionnalits et cot. Si lon prend tout cela en compte,
Linux est difficile battre. Peu dautres systmes dexploitation peuvent se
vanter de lampleur des applications, des pistes daudit de fiabilit et des
caractristiques rseau les plus rcentes pour un cot faible ou nul. Le logiciel
initial est gratuit. Les cots dassistance courante et dexploitation ne sont pas
diffrents des cots normaux ; par contre, il faut linstaller, le grer et le main-
tenir. Le cot total de proprit est trs bas. Linux, une fois install et opra-
tionnel, demande peu de surveillance et de maintenance : heureusement, car
les administrateurs systme qualifis sont difficiles trouver !
Quand utiliser Linux
Les usages les plus courants de Linux sont nombreux : quiper un routeur, le
protocole dadressage IP dynamique DHCP, le Web, le protocole de transfert
de fichier (ftp), une base de donnes, un serveur de fichiers ou dimpressions.
Il peut donc faire bonne figure dans les bureaux.
Linux est un serveur de pare-feu rput, aux dernires normes de scurit en
matire de filtrage avanc de paquets, ainsi que dencapsulation TCP, apte
fournir la traduction dadresses rseau (NAT) ainsi que les services de proxy
pour les htes intranet qui doivent accder lInternet sans risque. Avec
Apache et les services WS-FTP, vous disposez dun site ftp et web trs sr,
robuste, dot de la scurit, des vrifications et des caractristiques de gestion
adquates, qui dpassent tous les autres produits concurrents sur le march.
Diverses versions de Linux ont donn lieu des alliances avec les plus grands
serveurs de base de donnes, dans le but dassurer une intgration et des
performances optimales. Une telle alliance sest faite entre Red Hat et Oracle,
et il y en a dautres (voir les dtails sur le site web de chaque version).
Serveurs et stations de travail
Il ny a pas de diffrence relle entre une version station de travail et une
version serveur. Dans lun ou lautre de ces emplois, Linux est toujours le
mme systme dexploitation. Cependant, Linux peut tre conditionn et
distribu sous diffrentes formes qui rpondent cette classification ; par
exemple, la version station de travail TurboLinux se vend au dtail moins
cher que le paquetage serveur TurboLinux, bien que la seule diffrence rside
dans le nombre et le type de logiciels que lon peut installer. Une version
station de travail comprend en gnral les principaux services rseau de Linux
copyright ditions Eyrolles
Le systme dexploitation Linux
CHAPITRE I
19
qui appartiennent un utilisateur et des applications complmentaires orien-
tes production, par exemple un ensemble de produits bureautiques. Une
version serveur peut ne pas comprendre, par dfaut, dapplications de ce type,
mais ne doit pas vous empcher de les installer plus tard.
Si lon se sert principalement de lhte Linux pour des services de fichiers,
dimpression, Web et ftp, cet hte sera considr comme un serveur. Si lon y
ajoute une suite bureautique, telles Corel WordPerfect, StarOffice ou
Applixware (toutes quivalentes Office 97), on obtient alors une station de
travail. Cette dsignation station de travail ou serveur est plus
conforme une perception de lusage qu une restriction sur les fonctions du
logiciel. La plupart des versions de Linux permettent aussi bien des applica-
tions serveur quutilisateur, et il faut slectionner ce que lon veut installer
chaque fois. On peut mme automatiser linstallation avec une simple
disquette de dmarrage qui se connecte un service central dinstallation et
contient un script identifiant les partitions de disque crer, leur taille et les
paquetages installer. La distribution Red Hat propose le service dinstalla-
tion automatise Kickstart pour effectuer des installations multiples de Linux
Red Hat sur des machines similaires.
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
20
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.
Trouver les pilotes
Le meilleur endroit o commencer chercher les pilotes est le site web de la
distribution Linux ; par exemple, www.RedHat.com, une petite partie du site
web principal de Red Hat, ou www.debian.org/distrib/ftplist, une petite partie
du site web principal de Debian. Vous pouvez aussi utiliser votre moteur de
recherche favori dans votre navigateur web et taper les mots-cls Linux et
le nom de votre matriel . Vous obtenez de nombreux liens vers les sites
contenant des pilotes et avez des chances de trouver quelques favoris tels que
des cartes vido, des cartes rseau et des cartes SCSI. La plupart des sites
offriront aussi leur HOWTO la plus rcente sur la compatibilit matrielle. En
gnral, lInternet sera votre meilleure source de documentation, de mise
jour et dassistance pour Linux.
Migrer vers des stations de travail Linux
Chaque fois quune entreprise change de systme dexploitation, la migration
prend un caractre traumatisant. On doit mme recycler certains utilisateurs
dans certains cas. Les comptences requises sur linterface graphique reste-
ront les mmes, mais les applications peuvent se prsenter diffremment sur
certains points, par exemple la suite bureautique. Mais si le bureau est un
client ddi une base de donnes, laspect et la perception seront similaires,
et la fiabilit trs leve. Pour vos utilisateurs finals, vous pourrez examiner la
suite bureautique StarOffice, fournie gratuitement par Sun Microsystems
voir www.sun.com/products/staroffice/get.cgi. StarOffice est couple avec de
nombreuses versions de Linux, dont Red Hat 6.1 et TurboLinux 4.0. Vous
pouvez les trouver, ainsi que dautres produits, tels les nouveaux produits de
la suite GNU, en visitant des sites comme www.slashdot.org et
www.freshmeat.net : vous y trouverez des nouvelles de la communaut Linux
et pourrez souvent tlcharger les plus rcents logiciels de jeux, des applica-
tions, des correctifs et des mises jour, pour toutes les versions de Linux.
copyright ditions Eyrolles
Le systme dexploitation Linux
CHAPITRE I
21
Distributions de Linux
Il existe de nombreuses distributions de Linux, quelles soient commerciales
ou non. Le tableau 1.2 rcapitule les plus connues.
Beaucoup de ces distributions sont disponibles en diffrentes langues, mais
toutes ne supportent pas lensemble des langues possibles : consultez le site
web principal de chaque distribution pour plus de dtails.
Revue rapide des distributions
Ce rsum nest pas destin remplacer vos propres tests dvaluation des
diverses distributions de Linux, mais vous permettra daller dans la bonne
direction. Toutes les versions cites excutent un noyau de la srie 2.2, four-
nissent les bureaux Gnome et KDE, des services de support rseau suppl-
mentaires sur SAMBA et NFS, et utilisent Apache comme serveur web.
Toutes les versions, sauf Corel et Mandrake, proposent une adresse e-mail
Tableau 12
Liste non exhaustive des distributions Linux disponibles
Site web Distribution
www.caldera.com Caldera Systems OpenLinux
www.conectiva.org Conectiva Linux
www.debian.org Debian GNU/Linux
www.libranet.com Libranet
www.linux-mandrake.com Linux Mandrake
www.linuxppc.com LinuxPPC (PowerPC)
www.phatlinux.com Phat Linux
www.RedHat.com Red Hat Linux
www.slackware.com Slackware Linux
www.stampede.org Stampede GNU/Linux
www.suse.de SuSE Linux
www.turbolinux.com TurboLinux
www.yellowdoglinux.com Yellow Dog Linux (PPC, RS-6000)
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
22
pour leurs services de courrier lectronique. Elles fournissent certains docu-
ments crits, quand on achte le produit, ainsi quune documentation lectro-
nique (que lon peut imprimer).
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.
Debian GNU/Linux 2.1
Debian est une distribution de Linux due plus de 500 programmeurs bn-
voles qui cooprent via lInternet. Debian bnficie du soutien de VA Linux
Systems Inc., OReilly et Associates Inc. et Silicon Graphic Inc. Le prix du
package est de 20 dollars : il comprend un manuel spar sur Debian
GNU/Linux et le CD-ROM de la distribution. Si vous optez pour lenregistre-
ment de votre copie, vous pouvez recevoir gratuitement une copie de StarOf-
fice. Le site web de Debian propose un accs illimit aux fichiers et lassis-
tance, aux mises jour gratuites permanentes, aux logiciels depuis leurs
archives, et mme des conseils gratuits !
Caldera OpenLinux 2.3
Caldera a une installation trs habile qui sinspire dune architecture multi-
tche et on peut jouer Tetris tandis que se droule linstallation des paqueta-
ges. Lensemble cote 49 dollars et comprend un support technique. Caldera
propose aussi beaucoup de suites bureautiques telles que WordPerfect,
StarOffice, Koffice et Applixware. lorigine, Caldera Linux drive de
Red Hat et partage beaucoup de ses caractristiques.
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.
Linux Red Hat 6.1
Linux Red Hat 6.1 est la version prfre du march, du moins daprs toutes
les tudes sur Linux. Linstallation graphique X est trs soigne (voir certains
dtails dj abords) et comporte quelques utilitaires spcifiques de Red Hat
comme DiskDruid et Kickstart, par exemple. Red Hat a contract beaucoup
dalliances avec les grands noms des fabricants de PC et la plupart des
diteurs de bases de donnes renomms, comme Oracle et IBM. La version de
copyright ditions Eyrolles
Le systme dexploitation Linux
CHAPITRE I
23
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.
Linux Mandrake PowerPack 6.1
Mandrake repose sur la distribution Red Hat, augmente de certaines caract-
ristiques et de nombreux paquetages supplmentaires, pour un prix lgre-
ment plus bas (55 dollars) que celui de la version Red Hat Deluxe
(79 dollars). Mandrake comprend six CD-ROM, ce qui le rapproche de SuSE
pour le nombre de CD-ROM, parmi les distributions cites ici.
SuSE Linux 6.3
SuSE Linux 6.3 est la version de Linux la plus connue en Europe : elle
propose une multitude dapplications, de gestionnaires de bureaux et de logi-
ciels de marque assortis, tout comme Mandrake. Le support technique est au-
dessus de la moyenne et linstallation se fait aussi en mode graphique. De
plus, elle contient une copie de VMWare ainsi que les suites bureautiques
StarOffice et Applixware.
Rcapitulation des serveurs de base de donnes
Voici, dans le tableau 1.3, une rcapitulation oriente base de donnes, qui
donne une rapide vue densemble des principales versions serveur de Linux,
avec le niveau de support technique de chacune delles ainsi que les serveurs
de bases de donnes compris dans la distribution.
Tableau 13
Comparaison des distributions Linux slectionnes
Caldera Debian TurboLinux Red Hat Mandrake SuSE
Mode
dinstallation
graphique graphique texte graphique texte texte
Installation de
systme
Lizard Programme
dinstallation
Debian
Turbocfg linuxconf linuxconf Yast2
Programme
dinstallation
de
paquetages
COAS,
kpackage
Get-it,
programme
dinstallation
de Corel
Apt-get RPM,
GnoRPM
RPM,
GnoRPM
RPM,
GnoRPM
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
24
Les distributions suivantes ne figurent pas dans le rsum prcdent, mais en
voici brivement les caractristiques.
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.
Serveur de
base de
donnes
IBM DB2 Postgress
SQL
IBM DB2 Mysql,
Postgress
SQL
Mysql Mysql,
Sybase,
Informix
Support
Technique
tlphone
90 jours,
e-mail, web
Web tlphone
60 jours,
e-mail, web
tlphone
30 jours,
30/90/180
jours de
service ftp et
web (selon le
prix)
tlphone
100 jours,
web
tlphone
60 jours,
e-mail, web
Tableau 13
Comparaison des distributions Linux slectionnes
Caldera Debian TurboLinux Red Hat Mandrake SuSE
copyright ditions Eyrolles
Le systme dexploitation Linux
CHAPITRE I
25
Rflchir avant la mise jour
ou la migration
Migrer une grande base dun client utilisateur demande du temps et des
ressources. Quelle que soit la manire dont on sy prend, cela reprsentera un
gros travail. Il faut prendre en compte ltat du rseau, du cblage et de la
largeur de bande pour respecter les spcifications correctes de performance.
La formation des utilisateurs ne sera ncessaire que dans le cas o les applica-
tions quils ont lhabitude de manier sont dun type totalement diffrent du
serveur de base de donnes.
Si le produit de serveur de base de donnes ne change pas (par exemple,
Oracle peut subsister sur une nouvelle plate-forme), les applications ne seront
pas changes. Sil sagit dun nouveau service de serveur de base de donnes,
comme dans le cas dune migration de Microsoft Access ou Dbase vers
Oracle ou Informix, il faudra envisager beaucoup de formations relatives aux
nouvelles interfaces et applications associes.
Sil faut migrer une base de donnes existante vers ce nouveau service, il
faudra former aux nouvelles interfaces les utilisateurs qui accdent aux
donnes dplaces. Le recyclage des utilisateurs tout produit nouveau ou
amlior exigera des ressources ; et ce nest quune partie de tout nouveau
projet de dveloppement ou damlioration. Les autres ressources consid-
rer sont : ladministration de base de donnes elle-mme, les outils de dve-
loppement destins aux utilisateurs, le dveloppement dinterfaces, les
contraintes de largeur de bande du rseau additionnel, lassistance et les servi-
ces daide en ligne.
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
26
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 souvent
2
.
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 !
Bon march, vous avez dit bon march ?
Il tait une fois un systme : achet, en version de test, voici un an, bien
plac en tte de peloton, il subit une panne totale de lalimentation lectri-
que, malgr un an et un mois dassistance continue quoique lgre. La
garantie tait dun an. La pice de remplacement est vendue au dtail
30 dollars, mais les pertes occasionnes par un arrt du systme pendant
une journe sont sans rapport avec lconomie faite en utilisant une
alimentation de bas de gamme.
titre de comparaison, les anciennes machines de 200 MHz, en service
continu depuis plus de deux ans, nont pas encore eu de panne dalimenta-
tion, ni la plupart de stations de travail 100 MHz achetes il y a cinq ans.
Vous avez ce que vous payez et il y a une raison pour laquelle les grandes
compagnies commerciales vendent des matriels ddis aux serveurs
cest quils sont conus pour durer plus longtemps. Cest une niche du
march : moins on en construit, plus le prix est lev. Il faut donc se prpa-
rer payer le prix pour des produits serveur de qualit.
2. Les composants sont peu onreux, en gnral !
copyright ditions Eyrolles
Le systme dexploitation Linux
CHAPITRE I
27
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 .
Migrer depuis un autre systme dexploitation
Une grande question concerne la stratgie de migration appliquer aux
anciens fichiers dinformation. On peut les laisser sur une partition du disque
(FAT, FAT32, NTFS, etc.) et les mettre disposition du systme Linux. Il
nest pas ncessaire de supprimer lancien systme dexploitation ou un
ancien systme de fichier, sil y a assez despace disponible pour Linux. On
peut mme garder lancien systme intact, dans une configuration de double-
amorage (dual boot), jusqu ce que lon soit prt achever la migration. Ce
nest pas la mthode recommande si lon a affaire des centaines de stations
de travail, car cela exige deux visites chaque machine. On doit tester la tran-
sition, la planifier soigneusement, la drouler, et prvoir quelques hoquets au
dmarrage.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
28
Toutefois, sil ne sagit vraiment que dun serveur de base de donnes, il na
pas du tout besoin dun autre OS, ni de ses anciens fichiers, qui ne font
quoccuper de lespace disque. Convertir les donnes et utiliser tout lespace
disque disponible sur la nouvelle machine de ce serveur. Garder une sauve-
garde ventuellement, mais une fois la migration faite, on na plus besoin
daccder aux anciennes donnes de toute faon.
Choisir une distribution
Le choix de la distribution est toujours dlicat. Cela dpend du genre de loca-
taire que vous souhaitez plutt que de ceux que vous connaissez bien. Utilisez
en premier celle qui semble le mieux rpondre aux besoins, celle sur laquelle
quelquun est dj form, ou celle que lon peut tlcharger gratuitement. Si
vous tes comme tout le monde, vous en chercherez probablement une qui
propose de lassistance gratuite, ou moyennant une lgre redevance, comme
Red Hat, Caldera, SuSE, Turbo Linux, ou une qui a le soutien dune organisa-
tion commerciale telle que Compaq, IBM, VA Linux ou autres. La plupart des
versions commerciales offrent une assistance. Il existe aussi des socits
spcialises dans lassistance, indpendante des produits, comme LinuxCare.
Comment entamer le processus
Gnralement, on entreprend de planifier les tches, mettre les gens en place,
tester soigneusement le plan, et puis de sy tenir. Plaons-nous dans le cas o
vous avez dj un projet, sur lequel vous travaillez, qui exige un serveur de
base de donnes ddi. Comme on la vu auparavant, Linux est un excellent
choix pour un serveur sous-jacent. Il faut inclure dans votre plan quelques
tests du serveur de base de donnes, le plus tt possible en phase de dvelop-
pement. Il ne faut pas faire lachat du matriel la dernire minute ou selon
une dcision inconsidre vue. Les matriels changent tous les jours, et
de nouvelles versions de Linux sortent tous les six mois. Sil sagit vraiment
dun grand projet, allez vers des grands constructeurs et demandez-leur une
dmonstration de leur matriel fonctionnant sous Linux. Testez bien votre
conception initiale avec eux, tout en gardant lesprit vos besoins long
terme.
copyright ditions Eyrolles
Le systme dexploitation Linux
CHAPITRE I
29
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.
Solutions prsenter votre directeur
Cot. Aucun doute ce propos, le cot nul de la licence du systme
dexploitation est un avantage. Quand on calcule les cots de licences
pour les plates-formes en concurrence, sassurer de bien prendre en
compte le cot des licences pour les clients qui utilisent le serveur, et le
cot ultrieur des mises jour. Ils peuvent tre trs levs pour certains
systmes dexploitation. Mais la licence gratuite ne signifie pas quil ny a
aucune assistance ; il existe un support commercial. Les grands construc-
teurs dordinateurs se mettent offrir des PC prconfigurs avec Linux,
Red Hat la plupart du temps. Que des compagnies comme Compaq, Dell,
et IBM aient dcid de supporter Linux sur leur matriel est un grand
plus en faveur de lutilisation de Linux.
Fiabilit. Il ny a jamais de raison de redmarrer Linux : les pilotes et les
applications peuvent tre rechargs tout moment. La plupart des syst-
mes dexploitation des serveurs Internet sont propulss par Linux ou
dautres systmes dexploitation de type UNIX, parce quils sont extrme-
ment dignes de confiance. UNIX domine le march haut de gamme des
serveurs de production et des stations de travail graphiques parce quil a
une fiabilit et une facult de reprise qui lui permettent de continuer
fonctionner dans nimporte quelles conditions.
Scurit. La force de Linux et dUnix sur lInternet rside dans leur
modle de scurit, mr et robuste. Le noyau est bien protg de laccs
direct de la part dun utilisateur quelconque, et le systme de fichiers,
conu pour tre sr, est prouv depuis des annes sur lInternet. La
plupart des brches dans la scurit ne sont pas des faiblesses quun utili-
sateur moyen, ou mme au-dessus de la moyenne, sera capable de mettre
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
30
profit au niveau dun systme dexploitation elles viennent de pratiques
peu soucieuses de la scurit des utilisateurs. Windows 98 noffre aucune
scurit relle intgre. La scurit, dans Linux, est fonde sur le systme
de fichier, et opre au niveau de chaque fichier.
Faire une analyse correcte des cots
Il faut encore faire une analyse particulire, lie aux cots induits par lajout
dun autre systme dexploitation dans votre rseau : lassistance ncessaire
(formation de lquipe la formation des clients tant minimale), les probl-
mes dintgration (le moins possible), les interfaces (diffrents types de fen-
tres mais les mmes concepts de base), et les conomies engendres.
Il faut disposer de ressources en test, formation, recyclage, et des ressources
durables daide en ligne, quel que soit le systme dexploitation. Avec un
systme dexploitation puissant, sr et fiable tel que Linux, vous pouvez opti-
miser certaines de ces ressources.
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.
copyright ditions Eyrolles
Le systme dexploitation Linux
CHAPITRE I
31
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
32
promotion la cl, ou demandez un volontaire. Vous pouvez certainement
trouver quelquun qui connat bien le sujet, joue dj avec la maison ou
la utilis lcole. Lassistance est disponible gratuitement via les servi-
ces de news et les groupes dutilisateurs sur lInternet, et un support
commercial payant est propos par beaucoup dorganismes. Voir la liste
des diteurs au tableau 1.3.
Q. Comment dsinstaller Linux ?
R. Techniquement, il suffit de repartitionner le disque, de rassembler les
nouvelles partitions actives en une seule, de transfrer quelque OS de type
DOS sur cette partition active, puis de redmarrer. Voil, Linux est parti
pour toujours. On peut faire cela avec tout systme dexploitation sur PC :
on obtient le mme rsultat.
Si vous avez Windows 9x, utilisez une disquette de dmarrage de
Windows 9x, et excutez la commande :
qui liminera lamorce lilo et redmarrera automatiquement Windows 9x.
Repartitionner ou reformater toutes les anciennes partitions Linux pour
leur rendre le format FAT.
Si vous avez Windows NT, sur une autre partition, il est un peu plus diffi-
cile de reconstruire le MBR NT, mais vous pouvez le faire avec loption
de secours en forant NT rcrire le bloc MBR.
Q. Quelles sont les applications qui fonctionnent sous Linux ?
R. On trouve beaucoup dapplications un peu partout sur lInternet. Du fait
quil sagit de distributions Linux, les applications doivent tre spcifique-
ment orientes Linux, tout comme les applications Windows 9x/NT
doivent sexcuter sur leurs propres plates-formes. Il existe plusieurs
milliers de produits pour Linux dont on ne trouve pas trace dans les maga-
zines PC (orients Windows), la plupart du temps parce quils sont
gratuits, et quaucune publicit ny est attache. Vous pouvez les trouver
sur lInternet, ou prendre connaissance des versions commerciales, annon-
ces dans votre magazine favori ou dans votre moteur de recherche web.
Ayez conscience que tous les grands services de serveur fonctionnent sur
Linux : gestionnaires de base de donnes, gestion de rseaux, pare-feu,
services web, services de-mail, et ainsi de suite.
Q. Je nai jamais install de systme dexploitation, est-ce difficile ?
R. Tout est difficile en labsence des connaissances ou des outils requis.
Linux est convivial, autant que peut ltre une installation, mais il
sefforce dtre le moins dirigiste possible. Mettez le CD-ROM dans votre
machine et allumez-la. Les machines les plus rcentes dmarreront
A :> FDISK /MBR
copyright ditions Eyrolles
Le systme dexploitation Linux
CHAPITRE I
33
linstallation automatiquement, tandis que dautres doivent tre dmarres
manuellement. Mme dans ce cas, ce nest pas trop difficile. Voir le chapi-
tre 2, qui couvre linstallation de Red Hat 6.1 en dtail.
Q. Est-ce que je dois my connatre en UNIX pour utiliser Linux ?
R. Oui, jen ai bien peur. Bien que le monde graphique des fentres soit
agrable, ce nest quune des mthodes de gestion. Et cest la gestion qui
fait la diffrence entre les versions de systmes dexploitation. Il faut avoir
une ide claire de la manire dont UNIX/Linux fonctionnent sur des
tches prcises avant de se colleter un problme. Une fois que vous
connaissez les bases, vous pouvez vous mettre en chasse des problmes
les plus coriaces.
copyright ditions Eyrolles
II
2
Installation
de base de
Red Hat Linux
Dans ce chapitre
Introduction
Prliminaires
Installer Red Hat
Installation personnalise
Autres versions de Linux
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
36
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.
Machine physique spare
Evidemment, il est hautement recommand de ddier un serveur spar la
gestion de la base de donnes. Cela procure un certain confort en matire de
ractivit, de scurit et de fiabilit. Les applications les plus courantes
fondes sur les bases de donnes sont de conception complexe et consomment
beaucoup de ressources, tant processeurs que disques. Il ne faudrait tout de
mme pas que votre serveur de base de donnes se retrouve en concurrence,
pour les cycles CPU ou les accs disque, avec dautres services (web, ftp,
fichier ou impression, par exemple) ! Cela rduirait grandement la perfor-
mance de tous les services en gnral.
En traitant part la gestion des bases de donnes, vous protgez aussi mieux
le systme des intrusions, et maintenez les donnes, ainsi que leur sauve-
garde, totalement spares, labri des autres processus. Les principaux types
dattaques contre le systme trouvent la plupart du temps une voie dans les
services standard du rseau. Si vous maintenez ces services sur une autre
machine, les intrus ne seront pas en mesure de sattaquer votre serveur de
base de donnes. Mme les mots de passe de ladministrateur seront diffrents
entre ces systmes pour plus de scurit contre les pirates qui feraient irrup-
tion sur dautres serveurs de votre rseau.
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
37
Choisir une distribution Linux
Il faut ensuite prendre en considration la version de distribution de Linux. Il
y a beaucoup de choix ; toutes supportent, sans doute, une base de donnes
certifie sur Linux, jusqu un certain point ; mais les versions commerciales
les plus courantes auront probablement dj un service de support ou des
accords avec lditeur du logiciel de base de donnes. Red Hat a un support
pour beaucoup de logiciels de base de donnes, tel Oracle, et dautres produits
issus de constructeurs comme Dell, Compaq ou IBM, pour nen citer que
quelques-uns.
Dcisions prliminaires linstallation
Un projet doit tre conu tape par tape. Dans cette section, nous abordons
certains sujets de base quil faut prvoir de traiter avant de commencer
linstallation. Cela comprend les niveaux de performance souhaits, mainte-
nant et lavenir, et influe sur les dcisions en matire de matriel et de logi-
ciel, avant toute installation.
La partie la plus critique de lapproche du serveur concerne les divers aspects
matriels, esquisss dans les prochaines sections. Cela reste vrai quel que soit
le systme dexploitation choisi.
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
38
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.
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
39
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.
Cot des systmes RAID
Le niveau RAID 1 est le plus cher. Dans ce cas, si lon utilise deux disques de
la mme taille, on ne dispose que de lespace de lun deux pour le systme ;
lautre est une duplication, et lon utilise 50 % des deux disques. Si lon
utilise trois disques pour la mise en miroir, le taux effectif est de 33 % car un
seul disque est rellement disponible en substance, les deux autres ne sont
que la duplication du premier.
Avec le niveau RAID 0, on utilise 100 % des disques et lon obtient habituel-
lement une amlioration de la vitesse de lecture et dcriture : tout lespace
disque est disponible, en revanche il ny a aucune restauration. Si lun des
disques subit une panne, ils sont tous perdus : il faut alors tous les reconstruire
et restaurer toutes les donnes de tous les disques. Cela nest pas recommand
pour les donnes critiques, mais peut tre utilis pour des donnes provisoires
ou des rsultats intermdiaires. Il existe une alternative acceptable : un
ensemble de services RAID matriels qui gre, la base, les disques multi-
ples. On peut alors utiliser le logiciel RAID 0 pour les combiner en un grand
disque unique, ce qui facilite les accs serveur.
Le niveau RAID 5 se sert en ralit de lespace de lun des disques (en effec-
tuant une permutation de tous les disques du groupe RAID) pour produire un
bloc de parit, utilis pour regnrer les donnes manquantes aprs la perte
dun disque entier. Comme il ne peut y avoir quun seul disque en panne un
instant donn, il faut sefforcer de le rcuprer avant quun autre ne tombe en
panne ; mais, bien entendu, il y a des exceptions. Le minimum est de trois
disques, le maximum de trente-deux, selon le systme dexploitation utilis.
Avec trois disques, on nutilise que deux disques sur trois, et lon a un taux
dutilisation de 67 % ; avec quatre disques, trois sur quatre pour 75 % ; quatre
sur cinq pour 80 %, et ainsi de suite. La meilleure utilisation est de 31 sur 32
pour un taux dutilisation denviron 96 % avec rcupration automatique.
Cest la solution recommande pour les donnes particulirement critiques.
RAID matriel ou logiciel
Linux fonctionne pour les niveaux RAID 1 et 5, en version logicielle. Cest
une excellente option, si lon ne retient pas la solution matrielle. Elle est
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
40
implmente avec un minimum de deux ou trois disques, respectivement, et
avec le service du dmon mdrecoverd. On a le choix entre des disques entiers,
ou simplement des partitions de mme taille, pour implmenter les ensembles
RAID. Linstallation est clairement dcrite dans la documentation HOWTO-
RAID.
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.
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
41
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.
Remarque. Les services dassistance varient selon les versions de Linux :
Si vous avez achet les produits Deluxe ou Professional officiels, Red Hat offre 180
jours de support ftp libre, 90 jours de support sur le web, et 30 jours de support tl-
phonique linstallation.
Debian GNU/Linux fournit un accs non limit ses sites de support ftp et web.
Les acheteurs de TurboLinux obtiennent 60 jours de support technique.
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.
Installer Red Hat
Linux Red Hat est la distribution la plus complte ; elle est unique. Cepen-
dant, quelques autres distributions importantes en drivent, des degrs
divers. Red Hat a t lune des premires versions commerciales de la distri-
bution Linux offrir de lassistance et ajouter des caractristiques
conviviales : cest pourquoi nous le prsentons ici.
Un parcours dinstallation rapide
Insrer le CD-ROM marqu #1 dans un lecteur de CD-ROM bootable et
redmarrer la machine. Le systme va lancer sa squence normale de dmar-
rage qui comprend lidentification des priphriques matriels, le test de la
mmoire, et la vrification de base des systmes. ce point, la disquette, ou
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
42
le CD-ROM, commencera le processus de boot. Si le systme ne dtecte pas
le CD-ROM et dmarre autrement, il faut modifier les paramtres du BIOS
pour ajouter le CD-ROM au dbut de la squence de boot ; sur certaines
machines anciennes, il faudra utiliser une disquette de boot pour dmarrer le
processus.
Aprs que les fichiers initiaux ont t chargs en mmoire, saffiche un cran
daccueil de Red Hat contenant quatre options (non figures ici). Appuyer sur
la touche ENTER pour continuer linstallation. On peut aussi taper TEXT
pour slectionner une installation en mode texte, mais elle nest pas traite ici
spcifiquement ; bien que les questions poses soient identiques, linterface
est diffrente. La figure 2.1 montre la sortie type du dmarrage initial dun
noyau Linux.
Linstallation teste la compatibilit du matriel avec X Window, puis dmarre
une installation en mode graphique interactif de type X. Linstallation graphi-
que affiche dabord le nom et le logo de Red Hat avant de se poursuivre.
La premire tape de linstallation est la slection de la langue (figure 2.2).
Remarquer que Linux peut tre install dans de nombreuses langues. Notons
aussi que le CD-ROM fourni aux tats-Unis ne contient pas dautre langue
Figure 21
Dmarrage typique de Linux (aprs lcran de dmarrage prliminaire)
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
43
dinstallation ; tlcharger les fichiers sur le site web/ftp de Red Hat, ou
commander la version CD-ROM spcifique de la langue. Lcran suivant
combine en un seul cran ce qui apparat en trois crans spars en mode
texte, et permet de choisir les options relatives au clavier et la souris.
Remarquez que Linux a dj dtect le matriel de base de votre systme
(figure 2.3) ; ce sera le cas dans beaucoup dcrans.
La figure 2.4 prsente les options de slection de la souris. Linux a une prf-
rence pour une souris trois boutons. Cependant, vous avez probablement
une souris deux boutons : changez la slection pour une souris deux
boutons du type adapt, soit le type bus (connue aussi comme PS/2 celle
qui a un connecteur aussi petit quun stylo ), soit le type srie (connecteur
neuf broches).
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 22
Choix de la langue
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
44
Choisir un type dinstallation
Le type dinstallation (figure 2.5) est trs important. Il vous est demand de
prendre une grande dcision sur linstallation de votre Linux. Avec Red Hat,
vous avez trois options de base : serveur (Server), personnalise (Custom), et
deux versions de la station de travail avec, au choix, le bureau Gnome ou le
bureau KDE. Une quatrime option, mise jour (Upgrade), nest choisir
que si vous avez dj une prcdente version de la mme distribution Linux
sur la machine. On ne peut mettre jour quune version prcdente du mme
Linux, Red Hat dans notre cas.
Installation dune station de travail
Loption station de travail est suffisante dans le cas dun client ou dune
machine de test, mais elle nest pas recommande pour un serveur rel. Elle
installe un Linux de base avec une interface X Window, soit Gnome soit
KDE. Elle est prdfinie pour rpartir lespace disque disponible en trois
partitions et tout installer dans la plus grande des trois. Si lon envisage
dajouter des disques par la suite, on peut, dun point de vue technique, faire
ce choix. Si lon a beaucoup despace disque, on peut ainsi crer une machine
Figure 23
Slection de clavier
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
45
de dveloppement et installer la base de donnes, dans cette grande partition
ou sur un autre disque, au choix. Par dfaut, sil y avait un autre systme
dexploitation sur cette machine, il sera automatiquement conserv et propos
dans les options de lamorce (ce nest pas affich, car cest vous de savoir
quil est l). Ce nest pas le type dinstallation recommand pour un serveur.
Installation dun serveur
Linstallation dun serveur est un autre choix possible, car cela fait un bien
meilleur travail de partitionnement du disque, dans une conception plus orien-
te gestion, ce qui est souhaitable. Elle installe aussi un ensemble de logiciels
serveur, mais ninstalle pas le systme X Window par dfaut. Cette installa-
tion supprime encore toutes les partitions du systme dexploitation prc-
dent, quel que soit leur type, cre six partitions, de taille minime pour la
plupart, puis installe tous les paquetages serveur et quelques paquetages utili-
sateur. Cest la meilleure manire de dmarrer un serveur Linux, qui offre
tous les services rseau prts fonctionner ; cest aussi la plus facile sur une
nouvelle machine. Assurez-vous que vous disposez de suffisamment despace
pour votre application de base de donnes et ses donnes.
Figure 24
Slection de la souris : deux boutons ; les slections automatiques mulent une souris trois
boutons
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
46
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.
Figure 25
Type dinstallation
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
47
Installation personnalise, ou manuelle
La suite suppose que lon a opt pour la procdure dinstallation personnali-
se et propose, chacune des tapes de base, conseils et suggestions utiles.
Cest la mthode dinstallation recommande pour un serveur de base de
donnes, de sorte que lon peut choisir les services additionnels dont on a
besoin. Il est hautement recommand de ninclure aucun autre service sur le
serveur de base de donnes. Bien sr, si lon ne dispose daucun autre serveur
pour les installer, ou bien si cela ne grve pas trop un serveur existant, on
pourra quand mme les ajouter pendant ce processus dinstallation, de
manire facile et rapide.
Crer les partitions de son choix
Ltape suivante donne un graphique des partitions du disque et propose un
outil dassignation appel Disk Druid. Malheureusement, cet outil nest
disponible que pendant linstallation. Quand le systme fonctionne, on peut
utiliser lutilitaire fdisk pour effectuer des modifications de partition, mais
non laffectation dune partition un rpertoire.
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.
Partitions dchange multiples
Lespace dchange est lendroit o le systme place certains ensembles de
processus rsidents en mmoire, quand la RAM est sature. Il est ncessaire
au bon fonctionnement du systme, mais on prfre que le systme ne lutilise
tout simplement pas, car il est dune lenteur incroyable, compar la RAM. Il
reste utile dans les situations durgence, quand la RAM est dborde, ou pour
un usage occasionnel. Une utilisation continue signifie clairement que vous
navez pas assez de RAM. Augmentez-la immdiatement si vous dtectez un
usage intensif de lespace dchange. Toute activit disque tant amliore
par la rpartition des requtes sur des disques ou contrleurs multiples,
lespace dchange nchappe pas la rgle : rpartissez-le pour amliorer les
performances et rpartissez galement la charge sur tous les disques.
Supprimer une partition
Vous aurez le faire si vous utilisez une machine qui avait dj un systme
dexploitation install. Si vous voulez dmarrer neuf - cest--dire que vous
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
48
navez pas besoin de garder ce systme dexploittation supprimez toutes
les partitions vue. Pour conserver lancien systme en ne faisant quajouter
Linux dans lespace libre, ou rutiliser une partition libre, supprimez dabord
lancienne partition.
On peut supprimer toute partition existante, sur nimporte quel disque, avec
Disk Druid. Choisir la partition dans la bote suprieure, puis cliquer sur
Delete et confirmer lopration.
Modifier une partition
On peut changer la valeur dun paramtre de la partition par la suite, laide
de loption Edit.
Ajouter une partition
Cliquer sur le bouton Add pour ajouter une nouvelle partition. Il faudra le
faire pour chaque partition initialiser. Sil y a plusieurs disques physiques,
choisir dabord le disque spcifique dans la bote infrieure.
Solutions disque et mmoire
Il est techniquement possible dutiliser des lecteurs formats en FAT32 ou
en FAT16 avec Linux, mais ce nest pas un choix heureux pour un serveur
de base de donnes. Le type de systme de fichier optimal est le type Linux
natif, valable pour tous les lecteurs de donnes. Il faut aussi allouer de
lespace disque pour les fichiers dchange. Lespace dchange peut avoir
une taille maximale de 4 Go, dploye sur huit partitions, dont aucune ne
peut excder la taille de 2 Go. Il est recommand dallouer deux trois fois
la taille de la RAM lespace dchange : une bonne rgle empirique tant
que lon natteint pas les giga-octets de RAM. Il est peu probable que ce
volume dchanges vous concerne, voire, un moindre niveau, une capa-
cit de 2 Go de RAM. Il y a des exceptions : par exemple, si vous avez
vraiment de gros processus inscables, configurs comme de grands
fichiers de base de donnes rsidents, il vous faut un grand espace
dchange. Si votre systme est conu pour les petites transactions orien-
tes processus, vous pouvez avoir moins despace dchange. Ne pas
oublier que, si lon a de grands processus en mmoire, le disque est cono-
mique, et lutiliser pour les changes. ce point, surveiller lactivit de la
RAM, en linterrogeant deux ou trois reprises, pour faire lanalyse du
systme.
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
49
Point de montage dune partition
Quand on clique sur Add, un cran de mise jour des paramtres apparat. Il y
a quatre paramtres saisir. Le premier paramtre est le point de montage.
la diffrence des systmes fonds sur MS-DOS, qui dfinissent une lettre de
lecteur pour chaque partition (maintenant, ce nest plus vrai dans Microsoft
Windows 2000), dans Linux et UNIX, il ny a quun systme de fichier, qui se
sert des noms de rpertoire pour faire un rapprochement et les connecter
ensemble. Ces rpertoires sont appels points de montage. UNIX avait quel-
ques points de montage historiques, que Linux a conservs. On peut soit
entrer un nom de rpertoire de son choix, soit prendre lun des noms de rper-
toire prconfigurs dans la bote liste. La figure 2.6 montre les options de
point de montage prconfigures. Ce nest pas une limite, mais un point de
dpart.
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 26
Options de point de montage dans Disk Druid
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
50
Loption de taille se prsente sous la forme dun bouton Agrandir pour
remplir le disque : cette option autorise une partition utiliser tout lespace
disque disponible ou partager, en quantits gales sur le mme disque physi-
que, tout lespace disque restant, avec les autres partitions. Cest une option
importante sur la dernire partition cre, ou des partitions multiples, quand il
sagit de partager tout lespace disque restant. Elle se sert toujours de tout
lespace disque restant. On peut donner une valeur quelconque dans le champ
du paramtre de taille. Disk Druid traite la taille relle quand il effectue rel-
lement le partage, aprs configuration de toutes les partitions (tout se fait en
mmoire : rien ne sera rellement pris en compte tant que vous naurez pas
valid cet cran). La figure 2.7 montre le champ de saisie de la taille, ainsi
que le bouton Agrandir pour remplir le disque.
Important. X Window se sert de boutons colors la place de la marque ! de
Windows. Si le bouton apparat noir (ou comme enfonc), cela signifie on, ou slec-
tionn. La figure 2.7 illustre, pour le bouton Agrandir pour remplir le disque, la posi-
tion off, de couleur claire.
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
Figure 27
Disk Druid Options de slection du type de partition
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
51
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.
Slection dun lecteur physique
Cette option nest utile que si vous avez le choix entre plusieurs lecteurs
physiques. Si vous navez quun seul lecteur, il est appel hda (hard disk a).
Ce sera le nom du premier lecteur physique sur le premier contrleur de type
IDE. Le lecteur suivant sera hdb sur le mme contrleur IDE. Sur le second
contrleur IDE, le premier lecteur sera hdc et le second hdd. Sur chacun de
ces lecteurs, les partitions sont simplement numrotes de 1 16. partir
dici, la partition que le monde DOS dsigne par C:, soit la premire partition,
sappelle hda1 dans Linux. Les partitions de type primaire suivantes seront
hda2, puis hda3 et hda4. Cependant, en raison dune bizarrerie de la concep-
tion dorigine du schma de partition, il en est une, dite de type primaire
tendu, qui peut tre hda2, hda3 ou hda4, selon le nombre de partitions
primaires qui existent dj. Dans cette partition spciale de type primaire
tendu, on peut crer jusqu douze partitions additionnelles, nommes de
hda5 hda16. Ainsi, techniquement, on peut avoir jusqu seize partitions sur
un mme lecteur physique de type IDE.
Pour un disque de type SCSI, le mnmonique du lecteur est sda ; les parti-
tions sont nommes de sda1 sda15 (Linux ne supporte que onze partitions
de type tendu , dans ce cas).
La figure 2.8 montre la table des partitions, compltes par leurs points de
montage respectifs, telle quelle apparatra quand vous aurez fini de crer les
diverses partitions et de leur assigner tout lespace disque.
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
52
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.
Activation au dmarrage, ou boot
Le second bouton doption de configuration dun adaptateur rseau concerne
la possibilit de lactiver lors du boot. Si cest le seul adaptateur rseau, il sera
slectionn automatiquement. Sil sagit dune interface oriente appel
entrant (dial-in) ou sortant (dial-out), on peut dcider de ne pas lactiver au
dmarrage, et den faire un service activ la demande ; mais cela sort du
cadre de linstallation que nous prsentons.
Figure 28
Exemple de table de partition renseigne
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
53
Ne pas utiliser DHCP
Le reste de lcran de configuration du rseau sert configurer manuellement
les options TCP/IP pour un hte. Au minimum, il faut donner ladresse IP et
le masque de rseau associ (netmask). Linterface essaie de deviner la valeur
du masque de rseau si lon utilise la touche TAB pour aller au champ suivant
(ce calcul prend un instant trs bref, ne soyez donc pas impatient). Si les
valeurs estimes sont correctes, passer au champ suivant ; sinon, les corriger.
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 29
Configuration du rseau
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
54
La figure 2.9 montre la configuration dune carte adaptateur rseau o les
champs sont renseigns manuellement : adresse IP, hostname, gateway et
DNS (Domain Name Service, souvent raccourci en service de nom).
Slection du fuseau horaire
Il y a beaucoup de choses originales dans Linux, mais celle-ci est lune des
plus agrables. Tous les petits points jaunes que vous voyez reprsentent des
noms de ville, dont certains sont trs connus. Non content de cela, si lon
dplace le curseur sur la carte, une petite flche verte apparat, comme on le
voit la figure 2.10, qui indique le lieu-dit le plus proche de tel endroit, dans
un fuseau horaire connu, tel que Gambier Islands dans le Pacifique sud. Si
rien ne se passe, prenez une petite leon de gographie avant de partir.
Configuration du compte root
Toutes les distributions de Linux ont un compte spcial, appel gnralement
root, qui est quelquefois considr comme un super-utilisateur. Le compte
root peut faire nimporte quoi sur un systme Linux ou UNIX, au moins en
Figure 210
Configuration du fuseau horaire du systme
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
55
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
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 211
Configurer root et les comptes supplmentaires (au moins un)
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
56
fichiers de mots de passe Linux et UNIX. Normalement, Linux et UNIX
conservent les informations dinstallation des comptes utilisateurs dans un
fichier, qui est lisible par tous les utilisateurs. Avec loption de mots de passe
masqus, certains des aspects les plus importants de cette information sont
rangs dans un fichier qui nest plus lisible par tout le monde ; il sappelle
habituellement /etc/shadow, mais peut avoir un tout autre nom.
Utiliser NIS ou NIS+
Le login de domaine centralis standard sous UNIX et Linux est fourni par un
service appel actuellement systme dinformation rseau (NIS, Network
Information System), ou une version plus courante de Sun Microsystems Inc.
appele NIS-PLUS (NIS+). Sun est le seul fournisseur de serveurs NIS+.
Linux a un client compatible.
NIS propose un ensemble centralis de fichiers de gestion des utilisateurs
(similaire au PDC de Microsoft Windows NT), dupliqu sur des serveurs NIS
esclaves (les BDC dans NT) qui valident le login des clients NIS (le NT
LOGON de Netlogon). La figure 2.12 montre les options de NIS, sans aucune
information (par dfaut). Il faut connatre le nom du domaine NIS, puis soit
utiliser un message pour trouver le serveur NIS esclave le plus proche, soit
entrer ladresse IP si on la connat.
Figure 212
Configuration de lauthentification
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
57
Slection des paquetages
Il existe beaucoup de paquetages. Un paquetage reprsente tous les fichiers
associs un produit, ou un composant majeur du produit. Par exemple, le
paquetage du serveur web Apache contient tous les fichiers de programmes et
de support de cette application. Ils sont au format RPM (Red Hat Package
Manager), le gestionnaire de paquetage de Red Hat. Dvelopp par Red Hat,
il est disponible dans toutes les versions de Linux.
Les paquetages de base
Les paquetages de base, qui constituent le systme dexploitation Linux, sont
prslectionns et ne sont pas modifiables, ds le premier cran dinstallation.
On peut enlever de la slection les paquetages de la liste qui ne sont pas
ncessaires, ou ajouter tous ceux que lon veut inclure (voir figure 2.13). Vous
navez pas ncessairement besoin dautres paquetages si vous envisagez
dinstaller le serveur de base de donnes ; mais ce serait une bonne ide de
lire la documentation dinstallation de la base de donnes, pour voir si
certains paquetages sont ncessaires, par exemple les services de dveloppe-
ment (C, C++, bibliothques de dveloppement, etc.), auxquels votre systme
de base de donnes risque de faire appel.
Figure 213
Configuration des paquetages
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
58
Services optionnels installer
Il existe beaucoup de services optionnels : utilisateur, rseau et utilitaires. Le
tableau 2.1 contient les noms des paquetages qui apparaissent dans lcran de
configuration des paquetages. Leur contenu est comment laide dun indi-
cateur qui prcise sil est recommand (Oui), utile (m ou Mn), ou non recom-
mand (n ou N) pour un serveur de base de donnes oprationnel. Pour le cas
Mn, des prcisions sont donnes au paragraphe suivant.
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
Applications Client/Utilisateur Description
Printer Support m Support des pilotes dimprimante locale
X Window System m Systme de base, ncessite Gnome ou KDE
Gnome n Bureau X, ncessite le systme de base
KDS n Bureau X, ncessite le systme de base
Mail/WWW/News Tools n Navigateurs
DOS/Windows Connectivity n mulateurs et outils
Graphics Manipulation n Capture dcran, manipulation, etc.
Games N De nombreux jeux
Multimedia support N Son, vido, etc.
Networked Workstation Oui Station de travail en rseau, outils rseau client
Dialup Workstation M1 Station de travail de dialup Outils client
Network Server Services Services de serveur rseau
News Server N Serveur de nouvelles NNTPD
NFS Server N Partage de fichiers UNIX et dimpression
SMB (Samba) Server N Partage de fichiers Win/NT et dimpression
IPX/Netware Connectivity N Services de fichiers Netware et dimpression
FTP Anonymous Server N Protocole de transfert de fichier (pour le web)
Web Server M2 Serveur web Apache
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
59
Les fonctionnalits optionnelles
Voici quelques-uns des programmes et des caractristiques optionnelles
disponibles prendre en considration lors de linstallation :
M1. Dialup en rseau peut tre utile pour le diagnostic et la maintenance
des appels entrants distance.
M2. Avec le serveur web, vous pouvez grer votre systme laide dune
interface web, mais cela est de votre ressort ou de celui de lapplication
que vous installez.
M3. Si vous ne voulez pas acheter une application de serveur de base de
donnes compatible SQL, utilisez Postgres, le seul systme gratuit.
M4. Vous serez peut-tre amen recompiler certains aspects de votre
nouvelle application de serveur de base de donnes et aurez besoin des
applications de dveloppement ; vrifiez votre documentation.
M5. Il se peut que le noyau par dfaut de la plupart des installations Linux
que vous installez pour la premire fois ne soit pas optimis pour votre
matriel.
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
DNS Name Server N BIND 8 (pour Internet/intranet)
PostgreSQL Server M3 Serveur de base de donnes ** (gratuit !)
Development Packages Paquetages de dveloppement
Network Management Station Oui Station de gestion de rseau : outils et SNMP
TeX Document Formatting N Formatage de document TeX : traitement de
texte, publication
Emacs N Le meilleur environnement ddition
Development M4 Compilateurs et bibliothques
Kernel Development M5 Pour reconstruire le noyau
Extra Documentation Oui HOWTO, documents complmentaires, aide en
ligne
Utilities Oui Dautres fonctions du systme
Tableau 21
Paquetages de Red Hat dont linstallation est optionnelle
Applications Client/Utilisateur Description
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
60
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.
Option Tout installer
Il est encore possible de tout installer. Si vous avez de lespace disque en
abondance (environ 1,5 Go sous la partition /usr), prenez cette option plutt
que de dcider au cas par cas ce qui est ncessaire. Un mot au passage,
cependant ; certains des paquetages installs tenteront de lancer des dmons
au dmarrage du systme et installeront des fichiers susceptibles de poser des
problmes de scurit. Les utilisateurs, et mme les administrateurs, doivent
se familiariser eux-mmes avec les paquetages et contrler tout ce quils font.
Par exemple, autoriser le montage NFS sur un serveur expos lInternet
ouvre une brche significative dans la scurit du systme. Il y a une certaine
sagesse ninstaller que ce dont on a besoin sur un systme critique.
Installation de X Window (optionnelle)
Cest probablement la partie de linstallation la plus difficile comprendre
pour un utilisateur moyen de PC. Le systme X Window est en ralit un
programme de niveau utilisateur, et non de niveau noyau, et peut accder
directement au matriel de la carte vido. Dans un environnement Windows,
il y a un pilote pour le contrleur vido. De mme, on trouve un fichier de
configuration du pilote, en mode texte dans ce cas, qui pointe vers le pilote
vido et initialise quelques options de configuration, notamment les options
de dfinition.
Vous navez pas besoin davoir X Window pour excuter Linux, de plus il
consomme beaucoup de ressources CPU. Sur un serveur rel ddi, vous
ninstallerez pas X Window. Comme la figure 2.14, choisissez loption Skip
X configuration, sauf si vous avez inclus le paquetage de X Window et au
moins un bureau, Gnome ou KDE.
La suite donne un aperu rapide de la manire dinstaller X Window sur un
systme de base. Le systme sera probablement capable de dtecter la carte
vido, sauf sil sagit dun matriel de technologie vraiment rcente, mais, en
gnral, la plupart des puces vido connues seront dcouvertes automatique-
ment, comme dans Windows.
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
61
Figure 214
Optionnel configuration de X Window, partie 1
Figure 215
Optionnel configuration de X Window, partie 2
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
62
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.
Installation relle physique
ce stade, vous avez fourni toutes les informations ncessaires linstalla-
tion et vous tes maintenant prt dmarrer le formatage rel du systme de
fichiers et linstallation des paquetages slectionns. Lcran suivant affiche
le logo Red Hat et propose soit de revenir en arrire et de faire des modifica-
tions (ce nest pas recommand : il vaut mieux redmarrer et recommencer),
soit de cliquer sur Next pour continuer.
La figure 2.16 montre le formatage du systme de fichier (dans le format e2fs
Linux, et non en FAT DOS ou NTFS) tel quil apparat sur lcran dinstalla-
tion, avant que linstallation relle ne dmarre. La figure 2.17 est un cran
final qui attend que lon clique sur loption Next, avant de commencer
linstallation relle des fichiers.
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
63
Figure 216
Formatage des partitions du systme de fichiers avant linstallation
Figure 217
cran dinstallation des paquetages
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
64
Installation des paquetages
La figure 2.17 montre une installation 90 % au cinquime paquetage.
Remarquez que le temps dinstallation estim est suprieur 289 heures !
Cependant, ds que les premiers paquetages sont installs, le programme affi-
che un temps dinstallation de plus en plus prcis. Une installation dure en
principe de cinq vingt minutes sur un matriel de type courant, et dpend de
la vitesse dentre/sortie du systme disque, ainsi que du nombre de paqueta-
ges installer.
Installer Debian en jouant Tetris
Si vous tes en train dinstaller une distribution Debian, vous pourrez jouer
Tetris tandis que les paquetages sinstallent. Une dlicate attention, spciale-
ment sur les quipements les plus anciens, sur lesquels linstallation des
paquetages dure un certain temps.
Linux Loader (LILO) et disquette de dmarrage
Il est conseill de se servir de Linux Loader et dune disquette de boot une
seule suffira. On dispose ainsi dune amorce alternative aux fichiers systme,
qui passe outre la partition active courante. On peut crer cette disquette de
boot tout moment laide de lutilitaire mkbootdisk de Linux Red Hat (le
mme ou son quivalent dans dautres versions ; voir la documentation). La
figure 2.18 montre lcran propos : mettez une disquette dans le lecteur
(recommand), ou bien annulez lopration.
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.
Disque de boot durgence
Il est aussi vivement conseill de crer une disquette de boot durgence. Cest
une solution de remplacement, valable uniquement pour le bloc de boot, un
moyen de contournement en cas de corruption de la partition de boot (si le
systme perd son secteur de boot pour une raison quelconque, insrez cette
disquette et redmarrez le systme). Cette disquette de boot sert encore la
restauration durgence, si elle est accompagne dune seconde, cre avec le
fichier RESCUE.IMG, comme nous lavons expliqu auparavant.
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
65
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.
Configurer le serveur pour une base de donnes
Trouver un bon administrateur et lui demander de le faire. Sinon continuer
linstallation et organiser lespace disque selon les besoins : volumes, rparti-
tion, utilisation du RAID, sauvegardes frquentes, etc. La suite de cet ouvrage
donne plus de dtails sur la manire dinitialiser Linux en tant que serveur de
base de donnes. Pour lessentiel, il faudra configurer les interfaces rseau,
crer ou restaurer tous les fichiers de donnes ncessaires, tester laccs de
tous les clients travers le rseau et initier le schma de sauvegarde.
Figure 218
Configuration de LILO et cration dune disquette de boot ( tenter !)
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
66
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.
Autres versions de Linux
La section prcdente sest concentre sur une installation de Red Hat, mais
on peut videmment utiliser lune ou lautre des distributions Linux, qui
seront similaires en termes de performance, de caractristiques et de stabilit.
La seule diffrence se situe dans linstallation initiale. Il peut y avoir ensuite
de grandes diffrences dans les utilitaires de gestion du systme, qui resteront
nanmoins cantonnes leur prsentation. La gestion de Linux ne change en
aucune manire au niveau de base. On peut toujours ajouter des utilisateurs,
des configurations de rseau, des configurations de systme, et des services
de la mme manire ce niveau, bien que les interfaces soient diffrentes.
Les autres versions de Linux ont t exposes au chapitre 1. Une exception
notable, la version Stampede Linux, que lon installe via une connexion
rseau et qui est optimise pour chaque matriel. Linstallation exige une
connexion rseau sur Internet et un type sysadmin UNIX qui peut dchiffrer
les requtes dinstallation typiques dUNIX. Ce style dinstallation nest pas
dun maniement facile ; elle tlcharge le code source puis le compile avec les
options spcifiques du matriel, de sorte que le systme fonctionne de
manire optimale. Pour plus dinformations, voir www.stampede.org.
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
67
Exemples de scnarios de base de donnes
Voici quelques exemples de scnarios rels qui implmentent des bases de
donnes sur Linux, avec les ressources matrielles conseilles.
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
68
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.
copyright ditions Eyrolles
Installation de base de Red Hat Linux
CHAPITRE II
69
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
70
Q. Jai entendu dire que linstallation est vraiment pouvantable !
Est-ce vrai ?
R. Si vous tes un utilisateur moyen de PC qui prend une machine toute
configure pour fonctionner, oui, vous aurez un peu la tte dans le sac.
Mais avec le foisonnement actuel dinstallations graphiques pour Linux,
vous devriez vous en tirer et effectuer une installation de base sans trop de
difficult.
copyright ditions Eyrolles
III
3
Installer et utiliser
Oracle
sur Linux
Dans ce chapitre
Concepts
Installer Oracle8
Installer Oracle8i
Utiliser Oracle8/8i
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
72
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.
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
73
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
74
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.
Zone globale systme
Les structures de mmoire dune instance Oracle sont ranges dans une
rgion de la mmoire appele la zone globale systme (SGA, System Global
Area). La SGA est alloue dans la mmoire virtuelle, o rside le processus
du serveur Oracle. Elle comprend plusieurs structures de mmoire dont le
pool partag, la mmoire cache de la base de donnes et le cache de journali-
sation. De nombreux processus partagent la SGA.
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 mmoire de la base de donnes
Quand une requte SQL est soumise par un utilisateur, le processus serveur
cherche dans la mmoire cache de la base de donnes les blocs de donnes
ncessaires pour rpondre la demande. Sils ne sont pas trouvs dans le
cache, le processus serveur doit lire les blocs partir dun priphrique physi-
que et placer une copie des donnes dans la mmoire cache. Les requtes
suivantes qui porteront sur les mme blocs seront traites de la mme manire
et ne ncessiteront pas de nouvelles lectures physiques.
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
75
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.
Zone globale des programmes
La zone globale des programmes (PGA, Program Global Area) est une rgion
de mmoire qui contient les donnes dun seul processus serveur. Quand on
lutilise dans une configuration de serveur ddie, la PGA contient une zone
de tri, des informations sur les sessions, ltat des curseurs et une zone de pile.
La PGA est alloue un processus quand il dmarre et dsalloue quand le
processus est termin.
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
76
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.
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
77
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
78
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
Caractristiques Valeur minimale
Espace disque 400 Mo
Mmoire 32 Mo RAM
Espace dchange 3 fois la valeur de la RAM
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
79
Si vous installez Oracle8i (voir tableau 3.2), il faut en ralit au moins
128 Mo de RAM pour prendre en charge lenvironnement Run-Time Java, et
un minimum de 198 Mo pour un petit environnement de production. Il faudra
1000 Mo despace disque pour recevoir et faire fonctionner le logiciel et les
fichiers de la base de donnes.
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 :
1. Configurer le systme de fichiers.
2. Configurer lespace dchange.
3. Initialiser les paramtres du noyau.
Systme dexploitation Noyau Linux 2.0.34 ou suprieur
Bibliothques systme Bibliothque GNU C version 2.0.7
Tableau 32
Caractristiques minimales pour utiliser Oracle8i
Caractristiques Valeur minimale
Espace disque 693 Mo
Mmoire 128 Mo RAM
Espace dchange 3 fois la valeur de RAM
Systme dexploitation Noyau Linux 2.2
Bibliothques systme Bibliothque GNU C version 2.1
Tableau 31
Caractristiques minimales pour utiliser Oracle8
Caractristiques Valeur minimale
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
80
4. Crer les comptes dutilisateur et les groupes.
5. Initialiser lenvironnement Linux.
6. Installer les paquetages Linux ncessaires.
7. Installer Java.
8. Obtenir les logiciels Oracle et les correctifs.
Configurer le systme de fichiers
Les points de montage sont les premiers lments prendre en considration.
Lusage du disque est souvent plus facile dterminer en phase de conception
et de construction dun serveur. Le minimum, pour un systme de production,
sera de six lecteurs ; pour un systme de dveloppement, de quatre lecteurs.
Des disques peuvent toujours tre ajouts si ncessaire. Le point le plus
important concerne la scurit des donnes : les fichiers de donnes et les
journaux rsideront sur des priphriques spars. Si lun des lecteurs conte-
nant des donnes est perdu, les journaux peuvent tre utiliss pour restaurer
les donnes. Gnralement, il est prfrable de disposer dun grand nombre
de lecteurs de capacit relativement petite que dun nombre rduit de lecteurs
de grande capacit. Si lon a le choix entre six lecteurs de 2 Go et deux
lecteurs de 9 Go, choisir la configuration six disques ; augmenter le nombre
de lecteurs apporte de meilleurs performances et une meilleur protection des
donnes. Un autre point important considrer est la contention des lecteurs
entre les diffrentes applications. Un lecteur de 9 Go rparti en deux parti-
tions de 4,5 Go, partages entre deux applications diffrentes, sera difficile
optimiser. Quand cest possible, il vaut mieux ddier les lecteurs Oracle.
Oracle recommande une organisation que lon appelle une architecture flexi-
ble optimale, ou OFA (Optimal Flexible Architecture). OFA est une mthode
particulire de disposition des systmes de fichiers, qui exige un minimum de
quatre points de montage situs au mme niveau de la structure du rpertoire.
Cest particulirement utile si lon excute des instances multiples de bases de
donnes sur le mme serveur. La documentation Oracle se reporte souvent
lOFA, aussi est-elle trs utile si lon se sert de cette architecture.
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.
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
81
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.
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.
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.
Configurer lespace dchange
La taille de lespace dchange sera de trois fois la taille de la RAM. Red Hat
Linux 6.0 et le noyau Linux 2.2 supportent maintenant des partitions
dchange de plus de 128 Mo. Pour crer des partitions dchange ou des
fichiers dchange plus grands que 128 Mo, spcifier le nouveau style,
mkswap v1. En labsence despace disque disponible pour ajouter une parti-
tion dchange, crer un fichier dchange.
$ 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
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
82
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.
Remarque. On obtient la valeur courante du paramtre SHMMAX avec la commande
suivante, passe en tant quutilisateur root : cat /proc/sys/kernel/shmmax.
Comptes et groupes systme
Le serveur Oracle ne sexcutera pas sous le compte root. On a lhabitude de
crer un compte, appel Oracle, propritaire du logiciel serveur Oracle et du
processus en tche de fond. Oracle dfinit un groupe lintrieur du serveur
Oracle, appel OSDBA. Tout compte Oracle membre dOSDBA reoit
lautorisation DBA. Oracle se sert dun groupe Linux, /etc/group, pour assi-
gner la qualit de membre au groupe OSDBA du serveur Oracle. linstalla-
tion, Oracle a besoin dun groupe Linux pour dfinir la qualit de membre de
lOSDBA cest souvent le groupe Linux dba qui en fait office. Oracle8i
dispose dun autre groupe, oinstall, utilis pour affecter lautorisation
dinstaller le logiciel dans le rfrentiel.
Utiliser, en tant que root, la commande groupadd pour ajouter le groupe dba :
Pour Oracle8i, ajouter aussi le groupe oinstall :
Pour Oracle8, crer le compte Oracle en se servant du groupe dba en tant que
groupe par dfaut :
# groupadd dba
# groupadd oinstall
# useradd c DBA g dba oracle
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
83
Pour Oracle8i, crer le compte Oracle en se servant du groupe oinstall en tant
que groupe par dfaut :
Crer un mot de passe pour le compte Oracle :
Droits sur le systme de fichiers
Pour que le compte Oracle puisse utiliser les points de montage pendant
linstallation, il doit avoir les droits appropris : il sagit de donner la
proprit des points de montage au compte Oracle. En fin dinstallation, loin
rend la proprit des rpertoires principaux root.
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.
Du fait que les variables denvironnement doivent tre initialises avant
linstallation, il faut insrer les variables denvironnement suivantes, soit dans
le fichier ~/.bash_profile du compte Oracle, soit dans /etc/profile, et se recon-
necter pour initialiser lenvironnement ou charger le fichier. Remarquez que
quelques-uns des rpertoires cits dans les options denvironnement nexis-
tent pas encore ce niveau. Dans lexemple suivant, linstance ORACLE_SID
est affecte orcl.
# useradd c DBA g oinstall G dba oracle
# passwd oracle
# chown oracle.dba /u01
# chown oracle.dba /u02
# chown oracle.dba /u03
# chown oracle.dba /u04
# chmod 755 /u01
# chmod 755 /u02
# chmod 755 /u03
# chmod 755 /u04
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
84
Options denvironnement pour Oracle8 (8.0.5) :
Options denvironnement pour Oracle8i (8.1.5) :
Important. La variable denvironnement LD_LIBRARY_PATH gre lemplacement
des bibliothques relatives aux applications. Certaines personnes ont rencontr des
problmes car Oracle ne trouve pas certaines bibliothques dans le
LD_LIBRARY_PATH. Les rpertoires contenant les bibliothques peuvent tre ajouts
au fichier /etc/ld.so.conf. La commande ldconfig relira le fichier ld.so.conf.
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.
Excuter la commande umask pour vous assurer que le masque de cration de
fichier utilisateur (umask) est 022. Si lumask ne vaut pas 022, placer
umask 022 dans votre fichier de dmarrage du shell. Ce ne sera pas ncessaire
dans la plupart des distributions de Linux, dont Red Hat : lumask est un filtre
des droits sur le systme de fichiers. Un umask de 022 donne tous les droits
au propritaire, et enlve le droit dcriture au groupe et tous les autres.
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
alias oh=cd $ORACLE_HOME'
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
85
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.
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.
$ umask
022
$ xhost +localhost
$ export DISPLAY=localhost:0.0
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
86
Le paquetage de dveloppement C doit tre install. Si vous avez install Red
Hat 6.0 ou 6.1 et slectionn la station de travail GNOME, la station de travail
KDE, une installation de type serveur (Server-Class) ou une installation
personnalise incluant le groupe Development Packages, le logiciel de dve-
loppement aura t install. Pour utiliser lagent intelligent Oracle (Oracle
Intelligent Agent), installer TCL 7.5 depuis le site ftp://www.scriptics.com. Si
vous ne savez pas ce que cest, ne linstallez pas.
Java pour Linux
Si lon installe Oracle8i, installer dabord un environnement dexcution
Java. Loutil dinstallation dOracle8 en mode caractre orainst a t
remplac dans Oracle8i par un nouveau programme dinstallation graphique
crit en Java, appel programme dinstallation universel Oracle (OUI, Oracle
Universal Installer). Certains ont regrett que le programme dinstallation
exige une machine excutant X Window. Si votre systme ne dispose pas de
X Window, vous pouvez poursuivre votre session X Window sur une autre
machine qui excute un serveur X Window.
Tlcharger lenvironnement dexcution Java (JRE, Java Runtime Environ-
ment) pour Linux de Blackdown sur le site http://www.blackdown.org : il faut
tlcharger la version JRE 1.1.6v5 ; choisir la version libc5 pour Red Hat 5.2,
et la version glibc pour Red Hat 6.0 et suivantes ; copier le JRE dans le rper-
toire /usr/local ; dcompresser les fichiers et crer un lien symbolique vers
/usr/local/jre, car il semble que le programme dinstallation universel
sattende trouver le JRE sous /usr/local/jre.
Placer /usr/local/jre/bin dans votre variable denvironnement PATH.
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
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
PATH=$PATH:/usr/local/jre/bin ; export PATH
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
87
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.
Se procurer le logiciel Oracle
Oracle8 et Oracle8i peuvent tre achets sur le site web Oracle Store
http://oraclestore.oracle.com/ ou tre tlchargs depuis le site ftp
ftp://ftp.oracle.com/pub/www/otn/linux. On peut aussi souscrire loffre
OTN Technology Track for Linux sur le site OTN (Oracle Technology
Network) http://technet.oracle.com. Le service de souscription comprend
douze mois de mise jour. Oracle propose un site ddi Linux ladresse
http://platforms.oracle.com/linux/. Si vous dcidez de tlcharger le logiciel,
attendez-vous ce que ce soit trs long. On a le choix entre tlcharger un
seul grand fichier, ou des fichiers multiples, plus petits.
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
88
1. Se connecter sous le compte oracle.
2. Passer dans le rpertoire contenant le programme dinstallation Oracle.
3. Dmarrer le programme dinstallation Oracle en mode texte. (Le mode
graphique Motif ne fonctionnera pas sous Linux). Voir la figure 3.1.
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.
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.
cd /mnt/cdrom/orainst
./orainst /c
Figure 31
Programme dinstallation dOracle8
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
89
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
90
Installer les correctifs
Quand Oracle8 est install, il faut installer les correctifs. Si vous ne lavez pas
encore fait, tlchargez-les partir de ftp://oracle-ftp.oracle.com/server/
patchsets/unix/LINUX/80patchsets/80510/. Si vous avez besoin du correctif
glibcpatch.tgz et que vous ne le trouvez pas sur le site prcdemment cit,
ouvrez un compte libre sur le site de lOTN (http://technet.oracle.com) et
cherchez la section des logiciels pour Linux. Recherchez les nouvelles
versions des correctifs. Actuellement, il existe trois correctifs pour Oracle8 :
glibcpatch.tgz, lnxpatch.tgz, et linux_80510patchset.tgz. glibcpatch.tgz nest
utile que si vous installez Oracle 8.0.5 sur Red Hat Linux version 6.0 ou ult-
rieure. Il faudra peut-tre rinstaller le glibcpatch aprs application de
nouveaux correctifs. Si vous installez une machine Red Hat 5.2, ce nest pas
la peine : le fichier lnxpatch.tgz comprend des correctifs spcifiques la
plate-forme Linux. Enfin, linux_80510patchset.tgz contient des corrections
gnriques pour Oracle8. Dans tous les cas, lire toute la documentation four-
nie avec les correctifs.
Lnxpatch
Le correctif lnxpatch est un script de shell.
1. Aller dans le rpertoire contenant les correctifs.
2. Crer un rpertoire appel lnx.
[root@dbsvr orainst]# cd $ORACLE_HOME/orainst
[root@dbsvr orainst]# sh root.sh
Running Oracle8 root.sh script...
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/8.0.5
ORACLE_SID= orcl
Are these settings correct (Y/N)? [Y]:
Enter the full pathname of the local bin directory [/usr/lbin]: /usr/local/bin
Checking for "oracle" user id...
ORACLE_HOME does not match the home directory for oracle.
Okay to continue? [N]: Y
Replacing existing entry for SID in /etc/oratab...
The previous entry is now in a comment.
Leaving common section of Oracle8 root.sh.
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
91
3. Transfrer le fichier lnxpatch.tgz dans le rpertoire lnx.
4. Aller dans le rpertoire lnx.
5. Extraire le correctif.
6. Excuter le script lnxpatch.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.
3. Aller dans le rpertoire 80510.
4. Extraire le correctif.
5. Dmarrer le programme dinstallation Oracle.
6. Choisir Custom Install.
7. Entrer OK pour afficher le README.
8. Choisir Install, Upgrade, or De-install Software.
9. Choisir Add/Upgrade Software.
10. Vrifier le rpertoire ORACLE_HOME.
11. Confirmer les emplacements des fichiers de trace et entrer OK.
12. Choisir Install from Staging Area.
mv lnxpatch.tgz lnx
cd lnx
tar zxvf lnxpatch.tgz
sh glibcpatch.sh
mv 80510patchset.tgz 80510
cd 80510
tar zxvf 80510patchset.tgz
orainst /c
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
92
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.
4. Aller dans le rpertoire glibc.
5. Extraire le correctif.
6. Excuter le script glibcpatch.
mv glibcpatch.tgz glibc
cd glibc
tar zxvf glibcpatch.tgz
sh glibcpatch.sh
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
93
Crer les objets de base de donnes
Suivre exactement ces tapes pour crer les objets dune base de donnes.
1. Aller dans le rpertoire contenant le logiciel dinstallation Oracle.
2. Dmarrer le programme dinstallation Oracle.
3. Choisir Custom Install.
4. Entrer OK au vu du prompt README.
5. Choisir Create/Upgrade Database Objects.
6. Choisir Create Database Objects.
7. Vrifier ORACLE_HOME et ORACLE_BASE.
8. Accepter les options par dfaut pour les fichiers de trace.
9. Vrifier que ORACLE_SID est correct.
10. Si un message indique que le SID est dj en cours dutilisation, il est d
au fait que le script root.sh a cr un fichier /etc/oratab. Entrer Yes.
11. Dans lcran dinstallation dOracle, choisir Oracle8 Standard RDBMS
8.0.5.0.0 pour crer les objets de base de donnes.
12. Cliquer sur le bouton Install.
13. Choisir Create Product DB objects.
14. Choisir Filesystem-based Database.
15. Si vous initialisez un systme de fichiers compatible OFA (Optimal Flexi-
ble Architecture), choisir Yes pour avoir une distribution des fichiers de
contrle sur des points de montage multiples.
16. Entrer les points de montage /u02, /u03, et /u04 pour initialiser le systme
de fichiers OFA.
17. Choisir le jeu de caractres.
18. Choisir le jeu de caractres national.
19. Entrer votre mot de passe pour le compte SYS.
20. Entrer votre mot de passe pour le compte SYSTEM.
21. Entrer ventuellement un mot de passe interne pour le dba et loprateur.
cd /mnt/cdrom/orainst
./orainst /c
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
94
22. Entrer un mot de passe pour le TNS Listener.
23. Ne pas configurer le MTS listener.
24. Accepter les options par dfaut pour les fichiers de contrle.
25. Choisir OK dans les deux crans suivants.
26. Choix Yes pour accepter les options par dfaut.
27. Le processus de construction de la base de donnes commence, le serveur
Oracle est dmarr, et les objets sont crs.
28. Sortir du programme dinstallation.
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.
Attention. Il y a eu des problmes linstallation sur les versions par dfaut de
Enlightenment install avec Red Hat Linux 6.0. Enlightenment est le gestionnaire de
fentres par dfaut install sous Gnome. Si vous rencontrez des problmes avec le
programme dinstallation universel Oracle, essayez de mettre jour Enlightenment ou
remplacez-le par Sawmill. On peut aussi faire appel fvwm ou KDE.
Se connecter en tant quutilisateur Oracle pour lancer linstallation, et monter
le CD-ROM contenant le logiciel. Le point de montage du CD-ROM est en
principe /mnt/cdrom. Si le logiciel est tlcharg, remplacer /mnt/cdrom par
le rpertoire o il est install.
1. Aller dans le rpertoire dinstallation du CD-ROM Oracle.
$ cd /mnt/cdrom/
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
95
2. Le Guide dinstallation Oracle8i pour Linux stipule quil faut excuter le
script runInstaller, mais celui-ci ne fonctionne pas sous Red Hat Linux 6.1.
Utiliser le script runIns.sh situ dans le rpertoire /mnt/cdrom/install/
linux.
Si un message indique que lOUI ne peut pas se connecter un serveur
X11 Window, il est probable que la connexion sest faite dans le gestion-
naire de fentre sous un autre compte utilisateur. Vous tes sans doute
pass au compte Oracle par une commande su (setuser). Reportez-vous
la section X-Window des options denvironnement. Sil se produit une
erreur Java bizarre, assurez-vous que vous avez install la version correcte
de Java et que vous avez bien les rpertoires /usr/local/jre et
usr/local/jre/bin dans votre $PATH. Utilisez la commande witch jre pour
vrifier quelle trouve bien le rpertoire /usr/local/jre/bin/jre.
3. OUI propose une bote de dialogue daccueil (figure 3.2).
$ cd /mnt/cdrom/install/linux
$. /runIns.sh
Figure 32
Programme dinstallation universel Oracle
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
96
Remarquer le bouton daide situ en bas de la fentre OUI. Pendant lins-
tallation, on a des informations utiles en ouvrant la fentre daide. Cliquer
sur Next.
4. La bote de dialogue Files Location attend des prcisions sur lemplace-
ment de la source et de la destination du logiciel. La source sera le CD-
ROM ou le rpertoire o est plac le logiciel Oracle : /mnt/cdrom/stage/
products.jar ; la destination sera le rpertoire du logiciel OFA :
/u01/app/oracle/product/8.1.5. Vous pouvez adapter ces rpertoires votre
cas mais, si vous avez suivi les indications de ce chapitre, les options par
dfaut sont correctes. Cliquer sur Next.
5. La bote de dialogue Unix Group Name demande un nom de groupe Unix
pour grer les installations du logiciel. On peut ne pas renseigner cette
zone si lon prfre installer le logiciel Oracle sous le compte root. Entrer
le compte oinstall, cr auparavant. Lide est que nimporte quel membre
du groupe oinstall peut soccuper du logiciel Oracle, ce qui libre le titu-
laire du compte root de ladministration dOracle. Cliquer sur Next.
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.
Figure 33
Lancement du script orainstRootsh par OUI
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
97
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.
7. La bote de dialogue Avalaible Products (produits disponibles) propose trois
options : serveur, client et programmeur. Puisque nous installons le ser-
veur, assurez-vous que ldition Orace8i Enterprise (ou ldition standard)
est slectionne, puis cliquez sur Next.
8. La bote de dialogue Installation Types propose trois options : Typical, Mini-
mal et Custom. Choisir Custom, puis cliquer sur Next. Les options typiques
et minimales ne sont pas censes fonctionner sous Red Hat 6.1.
9. La bote de dialogue Avalaible Products Components apparat. Sassurer
que toutes les options du produit Oracle sont slectionnes, sauf
interMedia : il y a un bogue dans les versions 8.1.5.0.1 et 8.1.5.0.2 qui
pose des problmes si toutes les options ne sont pas installes. Et, juste-
ment, interMedia nest pas compltement support dans la version 8.1.5.
Les options produits ne sont pas vraiment utilises tant que lon ne les
implmente pas. Cliquer sur Next.
10. La bote de dialogue Create Database demande si lon veut crer une nou-
velle base de donnes laide de lassistant de configuration de base de
donnes Oracle. Choisir No et cliquer sur Next.
11. La bote de dialogue Oracle Protocol Support apparatra avec une bote de
slection vide : cest normal, car Linux supporte TCP/IP, install par
dfaut. Cliquer sur Next.
12. La bote de dialogue Summary apparat ; choisir Install pour commencer
linstallation.
13. La bote de dialogue Setup Privileges apparatra si cest la premire fois
que lon installe le logiciel Oracle sur la machine (figure 3.4). Pendant
linstallation, lOUI vrifie quil existe un fichier /etc/oratab contenant
une entre pour chaque base de donnes installe. Si le fichier nexiste
pas, une bote de dialogue apparatra avec un message qui signifie :
Excuter sil vous plat le script root.sh situ dans le rpertoire
/u01/app/oracle/product/8.1.5/root.sh, en vous connectant en tant que root
dans une autre fentre avant de continuer .
Ouvrir une autre fentre terminal, passer au compte root (su), et excuter
le script root.sh. Le script demande le nom complet du chemin du rper-
toire bin local : indiquez lemplacement /usr/local/bin. Si, par hasard, vous
laissez /usr/bin en tant que rpertoire bin local, tout fonctionne bien
# cd /tmp/orainstall
# /orainstRoot.sh
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
98
mais ce nest pas vraiment correct. la fin, revenir la fentre de dialo-
gue et cliquer sur OK.
14. La bote de dialogue Configuration Tools apparat : elle propose lassistant
de configuration de Net8 et les assistants de configuration de la base de
donnes Oracle. Si lassistant de configuration de base de donnes Oracle
sarrte, cest bien. Sil dmarre, cliquez simplement sur Cancel, puis sur
Yes dans le dialogue de sortie : la base de donnes ne doit pas tre cre
ce stade parce quil faut que les correctifs soient installs auparavant. Fer-
mez tous les messages derreur. Vous aurez peut-tre un autre message
derreur de lOUI ; si cest la cas, cliquez sur OK. Dans la bote de dialo-
gue des outils de configuration, cliquez sur Next.
15. La dernire partie de la bote de dialogue de fin dinstallation apparat :
vous pouvez sortir de lOUI.
16. Excuter le script root.sh dans le rpertoire $ORACLE_HOME/install/utl
pour modifier quelques permissions de fichier.
Flicitations, vous avez franchi la premire tape de linstallation dOracle8i.
Maintenant, le logiciel est install, mais vous navez aucune base de donnes.
Avant de crer la base de donnes, il faut installer les correctifs.
Installer les correctifs
Tlcharger tous les correctifs courants pour Oracle8i. Le niveau actuel est
8.1.5.0.2 : il sapplique aux ditions Enterprise et Standard dOracle8i.
$ORACLE_HOME/bin doit se trouver dans votre chemin pour que le correctif
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
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
99
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 :
2. Sassurer que la variable denvironnement $ORACLE_HOME est
initialise :
3. Aller dans le rpertoire du correctif prcdemment cr :
4. Lire le fichier README :
5. Excuter le script de shell, qui est maintenant dans le rpertoire courant :
Construire les scripts de cration de base de donnes
Lassistant de configuration de base de donnes (dbassist) est utilis pour
supprimer, crer ou modifier une base de donnes. Dans notre cas, il y a deux
raisons dcrire des scripts de cration de base de donnes plutt que dutili-
ser lassistant de configuration de base de donnes Oracle pour configurer une
$ 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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
100
base de donnes de base . La premire est que lon va probablement
rencontrer des bogues, pendant le processus dinstallation. La seconde, que
cest une bonne occasion de voir de quels composants est constitue la base
de donnes. Utilisez largement laide, dans chacune de ces tapes, pour crer
les scripts de base de donnes.
En excutant dbassist, on voit apparatre le message : JNLS Exception:
oracle.ntp.jnls.JNLSException Unable to find any National Character Sets. Please
check installation . Cest un bogue connu : ignorer lavertissement et cliquer
sur OK.
1. Excuter dbassist (figure 3.5).
2. Choisir Create a database pour crer une base de donnes.
3. Choisir Custom comme type de la base de donnes crer. Typical est
rput ne pas fonctionner.
4. Choisir Hybrid pour le type denvironnement dans lequel la base de don-
nes va fonctionner. Si la base de donnes doit servir surtout de courtes
transactions de gestion, choisir le systme transactionnel (OLTP, OnLine
Transaction Processing). Si le systme est destin tablir de longs rap-
ports, choisir le systme daide la dcision (DSS, Decision Support Sys-
tem). En cas de doute, Hybrid est le meilleur choix.
Figure 35
Assistant de configuration de base de donnes Oracle
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
101
5. Il faut ensuite indiquer le nombre approximatif dutilisateurs qui seront
connects simultanment la base de donnes : laisser la valeur par
dfaut.
6. Choisir Dedicate Mode Server comme mode de fonctionnement par dfaut
de la base de donnes.
7. Choisir, parmi les options, celles que vous voulez configurer (voir tableau
3.3) : Oracle interMedia, Oracle Visual Information Retrieval, Oracle
interMedia text, Oracle Times Series, Oracle Spatial, Oracle JServer,
Advanced Replication, Enable interMedia demos et les tables daide de
SQL*Plus. Si vous voulez simplement tester la base de donnes, il nest
pas ncessaire de configurer les options, qui occuperont de lespace disque
supplmentaire ainsi que de la mmoire, en particulier JServer, sachant
que lon peut les configurer plus tard. Un conseil : ninstaller aucune de
ces options ce stade. Vous aurez bien assez doccupations avec la base de
donnes elle-mme, pendant lapprentissage.
Tableau 33
Options Oracle8i
Options Description et caractristiques
Oracle interMedia Oracle a combin diffrents produits en un seul
grand produit appel interMedia. Oracle
interMedia donne Oracle8i la possibilit de grer
des textes, des documents, des images, des
documents audio, vido, et des informations
gographiques, de manire intgre. (Cette option
nest pas entirement disponible sous 8.1.5).
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.
Oracle interMedia text Oracle interMedia text propose des outils de
recherche de texte. Il indexe les documents et
permet de retrouver des documents archivs.
Toutes les options de recherche sont disponibles
depuis nimporte quel outil PL/SQL ou SQL.
interMedia est souvent appel context Oracle.
Oracle Times Series Oracle Times Series permet de ranger des
donnes temporelles dans la base de donnes. Il
dispose dun ensemble de fonctions pour retrouver
et traiter ces donnes. Les fonctions comprennent
les calendriers, les sries temporelles et la
synchronisation des heures.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
102
8. La bote de dialogue suivante (figure 3.6) attend un nom de base de don-
nes global et un SID. Le nom de base de donnes global par dfaut est
dbname, et le SID par dfaut a la valeur de la variable denvironnement
ORACLE_SID qui aura t initialise prcdemment : il peut sagir de
oracl. Le nom de base de donnes global concerne la base de donnes,
alors que le SID se rapporte linstance qui dessert la base de donnes. Le
nom de base de donnes global peut avoir deux composants : un nom de
base de donnes et un nom de domaine ; cela ressemble aux noms dhte
Internet. Par exemple, dans ladresse www.oracle.com, www est le
hostname, et oracle.com le domaine. Le but est de donner un nom unique,
qualifi, toute base de donnes Oracle dans le monde. Oracle recom-
mande dutiliser le domaine courant : par exemple, chez Oracle, on peut
rencontrer des noms de base de donnes globaux tels que db.oracle.com.
Le nom de base de donnes est limit huit caractres et le domaine 128
caractres ; la longueur du SID dpend du systme dexploitation, mais
seuls huit caractres sont conservs, bien quil soit recommand de nen
utiliser que quatre. En gnral, la partie nom de base de donnes du nom
de base de donnes global est aussi le SID. Le nom de domaine nest pas
obligatoire, de sorte que lon peut simplement entrer le mme nom dans
les deux champs, par exemple orcl et orcl. Si les champs apparaissent
vides, cliquez sur le bouton Next et, dans lcran suivant, cliquez sur le
bouton Back.
9. Vrifier le paramtre du fichier de contrle. Il faut un fichier de contrle
pour monter et accder une base de donnes. Pour une simple base de
donnes de test, utiliser les paramtres par dfaut. Si vous initialisez votre
Oracle Spatial Les donnes spatiales sont des donnes qui se
rfrent un localisant. Les bases de donnes
contenant des champs gographiques, tels que les
adresses, les numros de tlphone et les codes
postaux peuvent tre analyses via un service
nomm gocodification.
Oracle JServer JServer est une machine virtuelle Java compatible
avec Java2 de Oracle. On peut ranger le code
Java dans la base de donnes et lexcuter.
Advanced Replication La rplication est le processus de copie et de
maintenance dobjets de base de donnes dans
les bases de donnes multiples, qui composent un
systme de base de donnes distribu.
Tableau 33
Options Oracle8i
Options Description et caractristiques
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
103
systme de fichiers avec le systme OFA de Oracle, vous avez la possibi-
lit de changer le chemin du rpertoire des fichiers de contrle en
/u02/oradata/orcl/control01.ctl et /u03/oradata/orcl/control01.ctl.
10. Lcran suivant contient un tableau qui sert renseigner SYSTEM, USER,
ROLLBACK, INDEX et TEMPORARY. Ce sont des tablespaces usage
spcifique. Le tablespace SYSTEM contient la plupart des tables de
ladministrateur et le dictionnaire des donnes, USER les objets utilisa-
teur, ROLLBACK les segments de rollback, INDEX les index, et le
tablespace TEMPORARY, les tables provisoires. Remarquer la taille ini-
tiale de chaque tablespace et son emplacement ; les options par dfaut sont
satisfaisantes pour une base de donnes de test et, si vous avez configur
votre systme de fichiers avec OFA, le tableau 3.4 donne les emplace-
ments des rpertoires.
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
104
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.
Important. La taille du bloc de base de donnes doit tre spcifie linstallation de la
base de donnes, et ne peut plus tre change par la suite.
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.
Excuter les scripts de cration de base de donnes
Examiner le fichier $ORACLE_HOME/install/sql<SID.>sh, qui est utilis pour
appeler dautres fichiers, individuellement. Excuter le fichier pour commen-
cer la construction de la base de donnes.
ROLLBACK /u02/oradata/orcl/rbs01.dbf
INDEX /u02/oradata/orcl/indx01.dbf
TEMPORARY /u02/oradata/orcl/temp01.dbf
Tableau 34
Emplacements des fichiers de donnes des tablespaces
Tablespace Emplacement
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
105
Cest le moment de prendre un caf ou un th : il faut attendre patiemment la
nouvelle base de donnes. La construction dune instance complte, avec
toutes les options, demande de vingt minutes plus dune heure.
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.
Comptes SYS et SYSTEM
Sous Oracle, il y a trois comptes usage particulier, crs par dfaut : interne,
SYS et SYSTEM. Le compte interne est un compte spcial, souvent utilis
par les scripts. Le compte SYS est propritaire des tables de ladministrateur
et du dictionnaire des donnes. On est rarement amen utiliser le compte
SYS. Le compte SYSTEM est propritaire de toutes les tables de ladminis-
trateur et des vues cres aprs linstallation de la base de donnes, comme
celles qui sont utilises par les outils Oracle. Le compte SYSTEM na pas de
rapport direct avec le tablespace SYSTEM, mme sil a le mme nom. Les
mots de passe des comptes SYSTEM et SYS seront changs. Dans lexemple
suivant, remplacer newpassword par un mot de passe de votre choix.
Pour changer les mots de passe, se connecter en se servant de svrmgrl :
$ cd $ORACLE_HOME/install
$. /sqlorcl.sh
[oracle@dbsvr oracle]$ svrmgrl
Oracle Server Manager Release 3.0.5.0.0 - Production
(c) Copyright 1997, Oracle Corporation. All Rights Reserved.
Oracle8 Release 8.0.5.1.0 - Production
PL/SQL Release 8.0.5.1.0 - Production
SVRMGR> connect internal
Connected.
SVRMGR> alter user sys identified by newpassword ;
Statement processed.
SVRMGR> alter user system identified by newpassword ;
Statement processed.
SVRMGR>
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
106
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.
Configuration du fichier de paramtres
Au dmarrage, Oracle se sert dun fichier appel fichier des paramtres
dinitialisation. Le fichier sappelle initSID.ora et on le dsigne couramment
par INIT.ORA. Remplacez le SID par votre $ORACLE_SID. Dans Oracle8 le
fichier est situ dans /u01/admin/$ORACLE_SID/pfile. Dans Oracle8i, il se
trouve dans /u01/app/oracle/admin/$ORACLE_SID/pfile.
Le fichier dinitialisation peut contenir des paramtres qui optimisent les
performances de la base de donnes, des options par dfaut ou des limites, et
spcifier des noms de fichiers. Les paramtres qui dfinissent les structures de
mmoire SGA sont dans le fichier INIT.ORA. Le fichier INIT.ORA par dfaut,
install avec une nouvelle base de donnes, comprend trois groupes doptions
tiquets SMALL, MEDIUM et LARGE. En gnral, les options MEDIUM
et LARGE sont places en commentaires. Les paramtres se calculent daprs
la valeur de la RAM installe et peuvent tre augments. Il nentre pas dans le
cadre de ce chapitre de dcrire la grande varit des options dinitialisation.
Un conseil : dmarrer avec les options par dfaut, part le paramtre de
format de la date ! La sortie standard pour les dates dans le serveur Oracle
contient des annes deux chiffres ; par exemple, 10-AVR-99. Pour avoir des
annes de quatre chiffres, ajouter le paramtre nls_date_format dans le fichier
INIT.ORA. Editer le fichier INIT.ORA et ajouter la ligne suivante :
Dmarrage et arrt automatiques
Il est pratique de dmarrer et darrter Oracle automatiquement, en mme
temps que Linux. Oracle contient un script appel dbstart utilis dans les
scripts de contrle de lexcution. dbstart consulte le fichier /etc/oratab pour
connatre les instances dmarres et arrtes automatiquement.
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
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
107
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
108
La ligne # chkconfig : 345 91 19 est destine au programme chkconfig. Le
nombre 345 indique quel niveau le script sera excut, le nombre 91 dans
quel ordre dmarre Oracle, et 19 dans quel ordre larrter. Le programme
chkconfig crera des liens symboliques du script Oracle vers les divers rper-
toires des niveaux dexcution. Voir man chkconfig pour plus dinformations
propos de lutilitaire chkconfig de Red Hat.
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.
Le serveur Oracle propose beaucoup de protocoles rseau. Les deux mthodes
les plus courantes de connexion aux serveurs Oracle en rseau consistent
donner des noms dhte TCP/IP ou des noms de service TNS (Transport
Network Substrate). Si lon a choisi dinstaller une seule instance sur le
serveur, adopter les noms dhte TCP pour se connecter distance : par
exemple, si le serveur Linux a le nom dhte fred, utiliser fred comme chane
de connexion, dans le nom de service, pour se connecter linstance. Un
serveur qui excute des instances multiples dOracle ne peut pas utiliser les
noms dhte TCP/IP. TNS fait correspondre des noms de service aux htes
qui excutent des protocoles diffrents, dont TCP/IP : dans ce cas, le nom
dinstance peut tre spcifi. Les noms TNS sont rangs dans le rpertoire
$ORACLE_HOME/network/admin, dans le fichier tnsnames.ora.
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
#chkconfig add oracle
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
109
Voici un exemple dentre de tnsnames.ora qui spcifie lhte 192.168.10.1,
fonctionnant sur le port 1521, avec le nom dinstance 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.
Figure 37
Assistant Net8
orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(Host= 192.168.10.1)(Port= 1521))
(CONNECT_DATA = (SID = orcl))
)
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
110
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
STARTUP Dmarrer linstance, monter la base de donnes et ouvrir la
base de donnes.
STARTUP NOMOUNT Dmarrer linstance. Rarement utilise.
STARTUP MOUNT Dmarrer linstance et monter la base de donnes. La base de
donnes nest pas ouverte. Utilise pour certaines tches
dadministration.
STARTUP OPEN RECOVER Dmarrer linstance, monter la base de donnes, ouvrir la
base de donnes, et commencer la restauration. On a, en
retour, un message derreur si la restauration nest pas
ncessaire. Dhabitude, la restauration est automatique.
SHUTDOWN NORMAL Oracle attend que toutes les connexions soient fermes pour
sarrter
SHUTDOWN TRANSACTIONAL Oracle attend que toutes les transactions se terminent et
ferment toutes les connexions.
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
111
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.
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.
Tableau 35
Commandes STARTUP et SHUTDOWN du Gestionnaire de serveur
Commande Description
SVRMGR> help
The following are SIMPLIFIED syntax descriptions. For complete syntax
descriptions, please refer to the Oracle Server Manager User's Guide.
STARTUP [DBA] [FORCE] [PFILE=filespec] [EXCLUSIVE | SHARED]
[MOUNT dbname | OPEN dbname] [NOMOUNT]
SHUTDOWN [NORMAL | IMMEDIATE | ABORT]
MONITOR For graphical modes only, bring up a monitor
ARCHIVE LOG [START] [STOP] [LIST] [NEXT] [<n>] [ALL] ['destination']
RECOVER { [DATABASE [MANUAL] ] | [TABLESPACE ts-name, [tsname]] }
CONNECT [username [/password] ] [INTERNAL] ['@'instance-spec]
DISCONNECT
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
112
Linstance peut tre arrte par la commande SHUTDOWN. Le problme le
plus dlicat traiter au moment de larrt est celui des transactions ouvertes.
Si les utilisateurs sont connects linstance pour des transactions ouvertes, il
faut savoir comment traiter les transactions. La commande SHUTDOWN
NORMAL attend que tous les utilisateurs en cours soient dconnects de la
base de donnes et, dans ce cas, toutes les transactions se terminent normale-
ment. La commande SHUTDOWN IMMEDIATE annule (rollback) toutes les
transactions non valides (commit) et dconnecte toutes les connexions
linstance. Comme son nom ne lindique pas, cela peut prendre du temps pour
annuler toutes les transactions non valides. Certains processus sont autoriss
se terminer avant dconnexion. La commande SHUTDOWN
TRANSACTIONAL autorise les transactions actives se terminer ; elle pargne
aux utilisateurs une perte de travail, et les dconnecte de linstance une fois
que toutes les transactions sont termines. Cela peut prendre du temps si les
utilisateurs laissent ouvertes des transactions non valides. Enfin, la
commande de dernier recours est SHUTDOWN ABORT. Cette commande
ferme linstance instantanment : les instructions SQL des clients sont aban-
donnes, les transactions sont interrompues (sans rollback) et tous les utilisa-
teurs sont dconnects. Cette commande exigera une restauration de la base
de donnes, au prochain dmarrage, ce qui se produira automatiquement. Si
ce nest pas le cas, utiliser la commande STARTUP OPEN RECOVER. Une fois
que lune des commandes SHUTDOWN a t soumise, aucune nouvelle
connexion nest autorise. Pour plus dinformations sur le Gestionnaire de
serveur, taper HELP linvite du Gestionnaire de serveur.
Pour mieux connatre lusage de la mmoire dite zone globale systme, utili-
sez la commande SHOW SGA de SQL*Plus ou du Gestionnaire de serveur,
qui donne la taille totale de la zone globale systme, la taille fixe, la taille
variable, les buffers de base de donnes et les buffers des journaux.
SET options: INSTANCE, ECHO, TERMOUT, TIMING, NUMWIDTH, CHARWIDTH
SHOW LONGWIDTH, DATEWIDTH, AUTOPRINT and for SHOW: ALL, SPOOL
EXIT
REM
SQL statements can also be executed.
SVRMGR> connect / as sysdba
Connected.
SVRMGR> show sga
Total System Global Area 8154384 bytes
Fixed Size 48400 bytes
Variable Size 6905856 bytes
Database Buffers 1126400 bytes
Redo Buffers 73728 bytes
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
113
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
[oracle@dbsvr oracle]$ ps aux|grep ora_
oracle 3798 0.0 4.4 114916 5656 ? S 12:38 0:00 ora_pmon_orcl
oracle 3800 0.0 4.5 114884 5828 ? S 12:38 0:00 ora_dbw0_orcl
oracle 3802 0.0 4.2 114368 5440 ? S 12:38 0:00 ora_lgwr_orcl
oracle 3804 0.0 4.0 114348 5152 ? S 12:38 0:00 ora_ckpt_orcl
oracle 3806 0.0 9.6 114388 12316 ? S 12:38 0:02 ora_smon_orcl
oracle 3808 0.0 5.4 114396 7024 ? S 12:38 0:00 ora_reco_orcl
oracle 3810 0.0 3.6 114300 4732 ? S 12:38 0:00 ora_s000_orcl
oracle 3812 0.0 3.9 114416 5008 ? S 12:38 0:00 ora_d000_orcl
oracle 3814 0.0 4.0 114468 5136 ? S 12:38 0:00 ora_arc0_orcl
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
114
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
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
115
comptes utilisateur, et dabord utiliser le compte SYSTEM pour crer son
propre compte. La commande suivante cre un utilisateur nomm pat avec le
mot de passe er34533. Lutilisateur a accs au tablespace par dfaut users et
au tablespace temporaire temp. Il est important de spcifier un tablespace par
dfaut car il ne faut pas que les utilisateurs crent des objets dans le tables-
pace SYSTEM. La dernire ligne fournit un espace utilisateur non limit sur
le tablespace users. Il serait prfrable de limiter le quota en spcifiant une
taille telle que 50M, pour 50 Mo, ou 500 K pour 500 Ko.
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.
SQL> CREATE USER pat
2 IDENTIFIED BY er34533
3 DEFAULT TABLESPACE users
4 TEMPORARY TABLESPACE temp
5 QUOTA unlimited ON users ;
SQL> GRANT CONNECT TO pat ;
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
116
Ladministrateur change le mot de passe dun utilisateur laide de la
commande ALTER USER IDENTIFIED, et lutilisateur se sert de la commande
PASSWORD pour changer le mot de passe de son compte.
On consulte les connexions actives laide de la commande DBA suivante :
SELECT * from v$session. Pour arrter une session immdiatement, utiliser la
commande ALTER SYSTEM KILL SESSION sid,session. On connat le sid et
la session partir de v$session. Pour dconnecter une session la fin dune
transaction, utiliser la commande ALTER SYSTEM DISCONNECT sid, session
POST_TRANSACTION. Supposons, par exemple, qu laide dune requte
SELECT sur v$session, on a pu constater quil existe un enregistrement pour
lutilisateur pat contenant un SID de 7, et une SESSION de 15 : on excutera
la commande ALTER SYSTEM KILL SESSION 7,15.
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.
Important. La chane de connexion sert se connecter une base de donnes et
dpend du protocole du rseau. Les plus courants sont les noms TNS et les noms
dhte TCP/IP. Leur format standard est user/password@net_service_name. La plupart
des applications admettront user@net_service_name et demanderont le mot de passe.
Par exemple, on accde une instance nomme orcl laide de la chane de
connexion scott/tiger@orcl. Si une seule instance est prsente sur un serveur, on se
sert tout simplement du nom dhte TCP/IP du serveur, en tant que nom de service.
SQL> alter user pat identified by secret_pwd ;
User altered.
SQL> password
Changing password for PAT
Old password:
New password:
Retype new password :
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
117
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.
Utiliser la commande EDIT pour placer le contenu du buffer dans lditeur
externe. Oracle range le contenu du buffer dans un fichier afiedt.buf, ouvert
par lditeur. Une fois termines les modifications des instructions SQL, les
sauvegarder, sortir de lditeur et revenir SQL*Plus : le buffer refltera alors
les changements effectus dans lditeur ; passer la commande RUN pour
excuter linstruction. Il est courant de terminer une instruction SQL ainsi
dite par une barre oblique (/), sur une ligne.
Le contenu du buffer est sauvegard dans un fichier par la commande SAVE.
Lextension .sql sera automatiquement associe au nom du fichier. On
remplace le buffer par le contenu dun fichier avec la commande GET. Pour
excuter un script immdiatement, utiliser la commande @ suivie du nom de
fichier, au lieu de le placer simplement dans le buffer.
SQL>define _editor
DEFINE _EDITOR = "ed" (CHAR)
SQL>define _editor=vi
SQL>define _editor
DEFINE _EDITOR = "vi" (CHAR)
SELECT user_name, city, state FROM customer_info
/
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
118
Le fichier doit avoir lextension .sql pour tre reconnu.
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.
On range les prfrences dans un fichier, login.sql, du rpertoire par dfaut
do SQL*Plus est lanc. Il faut excuter la commande COMMIT aprs toute
modification de donnes utilisant une instruction SQL. SQL*Plus valide
automatiquement les transactions : soit aprs chaque instruction, soit aprs un
certain nombre dinstructions, si lon se sert de loption SET AUTOCOMMIT
ON o lon indique explicitement le nombre dinstructions excuter entre les
commits. Pour dsactiver lautocommit, utiliser SET AUTOCOMMIT OFF.
La commande DESCRIBE, ou DESC, sert afficher la structure dun objet.
SQL*Plus sert aussi dmarrer et arrter linstance. Linstruction connect
to Oracle as SYSDBA a une signification particulire : un utilisateur,
connect au serveur Oracle en tant que SYSDBA, a des privilges spciaux.
Pour se connecter avec lautorisation SYSDBA, ajouter le texte as sysdba
la fin de la chane de connexion. Par exemple, pour connecter le compte pat
SQL> SAVE nom_de_fichier
SQL> GET nom_de_fichier
SQL> @nom_de_fichier
SQL> host ls
init.sql loop.sql
SQL> !ls
init.sql loop.sql
SQL> describe all_objects ;
Name Null? Type
_______________________________ ________ ____
OWNER NOT NULL VARCHAR2(30)
OBJECT_NAME NOT NULL VARCHAR2(30)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NOT NULL NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(15)
CREATED NOT NULL DATE
LAST_DDL_TIME NOT NULL DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
119
avec les privilges SYSDBA, on utilisera la chane suivante : connect
pat/mypasswd as sysdba. Bref, si lon est connect avec un compte membre
du groupe dba, il suffit de taper connect / as sysdba. Lutilisateur doit tre un
membre du groupe OSDBA.
Dans les dmonstrations, on trouve souvent un compte dutilisateur scott,
avec le mot de passe tiger, que tout le monde connat, ou presque. Si vous
crez ce compte, il vaut mieux ne pas laisser ce mot de passe. Certains utilitai-
res sattendent ce que le compte existe rellement, et chouent sils ne le
trouvent pas. Lensemble des tables DEPT, EMP, BONUS et SALGRADE
sont, elles aussi, trs connues. Ces tables peuvent tre cres par le script
$ORACLE_HOME/rdbms/admin/utlsampl.sql, et cest un utilisateur ayant les
privilges DBA, ou SYSTEM, qui doit excuter le script. Le rpertoire
$ORACLE_HOME/rdbms/admin contient beaucoup de scripts optionnels, dont
la plupart contiennent des commentaires. Certains dentre eux doivent tre
excuts par un utilisateur particulier tel que SYS ou SYSTEM.
Dictionnaire des donnes
Le dictionnaire des donnes de Oracle est un rfrentiel central, en lecture
seule des tables et des vues de rfrence. Oracle se sert du dictionnaire des
donnes pour trouver la dfinition des objets, les allocations despace, les
contraintes dintgrit, les privilges, les informations de vrification et
autres. La configuration sous-jacente du dictionnaire des donnes est un
ensemble de tables normalises en lecture seule, plutt difficiles lire. Des
vues accessibles lutilisateur en facilitent laccs. Le dictionnaire des
donnes appartient au schma SYS et ne peut tre modifi que par Oracle
Corporation. Des modifications du schma SYS risquent dendommager la
base de donnes ; par consquent, il faut veiller la scurit de ce compte. Il y
a beaucoup de synonymes publics relatifs aux vues du dictionnaire des
donnes, dont, pour lessentiel, trois ensembles de vues : ALL, USER et
DBA. Il existe aussi un ensemble de tables des performances dynamiques
dont le nom commence par V$. Les vues USER contiennent des lments du
schma de lutilisateur, les vues ALL tout ce qui est accessible lutilisateur,
et les vues DBA, ce que tout utilisateur peut voir ; ces dernires sont conues
pour lusage de ladministrateur de la base de donnes. La vue
ALL_OBJECTS est particulirement longue, car elle comprend tous les
objets auxquels un utilisateur peut accder.
Un mot propos de trois autres objets du dictionnaire des donnes : DUAL,
CAT et DICT. DUAL est une table spciale compose dune seule colonne
nomme DUMMY, qui a la valeur X. Elle sert respecter la contrainte impo-
SELECT * from ALL_OBJECTS ;
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
120
sant toute instruction SELECT de contenir un identifiant de table dans la
clause FROM.
La vue CAT est un synonyme de USER_CATALOG : elle donne la liste des
tables, des vues, des synonymes et des squences appartenant lutilisateur.
DICT est un synonyme de DICTIONARY. La vue contient la description des
vues et des tables du dictionnaire des donnes.
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-
SELECT sysdate FROM dual ;
SELECT * from CAT ;
SQL> COLUMN table_name FORMAT a15
SQL> COLUMN comments FORMAT a50
SQL> SELECT * FROM dict WHERE table_name='DICTIONARY';
TABLE_NAME COMMENTS
------------------- -----------------------------------------------------------
DICTIONARY Description of data dictionary tables and views
SQL> SELECT * from v$version ;
BANNER
________________________________________________________________
Oracle8 Release 8.0.5.1.0 _ Production
PL/SQL Release 8.0.5.1.0 _ Production
CORE Version 4.0.5.0.0 _ Production
TNS for Linux: Version 8.0.5.0.0 _ Production
NLSRTL Version 3.3.2.0.0 _ Production
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
121
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.
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
122
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.
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 38
Orasoft SQLWork
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
123
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.
Figure 39
ObjectManager de Orasoft
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
124
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/.
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
125
Voici un exemple simple de programme qui vrifie un code de statut et
imprime un message en se servant de Perl pour se connecter Oracle :
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.
Figure 310
Orac
# !/usr/bin/perl
use DBI;
# Le nom du serveur est Orcl, lutilisateur webuser, le mot de passe iluv8i
my $DBH = DBI->connect(orcl, webuser, iluvo8i) or
warn("Cannot connect to database ", $DBI::errstr);
my $sth = $DBH->prepare("select stat_msg from cust_table
where stat_code=1002");
$sth->execute;
my $hashref = $sth->fetchrow_hashref;
print "Status Message: $hashref->{STAT_MSG}\n"
$DBI->disconnect ;
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
126
La zone globale systme (SGA) est un composant mmoire critique : la SGA
est un facteur cl dans le rglage des performances.
Les installations de Oracle8 et de Oracle8i exigent des tapes de prinstalla-
tion similaires. Oracle8 a besoin de moins de ressources matrielles et a t
examin plus longuement, par contre Oracle8i est orient vers lInternet et
comprend un environnement dexcution Java natif, dans le serveur, ainsi que
de nouvelles fonctionnalits de scurit et XML. Oracle8 a t conu pour
Red Hat Linux 5.2 et a besoin de bibliothques de compatibilit pour sexcu-
ter sous les versions Red Hat Linux 6.0 et 6.1.
Oracle8 et 8i prsentent de nombreuses caractristiques de scurit dont les
privilges systme, les privilges dobjets et les rles. Le dictionnaire des
donnes est un rfrentiel central, en lecture seule, des tables et des vues.
Oracle se sert du dictionnaire des donnes pour trouver les dfinitions
dobjets, lallocation de lespace, les contraintes dintgrit, les privilges et
les informations de vrification. SQL*Plus est linterface dorigine du
SGBDR Oracle fourni par Oracle Corporation. Les utilitaires Import et
Export servent charger des donnes dans la base de donnes ou en
extraire ; SQL*Loader permet dimporter des donnes dautres bases de
donnes. SQLWork, Object Manager et Orac sont des exemples dapplica-
tions tierces pour Linux. Perl est un langage excellent de dveloppement web
et a une excellente connectivit Oracle.
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.
copyright ditions Eyrolles
Installer et utiliser Oracle sur Linux
CHAPITRE III
127
Q. O se trouve le fichier libclntsh.so.8.0 ?
R. Les fichiers libclntsh.so.1.0 pour Oracle8 et libclntsh.so.8.0 pour Oracle8i
peuvent tre gnrs laide du script genclntsh, situ dans
$ORACLE_HOME/bin. En principe, il est cr pendant linstallation.
Excutez genclntsh si vous avez des problmes de connexion entre des
machines 8.1.5 et 8.0.5.
Q. O puis-je trouver plus dinformations sur Oracle ?
R. Le rseau OTN, Oracle Technology Network (http://technet.oracle.com)
fournit de la documentation sur tous les produits Oracle. Lditeur
OReilly (http://www.oreilly.com/) a une excellente collection de livres
sur Oracle. Oracle : The complete reference par George Koch et Kevin
Loney est un livre important, une rfrence utile.
Q. O puis-je trouver un groupe dutilisateurs Oracle ?
R. Le groupe international des utilisateurs Oracle (http://www.ioug.org/) tient
la liste des groupes dutilisateurs Oracle.
copyright ditions Eyrolles
IV
4
Installer
Informix
sur Linux
Dans ce chapitre
Installation
Besoins despace
Configuration
Autres outils
Ressources
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
130
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).
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
131
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
132
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.
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
133
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
134
Pour la petite histoire : Postgres, un autre moteur de base de donnes bien
connu pour Linux, trouve son origine dans Ingres, notamment chez Michael
Stonebreaker, qui a invent Ingres. Quand Informix a achet la version
commerciale de Postgres, appele Illustra, la socit a surtout achet les
cerveaux concepteurs dIngres (maintenant Postgres, en format objet-
relationnel), et a renomm le produit Universal Server.
Postgres continue vivre de son ct, et Universal Server, maintenant absorb
par Informix, a trouv une suite dans IDS.2000. Les moteurs IDS 7.30 et
lancien Universal Server 9.x ont t combins pour donner naissance au
meilleur de ces deux mondes dans IDS.2000. Du point de vue de larchitec-
ture, le rsultat final est suffisamment semblable au prcdent (cest--dire,
IDS 7.30) pour permettre la migration dIDS 7.30 vers IDS.2000, sans aucune
ou presque modification de lenvironnement. Nous ne testerons pas ce
cas ici, mais Informix a publi cela comme quelque chose de non seulement
faisable, mais aussi comme faisant partie dune offre promotionnelle
damlioration.
Les installations dInformix sont, en principe, divises en trois parties :
extraction du logiciel ;
marquage (branding) de linstallation ;
mise en uvre du logiciel.
La premire tape, lextraction du logiciel, implique lacquisition et la mise
en place du logiciel. Tout dpend de la forme sous laquelle le logiciel est
distribu, et des tapes parcourir pour mettre le logiciel dans un format qui
convient ltape suivante, le marquage de linstallation. Ces prliminaires
sont souvent les plus difficiles ; le marquage de linstallation proprement dit
est la partie la moins pnible de linstallation.
La seconde tape, marquage de linstallation, a quelque peu volu depuis sa
forme dorigine, except dans le monde Windows, o InstallShield a pris la
place de linstallation UNIX. Informix distribue traditionnellement ses logi-
ciels selon cette mthode en trois tapes, le mdia de distribution tant en
gnral un CD-ROM contenant un fichier ou des fichiers tar et, dans beau-
coup de cas, un CD avec un fichier CPIO. Il y a, bien sr, des exceptions et
dautres formats. Depuis ces derniers mois, certains des logiciels sont fournis
avec une option dinstallation dune interface X Window qui ressemble la
manire dont WordPerfect est install sur UNIX, mais ce nest pas une norme.
La distribution Linux des moteurs Informix a fait son apparition, au format du
gestionnaire de paquet Red Hat (RPM) et tar, quand le premier portage Linux
a t ralis. Le dernier moteur 7.30, IDS 7.30.UC10, est encapsul dans un
fichier RPM, qui, son tour, est encapsul dans un fichier zip. Dautres
composants viennent complter le logiciel, dans des fichiers .tar.gz, entre
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
135
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.
Acquisition et mise en place du logiciel sur le serveur
Il faut initialiser trois variables denvironnement dans les comptes informix et
root. Oui, il faut un id informix et un groupe informix. Nous verrons cela plus
tard, mais cest une bonne ide de se poser la question ds maintenant. Pour
linstant, crons ces variables denvironnement sur le systme ; nous aurons
loccasion dy revenir :
Remplacer le nom rebel par le vtre ; il servira de rfrence partout. Bien
placer ces commandes dans les profils informix et root, et sassurer que les
profils mettent bien ces valeurs dans lenvironnement la connexion, avant
de commencer linstallation. Tant que les variables $INFORMIXDIR ne sont
pas initialises, linstallation ne peut pas se poursuivre. Dconnectez et recon-
nectez-vous, et assurez-vous que ces variables sont bien initialises.
INFORMIXDIR=/opt/informix/ids ; export INFORMIXDIR
INFORMIXSERVER=rebel_shm ; export INFORMIXSERVER
ONCONFIG=rebel_shm.cfg ; export ONCONFIG
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
136
Tlcharger le fichier zip depuis www.intraware.com. Dans ce fichier zip se
trouve un fichier RPM qui contient des fichiers tar et un script dinstallation.
Bien suivre les recommandations dInformix pour linstallation de leur logi-
ciel.
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.
Double-cliquer sur le fichier zip pour louvrir dans Karchiver si celui-ci a t
install, et si lon se sert de linterface de navigation de fichier HTML/Web de
KDE comme gestionnaire de fichier. Cest plus facile quil ny parat il
suffit de double-cliquer sur le fichier zip dans une fentre dauto-dmarrage,
et Karchiver affiche la liste de son contenu. ce moment, extraire tout ce que
lon voit et le mettre dans un rpertoire de travail, mais pas dans celui o lon
va installer en dfinitive le logiciel. Dans le menu Fichier, choisir loption
Extract to, choisir un rpertoire et extraire tous les fichiers (figure 4.1).
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 41
Vue du fichier zip tlcharger, dans Karchiver
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
137
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 rpmsur 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 42
Vue des rpertoires crs aprs extraction des fichiers et dun RPM du client SDK
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
138
logiciel. Notre prochaine tape sera la phase dinstallation et de marquage.
Quand on a trouv un endroit o placer le logiciel et quil a t extrait du
fichier RPM, on peut le marquer et configurer lespace de base de donnes du
disque pour conserver les bases de donnes et les tables.
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,
Figure 43
Dmarrer linstallation du client SDK (Iconnect)
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
139
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 :
Il faut le faire avant dutiliser les commandes rpm en ligne de commande, de
manire extraire le logiciel en se rfrant $INFORMIXDIR. Le signe $ qui
figure au dbut des lignes de commandes est simplement une invite ; ne pas
lutiliser dans les commandes cites.
Quand le script dinstallation du client SDK est termin (figure 4.3), excuter
les mmes oprations pour installer le serveur :
On peut installer soit le SDK soit le moteur en premier cela na pas
dimportance. Extraire le logiciel du rpm, marquer le logiciel, extraire le
second logiciel du second rpm, puis marquer. Cest la mthode correcte qui
vous vitera des problmes. Une fois acheve cette phase de linstallation,
vous tes prt initialiser le serveur pour le rendre oprationnel (figure 4.4).
Il est important de relancer le script dinstallation de chaque produit si lon
transfre larborescence des rpertoires sur un autre systme ou sur un autre
lecteur. Il suffit dexcuter le script dinstallation de chaque produit, en
sassurant au pralable que $INFORMIXDIR est bien renseign, et la rinstalla-
tion se fait sans problme. Remarque : il y a quelques oprations de dernire
minute (tablir des liens) qui doivent tre faites dans lordre pour que le
serveur fonctionne correctement. Linstallation excute cette tape la fin ; il
est donc important de rinstaller si lon transfre le rpertoire ou larbre. Il
faut se souvenir que Linux na aucun registre, contrairement Windows NT
ou 98, de sorte que les seules choses dont on doit se proccuper sont les liens
finaux crs la fin de linstallation. On peut aussi visiter le site web dInfor-
mix pour trouver des astuces et des techniques de rcupration de lespace
disque occup par certains fichiers NLS, installs pour des langages dont on
na pas besoin.
INFORMIXDIR=/opt/informix/ids ; export INFORMIXDIR
$ cd /root/ids730uc101_linux/connect210uc3
$ rpm iv prefix $INFORMIXDIR *.rpm
$ cd $INFORMIXDIR
$. /installconn
$ cd /root/ids730uc101_linux/ids730uc10
$ rpm iv prefix $INFORMIXDIR *.rpm
$ cd $INFORMIXDIR
$. /installserver
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
140
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.
Figure 44
Achvement avec succs de linstallation dun serveur IDS
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
141
Initialisation du disque et dmarrage du serveur
Nous pouvons maintenant aborder les aspects oprationnels dIDS. Ce dont il
va tre question doit tre prpar lavance, et un certain volume despace
disque rserv pour les dbspaces, o rsideront la base de donnes relle et
les tables. Ce chapitre met laccent sur les aspects de linstallation dun
serveur Informix : il sagit de se familiariser avec une certaine terminologie
dInformix avant de poursuivre.
Parcourir le Guide de ladministrateur pour IDS, que lon trouve sur le site
web dInformix ou sur CD-ROM. Une impression papier de ce manuel est
disponible, mais un certain prix. Un conseil : trouver le dernier CD-ROM de
la documentation connue sous le titre Documentation en ligne et rponses,
qui contient des documents pour tous les produits de base de donnes Infor-
mix. Le CD-ROM de cette documentation est disponible directement chez
Informix, ou peut tre command auprs du bureau de ventes rgional. La
documentation est encore disponible sur le site web Informix : prendre le
temps de la tlcharger et se familiariser avec le Guide de ladministrateur ;
ce manuel dcrit tout ce que vous avez besoin de savoir pour que votre instal-
lation se passe bien.
Abordons maintenant les avantages respectifs des fichiers bruts non formats
(raw disk) et des fichiers prformats, prts lemploi (cooked) quil vaut
mieux bien connatre. Actuellement, Linux nest pas encore vraiment orient
disque brut comme le sont beaucoup de plates-formes UNIX, mais il est
probable que cette approche sera mise en place au moment de la publication
de cet ouvrage. Certains sites se servent de disques bruts sans incident, mais,
actuellement, cette option nest pas prise en charge.
Une installation raw disk, en bref, permet de lier logiquement le logiciel
Informix en direct sur des disques non formats (des lecteurs physiques qui ne
sont pas monts par le systme de fichier) ; cest le logiciel Informix qui
prend en charge les oprations de formatage et daccs aux disques. Avec les
disques bruts, Informix joue le rle de systme dexploitation disque pour les
lecteurs initialiss en tant que raw disk. La seule chose qui reste la charge de
Linux est de fournir une entre dans le rpertoire /dev qui pointe vers le
lecteur de disques. Un lien logique est cr dans un rpertoire que lon choisit,
pour pointer vers le rpertoire /dev et lentre du lecteur. Par exemple, crons
un rpertoire /opt/informix/links, puis un lien dans ce rpertoire qui pointe
vers le rpertoire /dev. Sil y a un disque dans /dev appel /dev/rdisk1, il suffit
de crer le lien comme ceci :
Quand on fait un ls l, on voit le lien, mais pas le disque.
$ cd /opt/informix/links
$ ln s /dev/rdisk1 datadbs01
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
142
Une installation de disques prformats (cooked), par contre, permet de crer
des fichiers Linux dune certaine taille, que Linux grera en mme temps
quInformix. Les fichiers cooked sont des fichiers Linux normaux et se
prsentent comme tels. Les fichiers cooked sont crs avec une taille spcifi-
que explicite et font lobjet dune sauvegarde standard, sous rserve que le
serveur Informix soit hors ligne et arrt. Les fichiers cooked doivent tre
ferms, comme tout fichier Linux, pour pouvoir tre sauvegards. Lavantage
des fichiers cooked est simplement que ce sont des fichiers Linux normaux et
que leur sauvegarde est aussi simple que celle des autres fichiers Linux.
Quand on excute un ls l sur le rpertoire, les fichiers cooked apparaissent
comme des fichiers Linux normaux (voir figure 4.5). Quand on inspecte un
disque brut, le listing du rpertoire montre un lien vers /dev entries, mais
aucune taille de fichier napparat, car ces disques sont sous le contrle
dInformix. Pour en savoir plus sur les disques bruts, utiliser la commande
Informix onstat qui montre lespace utilis ; cest le seul moyen de voir ce
quils contiennent. Utiliser les fichiers cooked tant que lon nest pas familia-
ris avec linitialisation des disques bruts.
Informix sur Linux obtient de trs bonnes performances avec les fichiers
cooked, mais il est prfrable, sur UNIX, dutiliser les disques bruts : les
performances sont souvent de 15 20 % suprieures celles des fichiers
cooked. Actuellement, on ne dispose pas encore de bancs dessai qui compa-
Figure 45
Exemple de listing du rpertoire de fichiers cooked dbspaces dont se sert le logiciel Informix pour
ranger les donnes
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
143
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.
Cration des fichiers de donnes pour Informix
Crer un second rpertoire, /opt/data, ou /db/data, ou, de prfrence sur un
lecteur physique spar, un rpertoire appel /data, dans lequel on cre un
sous-rpertoire appel /data/informix. Soit un lecteur spar appel /db, et un
rpertoire /db/data, qui est la racine de toutes les donnes. Pour notre installa-
tion, nous utiliserons /opt/data, mais vous aurez un rpertoire diffrent. Main-
tenir, autant que possible, les donnes spares du logiciel. Comme nous le
verrons plus loin, il faut allouer au moins 500 Mo pour les donnes, sinon
plus. Faire des conomies de bouts de chandelle sur lespace des donnes na
aucun sens, sauf si on ne peut lviter. Lorsque nous parlons dallocation
despace, cela veut dire lespace total, pas celui de fichiers spcifiques.
Lespace total agrg ne sera pas infrieur 500 Mo, et nous crerons des
fichiers cooked de diffrentes tailles dans cet espace.
Informix se sert de chunks (morceaux) pour dcrire la valeur la plus grande de
lespace des donnes. Toutes les donnes rsident dans les chunks lintrieur
de pages, qui sont la plus petite unit de mesure de lespace des donnes. Le
lecteur se reportera au Guide de ladministrateur pour une description
complte des chunks et des pages. Comme ce chapitre utilise cette terminolo-
gie pour expliquer la fin de linstallation, il est important de comprendre ces
concepts. Avec le logiciel Informix, vous trouverez une excellente documen-
tation, alors profitez-en.
Aprs stre familiaris avec les concepts de chunks et de dbspaces, on peut
configurer le serveur pour le dmarrer. Initialisons un serveur qui permet
chacun de spcifier sa propre manire dutiliser lespace des donnes ainsi
que lespace oprationnel minimal mettre en rserve. Cette mthode vous
permettra daugmenter la taille du systme avec un minimum de dsagr-
ments.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
144
Il faut rserver de lespace disque pour un certain nombre de dbspaces. Il
sagit dun minimum. Pour le reste, cest--dire les espaces disques ajouter,
cest vous den valuer les besoins. Voici les espaces oprationnels :
Rootdbs : contient la base de donnes sysmaster, le centre intelligent du
moteur de base de donnes.
Physdbs : sert stocker les donnes avant de les crire sur le disque. Il est
compris dans le rootdbs, mais le transfrer dans son propre dbspace
amliore les performances et ladministration. On peut lappeler comme
on veut : cependant, il est recommand de le nommer de manire coh-
rente avec sa fonction.
Logsdbs : contient les logs logiques. Aprs linstallation, il est inclus dans
le rootdbs, mais il sera plac dans son propre dbspace, pour amliorer le
fonctionnement. On peut lappeler comme on veut ; nanmoins, il est
recommand de le nommer lui aussi de manire cohrente.
Tempdbs01 : sert aux tables temporaires et au tri des requtes, que lon
nomme aussi comme on veut, de manire cohrente...
Les suivants sont des espaces de donnes, que lon nomme comme on veut.
Dbs_dbs : ddi la cration de la base de donnes, mais non aux tables.
Une entre de base de donnes est cre, ainsi que quelques entres de
tables systme de base, mais les tables utilisateur sont rfrences en
dehors de cet espace.
Datadbs01 : tables utilisateur.
Indexdbs01 : index utilisateur.
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.
propos des disques
Initialiser une zone, sur le systme, pour recevoir Informix. Il y a trois zones
prendre en considration : le logiciel, les dbspaces et une zone de travail pour
les sauvegardes, les chargements et autres tches.
Les disques SCSI sont recommands, de prfrence aux disques IDE, en
raison de leur vitesse et de leur souplesse. SCSI permet de chaner ensemble
des lecteurs plus facilement quIDE. Si lon a une exprience suffisante, on
peut mettre au point, sur IDE, une initialisation de disque similaire, sachant
quil y a encore des limitations sur IDE. SCSI est donc plus souple. Aussi,
nhsitez pas quiper votre systme dun contrleur et de lecteurs SCSI.
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
145
Disques et rpertoires
Voici la description du contenu des rpertoires /opt/informix/ids7.30 et
/opt/data :
/opt/informix/ids7.30 contient le logiciel tout le logiciel est situ dans
cet arbre. Rserver au minimum 500 Mo pour le logiciel Informix.
Aucune donne ne doit tre range ici. Se servir de cette convention pour
le nom de rpertoire : cela permet dajouter dautres versions du logiciel
sous /opt/informix et de tester facilement la migration ou la mise jour du
logiciel, par un simple changement de la variable denvironnement
$INFORMIXDIR.
/opt/data contient les dbspaces des fichiers cooked ; si possible, le mettre
sur un autre disque. Ce rpertoire est rserv aux donnes.
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
146
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.
Important. Beaucoup de BIOS de PC ne permettent pas lutilisation de grands
lecteurs dans Linux, mme si le matriel est de facture rcente. La plupart des BIOS ne
supportent aucun des plus grands lecteurs faire attention quand on se sert des
lecteurs IDE. Cest lune des raisons les plus importantes dutiliser les SCSI : on nest
pas limit par le contrleur interne pour lagencement des disques quand on configure
les lecteurs pour Linux.
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.
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
147
La variable INFORMIXSERVER correspond directement au DBSERVERNAME
dans le fichier $ONCONFIG. Utiliser, pour DBSERVERNAME, le mme nom
que celui qui a servi initialiser INFORMIXSERVER. Cela est essentiel pour la
connexion rseau entre un client et le serveur. On utilisera, pour la variable
INFORMIXSERVER, le mme nom sur les clients que lon souhaite connecter
ce serveur. INFORMIXSERVER sert aussi aux utilitaires, tels que onstat, pour
communiquer avec linstance correcte du moteur.
$INFORMIXDIR/etc/$ONCONFIG
Aller dans le rpertoire $INFORMIXDIR, et parcourir larbre des rpertoires.
/cnl/nfcrnx/1.L.S.
__aaccr
__Ln
__cLssccr
__cenc
__cLaccess
__elc
__fcrns
___`s
__cn
__cv
__`c11
__cs_cz
__ca_cl
__ce_al
__ce_cl
__ce_ce
__en_au
__en__L
__en_us
__es_es
__f_f
__fr_Le
__fr_ca
__fr_cl
__fr_fr
__s_s
__l_l
__a_
__lc_lr
__n`_Le
__n`_n`
__nc_nc
__cs
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
148
Nous allons travailler dans $INFORMIXDIR et dans le rpertoire Linux /etc
normal. Comme vous pouvez le voir, le logiciel Informix a son propre rper-
toire /etc, o se trouvent tous les fichiers ncessaires la configuration. Les
deux plus critiques, onconfig.std et sqlhosts, feront lobjet de notre attention
avant linstallation. Faire des copies avant de lancer le moteur, car aprs
linstallation, il faudra encore travailler sur le $ONCONFIG et y faire les ajus-
tements ncessaires pour rendre IDS compltement oprationnel.
En plus de ce que vous lirez ici ou dans le Guide de ladministrateur, il faudra
consulter les notes de la version IDS qui contiennent des instructions dinstal-
lation de dernire minute : elles se trouvent dans le rpertoire $INFORMIXDIR/
release/en_us/0333. Il y a des notes importantes concernant tous les aspects
du logiciel install.
Aller dans le rpertoire $INFORMIXDIR/etc et passer la commande ls CaF.
On voit apparatre toutes sortes de fichiers entre autres, onconfig.std. Il
faut faire une copie de ce fichier la copie portera le nom indiqu dans la
variable $ONCONFIG.
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
__`_`
__l_Lr
__l_l
__ru_ru
__sl_sl
__sv_se
__ll_ll
__zl_cn
__zl_l.
__nc`
__esq`
__l`
__`L
__c`
__cn
__esq`
__ns_
__en_us
__C
__re`ease
__en_us
__C
$ cd $INFORMIXDIR/etc
$ cp onconfig.std rebel_shm.cfg
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
149
fonctionnent sur le mme serveur ; _shm signifie simplement shared memory
(mmoire partage), et relve dun got personnel. L aussi, appelez le fichier
ONCONFIG comme vous voulez assurez-vous seulement de le nommer
correctement, comme nous lavons montr.
Une fois que vous lavez copi, mettez-vous dans votre diteur de texte
favori, et suivez les instructions qui suivent. Il est important de sauvegarder
ce fichier en format texte ASCII, aussi assurez-vous que votre diteur autorise
ldition de texte simple. Personnellement, je prfre utiliser vi ; mais, dans
Linux, il y a plusieurs diteurs de texte, qui ressemblent Notepad de Micro-
soft Windows.
Remplacer, dans la commande vi rebel_shm.cfg, vi par le nom de lditeur de
texte, puis diter le fichier ONCONFIG.
$ vi rebel_shm.cfg
#******************************************************************
#
# INIOlhIX SOITWAl, INC.
#
# Tit1e: onconfiq.sto
# escrition: Infornix ynanic Server Confiquration laraneters
#
#*******************************************************************
# loot tsace Confiquration
lOOTNAh rootots # loot otsace nane
lOOTlATF /oev/on1ine_root # latI for oevice containinq root otsace
lOOTOIIST # Offset of root otsaceinto oevice ltytes)
lOOTSIZ Z # Size of root otsace ltytes)
# isl hirrorinq Confiquration laraneters
hIllOl # hirrorinq f1aq Yes = i, No = )
hIllOllATF # latI for oevice containinq nirroreo root
hIllOlOIIST # Offset into nirroreo oevice ltytes)
# lIysica1 Loq Confiquration
lFYSBS rootots # Location otsace) of Iysica1 1oq
lFYSIIL i # lIysica1 1oq fi1e size ltytes)
# Loqica1 Loq Confiquration
LOIILS 6 # Nunter of 1oqica1 1oq fi1es
LOSIZ 5 # Loqica1 1oq size ltytes)
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
150
# iaqnostics
hSlATF /usr/infornix/on1ine.1oq # Systen nessaqe 1oq fi1e atI
CONSOL /oev/conso1e # Systen conso1e nessaqe atI
ALAlhllOlAh /usr/infornix/etc/1oq_fu11.sI # A1arn roqran atI
SYSALAlhllOlAh /usr/infornix/etc/evioence.sI
# Systen A1arn roqran atI
TBLSlAC_STATS i
# Systen ArcIive Tae evice
TAlV /oev/taeoev # Tae oevice atI
TAlBLl i6 # Tae t1ocl size ltytes)
TAlSIZ iZ4 # haxinun anount of oata to ut on tae ltytes)
# Loq ArcIive Tae evice
LTAlV /oev/taeoev # Loq tae oevice atI
LTAlBLl i6 # Loq tae t1ocl size ltytes)
LTAlSIZ iZ4 # hax anount of oata to ut on 1oq tae ltytes)
# Otica1
STABLOB # Infornix ynanic Server/Otica1 staqinq area
# Systen Confiquration
SlVlNUh # Unique io corresonoinq to a
# ynanic Server instance
BSlVlNAh # Nane of oefau1t oatatase server
BSlVlALIASS # List of a1ternate otservernanes
NTTYl # Confiqure o11 tIreaos) for nettye
ALOCl_TIhOUT 6 # hax tine to wait of 1ocl in oistrituteo env.
lSINT # Iorceo resioency f1aq Yes = i, No = )
hULTIllOCSSOl # for sinq1e-rocessor,
# i for nu1ti-rocessor
NUhClUVlS i # Nunter of user cu) vs
SINL_ClU_Vl # If non-zero, 1init nunter of cu vs to one
NOA # lrocess aqinq
AII_SllOC # Affinity start rocessor
AII_NllOCS # Affinity nunter of rocessors
# SIareo henory laraneters
LOClS Z # haxinun nunter of 1ocls
BUIIlS Z # haxinun nunter of sIareo tuffers
NUhAIOVlS # Nunter of IO vs
lFYSBUII 8Z # lIysica1 1oq tuffer size ltytes)
LOBUII 8Z # Loqica1 1oq tuffer size ltytes)
LOShAX 6 # haxinun nunter of 1oqica1 1oq fi1es
CLANlS i # Nunter of tuffer c1eaner rocesses
SFhBAS xiL # SIareo nenory tase aooress
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
151
SFhVIlTSIZ 8 # initia1 virtua1 sIareo nenory seqnent size
SFhA 8i9Z # Size of new sIareo nenory seqnents ltytes)
SFhTOTAL # Tota1 sIareo nenory ltytes). =>un1initeo
CllTINTVL 8 # CIecl oint interva1 in sec)
LlUS 8 # Nunter of LlU queues
LlU_hAX_IlTY 6 # LlU ercent oirty teqin c1eaninq 1init
LlU_hIN_IlTY 5 # LlU ercent oirty eno c1eaninq 1init
LTXFWh 5 # Lonq transaction IiqI water narl ercentaqe
LTXFWh 6 # Lonq transaction IiqI water narl exc1usive)
TXTIhOUT 8 # Transaction tineout in sec)
STAClSIZ 8Z # Stacl size ltytes)
# Systen laqe Size
# BUIISIZ - ynanic Server no 1onqer suorts tIis confiquration
# araneter. To oeternine tIe aqe size useo ty ynanic Server on your
# 1atforn see tIe 1ast 1ine of outut fron tIe connano, `onstat -t`.
# lecovery Variat1es
# OII_lCVlY_TFlAS : Nunter of ara11e1 worler tIreaos
# ourinq fast recovery or an off1ine restore.
# ON_lCVlY_TFlAS : Nunter of ara11e1 worler tIreaos
# ourinq an on1ine restore.
OII_lCVlY_TFlAS i # efau1t nunter of off1ine worler tIreaos
ON_lCVlY_TFlAS i # efau1t nunter of on1ine worler tIreaos
# ata le1ication Variat1es
# lAUTO: nanua1, i retain tye, Z reverse tye
lAUTO # l autonatic switcIover
lINTlVAL 8 # l nax tine tetween l tuffer f1usIes
# in sec)
lTIhOUT 8 # l networl tineout in sec)
lLOSTIOUN /usr/infornix/etc/or.1ostfouno # l 1ostfouno fi1e atI
# Cl Variat1es
Cl_LOBUIIlS Z48 # size of 1oq reaoinq tuffer oo1 ltytes)
Cl_VALTFlAS i,Z # eva1uator tIreaos er-cu-v,aooitiona1)
Cl_SLOClWAIT 5 # S 1oclwait tineout seconos)
Cl_UUhh 496 # haxinun anount of nenory for any Cl queue
# ltytes)
# Baclu/lestore variat1es
BAl_ACT_LO /tn/tar_act.1oq
BAl_hAX_BAClUl
BAl_lTlY i
BAl_NB_XlOlT_COUNT i
BAl_XIl_BUI_SIZ 8i
# Infornix Storaqe hanaqer variat1es
ISh_ATA_lOOL IShata # If tIe oata oo1 nane is cIanqeo, te sure to
# uoate 5INIOlhIXIl/tin/ontar. CIanqe to :
# LVPBFDWDORJ FUHDWHBERRWVWUDS SRRO QHZ QDPH!
ISh_LO_lOOL IShLoqs
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
152
# leao AIeao Variat1es
lA_lAS # Nunter of aqes to attent to reao aIeao
lA_TFlSFOL # Nunter of aqes 1eft tefore next qrou
# BSlACThl:
# ynanic Server equiva1ent of BThl for S. TIis is tIe 1ist of
# otsaces tIat tIe ynanic Server SL nqine wi11 use to create ten
# tat1es etc. If secifieo it nust te a co1on searateo 1ist of
# otsaces tIat exist wIen tIe ynanic Server systen is trouqIt
# on1ine. If not secifieo, or if a11 otsaces secifieo are
# inva1io, various ao Ioc queries wi11 create tenorary fi1es in
# /tn insteao.
BSlACThl # efau1t ten otsaces
# Uhl*:
# TIe fo11owinq araneters contro1 tIe tye of oiaqnostics infornation
# wIicI is reserveo wIen an unanticiateo error conoition assertion
# fai1ure) occurs ourinq ynanic Server oerations.
# Ior UhlSFhh, UhlCOl ano UhlCOl i neans Yes, neans No.
UhlIl /tn # lreserve oiaqnostics in tIis oirectory
UhlSFhh i # un a coy of sIareo nenory
UhlCOl # un a core inaqe usinq `qcore`
UhlCOl # un a core inaqe
# Warninq:tIis atorts ynanic Server)
UhlCNT i # Nunter of sIareo nenory or qcore ouns for
# a sinq1e user`s session
IILLIACTOl 9 # Ii11 factor for tui1oinq inoexes
# netIoo for ynanic Server to use wIen
# oeternininq current tine
USOSTIh # : use interna1 tinefast),
# i: qet tine fron OSs1ow)
# lara11e1 atatase ueries oq)
hAX_lllIOlITY i # haxinun a11oweo oqriority
S_hAX_UlIS # haxinun nunter of oecision suort queries
S_TOTAL_hhOlY # ecision suort nenory ltytes)
S_hAX_SCANS i48576 # haxinun nunter of oecision suort scans
ATASlIl # List of otsaces to sli
# OlTCOhlIN
# => Nesteo 1oo oins wi11 te referreo wIere
# ossit1e) over sortnerqe oins ano IasI oins.
# i => If tIe transaction iso1ation nooe is not
# "reeatat1e reao", otinizer teIaves as in Z)
# te1ow. OtIerwise it teIaves as in ) atove.
# Z => Use costs reqaro1ess of tIe transaction iso1ation
# nooe. Nesteo 1oo oins are not necessari1y
# referreo. Otinizer tases its oecision ure1y
# on costs.
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
153
La premire section est extrmement importante, parce quil faut maintenant
changer les options pour indiquer o seront ranges les donnes. Dans notre
exemple, nous utiliserons le rpertoire /opt/data pour y mettre les donnes, y
compris les rootdbs.
Maintenant, effectuons la modification (ligne ROOTPATH) :
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
OlTCOhlIN Z # To Iint tIe otinizer
ONBSlACOWN Z
# tsace oown otion: = CONTINU, i = ABOlT, Z = WAIT
LBU_llSlV # lreserve 1ast 1oq for 1oq taclu
OlCACFhAX # haxinun otica1 cacIe size ltytes)
# FTlO_COhhIT ateway articiation in oistrituteo transactions)
# i => Feteroqeneous Connit is enat1eo
# or any otIer va1ue) => Feteroqeneous Connit is oisat1eo
FTlO_COhhIT
# Otinization qoa1: -i = ALL_lOWSefau1t), = IIlST_lOWS
OlT_OAL -i
# Otinizer IlCTIVS ON i/efau1t) or OII )
IlCTIVS i
# Status of restartat1e restore
lSTAlTABL_lSTOl OII
# loot tsace Confiquration - avant
lOOTNAh rootots # loot otsace nane
lOOTlATF /oev/on1ine_root # latI for oevice containinq root otsace
lOOTOIIST # Offset of root otsace into oevice ltytes)
lOOTSIZ Z # Size of root otsace ltytes)
# loot tsace Confiquration - aprs
lOOTNAh rootots # loot otsace nane
lOOTlATF /opt/data/rootdbs # latI for oevice containinq root otsace
lOOTOIIST # Offset of root otsace into oevice ltytes)
lOOTSIZ Z # Size of root otsace ltytes)
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
154
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.
Nous faisons nos changements comme suit :
# Systen ArcIive Tae evice - avant
TAlV /oev/taeoev # Tae oevice atI
TAlBLl i6 # Tae t1ocl size ltytes)
TAlSIZ iZ4 # haxinun anount of oata to ut on tae ltytes)
# Loq ArcIive Tae evice
LTAlV /oev/taeoev # Loq tae oevice atI
LTAlBLl i6 # Loq tae t1ocl size ltytes)
LTAlSIZ iZ4 # hax anount of oata to ut on 1oq tae ltytes)
# Systen ArcIive Tae evice - aprs
# TAlV /oev/taeoev # Tae oevice atI
TAlV /dev/null # Tae oevice atI
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
155
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.
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 :
TAlBLl i6 # Tae t1ocl size ltytes)
TAlSIZ iZ4 # hax anount of oata to ut on 1oq tae ltytes)
# Loq ArcIive Tae evice
# LTAlV /oev/taeoev # Loq tae oevice atI
LTAlV /dev/null # Loq tae oevice atI
LTAlBLl i6 # Loq tae t1ocl size ltytes)
LTAlSIZ iZ4 # hax anount of oata to ut on 1oq tae ltytes)
# iaqnostics - avant
hSlATF /usr/infornix/on1ine.1oq
# Systen nessaqe 1oq fi1e atI
CONSOL /oev/conso1e # Systen conso1e nessaqe atI
ALAlhllOlAh /usr/infornix/etc/1oq_fu11.sI
# A1arn roqran atI
SYSALAlhllOlAh /usr/infornix/etc/evioence.sI
# Systen A1arn roqran atI
TBLSlAC_STATS i
$ cd $INFORMIXDIR
$ mkdir logs
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
156
Remarquez que les messages sont envoys en sortie de la CONSOLE vers
/dev/null et /opt/informix/ids/logs/console.log. Il vaut mieux, pour la proc-
dure dinstallation initiale, mettre /opt/informix/ids/logs/console.log, pour
conserver les messages dinstallation, mais on peut toujours modifier cela
plus tard. La plupart des messages de la console napportent pas dinforma-
tions intressantes ; l encore, cest une option grer soi-mme : on peut
souhaiter les voir tous dans un premier temps, et prfrer, par la suite, ne les
voir que sils sont importants.
Passons la section de configuration du systme, o nous oprerons aussi
quelques modifications :
Cest ici que nous donnons un nom linstance du moteur et que nous lui
indiquons comment communiquer avec le rseau :
$ chown informix:informix logs
$ chmod 775 logs
# iaqnostics - aprs
hSlATF /ot/infornix/ios/1oqs/on1ine.1oq
# Systen nessaqe 1oq fi1e atI
# CONSOL /dev/null
# Systen conso1e nessaqe atI
CONSOLE /opt/informix/ids/logs/console.log
# Pour notre installation initiale seulement !
ALAlhllOlAh /ot/infornix/ios/etc/1oq_fu11.sI
# A1arn roqran atI
SYSALAlhllOlAh /ot/infornix/ios/etc/evioence.sI
# Systen A1arn roqran atI
TBLSlAC_STATS i
# Systen Confiquration - avant
SlVlNUh # Unique io corresonoinq to a ynanic Server
# instance
BSlVlNAh # Nane of oefau1t oatatase server
BSlVlALIASS # List of a1ternate otservernanes
NTTYl # Confiqure o11 tIreaos) for nettye
ALOCl_TIhOUT 6 # hax tine to wait of 1ocl in oistrituteo env.
lSINT # Iorceo resioency f1aq Yes = i, No = )
# Systen Confiquration aprs
SlVlNUh # Unique io corresonoinq to a ynanic Server
# instance
BSlVlNAh rebel_shm # Nane of oefau1t oatatase server
BSlVlALIASS rebel_net # List of a1ternate otservernanes
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
157
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 :
La changer en 50 :
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.
NTTYl soctcp,1,1,NET # Confiqure o11 tIreaos) for nettye
ALOCl_TIhOUT 6 # hax tine to wait of 1ocl in oistrituteo env.
lSINT # Iorceo resioency f1aq Yes = i, No = )
# SIareo henory laraneters
LOClS Z # haxinun nunter of 1ocls
BUIIlS Z # haxinun nunter of sIareo tuffers
NUhAIOVlS # Nunter of IO vs
lFYSBUII 8Z # lIysica1 1oq tuffer size ltytes)
LOBUII 8Z # Loqica1 1oq tuffer size ltytes)
LOGSMAX 6 # Maximum number of logical log files
CLANlS i # Nunter of tuffer c1eaner rocesses
SFhBAS xiL # SIareo nenory tase aooress
SFhVIlTSIZ 8 # initia1 virtua1 sIareo nenory seqnent size
SFhA 8i9Z # Size of new sIareo nenory seqnents ltytes)
SFhTOTAL # Tota1 sIareo nenory ltytes). =>un1initeo
CllTINTVL 8 # CIecl oint interva1 in sec)
LlUS 8 # Nunter of LlU queues
LlU_hAX_IlTY 6 # LlU ercent oirty teqin c1eaninq 1init
LlU_hIN_IlTY 5 # LlU ercent oirty eno c1eaninq 1init
LTXFWh 5 # Lonq transaction IiqI water narl ercentaqe
LTXFWh 6 # Lonq transaction IiqI water narl exc1usive)
TXTIhOUT 8 # Transaction tineout in sec)
STAClSIZ 8Z # Stacl size ltytes)
LOGSMAX 50 # haxinun nunter of 1oqica1 1oq fi1es
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
158
Il existe dautres changements possibles, que nous ferons, et lavenir vous
pourrez les faire, avec un peu dexprience ; pour linstant, laissons les
valeurs par dfaut.
Certaines options seront initialises pour la rplication des donnes ; bien que
cela ne nous concerne pas ce stade, il est bon de modifier le chemin, pour le
rendre conforme linstallation :
Aprs nos changements :
Passons ensuite la section de sauvegarde, un peu plus loin, pour une autre
modification :
Ici, nous devons seulement indiquer notre rpertoire, $INFORMIXDIR/logs :
Ce fichier peut devenir assez gros et il faudra grer sa croissance. On peut
crer un script de vidage du fichier log, ce que nous verrons la fin de ce
chapitre. Nous ferons un vidage non seulement de ce fichier mais aussi de
online.log, ce qui permet de conserver des fichiers log petits, et convient bien
une analyse priodique. On les archive chaque jour, chaque semaine ou
chaque mois, selon les besoins.
# ata le1ication Variat1es - avant
# lAUTO: nanua1, i retain tye, Z reverse tye
lAUTO # l autonatic switcIover
lINTlVAL 8 # l nax tine tetween l tuffer f1usIes in sec)
lTIhOUT 8 # l networl tineout in sec)
lLOSTIOUN /usr/infornix/etc/or.1ostfouno # l 1ostfouno fi1e atI
# ata le1ication Variat1es - aprs
# lAUTO: nanua1, i retain tye, Z reverse tye
lAUTO # l autonatic switcIover
lINTlVAL 8 # l nax tine tetween l tuffer f1usIes in sec)
lTIhOUT 8 # l networl tineout in sec)
lLOSTIOUN /opt/informix/ids/etc/dr.lostfound # l 1ostfouno fi1e atI
# Baclu/lestore variat1es - avant
BAl_ACT_LO /tn/tar_act.1oq
BAl_hAX_BAClUl
BAl_lTlY i
BAl_NB_XlOlT_COUNT i
BAl_XIl_BUI_SIZ 8i
# Baclu/lestore variat1es aprs
BAl_ACT_LO /opt/informix/ids/logs/bar_act.log
BAl_hAX_BAClUl
BAl_lTlY i
BAl_NB_XlOlT_COUNT i
BAl_XIl_BUI_SIZ 8i
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
159
Ici se termine ldition du fichier ONCONFIG. Sauvegardez ce fichier avec les
changements effectus et prparez-vous diter un autre fichier important, le
fichier $INFORMIXDIR/etc/sqlhosts. Nous ferons plus tard dautres change-
ments dans le fichier $ONCONFIG, mais pour linstant cest tout ce quil faut
faire pour dmarrer le moteur.
Les tches suivantes concernent ldition dautres fichiers ASCII. Assurez-
vous que ces fichiers sont sauvegards en tant que fichiers texte, comme nous
lavons fait pour ONCONFIG.
$INFORMIXDIR/etc/sqlhosts
Ajouter ces entres au fichier $INFORMIXDIR/etc/sqlhosts :
Elles se rapportent directement aux autres entres du fichier /etc/services,
aussi gardez-en la trace. La signification de ces valeurs est expose dans le
Guide de ladministrateur. En matire de convention, on peut donner les
valeurs que lon veut aux noms de la colonne droite (ici prfixes par sv_)
pour marquer quelles se rapportent aux entres du fichier /etc/services. Lors
de votre premire installation, suivez cette convention ; vous pourrez ensuite
en changer selon vos prfrences.
/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
rebel_shm onipcshm rebel sv_rebel_shm
rebel_net onsoctcp rebel sv_rebel_net
sv_rebel_shm 60000/tcp # Informix IDS 7.30 @ rebel
sv_rebel_net 60001/tcp # Informix IDS 7.30 @ rebel
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
160
certaines distributions de Linux. Les diverses distributions ont diffrents
niveaux dexcution, ce qui signifie que chaque distribution a des procdures
uniques de redmarrage du rseau. Une sorte de tradition conduit beaucoup
dadministrateurs systme Linux ne pas redmarrer leurs serveurs Linux
froid pour conserver le temps de fonctionnement (uptime) : ils sefforcent de
ne redmarrer que si cest vraiment ncessaire. Dans lintrt de la simplicit,
et pour rduire les risques derreur, redmarrez votre serveur Linux si vous
pouvez ; sinon, assurez-vous absolument que la couche rseau de Linux est
bien redmarre, et que le fichier /etc/services a t relu. Dans le cas
contraire, le serveur Informix ne peut pas parler aux clients sur le rseau, et
dautres problmes peuvent survenir au cours de linstallation.
Remarquer que les entres dans le fichier $INFORMIXDIR/etc/sqlhosts corres-
pondent aux entres dans le fichier /etc/services. Si elles ne concordent pas,
on ne peut pas dmarrer le moteur.
/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.
Dmarrer votre moteur avec oninit
Si vous avez suivi toutes les instructions jusqu prsent, vous tes prt
initialiser votre instance dInformix. Linitialisation est le processus par
lequel la base de donnes sysmaster est cre, et les rootdbs imports en
ligne. Il dmarrera le moteur et vous pourrez commencer crer des bases de
donnes et des tables.
$ mkdir /opt/data # seulement si vous navez pas ce rpertoire !!!
$ chown informix:informix /opt/data
$ chmod 775 /opt/data
$ cd /opt/data
$ >rootdbs
$ chown informix:informix rootdbs
$ chmod 660 rootdbs
$ ls l rootdbs
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
161
Vous pouvez maintenant excuter le programme oninit pour initialiser les
rootdbs. Souvenez-vous que ce que nous faisons l ne concerne que linstalla-
tion initiale. Par la suite, vous naurez pas rpter tous les jours cette initiali-
sation au dmarrage. Le programme oninit est le mme que celui que nous
utilisons pour dmarrer et arrter le moteur tous les jours, sans les options
dinstallation initiale. Il faut tre en mode root pour cette opration
dinstallation ; ensuite, le seul login pour le dmarrage quotidien sera
informix, et oninit sera utilis sans aucune option.
Pour initialiser le moteur, excuter la commande suivante dans un rpertoire
quelconque :
Pour retenir la combinaison de commande ivy, pensez au poison ivy
1
!
Ne pas sapprocher de loption i sauf pour excuter cette initialisation. On ne
lutilise quune seule fois cela pose beaucoup de problme si on lutilise
nouveau sur la mme instance.
i signifie : initialiser linstance ne faire quune seule fois !
v signifie : mode commentaire ;
y signifie : rpondre oui toutes les questions.
Figure 46
Crer le rpertoire /opt/data, et crer les rootdbs pour linitialisation
$ oninit ivy
1. Sumac vnneux ; le sumac est un arbuste aux nombreuses varits. N.d.T.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
162
Quand on excute la commande oninit ivy, le dialogue suivant apparat :
Immdiatement aprs ce dernier message, appuyer sur la touche Entre (ou
Return), et linvite de commande rapparat.
rebel:root # oninit ivy
CIeclinq qrou nentersIi to oeternine server run nooe succeeoeo
leaoinq confiquration fi1e `/ot/infor-
nix/ios/etc/rete1_sIn.cfq.`..succeeoeo
Creatinq /INIOlhIXThl/.infxoirs ... succeeoeo
Creatinq infos fi1e "/ot/infornix/ios/etc/.infos.rete1_sIn" ...
"/ot/infornix/ios/etc/.conf.rete1_sIn" ... succeeoeo
Writinq to infos fi1e ... succeeoeo
CIeclinq confiq araneters...succeeoeo
A11ocatinq ano attacIinq to sIareo nenory...succeeoeo
Creatinq resioent oo1 898 ltytes...succeeoeo
Creatinq tuffer oo1 4Z ltytes...succeeoeo
Initia1izinq rIeao structure...succeeoeo
Initia1izinq ASI. ..succeeoeo
Initia1izinq ictionary CacIe ano Storeo lroceoure CacIe...succeeoeo
Brinqinq u Ah Vl...succeeoeo
Creatinq Vl c1asses...succeeoeo
On1ininq aooitiona1 cu vs...succeeoeo
On1ininq Z IO vs...succeeoeo
Iorlinq nain_1oo tIreao...succeeoeo
Initia1zinq l structures...succeeoeo
Iorlinq i `icsIn` 1istener tIreaos...succeeoeo
Iorlinq i `soctc` 1istener tIreaos...succeeoeo
Startinq tracinq...succeeoeo
Initia1izinq i f1usIers...succeeoeo
Initia1izinq 1oq/cIecloint infornation...succeeoeo
Oeninq rinary cIunls...succeeoeo
Oeninq nirror cIunls...succeeoeo
Initia1izinq otsaces...succeeoeo
Va1ioatinq cIunls...succeeoeo
Creatinq oatatase artition
Initia1ize Async Loq I1usIer...succeeoeo
Iorlinq ttree c1eaner...succeeoeo
rete1:root # Initia1izinq BSlACThl 1ist
CIeclinq oatatase artition inoex...succeeoeo
CIeclinq 1ocation of Iysica1 1oq...succeeoeo
Initia1izinq oatasli structure...succeeoeo
CIeclinq for tenorary tat1es to oro
Iorlinq onnooe_non tIreao...succeeoeo
Vertose outut con1ete : nooe = 5
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
163
Vrifier tout de suite le fonctionnement du moteur avec la commande onstat.
Comme vous pouvez le voir dans cet exemple, notre moteur fonctionne
depuis 26 minutes, 5 secondes :
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 # onstat
Infornix ynanic Server Version 7.8.UCi -- On-Line --
U :Z6:5 -- 8888 ltytes
UsertIreaos
aooress f1aqs sessio user tty wait tout 1ocls nreaos nwrites
iiZi4 ---l--- i root - 54 Zi4
iiZ4c8 ---l---I root - i89
iiZ97c ---l---- 9 root -
iiZe8 ---l---B i root - 6
iiZi798 ---l--- iZ root -
5 active, iZ8 tota1, 8 naxinun concurrent
lrofi1e
oslreaos aqreaos tufreaos /cacIeo oslwrits aqwrits tufwrits /cacIeo
i764 i765 678 97.88 i996 457 i97Z8 89.88
isantot oen start reao write rewrite oe1ete connit ro11tl
5674 874 985Z i8Z68 679 4Z7 ii6i 77Z
q_reao q_write q_rewrt q_oe1 q_a11oc q_free q_curs

ov1ocl ovusertIreao ovtuff usercu syscu nunclts f1usIes
7i i.79 .5i 4 i7
tufwaits 1olwaits 1oclreqs oeao1ls o1touts clwaits conress seqscans
6 i585 i 9 4ii
ixoa-lA iox-lA oa-lA lA-qsuseo 1cIwaits
Z8 6 84 i
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
164
Si vous regardez la taille de /opt/data/rootdbs, vous verrez quelle est de
20 Mo ceux que vous avez rservs allous dans un gros fichier Linux.
Le programme oninit a cr le fichier selon vos spcifications.
Les logs peuvent tre vrifis avec loption l (L minuscule) :
Les messages du moteur sont rangs dans le fichier $INFORMIXDIR/
logs/online.log et peuvent tre consults laide de loption onstat m :
rebel:root # cd /opt/data
rebel:root # ls -l
tota1 Z8Z
orwxrwxr-x Z infornix infornix iZ4 Jan i8 i:ZZ .
orwxr-xr-x i7 root root iZ4 Jan i8 i:ZZ ..
-rw-rw---- i infornix infornix Z48 Jan i8 i8: rootots
rebel:root #
rebel:root # onstat l
Infornix ynanic Server Version 7.8.UCi -- On-Line --
U :Z6:8 -- 8888 ltytes
lIysica1 Loqqinq
Buffer tufuseo tufsize nunaqes nunwrits aqes/io
l-i i6 ZiZ Zi i.i/
Iyteqin Iysize Iyos Iyuseo /useo
i8f 5 ZiZ .
Loqica1 Loqqinq
Buffer tufuseo tufsize nunrecs nunaqes nunwrits recs/aqes aqes/io
L-i i6 i868 iZ48 8i i5. i.5
Sutsysten nunrecs Loq Sace useo
OLlSAh i868 i84996
aooress nunter f1aqs uniqio teqin size useo /useo
i898Z4 i U-B---- i iZ88 Z5 Z5 i./
i8984 Z U-B---- Z i8Zo Z5 Z5 i./
i8985c 8 U-B---- 8 i4Z7 Z5 Z5 i./
i89878 4 U-B---- 4 i5Zi Z5 Z5 i./
i89894 5 U---C-L 5 i6it Z5 Z48 97.Z/
i898t 6 I------ i7i5 Z5 ./
rebel:root # onstat m
Infornix ynanic Server Version 7.8.UCi -- On-Line --
U :Z6:iZ -- 8888 ltytes
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
165
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 :
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.
hessaqe Loq Ii1e: /ot/infornix/ios/1oqs/on1ine.1oq
Tue Jan i8 ii:58:i4 Z
ii:58:i4 vent a1arns enat1eo.
ALAlhllO = `/ot/infornix/ios/etc/1oq_fu11.sI`
ii:58:i9 l: lAUTO is Off)
ii:58:i9 lequesteo sIareo nenory seqnent size rounoeo fron 588lB to 59ZlB
ii:58:i9 Infornix ynanic Server Version 7.8.UCi Software Seria1 Nunter
AAC#A5i8469
ii:58:Z8 Infornix ynanic Server Initia1izeo-Con1ete isl Initia1izeo.
ii:58:Z8 CIecloint Con1eteo: ouration was seconos.
ii:58:Z8 atasli is now OII for a11 otsaces
ii:58:Z8 On-Line hooe
ii:58:Z8 Bui1oinq `sysnaster` oatatase ...
ii:58:Z7 Loqica1 Loq i Con1ete.
ii:58:8i Loqica1 Loq Z Con1ete.
ii:58:8i CIecloint Con1eteo: ouration was seconos.
ii:58:88 Loqica1 Loq 8 Con1ete.
ii:58:85 Loqica1 Loq 4 Con1ete.
ii:58:4i `sysnaster` oatatase tui1t successfu11y.
ii:58:4i `sysuti1s` oatatase tui1t successfu11y.
iZ:8:5Z CIecloint Con1eteo: ouration was seconos.
iZ:8:5Z CIecloint Con1eteo : ouration was seconos.
rebel:root # cat $INFORMIXDIR/logs/console.log
<<Infornix ynanic Server>>> Loqica1 Loq i Con1ete.
<<Infornix ynanic Server>>> Loqica1 Loq Z Con1ete.
<<Infornix ynanic Server>>> Loqica1 Loq 8 Con1ete.
<<Infornix ynanic Server>>> Loqica1 Loq 4 Con1ete.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
166
Pour connatre lallocation de la mmoire, utiliser onstat g seg :
Cela permet de suivre lutilisation de la mmoire et son allocation par le
serveur IDS. Si le serveur a besoin de plus de mmoire, il allouera lusage de
la mmoire sur la base des options de votre fichier ONCONFIG. Nous verrons
cela dans la partie suivante de notre installation.
Pour voir lutilisation du disque par le moteur, utiliser onstat d :
Important. On obtient un listing complet des options onstat laide de la commande
onstat (sans lettre doption). Voir le Guide de ladministrateur pour un expos
complet de toutes ces options. Ce livre ne traite que des quelques outils qui fournissent
le compte rendu le plus complet sur le moteur.
Pour terminer notre configuration, il reste encore quelques dernires modifi-
cations apporter au fichier $ONCONFIG, puis nous redmarrerons le moteur.
rebel:root # onstat -g seg
Infornix ynanic Server Version 7.8.UCi -- On-Line --
U :4:9 -- 8888 ltytes
Seqnent Sunnary:
io ley aoor size ovIo c1ass t1luseo t1lfree
769 i88i886Z4i i 998iZ 87Z l i4 7
77 i88i886Z4Z ioe 8i9Z 7Z4 V 4i5 585
77i i88i886Z48 i8ae 66Z8 68 h 67 7
Tota1: - - 9775Z - - 586 599
* seqnent 1ocleo in nenory)
rebel:root # onstat d
Infornix ynanic Server Version 7.8.UCi -- On-Line --
U ::Z -- 8888 ltytes
tsaces
aooress nunter f1aqs fcIunl ncIunls f1aqs owner nane
iiiei8c i i i i N infornix rootots
i active, Z47 naxinun
CIunls
aooress cIl/ots offset size free taqes f1aqs atInane
iiieif8 i i i 697i lO- /ot/oata/rootots
i active, Z47 naxinun
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
167
Arrter le moteur
Maintenant que le moteur Informix fonctionne, comment peut-on larrter ?
Pour cela, utiliser la commande onmode ky :
Cela permet de faire les changements dans le fichier $ONCONFIG avant de
redmarrer le moteur.
Toute une srie de caractristiques additionnelles sont proposes dans la
commande onmode. Voir le Guide de ladministrateur pour plus dinforma-
tions sur la fonction et lusage des autres options.
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.
$ onmode -ky
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
168
Datadbs01 : contiendra des tables.
Indexdbs01 : contiendra des index.
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.
Si le moteur ne fonctionne pas, le dmarrer maintenant avec le programme
oninit, sans aucune option ou avec, tout au plus, loption v (flag
commentaire) :
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.
$ onstat
$ oninit v
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
169
Crer un fichier de physdbs
UNIX et Linux vous permettent de crer un fichier de longueur nulle laide
de la commande >nom de fichier.
Le fichier est cr, mais il ne contient absolument rien.
La plupart des tapes suivantes se font en mode mono-utilisateur, ou mode
quiescent. Nous allons nous servir de deux utilitaires onspaces et
onparams utiliser seulement en tant que DBA.
Onspaces peut tre utilis en mode multi-utilisateur, mais onparams
sexcute quand le moteur est en mode mono-utilisateur. Pour passer en mode
mono-utilisateur, excuter la commande onmode s le s, ajout cette
commande, fait disparatre la question suivante :
$ cd /opt/data
$ >physdbs
$ chown informix:informix physdbs
$ chmod 660 physdbs
rebel:root # onmode s
TIis wi11 erforn a lACIUL SFUTOWN -
o you wisI to continue y/n)? y
rebel:root # onstat
Infornix ynanic Server Version 7.8.UCi -- uiescent --
U :ZZ:86 -- 8888 ltytes
UsertIreaos
aooress f1aqs sessio user tty wait tout 1ocls nreaos nwrites
iiZi4 ---l-- i infornix - ii 5
iiZ4c8 ---l--I infornix - Z
iiZ97c ---l--- 9 infornix -
iiZe8 ---l--B i infornix -
iiZic4c ---l-- i8 infornix -
5 active, iZ8 tota1, i8 naxinun concurrent
lrofi1e
oslreaos aqreaos tufreaos /cacIeo oslwrits aqwrits tufwrits /cacIeo
Z 88 86 44.44 7 7 Z .
isantot oen start reao write rewrite oe1ete connit ro11tl
i6 4 5 8
q_reao q_write q_rewrt q_oe1 q_a11oc q_free q_curs

copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
170
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.
ov1ocl ovusertIreao ovtuff usercu syscu nunclts f1usIes
Z.95 .9 i i
tufwaits 1olwaits 1oclreqs oeao1ls o1touts clwaits conress seqscans
i
ixoa-lA iox-lA oa-lA lA-qsuseo 1cIwaits

rebel:root # onspaces -c -d physdbs -p /opt/data/physdbs -o 0 -s 20480
Verifyinq Iysica1 oisl sace, 1ease wait ...
Sace successfu11y aooeo.
** WAlNIN ** A 1eve1 arcIive of loot BSace wi11 neeo to te oone.
rebel:root # ontape -s -L 0
ArcIive to tae oevice `/oev/nu11` is con1ete.
lroqran over.
rebel:root # onstat l
Infornix ynanic Server Version 7.8.UCi -- uiescent --
U :46:i7 -- 8888 ltytes
lIysica1 Loqqinq
Buffer tufuseo tufsize nunaqes nunwrits aqes/io
l-i 4 i6 4 ./
Iyteqin Iysize Iyos Iyuseo /useo
i8f 5 ZZ8 4 .8
Loqica1 Loqqinq
Buffer tufuseo tufsize nunrecs nunaqes nunwrits recs/aqes aqes/io
L-8 i6 Zi 5 5 4.Z i.
Sutsysten nunrecs Loq Sace useo
OLlSAh Zi i9Z
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
171
Nous avons excut une commande ontape aprs la cration du dbspace de
physdbs. Cest essentiel pour rendre le dbspace de physdbs utilisable. La
commande onstat l signale que la sortie du fichier du log logique a aussi
chang, en raison de la commande de sauvegarde ontape. Excutons la
commande onstat d maintenant, puis aprs avoir dplac le log physique,
pour pouvoir comparer.
Maintenant, on peut voir que lespace de physdbs existe. Malheureusement, la
sortie donne une taille incorrecte ; il suffit de la multiplier par deux pour obte-
nir les 20 480 Ko que nous avons allous, soit 20 Mo.
Excutons onparams, sans option, pour consulter les options disponibles :
aooress nunter f1aqs uniqio teqin size useo /useo
i898Z4 i U-B---- i iZ88 Z5 Z5 i./
i8984 Z U-B---- Z i8Zo Z5 Z5 i./
i8985c 8 U-B---- 8 i4Z7 Z5 Z5 i./
i89878 4 U-B---- 4 i5Zi Z5 Z5 i./
i89894 5 U-B---- 5 i6it Z5 Z5 i./
i898t 6 U---C-L 6 i7i5 Z5 7 Z.8/
rebel:root # onstat -d
Infornix ynanic Server Version 7.8.UCi -- uiescent --
U :5Z:5 -- 8888 ltytes
tsaces
aooress nunter f1aqs fcIunl ncIunls f1aqs owner nane
iiiei8c i i i i N infornix rootots
iiiefa8 Z i Z i N infornix Iysots
Z active, Z47 naxinun
CIunls
aooress cIl/ots offset size free taqes f1aqs atInane
iiieif8 i i i 69Zi lO- /ot/oata/rootots
iiif64 Z Z iZ4 ii87 lO- /ot/oata/Iysots
Z active, Z47 naxinun
$ onparams
Usaqe: onarans { -a -o Bsace ]-s size] |
-o -1 1oqio ]-y] |
- -s size ]-o Bsace] ]-y] )
-a - Aoo a 1oqica1 1oq
-o - ro a 1oqica1 1oq
- - CIanqe Iysica1 1oq size ano 1ocation
-y - Autonatica11y resonos "yes" to a11 ronts
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
172
Nous allons utiliser loption p pour crer un physdbs de 20 Mo. Souvenez-
vous quau dpart nous avons allou 50 Mo au log physique, mais que nous
navons utilis que 20 Mo, ce qui donne une marge pour lagrandir.
Pour crer le physdbs, utiliser la commande onparams suivante :
Voici le rsultat de la commande :
Le log physique avait lorigine une taille de 1 Mo seulement, la taille par
dfaut installe par le moteur. Maintenant, nous voyons quil utilise presque
tous les octets du nouveau physdbs de 20 Mo, et que rootdbs a gagn environ
1 Mo despace disponible. Quand nous dplacerons les logs logiques, rootdbs
gagnera encore plus despace. Si lon regarde dans le rpertoire /opt/data, on
voit le nouveau dbspace du log physique cr : il apparat comme un autre
fichier cooked :
$ onparams p s 50000 d physdbs y
rebel:root # onparams -p -s 20000 -d physdbs -y
SIuttinq oown, 1ease wait ...
Initia1izinq, 1ease wait ...
lecoverinq, 1ease wait ...
rebel:root # onstat -d
Infornix ynanic Server Version 7.8.UCi -- uiescent --
U ::8i -- 8888 ltytes
tsaces
aooress nunter f1aqs fcIunl ncIunls f1aqs owner nane
iiiei8c i i i i N infornix rootots
iiie4Z8 Z i Z i N infornix Iysots
Z active, Z47 naxinun
CIunls
aooress cIl/ots offset size free taqes f1aqs atInane
iiieif8 i i i 74Zi lO- /ot/oata/rootots
iiie848 Z Z iZ4 i87 lO- /ot/oata/Iysots
Z active, Z47 naxinun
rebel:root # ls l
tota1 4648
orwxrwxr-x Z infornix infornix iZ4 Jan Z4 ii:i4 .
orwxr-xr-x i7 root root iZ4 Jan i8 i:ZZ ..
-rw-rw---- i infornix infornix Z97i5Z Jan Z4 iZ:Z5 Iysots
-rw-rw---- i infornix infornix Z48 Jan Z4 iZ:Z5 rootots
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
173
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 :
rebel:root # onspaces -c -d logsdbs -p /opt/data/logsdbs -o 0 -s 50000
Verifyinq Iysica1 oisl sace, 1ease wait ...
Sace successfu11y aooeo.
** WAlNIN ** A 1eve1 arcIive of loot BSace wi11 neeo to te oone.
rebel:root # ontape -s -L 0
onstat
ArcIive to tae oevice `/oev/nu11` is con1ete.
lroqran over.
rebel:root # onstat d
Infornix ynanic Server Version 7.8.UCi -- uiescent --
U Z:5Z:4 -- 8888 ltytes
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
174
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 :
Excuter une sauvegarde de niveau zro pour nettoyer toutes les entres de
log en attente :
tsaces
aooress nunter f1aqs fcIunl ncIunls f1aqs owner nane
iiiei8c i i i i N infornix rootots
iiie4Z8 Z i Z i N infornix Iysots
iiifc 8 i 8 i N infornix 1oqsots
8 active, Z47 naxinun
CIunls
aooress cIl/ots offset size free taqes f1aqs atInane
iiieif8 i i i 74Zi lO- /ot/oata/rootots
iiie848 Z Z iZ4 i87 lO- /ot/oata/Iysots
iiifc8 8 8 Z5 Z4947 lO- /ot/oata/1oqsots
8 active, Z47 naxinun
rebel:root # onmode sy
rebel:root # ontape -s -L 0
ArcIive to tae oevice `/oev/nu11` is con1ete.
lroqran over.
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
175
Crer des nouveaux logs logiques
Pour crer les logs logiques, rpter la commande onparams :
rebel:root # onstat ld
Infornix ynanic Server Version 7.8.UCi -- On-Line --
U :i9:88 -- 8888 ltytes
tsaces
aooress nunter f1aqs fcIunl ncIunls f1aqs owner nane
iiiei8c i i i i N infornix rootots
iiie58 Z i Z i N infornix Iysots
iiie5c4 8 i 8 i N infornix 1oqsots
8 active, Z47 naxinun
CIunls
aooress cIl/ots offset size free taqes f1aqs atInane
iiieif8 i i i 74Zi lO- /ot/oata/rootots
iiie848 Z Z iZ4 i87 lO- /ot/oata/Iysots
iiie4Z8 8 8 Z5 Z4947 lO- /ot/oata/1oqsots
8 active, Z47 naxinun
lIysica1 Loqqinq
Buffer tufuseo tufsize nunaqes nunwrits aqes/io
l-i 4 i6 4 ./
Iyteqin Iysize Iyos Iyuseo /useo
Z85 i 8 4 .4
Loqica1 Loqqinq
Buffer tufuseo tufsize nunrecs nunaqes nunwrits recs/aqes aqes/io
L-i i6 i7 8 8 5.7 i.
Sutsysten nunrecs Loq Sace useo
OLlSAh i7 77Z
aooress nunter f1aqs uniqio teqin size useo /useo
i898Z4 i U-B---- i iZ88 Z5 Z5 i./
i8984 Z U-B---- Z i8Zo Z5 Z5 i./
i8985c 8 U-B---- 8 i4Z7 Z5 Z5 i./
i89878 4 U-B---- 4 i5Zi Z5 Z5 i./
i89894 5 U-B---- 5 i6it Z5 Z5 i./
i898t 6 U---C-L 6 i7i5 Z5 i7 6.8/
rebel:root # onparams -a -d logsdbs -s 1024
Loqica1 1oq successfu11y aooeo.
rebel:root # onstat l
Infornix ynanic Server Version 7.8.UCi -- uiescent --
U :Z8:Z5 -- 8888 ltytes
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
176
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 :
Quelle que soit la manire dont on les ajoute, la commande onstat permet de
voir les nouveaux logs logiques :
lIysica1 Loqqinq
Buffer tufuseo tufsize nunaqes nunwrits aqes/io
l-i 5 i6 5 ./
Iyteqin Iysize Iyos Iyuseo /useo
Z85 i 8 5 .5
Loqica1 Loqqinq
Buffer tufuseo tufsize nunrecs nunaqes nunwrits recs/aqesaqes/io
L-Z i6 Zi 4 4 5.Z i.
Sutsysten nunrecs Loq Sace useo
OLlSAh Zi 94
aooress nunter f1aqs uniqio teqin size useo /useo
i898Z4 i U-B---- i iZ88 Z5 Z5 i./
i8984 Z U-B---- Z i8Zo Z5 Z5 i./
i8985c 8 U-B---- 8 i4Z7 Z5 Z5 i./
i89878 4 U-B---- 4 i5Zi Z5 Z5 i./
i89894 5 U-B---- 5 i6it Z5 Z5 i./
i898t 6 U---C-L 6 i7i5 Z5 i8 7.Z/
i898cc 7 A------ 885 5iZ ./
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
rebel:root # onstat l
Infornix ynanic Server Version 7.8.UCi -- uiescent --
U :Z7:86 -- 8888 ltytes
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
177
lIysica1 Loqqinq
Buffer tufuseo tufsize nunaqes nunwrits aqes/io
l-i i i6 6 i 6./
Iyteqin Iysize Iyos Iyuseo /useo
Z85 i 8 i .i
Loqica1 Loqqinq
Buffer tufuseo tufsize nunrecs nunaqes nunwrits recs/aqesaqes/io
L-i i6 98 Z4 Z4 4.i i.
Sutsysten nunrecs LoqSace useo
OLlSAh 98 4i64
aooress nunter f1aqs uniqio teqin size useo /useo
i898Z4 i U-B---- i iZ88 Z5 Z5 i./
i8984 Z U-B---- Z i8Zo Z5 Z5 i./
i8985c 8 U-B---- 8 i4Z7 Z5 Z5 i./
i89878 4 U-B---- 4 i5Zi Z5 Z5 i./
i89894 5 U-B---- 5 i6it Z5 Z5 i./
i898t 6 U---C-L 6 i7i5 Z5 88 i5.Z/
i898cc 7 A------ 885 5iZ ./
i898e8 8 A------ 8Z85 5iZ ./
i8944 9 A------ 8485 5iZ ./
i894Z i A------ 8685 5iZ ./
i8948c ii A------ 8885 5iZ ./
i89458 iZ A------ 8a85 5iZ ./
i89474 i8 A------ 8c85 5iZ ./
i8949 i4 A------ 8e85 5iZ ./
i894ac i5 A------ 8i85 5iZ ./
i894c8 i6 A------ 8iZ85 5iZ ./
i894e4 i7 A------ 8i485 5iZ ./
i895 i8 A------ 8i685 5iZ ./
i895ic i9 A------ 8i885 5iZ ./
i89588 Z A------ 8ia85 5iZ ./
i89554 Zi A------ 8ic85 5iZ ./
i8957 ZZ A------ 8ie85 5iZ ./
i8958c Z8 A------ 8Z85 5iZ ./
i895a8 Z4 A------ 8ZZ85 5iZ ./
i895c4 Z5 A------ 8Z485 5iZ ./
i895e Z6 A------ 8Z685 5iZ ./
rebel:root # onstat -d
Infornix ynanic Server Version 7.8.UCi -- uiescent --
U :Z7:4i -- 8888 ltytes
tsaces
aooress nunter f1aqs fcIunl ncIunls f1aqs owner nane
iiiei8c i i i i N infornix rootots
iiie58 Z i Z i N infornix Iysots
iiie5c4 8 i 8 i N infornix 1oqsots
8 active, Z47 naxinun
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
178
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 :
CIunls
aooress cIl/ots offset size free taqes f1aqs atInane
iiieif8 i i i 74Zi lO- /ot/oata/rootots
iiie848 Z Z iZ4 i87 lO- /ot/oata/Iysots
iiie4Z8 8 8 Z5 i477 lO- /ot/oata/1oqsots
8 active, Z47 naxinun
rebel:root # ontape -s -L 0
ArcIive to tae oevice `/oev/nu11` is con1ete.
lroqran over.
rebel:root # onstat -l
Infornix ynanic Server Version 7.8.UCi -- uiescent --
U :8:Z -- 8888 ltytes
lIysica1 Loqqinq
Buffer tufuseo tufsize nunaqes nunwrits aqes/io
l-i 4 i6 i Z 5./
Iyteqin Iysize Iyos Iyuseo /useo
Z85 i 9 4 .4
Loqica1 Loqqinq
Buffer tufuseo tufsize nunrecs nunaqes nunwrits recs/aqesaqes/io
L-i i6 ii5 Z7 Z7 4.8 i.
Sutsysten nunrecs Loq Sace useo
OLlSAh ii5 4986
aooress nunter f1aqs uniqio teqin size useo /useo
i898Z4 i U-B---- i iZ88 Z5 Z5 i./
i8984 Z U-B---- Z i8Zo Z5 Z5 i./
i8985c 8 U-B---- 8 i4Z7 Z5 Z5 i./
i89878 4 U-B---- 4 i5Zi Z5 Z5 i./
i89894 5 U-B---- 5 i6it Z5 Z5 i./
i898t 6 U---C-L 6 i7i5 Z5 4i i6.4/
i898cc 7 I------ 885 5iZ ./
i898e8 8 I------ 8Z85 5iZ ./
i8944 9 I------ 8485 5iZ ./
i894Z i I------ 8685 5iZ ./
i8948c ii I------ 8885 5iZ ./
i89458 iZ I------ 8a85 5iZ ./
i89474 i8 I------ 8c85 5iZ ./
i8949 i4 I------ 8e85 5iZ ./
i894ac i5 I------ 8i85 5iZ ./
i894c8 i6 I------ 8iZ85 5iZ ./
i894e4 i7 I------ 8i485 5iZ ./
i895 i8 I------ 8i685 5iZ ./
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
179
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 :
Les trois options qui nous intressent sont l, c et m. Les options l et c
grent les logs logiques : loption l force le moteur utiliser le prochain log
logique et loption c lui indique dexcuter un checkpoint. Les checkpoints
sont dcrits dans le Guide de ladministrateur ; il sagit essentiellement dune
marque, que le moteur positionne, sur lactivit du log logique, qui autorise le
log tre sauvegard, et indique comment le rcuprer quand on fait une
restauration de la base de donnes. Loption m permet de replacer le serveur
en mode multi-utilisateur.
i895ic i9 I------ 8i885 5iZ ./
i89588 Z I------ 8ia85 5iZ ./
i89554 Zi I------ 8ic85 5iZ ./
i8957 ZZ I------ 8ie85 5iZ ./
i8958c Z8 I------ 8Z85 5iZ ./
i895a8 Z4 I------ 8ZZ85 5iZ ./
i895c4 Z5 I------ 8Z485 5iZ ./
i895e Z6 I------ 8Z685 5iZ ./
rebel:root # onmode
usaqe: onnooe -atcoIl1hnnOlrSsuyZz
-a <ltytes> Increase sIareo nenory seqnent size.
-t <version> levert ynanic Server oisl structures.
-c ]t1ocl | unt1ocl] o CIecloint. B1ocl or unt1ocl server.
- <nax l riority a11oweo>
-o {stanoaro|{rinary|seconoary <servernane>)) set l server tye
-I Iree unuseo nenory seqnents
-l SIutoown con1ete1y
-1 Iorce to next 1oqica1 1oq
-h <oecision suort nenory in ltytes>
-n o to nu1ti-user on-1ine
-n Set sIareo nenory tuffer cacIe to non-resioent
-O Overrioe sace oown t1oclinq a cIecloint
- <-#> <c1ass> Start u or renove virtua1 rocessors of
a secific c1ass
- <nax # oecision suort queries>
-l letui1o tIe /INIOlhIXIl/etc/.infos.BSlVlNAh fi1e
-r Set sIareo nenory tuffer cacIe to resioent
-S <nax # oecision suort scans>
-s SIutoown to sinq1e user
-u SIutoown ano li11 a11 attacIeo sessions
-y o not require confirnation
-Z <aooress> Ieuristica11y con1ete secifieo transaction
-z <sio> li11 secifieo session io
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
180
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 :
La commande est rpte pour les logs 1 6.
aooress nunter f1aqs uniqio teqin size useo /useo
i898Z4 i U-B---- i iZ88 Z5 Z5 i./
i8984 Z U-B---- Z i8Zo Z5 Z5 i./
i8985c 8 U-B---- 8 i4Z7 Z5 Z5 i./
i89878 4 U-B---- 4 i5Zi Z5 Z5 i./
i89894 5 U-B---- 5 i6it Z5 Z5 i./
i898t 6 U-B---L 6 i7i5 Z5 48 i7.Z/
i898cc 7 U-B---- 7 885 5iZ i .Z/
i898e8 8 U-B---- 8 8Z85 5iZ i .Z/
i8944 9 U---C-- 9 8485 5iZ ./
i894Z i I----- 8685 5iZ ./
aooress nunter f1aqs uniqio teqin size useo /useo
i898Z4 i U-B---- i iZ88 Z5 Z5 i./
i8984 Z U-B---- Z i8Zo Z5 Z5 i./
i8985c 8 U-B---- 8 i4Z7 Z5 Z5 i./
i89878 4 U-B---- 4 i5Zi Z5 Z5 i./
i89894 5 U-B---- 5 i6it Z5 Z5 i./
i898t 6 U-B---- 6 i7i5 Z5 48 i7.Z/
i898cc 7 U-B---- 7 885 5iZ i .Z/
i898e8 8 U-B---- 8 8Z85 5iZ i .Z/
i8944 9 U---C-L 9 8485 5iZ i .Z/
i894Z i I----- 8685 5iZ ./
$ 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
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
181
Voici la commande onparams sur le dernier log supprim, le numro 6, et la
commande onstat l, qui montre que ces logs ont disparu :
On voit aussi que les rootdbs ont rcupr un peu despace, en excutant la
commande onstat d :
rebel:root # onparams -d -l 6 -y
Loqica1 1oq 6 successfu11y oroeo.
** WAlNIN ** A 1eve1 arcIive wi11 neeo to te oone of tIe rootots
tefore 1eve1 i or Z arcIive is attenteo after oroinq tIe 1oqica1 1oq
see ynanic Server Aoninistrator`s nanua1)
rebel:root # onstat -l
Infornix ynanic Server Version 7.8.UCi -- uiescent --
U :47:Z9 -- 8888 ltyteslIysica1 Loqqinq
Buffer tufuseo tufsize nunaqes nunwrits aqes/io
l-i i6 i6 9 i.78/
Iyteqin Iysize Iyos Iyuseo /useo
Z85 i i9 .
Loqica1 Loqqinq
Buffer tufuseo tufsize nunrecs nunaqes nunwrits recs/aqesaqes/io
L-8 i6 i47 44 44 8.8 i.
Sutsysten nunrecs Loq Sace useo
OLlSAh i47 6844
aooress nunter f1aqs uniqio teqin size useo /useo
i898cc 7 U-B---- 7 885 5iZ i .Z/
i898e8 8 U-B---- 8 8Z85 5iZ i .Z/
i8944 9 U---C-L 9 8485 5iZ i8 Z.54/
i894Z i I------ 8685 5iZ ./
i8948c ii I------ 8885 5iZ ./
i89458 iZ I------ 8a85 5iZ ./
i89474 i8 I------ 8c85 5iZ ./
i8949 i4 I------ 8e85 5iZ ./
i894ac i5 I------ 8i85 5iZ ./
i894c8 i6 I------ 8iZ85 5iZ ./
i894e4 i7 I------ 8i485 5iZ ./
i895 i8 I------ 8i685 5iZ ./
i895ic i9 I------ 8i885 5iZ ./
i89588 Z I------ 8ia85 5iZ ./
i89554 Zi I------ 8ic85 5iZ ./
i8957 ZZ I------ 8ie85 5iZ ./
i8958c Z8 I------ 8Z85 5iZ ./
i895a8 Z4 I------ 8ZZ85 5iZ ./
i895c4 Z5 I------ 8Z485 5iZ ./
i895e Z6 I------ 8Z685 5iZ ./
rebel:root # onstat -d
Infornix ynanic Server Version 7.8.UCi -- uiescent --
U :49:54 -- 8888 ltytes
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
182
Maintenant, on doit recrer les logs 1 6 dans le nouveau logsdbs, en excu-
tant six fois cette commande :
puis la commande onstat :
tsaces
aooress nunter f1aqs fcIunl ncIunls f1aqs owner nane
iiiei8c i i i i N infornix rootots
iiie58 Z i Z i N infornix Iysots
iiie5c4 8 i 8 i N infornix 1oqsots
8 active, Z47 naxinun
CIunls
aooress cIl/ots offset size free taqes f1aqs atInane
iiieif8 i i i 89Zi lO- /ot/oata/rootots
iiie848 Z Z iZ4 i87 lO- /ot/oata/Iysots
iiie4Z8 8 8 Z5 i477 lO- /ot/oata/1oqsots
8 active, Z47 naxinun
rebel:root # onparams -a -d logsdbs -s 1024
rebel:root # onstat -l
Infornix ynanic Server Version 7.8.UCi -- uiescent --
U :5Z:57 -- 8888 ltytes
lIysica1 Loqqinq
Buffer tufuseo tufsize nunaqes nunwrits aqes/io
l-i i i6 i8 i i.8/
Iyteqin Iysize Iyos Iyuseo /useo
Z85 i Z i .i
Loqica1 Loqqinq
Buffer tufuseo tufsize nunrecs nunaqes nunwrits recs/aqesaqes/io
L-i i6 i7Z 5i 5i 8.4 i.
Sutsysten nunrecs Loq Sace useo
OLlSAh i7Z 7884
aooress nunter f1aqs uniqio teqin size useo /useo
i898Z4 i A------ 8Z885 5iZ ./
i8984 Z A------ 8Za85 5iZ ./
i8985c 8 A------ 8Zc85 5iZ ./
i89878 4 A------ 8Ze85 5iZ ./
i89894 5 A------ 8885 5iZ ./
i898t 6 A------ 88Z85 5iZ ./
i898cc 7 U-B---- 7 885 5iZ i .Z/
i898e8 8 U-B---- 8 8Z85 5iZ i .Z/
i8944 9 U---C-L 9 8485 5iZ Z 8.9i/
i894Z i I------ 8685 5iZ ./
i8948c ii I------ 8885 5iZ ./
i89458 iZ I------ 8a85 5iZ ./
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
183
Excutons une sauvegarde de niveau zro et cest fini !
i89474 i8 I------ 8c85 5iZ ./
i8949 i4 I------ 8e85 5iZ ./
i894ac i5 I------ 8i85 5iZ ./
i894c8 i6 I------ 8iZ85 5iZ ./
i894e4 i7 I------ 8i485 5iZ ./
i895 i8 I------ 8i685 5iZ ./
i895ic i9 I------ 8i885 5iZ ./
i89588 Z I------ 8ia85 5iZ ./
i89554 Zi I------ 8ic85 5iZ ./
i8957 ZZ I------ 8ie85 5iZ ./
i8958c Z8 I------ 8Z85 5iZ ./
i895a8 Z4 I------ 8ZZ85 5iZ ./
i895c4 Z5 I------ 8Z485 5iZ ./
i895e Z6 I------ 8Z685 5iZ ./
rebel:root # ontape -s -L 0
ArcIive to tae oevice `/oev/nu11` is con1ete.
lroqran over.
rebel:root # onstat -l
Infornix ynanic Server Version 7.8.UCi -- uiescent --
U i:8:87 -- 8888 ltytes
lIysica1 Loqqinq
Buffer tufuseo tufsize nunaqes nunwrits aqes/io
l-i 4 i6 ZZ ii Z./
Iyteqin Iysize Iyos Iyuseo /useo
Z85 i Zi 4 .4
Loqica1 Loqqinq
Buffer tufuseo tufsize nunrecs nunaqes nunwrits recs/aqesaqes/io
L-i i6 i89 54 54 8.5 i.
Sutsysten nunrecs Loq Sace useo
OLlSAh i89 8i56
aooress nunter f1aqs uniqio teqin size useo /useo
i898Z4 i I------ 8Z885 5iZ ./
i8984 Z I------ 8Za85 5iZ ./
i8985c 8 I------ 8Zc85 5iZ ./
i89878 4 I------ 8Ze85 5iZ ./
i89894 5 I------ 8885 5iZ ./
i898t 6 I------ 88Z85 5iZ ./
i898cc 7 U-B---- 7 885 5iZ i .Z/
i898e8 8 U-B---- 8 8Z85 5iZ i .Z/
i8944 9 U--C-L- 9 8485 5iZ Z8 4.49/
i894Z i I------ 8685 5iZ ./
i8948c ii I------ 8885 5iZ ./
i89458 iZ I------ 8a85 5iZ ./
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
184
On peut maintenant consulter loccupation du disque avec onstat d :
On constate quun peu despace a t gagn sur rootdbs. Il a maintenant prs
de 17 Mo de libre, ce qui suffit pour grer le moteur, crer les bases de
donnes sysmaster et sysutils, utilises pour grer les sauvegardes Informix.
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.
i89474 i8 I------ 8c85 5iZ ./
i8949 i4 I------ 8e85 5iZ ./
i894ac i5 I------ 8i85 5iZ ./
i894c8 i6 I------ 8iZ85 5iZ ./
i894e4 i7 I------ 8i485 5iZ ./
i895 i8 I------ 8i685 5iZ ./
i895ic i9 I------ 8i885 5iZ ./
i89588 Z I------ 8ia85 5iZ ./
i89554 Zi I------ 8ic85 5iZ ./
i8957 ZZ I------ 8ie85 5iZ ./
i8958c Z8 I------ 8Z85 5iZ ./
i895a8 Z4 I------ 8ZZ85 5iZ ./
i895c4 Z5 I------ 8Z485 5iZ ./
i895e Z6 I------ 8Z685 5iZ ./
rebel:root # onstat -d
Infornix ynanic Server Version 7.8.UCi -- uiescent --
U i:5:Z7 -- 8888 ltytes
tsaces
aooress nunter f1aqs fcIunl ncIunls f1aqs owner nane
iiiei8c i i i i N infornix rootots
iiie58 Z i Z i N infornix Iysots
iiie5c4 8 i 8 i N infornix 1oqsots
8 active, Z47 naxinun
CIunls
aooress cIl/ots offset size free taqes f1aqs atInane
iiieif8 i i i 89Zi lO- /ot/oata/rootots
iiie848 Z Z iZ4 i87 lO- /ot/oata/Iysots
iiie4Z8 8 8 Z5 ii685 lO- /ot/oata/1oqsots
8 active, Z47 naxinun
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
185
La cration de ce dbspace est un peu diffrente de ce qui prcde. Il faut indi-
quer au moteur dutiliser un dbspace provisoire ; sinon il le traitera comme un
dbspace normal. Pour cela on ajoute loption t la commande onspaces :
En voici le rsultat :
tempdbs est maintenant cr : il sera utilisable aprs quelques dernires modi-
fications du fichier $INFORMIXDIR/etc/$ONCONFIG.
Nous rpterons ces tapes pour lespace dbs_dbs et le dbspace datadbs01, et
la cration de dbspace sera termine. Il restera encore faire les corrections
de $INFORMIXDIR/etc/$ONCONFIG, et lon pourra commencer crer des
bases de donnes !
Mettons ce qui suit dans un script :
et voici la trace de son excution :
$ onspaces -c -t -d tempdbs -p /opt/data/tempdbs -o 0 -s 102400
rebel:root # onspaces -c -t -d tempdbs -p /opt/data/tempdbs -o 0 -s 300000
Verifyinq Iysica1 oisl sace, 1ease wait ...
Sace successfu11y aooeo.
rebel:root # ls -l
tota1 89Zi8
orwxrwxr-x Z infornix infornix iZ4 Jan Z4 i7:4i .
orwxr-xr-x i7 root root iZ4 Jan Z4 i7:4i ..
-rw-rw---- i infornix infornix 5iZ Jan Z4 i7:5Z 1oqsots
-rw-rw---- i infornix infornix Z97i5Z Jan Z4 i7:5Z Iysots
-rw-rw---- i infornix infornix Z48 Jan Z4 i7:5Z rootots
-rw-rw---- i infornix infornix 87Z Jan Z4 i7:5Z tenots
onspaces -c -d dbs_dbs -p /opt/data/dbs_dbs -o 0 -s 100000
onspaces -c -d datadbs01 -p /opt/data/datadbs01 -o 0 -s 250000
onspaces -c -d indexdbs01 -p /opt/data/indexdbs01 o 0 -s 250000
ontape s L 0
onspaces -c -d dbs_dbs -p /opt/data/dbs_dbs -o 0 -s 100000
Verifyinq Iysica1 oisl sace, 1ease wait ...
Sace successfu11y aooeo.
** WAlNIN ** A 1eve1 arcIive of loot BSace wi11 neeo to te oone.
onspaces -c -d datadbs01 -p /opt/data/datadbs01 -o 0 -s 250000
Verifyinq Iysica1 oisl sace, 1ease wait ...
Sace successfu11y aooeo.
** WAlNIN ** A 1eve1 arcIive of loot BSace wi11 neeo to te oone.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
186
Excutons nouveau la commande onstat :
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 :
onspaces -c -d indexdbs01 -p /opt/data/indexdbs01 -o 0 -s 250000
Verifyinq Iysica1 oisl sace, 1ease wait ...
Sace successfu11y aooeo.
** WAlNIN ** A 1eve1 arcIive of loot BSace wi11 neeo to te oone.
rebel:root # ontape -s -L 0
ArcIive to tae oevice `/oev/nu11` is con1ete.
lroqran over.
rebel:root # onstat -d
Infornix ynanic Server Version 7.8.UCi -- uiescent --
U i:86:4Z -- 8888 ltytes
tsaces
aooress nunter f1aqs fcIunl ncIunls f1aqs owner nane
iiiei8c i i i i N infornix rootots
iiie58 Z i Z i N infornix Iysots
iiie5c4 8 i 8 i N infornix 1oqsots
i89788c 4 Zi 4 i N T infornix tenots
i8977ec 5 i 5 i N infornix ots_ots
i897ca8 6 i 6 i N infornix oataotsi
i89tZic 7 i 7 i N infornix inoexotsi
7 active, Z47 naxinun
CIunls
aooress cIl/ots offset size free taqes f1aqs atInane
iiieif8 i i i 89Zi lO- /ot/oata/rootots
iiie848 Z Z iZ4 i87 lO- /ot/oata/Iysots
iiie4Z8 8 8 Z5 ii685 lO- /ot/oata/1oqsots
i897448 4 4 i5 i49947 lO- /ot/oata/tenots
i8978a8 5 5 5 49947 lO- /ot/oata/ots_ots
i897o64 6 6 iZ5 iZ4947 lO- /ot/oata/oataotsi
i89tZo8 7 7 iZ5 iZ4947 lO- /ot/oata/inoexotsi
7 active, Z47 naxinun
$ onmode ky
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
187
Dernires options de configuration de $ONCONFIG
Editez le fichier $INFORMIXDIR/etc/$ONCONFIG et effectuez les modifica-
tions suivantes.
Log physique
Remarquons que les options de physdbs ont t mises jour :
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 :
Nouvelles valeurs :
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 :
nouvelle taille :
# lIysica1 Loq Confiquration
lFYSBS Iysots # Location otsace) of Iysica1 1oq
lFYSIIL Z # lIysica1 1oq fi1e size ltytes)
# Loqica1 Loq Confiquration
LOIILS Z6 # Nunter of 1oqica1 1oq fi1es
LOSIZ 5 # Loqica1 1oq size ltytes)
# Loqica1 Loq Confiquration
LOIILS Z6 # Nunter of 1oqica1 1oq fi1es
LOSIZ 1024 # Loqica1 1oq size ltytes)
SFhVIlTSIZ 8 # initia1 virtua1 sIareo nenory seqnent size
SFhVIlTSIZ Z4 # initia1 virtua1 sIareo nenory seqnent size
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
188
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 :
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 :
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 :
Nouvelle valeur :
LlUS 8 # Nunter of LlU queues
LlU_hAX_IlTY 6 # LlU ercent oirty teqin c1eaninq 1init
LlU_hIN_IlTY 5 # LlU ercent oirty eno c1eaninq 1init
LlUS 4 # Nunter of LlU queues
LlU_hAX_IlTY 5 # LlU ercent oirty teqin c1eaninq 1init
LlU_hIN_IlTY 1 # LlU ercent oirty eno c1eaninq 1init
# BSlACThl # efau1t ten otsaces
BSlACThl tempdbs
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
189
Redmarrer le moteur
On redmarre le moteur Informix par la commande oninit v :
On peut ensuite voir les changements avec la commande onstat m :
rebel:root # oninit v
CIeclinq qrou nentersIi to oeternine server run nooesucceeoeo
leaoinq confiquration fi1e `/ot/infor-
nix/ios/etc/rete1_sIn.cfq.`..succeeoeo
Creatinq /INIOlhIXThl/.infxoirs ... succeeoeo
Creatinq infos fi1e "/ot/infornix/ios/etc/.infos.rete1_sIn" ...
"/ot/infornix/ios/etc/.conf.rete1_sIn" ... succeeoeo
Writinq to infos fi1e ... succeeoeo
CIeclinq confiq araneters...succeeoeo
A11ocatinq ano attacIinq to sIareo nenory...succeeoeo
Creatinq resioent oo1 898 ltytes...succeeoeo
Creatinq tuffer oo1 4Z ltytes...succeeoeo
Initia1izinq rIeao structure...succeeoeo
Initia1izinq ASI. ..succeeoeo
Initia1izinq ictionary CacIe ano Storeo lroceoure CacIe...succeeoeo
Brinqinq u Ah Vl...succeeoeo
Creatinq Vl c1asses...succeeoeo
On1ininq aooitiona1 cu vs...succeeoeo
On1ininq Z IO vs...succeeoeo
Iorlinq nain_1oo tIreao...succeeoeo
Initia1zinq l structures...succeeoeo
Iorlinq i `icsIn` 1istener tIreaos...succeeoeo
Iorlinq i `soctc` 1istener tIreaos...succeeoeo
Startinq tracinq...succeeoeo
Initia1izinq i f1usIers...succeeoeo
Initia1izinq 1oq/cIecloint infornation...succeeoeo
Oeninq rinary cIunls...succeeoeo
Oeninq nirror cIunls...succeeoeo
Initia1izinq otsaces...succeeoeo
Va1ioatinq cIunls...succeeoeo
Initia1ize Async Loq I1usIer...succeeoeo
Iorlinq ttree c1eaner...succeeoeo
Initia1izinq BSlACThl 1ist
rete1:root # CIeclinq oatatase artition inoex...succeeoeo
CIeclinq 1ocation of Iysica1 1oq...succeeoeo
Initia1izinq oatasli structure...succeeoeo
CIeclinq for tenorary tat1es to oro
Iorlinq onnooe_non tIreao...succeeoeo
Vertose outut con1ete: nooe = 5
rebel:root # onstat m
Infornix ynanic Server Version 7.8.UCi -- On-Line --
U :i:ii -- 8888 ltytes
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
190
Tout fonctionne bien, sauf que je veux augmenter lutilisation de la mmoire :
je modifie donc le fichier $ONCONFIG et je redmarre le moteur. La sortie de
onstat m montre le changement, ainsi que la premire ligne du compte rendu
de onstat :
hessaqe Loq Ii1e: /ot/infornix/ios/1oqs/on1ine.1oq
hon Jan Z4 i8:Z5:48 Z
i8:Z5:48 vent a1arns enat1eo.
ALAlhllO = `/ot/infornix/ios/etc/1oq_fu11.sI`
i8:Z5:48 l: lAUTO is Off)
i8:Z5:48 lequesteo sIareo nenory seqnent size rounoeo fron 588lB to
59ZlB
i8:Z5:49 Infornix ynanic Server Version 7.8.UCi Software Seria1 Nunter
AAC#A5i8469
i8:Z5:5 Infornix ynanic Server Initia1izeo -- SIareo henory Initia1izeo.
i8:Z5:5 lIysica1 lecovery Starteo.
i8:Z5:5 lIysica1 lecovery Con1ete: laqes lestoreo.
i8:Z5:5 Loqica1 lecovery Starteo.
i8:Z5:58 Loqica1 lecovery Con1ete.
Connitteo, lo11eo Bacl, Oen, Bao Locls
i8:Z5:58 Onconfiq araneter LOIILS nooifieo fron 6 to Z6.
i8:Z5:58 Onconfiq araneter LOSIZ nooifieo fron 5 to iZ4.
i8:Z5:58 Onconfiq araneter BSlACThl nooifieo fron <t1anl> to tenots.
i8:Z5:58 atasli is now OII for a11 otsaces
i8:Z5:58 On-Line hooe
i8:Z5:58 CIecloint Con1eteo : ouration was seconos.
rebel:root # onmode ky
rebel:root # oninit v
rebel:root # onstat m
Infornix ynanic Server Version 7.8.UCi -- On-Line --
U ::i4 -- Z4888 ltytes
hessaqe Loq Ii1e: /ot/infornix/ios/1oqs/on1ine.1oq
i8:Z5:58 CIecloint Con1eteo: ouration was seconos.
i8:Z7:iZ Infornix ynanic Server Stoeo.
hon Jan Z4 i8:Z7:88 Z
i8:Z7:88 vent a1arns enat1eo.
ALAlhllO = `/ot/infornix/ios/etc/1oq_fu11.sI`
i8:Z7:89 l: lAUTO is Off)
i8:Z7:89 lequesteo sIareo nenory seqnent size rounoeo fron 588lB to 59ZlB
i8:Z7:89 Infornix ynanic Server Version 7.8.UCi Software Seria1 Nunter
AAC#A5i8469
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
191
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.
i8:Z7:4 Infornix ynanic Server Initia1izeo -- SIareo henory Initia1izeo.
i8:Z7:4i lIysica1 lecovery Starteo.
i8:Z7:4i lIysica1 lecovery Con1ete: laqes lestoreo.
i8:Z7:4i Loqica1 lecovery Starteo.
i8:Z7:44 Loqica1 lecovery Con1ete.
Connitteo, lo11eo Bacl, Oen, Bao Locls
i8:Z7:44 Onconfiq araneter SFhVIlTSIZ nooifieo fron 8 to Z4.
i8:Z7:44 atasli is now OII for a11 otsaces
i8:Z7:44 On-Line hooe
i8:Z7:44 CIecloint Con1eteo: ouration was seconos.
rebel:root # onstat -g seg
Infornix ynanic Server Version 7.8.UCi -- On-Line --
U :9:Z4 -- Z4888 ltytes
Seqnent Sunnary:
io ley aoor size ovIo c1ass t1luseo t1lfree
i587 i88i886Z4i i 998iZ 87Z l i4 7
i588 i88i886Z4Z ioe Z4576 97Z V 54 Z496
i589 i88i886Z48 ii84e 66Z8 68 h 67 7
Tota1: - - Z69i5Z - - 675 Z5i
* seqnent 1ocleo in nenory)
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
192
dbschema : gnrateur de rapport destin au DBA ; il produit des instruc-
tions SQL, utilises pour crer des bases de donnes et des tables.
dbexport, dbimport, dbload : ces outils permettent de sauvegarder en tota-
lit la base de donnes dans un fichier aisment utilisable pour restaurer la
base de donnes avec un minimum de travail.
finderr : ce programme produit une documentation dtaille des messages
derreurs dInformix. On excute finderr en donnant un numro derreur et
il produit une petite page dinformation sur la nature du problme.
tables SMI : vous allez vite vous familiariser avec la base de donnes
sysmaster situe dans le dbspace des rootdbs. Elle contient en abondance
des informations sur le moteur. Par exemple, on peut obtenir un compte
rendu de lutilisation du disque un peu plus lisible.
Le rapport suivant, appel IDSspaces, donne un compte rendu agrable de
lutilisation du disque. Au lieu de ce rapport :
rebel:root # onstat -d
Infornix ynanic Server Version 7.8.UCi -- On-Line --
U :88:5i -- Z4888 ltytes
tsaces
aooress nunter f1aqs fcIunl ncIunls f1aqs owner nane
iiiei8c i i i i N infornix rootots
iiie888 Z i Z i N infornix Iysots
iiie944 8 i 8 i N infornix 1oqsots
iiiea 4 Zi 4 i N T infornix tenots
iiieatc 5 i 5 i N infornix ots_ots
iiiet78 6 i 6 i N infornix oataotsi
iiiec84 7 i 7 i N infornix inoexotsi
7 active, Z47 naxinun
CIunls
aooress cIl/ots offset size free taqes f1aqs atInane
iiieif8 i i i 89Zi lO- /ot/oata/rootots
iiie848 Z Z iZ4 i87 lO- /ot/oata/Iysots
iiie4Z8 8 8 Z5 ii685 lO- /ot/oata/1oqsots
iiie58 4 4 i5 i49947 lO- /ot/oata/tenots
iiie5e8 5 5 5 49947 lO- /ot/oata/ots_ots
iiie6c8 6 6 iZ5 iZ4947 lO- /ot/oata/oataotsi
iiie7a8 7 7 iZ5 iZ4947 lO- /ot/oata/inoexotsi
7 active, Z47 naxinun
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
193
on obtient ceci :
Voici une autre vue qui utilise un programme appel IDSchunks :
rebel:root # IDSspaces
Infornix B Sace leort hon Jan Z4 i8:89:i4 ST Z
oataotsi
B CIl B -------- laqes -------- lct ------ li1otytes -----
No No Sace Nane Tota1 Iree Useo Iu11 Tota1 Iree Useo
6 6 oataotsi iZ5 iZ4947 58 .4 Z56 Z5589i i8
oataotsi iZ5 iZ4947 58 .4 Z56 Z5589i i8
ots_ots
B CIl B -------- laqes -------- lct ----- li1otytes ------
No No Sace Nane Tota1 Iree Useo Iu11 Tota1 Iree Useo
5 5 ots_ots 5 49947 58 .ii iZ4 iZZ9i i8
ots_ots 5 49947 58 .ii iZ4 iZZ9i i8
inoexotsi
B CIl B -------- laqes -------- lct ------- li1otytes ------
No No Sace Nane Tota1 Iree Useo Iu11 Tota1 Iree Useo
7 7 inoexotsi iZ5 iZ4947 58 .4 Z56 Z5589i i8
inoexotsi iZ5 iZ4947 58 .4 Z56 Z5589i i8
1oqsots
B CIl B -------- laqes -------- lct ------ li1otytes ------
No No Sace Nane Tota1 Iree Useo Iu11 Tota1 Iree Useo
8 8 1oqsots Z5 ii685 i8865 58.46 5iZ Z88Z8 Z787i
1oqsots Z5 ii685 i8865 58.46 5iZ Z88Z8 Z787i
Iysots
B CIl B -------- laqes -------- lct ------ li1otytes ------
No No Sace Nane Tota1 Iree Useo Iu11 Tota1 Iree Useo
Z Z Iysots iZ4 i87 i58 98.i7 Z97i 88Z Z588
Iysots iZ4 i87 i58 98.i7 Z97i 88Z Z588
rootots
B CIl B -------- laqes -------- lct ------ li1otytes ------
No No Sace Nane Tota1 Iree Useo Iu11 Tota1 Iree Useo
i i rootots i 89Zi i79 i.79 Z48 i8Z7 ZZ9
rootots i 89Zi i79 i.79 Z48 i8Z7 ZZ9
tenots
B CIl B -------- laqes -------- lct ------ li1otytes ------
No No Sace Nane Tota1 Iree Useo Iu11 Tota1 Iree Useo
4 4 tenots i5 i49989 6i .4 87Z 8775 iZ4
tenots i5 i49989 6i .4 87Z 8775 iZ4
rebel:informix $ IDSchunks 3
Linux rete1 Z.Z.i8 #i hon Nov 8 i5:5i:Z9 CT i999 i686 unlnown
/ot/infornix/ios/etc/rete1_sIn.cfq
leort 8: Oroer By ata Sace Nane, atatase, CIunl, Ii1e
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
194
Remarquons, dans ce compte rendu, que deux chunks ont t ajouts au
dbspace datadbs02, pour illustrer la sortie. Ce compte rendu et dautres outils
dadministration sont disponibles http://www.inxutil.com. IDSspaces est un
script de shell, qui formule une requte au moteur de base de donnes et
formate linformation dans un format plus lisible que celui produit par onstat.
Si vous tlchargez IDSspaces, vous aurez, en plus, le code source !
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
oataotsi
ts CIl Ii1esysten Tota1 laqes Iree laqes / Iree
6 6 /ot/oata/oataotsi iZ5 iZ4947 / 99.96
oataotsZ
ts CIl Ii1esysten Tota1 laqes Iree laqes / Iree
8 8 /ot/oata/oataotsZ Z5 Z4947 / 99.79
8 9 /ot/oata/oataotsZ.Z Z5 Z4997 / 99.99
8 i /ot/oata/oataotsZ.8 Z5 Z4997 / 99.99
75 7494i / 99.9Z
ots_ots
ts CIl Ii1esysten Tota1 laqes Iree laqes / Iree
5 5 /ot/oata/ots_ots 5 49947 / 99.89
inoexotsi
ts CIl Ii1esysten Tota1 laqes Iree laqes / Iree
7 7 /ot/oata/inoexotsi iZ5 iZ4947 / 99.96
1oqsots
ts CIl Ii1esysten Tota1 laqes Iree laqes / Iree
8 8 /ot/oata/1oqsots Z5 ii685 / 46.54
Iysots
ts CIl Ii1esysten Tota1 laqes Iree laqes / Iree
Z Z /ot/oata/Iysots iZ4 i87 / i.88
rootots
ts CIl Ii1esysten Tota1 laqes Iree laqes / Iree
i i /ot/oata/rootots i 8577 / 85.77
tenots
ts CIl Ii1esysten Tota1 laqes Iree laqes / Iree
4 4 /ot/oata/tenots i5 i49947 / 99.96
Tota1 A11 CIunls 57Z4 545iZ8 / 95.6
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
195
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 :
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 :
Par exemple, onmonitor donne les mmes informations sur la base que la
commande onstat :
BACCSS : uery-1anquaqe Connection atatase Tat1e Session xit
Use SL query 1anquaqe.
----------------------- lress CTlL-W for Fe1. ---
ynanic Server : Status laraneters tsaces hooe Iorce-Clt ...
Status nenu to view ynanic Server.
--------------------------On-Line------- lress CTlL-W for Fe1. ---
STATUS : lrofi1e UsertIreaos Saces atatases Loqs ArcIive ...
is1ay systen rofi1e infornation.
--------------------------On-Line------- lress CTlL-W for Fe1. ---
Boot Tine hon Jan Z4 i8:Z7:88 Z
Current Tine hon Jan Z4 i8:56:48 Z
isl leaos Buff.leaos /CacIeo isl Writes Buff. Writes /CacIeo
i8 ii67 9.75 ZZ ZZ .
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
196
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.
Support technique Informix
Vous pouvez appeler le support technique dInformix au 1-800-331-1763
pour obtenir lassistance directe dun ingnieur du support client sur un
problme particulier. Le support technique dInformix a gagn des prix ces
dernires annes, pour son temps de rponse exceptionnel et les solutions
apportes.
Over Locl Over UsertIreao User Tine Sys. Tine CIecloints
8 8
ixoa-lA iox-lA oa-lA lA-qsuseo LatcI Waits
5 5
Buff. Waits Locl Waits Locl leq. eao1ocls LTineouts CIecl Waits
Z 856
CALLS: Oen Start leao Write
i68 Zii 854 7
Tota1 Ca11s
lewrite e1ete Connit lo11tacl i5i

copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
197
Site web Informix
Une visite sur le site web dInformix http://www.informix.com vous
permettra de tirer profit dautres mthodes de lassistance client. Il y a sur ce
site un rseau de dveloppeurs Informix qui couvre de nombreux sujets, et
souvent, un groupe de discussion laccs limit pour chacun des domaines
du produit. Il existe aussi un centre TechInfo, un bon moyen dobtenir des
informations sur les corrections de bogues et autres informations techniques.
Groupe de news Usenet comp.databases.informix
Cest un groupe de news accessible sur lInternet via un serveur de news, une
liste de diffusion e-mail ou un serveur de news web, tel DejaNews. On peut
en savoir plus sur ce groupe de news en allant visiter le site web IIUG
(International Informix Users Group) du groupe international des utilisateurs
Informix http://www.iiug.org, ou en visitant un serveur de news du web.
Groupe international des utilisateurs Informix (IIUG)
LIIUG http://www.iiug.org est une mine de renseignements trs frquente
par ceux qui se servent des produits Informix. Non seulement on y trouve
plusieurs listes e-mail pour souscrire un abonnement, mais aussi une abon-
dance doutils pour dvelopper son propre monde Informix, des liens vers les
groupes dutilisateurs locaux lun dentre eux est probablement proche de
vous et des recommandations pour dmarrer son propre groupe dutilisa-
teurs.
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
198
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-
copyright ditions Eyrolles
Installer Informix sur Linux
CHAPITRE IV
199
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
200
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.
copyright ditions Eyrolles
V 5
Installer et utiliser
Sybase
sur Linux
Dans ce chapitre
Installation
Configuration
Test de la base de donnes
Conception de la base de donnes
Forces et faiblesses
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
202
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.
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
203
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/.
Installer SQL Server 11.0.3
Pour installer SQL Server 11.0.3.3, il faut dabord tlcharger les RPM
partir du site web de Sybase ou les trouver dans le CD-ROM supplmentaire
de Red Hat 5.2. Il faut se procurer les deux RPM suivants, qui contiennent :
Sybase-11.0.3.3-1.rpm : les fichiers de programme ;
Sybase-docs-11.0.3.3-1.rpm : la documentation.
Ces documents ne sont disponibles quen format Postscript, et sont assez
longs tlcharger. Le RPM du CD-ROM Red Hat 5.2 porte le numro de
version 11.0.3-2.
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
204
Configurer la machine de destination
Avant de passer linstallation des RPM, il est important dexaminer la ques-
tion du partage des lecteurs physiques de la machine de destination. Beau-
coup darguments ont t avancs, au sein du groupe de discussions sybase-
linux sur Internet, propos de la meilleure manire de partitionner et dutili-
ser lespace du disque dur de la machine. Nous dcrirons ici les options qui
ont fait lobjet du consensus gnral mais, si vous tes intress par le dbat,
vous pouvez consulter les archives sur http://forum.swarthmore.edu/
epigone/ase-linux-list.
Sybase sur Linux (comme beaucoup de programmes sur les machines UNIX)
accde aux units (devices) de base de donnes via le systme de fichiers.
Cest pourquoi SQL Server de Sybase ne gre pas directement les units de
base de donnes, quil sagisse de fichiers dun quelconque systme de
fichiers ou dunits telles que des partitions dun lecteur physique (par exem-
ple /dev/sda1). Il y a des avantages et des inconvnients de part et dautre.
Un fichier qui appartient au systme de fichiers prsente lavantage de
permettre un contrle sur lunit de base de donnes comme sur tout autre
fichier de ce type : par exemple, le dplacer, crer des liens symboliques vers
ce fichier ou le copier sur une autre machine. Avant que Sybase ne diffuse son
logiciel de rplication pour Linux, ctait lun des rares moyens faciles de
rpliquer une base de donnes. Malheureusement, sous le second systme de
fichiers tendu (le plus utilis sur Linux), la taille des fichiers est limite
deux giga-octets. Une unit de base de donnes, en tant que fichier du
systme de fichiers, est donc limite deux giga-octets.
Le passage par une partition de disque comme /dev/sda1 sous Linux
namliore pas la vitesse de la base de donnes de manire substantielle,
comme on sy attendrait, parce que Linux fait un usage intensif de la
mmoire cache. Les accs une partition de disque ou au systme de fichiers
se servent lun comme lautre du systme de cache de Linux. Une partition de
disque ddie permet de disposer de fichiers de taille suprieure deux giga-
octets, ce qui est important pour les grandes bases de donnes. Dun autre
ct, une partition ddie la base de donnes ne peut tre atteinte que par
lunit de blocs correspondante et doit tre alloue en partitionnant le disque.
Lun des principaux dbats du groupe sybase-linux a port sur lusage de ces
deux types de fichiers de base de donnes. Beaucoup de DBA sur dautres
plates-formes UNIX invoquent que la seule manire davoir une unit de base
de donnes est de lavoir sur une partition brute non formate (raw). Ce type
de partition est une unit du systme pour laquelle le systme dexploitation
nutilise pas du tout le cache : toutes les critures sont effectues directement
sur le disque, avant que le contrle ne soit rendu au programme appelant. Les
noyaux de Linux, jusqu la srie 2.2, ne supportent pas les vraies units raw,
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
205
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
206
Partitionnez le premier disque SCSI en cinq partitions natives Linux au
moins, et de prfrence une partition dchange Linux en plus. La premire
partition native accueillera le systme de fichiers racine (root) et pourra tre
de taille assez petite (de 200 300 Mo) ; la seconde, le systme de fichiers
/usr, est denviron 2 Go ; la troisime contiendra les fichiers /opt, o Sybase
sinstallera lui-mme partir du RPM. Cette partition sera au moins assez
grande pour contenir la distribution Sybase installe (approximativement
300 Mo). Les deux dernires partitions natives Linux ne sont pas destines
recevoir un systme de fichiers et doivent avoir une taille denviron 50 Mo ;
elles contiendront les units master et sybsystemprocs de Sybase. Les
second et troisime lecteurs SCSI seront partitionns comme les grandes
partitions Linux natives ( la taille entire du disque), mais il ne faut pas y
crer de systme de fichiers.
La distribution Linux sinstalle sur le premier lecteur SCSI.
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
Tle nunLer cf cy`ncers fcr lls csl s sel lc 147.
Tlere s nclln_ .rcn_ .ll llal, Lul lls s `ar_er llan 1C4,
anc ccu`c n cerlan selus cause rcL`ens .ll:
1) scfl.are llal runs al Lccl lne 'e._., !1!C)
) Lccln_ anc arllcnn_ scfl.are frcn cller CSs
'e._., LCS !L1Sl, CS/ !L1Sl)
Ccnnanc 'n fcr le`): p
isl /oev/soa: Z55 Ieaos, 68 sectors, iZ47 cy1inoers
Units = cy1inoers of i665 * 5iZ tytes
evice Boot Start no B1ocls Io Systen
/oev/soai * i 88 Z654i 88 Linux nounteo /
/oev/soaZ 84 Z95 Zi488 88 Linux nounteo /usr
/oev/soa8 Z96 886 8Zi8 88 Linux nounteo /ot
/oev/soa4 887 iZ47 789575 5 xtenoeo
/oev/soa5 887 486 88Z5 88 Linux naster oevice
/oev/soa6 487 586 88Z5 88 Linux sytsysrocs oevice
/oev/soa7 587 554 i44585 8Z Linux Swa 1inux swa
/oev/soa8 555 iZ47 555849 88 Linux nounteo /Ione
Connano n for Ie1) : q
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
207
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 :
Cette commande installera SQL Server Sybase dans le rpertoire /opt/sybase.
Aprs installation des fichiers, on retourne linvite de commande. Pour
continuer linstallation, excuter le script /opt/sybase/install/sybinstall.sh. Ce
script affiche dabord le texte de la licence laquelle on doit souscrire, puis se
poursuit par linvite de linstallation et installe le serveur de base de donnes.
La figure 5.1 prsente les questions poses, suivies dun expos des options.
rpm ivh sybase-11.0.3.3-1.rpm
O YOU Al WITF TF LIST LICNS CONITIONS ? ]Yes/No/List] : yes
o you want tIis scrit to roceeo ty insta11inq an account? ]y/n]: y
rou sytase not founo. Create it now? ]y/n]: y
rou ano ernissions for /ot/sytase are set !
User sytase not founo. Create it now? ]y/n]: y
CIanqinq assworo for user sytase
New UNIX assworo:
letye new UNIX assworo:
asswo: a11 autIentication tolens uoateo successfu11y
User sytase is avai1at1e, re1ease user io is set !
TIis con1etes your Sytase Aoative Server nterrise AS) aclaqe
insta11ation. To run Sytase AS, you nay 1ile confiqurinq your naster
ano sytsystenrocs oatatases ty continuinq tIe insta11ation roceoure
after 1oqqinq in as sytase ano executinq /ot/sytase/insta11/sytinit.
TIis action is tIe oefau1t wIen you 1oqin for tIe first tine.
le-runninq tIis confiquration roceoure can te initiateo ty renovinq
tIe. reaone ano. sytinit fi1es fron tIe `sytase` insta11ation
oirectory.
Figure 51
Invite de sybinstall.sh
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
208
La premire question concerne la cration dun compte dutilisateur pour le
serveur de base de donnes Sybase. Il faut, en principe, laisser faire le script,
de sorte que le serveur fonctionne en tant que compte dutilisateur Sybase, ou
de groupe. Il attend galement la cration dun groupe et dun utilisateur.
Rpondre oui ces deux questions. Le script demande ensuite un mot de
passe pour le compte utilisateur Sybase : choisir un mot de passe pour ce
compte dutilisateur et lentrer deux reprises. Le script met alors jour la
proprit des fichiers dans le rpertoire /opt/sybase, de sorte que le groupe et
le compte utilisateur que lon vient de crer en soient propritaires.
Le script signale que le fichier /opt/sybase/install/sybinit doit tre excut
avec les droits de lutilisateur Sybase pour que la procdure dinstallation
suive son cours. Auparavant, il faut mettre jour les proprits de deux autres
fichiers : en particulier, autoriser lutilisateur et le groupe Sybase crire dans
les partitions dj rserves pour les units de Sybase. Pour ce faire, excuter,
en tant que root, les commandes suivantes, dans lesquelles on remplacera
/dev/sdxx par les units de disque relles utiliser comme units de base de
donnes :
Maintenant que lutilisateur Sybase a la proprit des fichiers quil utilisera
comme units de base de donnes, il faut sassurer quaucun autre utilisateur
na le droit de lire les partitions de la base de donnes. Si dautres utilisateurs
avaient accs aux units, ils pourraient ventuellement lire les donnes des
fichiers et reconstruire la base de donnes sans respecter la structure des auto-
risations Sybase. Les commandes suivantes assurent que seuls lutilisateur et
le groupe Sybase auront accs ces fichiers :
Installer les logiciels clients optionnels
Il existe plusieurs paquetages logiciels clients qui facilitent considrablement
ladministration et le dveloppement de la plate-forme Sybase.
[root@wanderer install]# cd /dev
[root@wanderer /dev]# chown sybase:sybase /dev/sda5
[root@wanderer /dev]# chown sybase:sybase /dev/sda6
[root@wanderer /dev]# chown sybase:sybase /dev/sdb1
[root@wanderer /dev]# chown sybase:sybase /dev/sdc1
[root@wanderer /dev]# chmod o-rwx /dev/sda5
[root@wanderer /dev]# chmod o-rwx /dev/sda6
[root@wanderer /dev]# chmod o-rwx /dev/sdb1
[root@wanderer /dev]# chmod o-rwx /dev/sdc1
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
209
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
210
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 :
en :
[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
[linux]
locale = en_US, us_english, iso_1
locale = ENGLISH, us_english, iso_1
locale = fr_FR, french, iso_1
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
211
Ainsi les variables denvironnement $LC_ALL et $LANG sont autonomes.
videmment, si ces variables contiennent une autre langue que celles qui sont
spcifies dans le fichier modifi, il faudra ajouter cette entre au fichier, avec
sa propre description de langue. Sybase 11.0.3.3 ne propose des traductions
que pour le chinois, le franais, lallemand, le japonais, lespagnol et lamri-
cain mais, et cest encore plus trange, le fichier locales.dat ne contient de
reprsentations que pour lamricain, le franais, lallemand et le japonais. On
pourrait aisment en ajouter dautres.
Configurer le serveur de base de donnes Sybase
Dans lcran de la figure 5.2, choisir dabord 3. Configure a Server product
en appuyant sur la touche 3.
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
locale = FRENCH, french, iso_1
locale = de_DE, german, iso_1
locale = GERMAN, german, iso_1
locale = ja_JP, japan, eucjis
locale = JAPANESE, japanese, eucjis
locale = C, us_english, iso_1
locale = default, us_english, iso_1
SYBINIT

i. le1ease oirectory: /ot/sytase

Z. oit / View Interfaces Ii1e

8. Confiqure a Server roouct
4. Confiqure an Oen C1ient/Server roouct

Ctr1-a Accet ano Continue, Ctr1-x xit Screen, ? Fe1.
nter tIe nunter of your cIoice ano ress return :
Figure 52
cran initial de lapplication sybinit
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
212
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.
CONIIUl SlVl llOUCTS

lrooucts:

lroouct ate Insta11eo ate Confiqureo
i. SL Server i Se i998 i5:47
Z. Baclu Server i Se i998 i5:47
Ctr1-a Accet ano Continue, Ctr1-x xit Screen, ? Fe1.
nter tIe nunter of your cIoice ano ress return :
Figure 53
cran de choix du produit (sybinit)
NW Ol XISTIN SL SlVl

i. Confiqure a new SL Server
Z. Confiqure an existinq SL Server
8. Uqraoe an existinq SL Server

Ctr1-a Accet ano Continue, Ctr1-x xit Screen, ? Fe1.
nter tIe nunter of your cIoice ano ress return :
Figure 54
cran de configuration de SQL Server (sybinit)
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
213
A NW SL SlVl

i. SL Server nane: SYBAS

Ctr1-a Accet ano Continue, Ctr1-x xit Screen, ? Fe1.
nter tIe nunter of your cIoice ano ress return :
Figure 55
cran de cration dun nouveau SQL Server (sybinit)
SL SlVl CONIIUlATION
i. CONIIUl SlVl`S INTlIACS IIL NTlY Incon1ete
Z. hASTl VIC CONIIUlATION Incon1ete
8. SYBSYSThllOCS ATABAS CONIIUlATION Incon1ete
4. ST llOlLO LOCATION Incon1ete
5. CONIIUl IAULT BAClUl SlVl Incon1ete
6. CONIIUl LANUAS Incon1ete
7. CONIIUl CFAlACTl STS Incon1ete
8. CONIIUl SOlT Oll Incon1ete
9. ACTIVAT AUITIN Incon1ete
Ctr1-a Accet ano Continue, Ctr1-x xit Screen, ? Fe1.
nter tIe nunter of your cIoice ano ress return :
Figure 56
cran de configuration de SQL Server (sybinit)
SlVl INTlIACS IIL NTlY SClN

Server nane: SYBAS

i. letry Count:
Z. letry e1ay:

8. Aoo a new 1istener service

Ctr1-a Accet ano Continue, Ctr1-x xit Screen, ? Fe1.
nter tIe nunter of your cIoice ano ress return :
Figure 57
cran de configuration du fichier dinterfaces de SQL Server (sybinit)
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
214
Les deux premires options de lcran (figure 5.7) spcifient respectivement
combien de fois un client peut essayer de se reconnecter sil na pas russi la
premire fois, et lattente entre deux tentatives de connexion. On peut sans
problme laisser cette valeur 0. En slectionnant 3. Add a new listener
service dans lcran de la figure 5.7, on peut spcifier quel port et quel nom
dhte le serveur sera attach, ce qui spcifie un autre alias de nom logique
pour le serveur.
Dans lcran de la figure 5.8, on indique un numro de port que le serveur
Sybase va couter. Ce numro de port sera suprieur 1024, car le serveur
fonctionne comme un utilisateur normal et non comme root. Il est recom-
mand dutiliser le port 1433, parce que cest le port par dfaut dont se sert
Microsoft SQL Server. Cela facilite laccs des clients Microsoft SQL Server
sous Windows au serveur SQL Server Sybase (il y a quelques restrictions
lutilisation de ces clients, car les dveloppements de Sybase et de Microsoft
SQL Server ont diverg depuis que Microsoft a acquis la licence initiale du
code auprs de Sybase).
Le champ Hostname/address sera renseign soit par le nom dhte, soit par
ladresse IP de linterface sur laquelle SQL Server coutera. SQL Server
Sybase coutera seulement sur cette interface. Le champ Name alias permet
dattribuer un autre nom logique SQL Server. Ce nom logique spcifie cette
entre dinterface particulire.
Quand ces options sont configures, appuyer sur Ctrl-A pour revenir lcran
de saisie du fichier dinterfaces de SQL Server. On peut ajouter une autre
entre Listener dans le fichier dinterfaces si lon veut que le mme SQL
Server coute sur une autre interface ou port.
Quand on a renseign toutes les interfaces Listener que lon veut, appuyer sur
Ctrl-A et rpondre oui linvite de sauvegarde des modifications du fichier
dinterfaces.
IT TCl SlVIC

i. Fostnane/Aooress: wanoerer.oeftecI.con
Z. lort:
8. Nane A1ias:

4. e1ete tIis service fron tIe interfaces entry

Ctr1-a Accet ano Continue, Ctr1-x xit Screen, ? Fe1.
nter tIe nunter of your cIoice ano ress return :
Figure 58
cran de configuration du fichier dinterfaces du TCP Service Listener de SQL Server (sybinit)
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
215
La figure 5.9 prsente un fichier dinterfaces cr par lapplication sybinit,
avec deux interfaces Listener. On peut voir que lune est sur linterface
wanderer.deftech.com avec le port 1433 et lautre sur linterface localhost,
avec le mme port 1433. Les deux interfaces ont des noms logiques diffrents
WANDERER et LOCALSERVER. Comme ce fichier est un fichier texte
normal, il est modifiable directement, en dehors de sybinit.
Aprs en avoir termin avec le fichier dinterface du serveur, slectionner,
dans lcran de la figure 5.6, le menu 2. Master device configuration pour
choisir lemplacement de lunit master. Spcifier le fichier qui contiendra
lunit master (/dev/sda5 dans cet exemple) et la taille de lunit. Elle aura
une taille dau moins 21 Mo, mais ce doit tre la taille exacte de la partition
cre auparavant, si lon se sert dune unit. Appuyer sur Ctrl-A pour conti-
nuer. Lapplication sybinit met un avertissement qui indique que le fichier ou
lunit choisi nest pas recommand pour une unit de serveur : il se rfre
aux diffrences, expliques la section prcdente, entre units par blocs et
units brutes sur la machine de destination. Appuyer sur Entre pour conti-
nuer.
## WANll on wanoerer.oeftecI.con
## Services:
## query tc i488)
WANll
query tc etIer wanoerer.oeftecI.con i488
## LOCALSlVl on 1oca1Iost
## Services:
## query tc i488)
LOCALSlVl
query tc etIer 1oca1Iost i488
## SYBAS on wanoerer.oeftecI.con
## Services:
## query tc i488)
## query tc i488)
## naster tc i488)
## naster tc i488)
SYBAS
query tc etIer wanoerer.oeftecI.con i488
query tc etIer 1oca1Iost i488
naster tc etIer wanoerer.oeftecI.con i488
naster tc etIer 1oca1Iost i488
Figure 59
Fichier dinterfaces cr par lapplication sybintit
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
216
Ensuite, on initialise lunit de base de donnes sybsystemprocs comme on
la fait pour lunit master. La seule diffrence est que lon choisit /dev/sda6
comme emplacement de lunit.
Loption 4 (figure 5.6) spcifie le fichier dans lequel SQL Server Sybase
crira ses messages derreur. Ce peut tre un fichier quelconque du systme
de fichiers, pourvu que lutilisateur Sybase y ait accs en criture. Il sera vri-
fi priodiquement, car toutes les erreurs rencontres par SQL Server y seront
consignes.
Loption 5 (figure 5.6) spcifie le nom logique du serveur de sauvegarde. Ce
peut tre un serveur de sauvegarde Sybase existant, indiqu dans le fichier
dinterface, ou le nom dun nouveau serveur de sauvegarde crer lors de la
configuration du serveur de sauvegarde. Si cest un serveur autonome, indi-
quer seulement son nom et sen souvenir pour tre capable de lindiquer plus
tard, lors de la configuration du serveur de sauvegarde. Son nom par dfaut
est SYB_BACKUP.
Loption 6 (figure 5.6) fixe les encodages de langue et la langue par dfaut
que lon souhaite installer dans cette base de donnes.
Loption 7 (figure 5.6) choisit les jeux de caractres et le jeu de caractres par
dfaut installer dans la base de donnes.
Loption 8 (figure 5.6) choisit la mthode de classement qui sapplique la
base de donnes. Attention : ce choix sapplique aux instructions SORT BY et
loprateur = . Donc, si vous choisissez, par exemple, un classement de
caractres indiffrents la casse, ABC, Abc, abc seront gaux dans toutes les
instructions SQL de comparaison.
Loption 9 (figure 5.6) dtermine si laudit est autoris dans la base de
donnes. Ce sujet dborde du cadre de ce chapitre, mais le paquetage sybase-
docs.11.0.3.3.rpm contient des informations suffisantes propos de cette
option. Dans lexemple, elle nest par active (choix par dfaut).
Quand les neuf options ont t passes en revue, appuyer sur Ctrl-A pour
continuer. Sybinit demande si lon veut excuter la configuration de SQL
Server tout de suite. Rpondre oui : sybinit initialise les units de base de
donnes master et sybsystemprocs et dmarre le serveur de base de donnes.
Il met le mme avertissement que prcdemment (sur les units par blocs)
pour lunit master. L encore, ignorer cet avertissement et appuyer sur
Entre. Si tout se passe bien, le serveur de base de donnes Sybase sera
install et fonctionnera la fin de ce processus. La figure 5.10 montre le
rsultat. Remarquer, la deuxime ligne, que lunit master nest pas
/dev/sda5, mais un fichier normal /opt/sybase/master.dat. Cest parce quil
ne sagit, dans cet exemple, que dune machine de dveloppement et de
dmonstration, et non dune vraie base de donnes.
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
217
xecute tIe SL Server Confiquration now ? y
WAlNIN: `/ot/sytase/naster.oat` is a requ1ar fi1e wIicI is not
reconnenoeo for a Server oevice.
lress <return> to continue.
lunninq tasl: create tIe naster oevice.
Bui1oinq tIe naster oevice.
one
Tasl succeeoeo: create tIe naster oevice.
lunninq tasl: uoate tIe SL Server runserver fi1e.
Tasl succeeoeo: uoate tIe SL Server runserver fi1e.
lunninq tasl: toot tIe SL Server.
waitinq for server `SYBAS` to toot...
Tasl succeeoeo: toot tIe SL Server.
lunninq tasl: create tIe sytsystenrocs oatatase.
sytsystenrocs oatatase createo.
Tasl succeeoeo: create tIe sytsystenrocs oatatase.
lunninq tasl: insta11 systen storeo roceoures..
.......................................................................
.......................................................................
.........................................one
Tasl succeeoeo: insta11 systen storeo roceoures.
lunninq tasl: set ernissions for tIe `nooe1` oatatase.
one
Tasl succeeoeo: set ernissions for tIe `nooe1` oatatase.
lunninq tasl: set tIe oefau1t cIaracter set ano/or oefau1t sort oroer
for tIe SL Server.
Settinq tIe oefau1t cIaracter set to iso_i
Sort oroer `tinary` Ias a1reaoy teen insta11eo.
CIaracter set `iso_i` is a1reaoy tIe oefau1t.
Sort oroer `tinary` is a1reaoy tIe oefau1t.
Tasl succeeoeo: set tIe oefau1t cIaracter set ano/or oefau1t sort oroer
for tIe SL Server.
lunninq tasl: set tIe oefau1t 1anquaqe.
Settinq tIe oefau1t 1anquaqe to us_enq1isI
Lanquaqe `us_enq1isI` is a1reaoy tIe oefau1t.
Tasl succeeoeo: set tIe oefau1t 1anquaqe.
Confiquration con1eteo successfu11y.
lress <return> to continue.
Figure 510
Processus dinstallation et de mise en route du serveur de base de donnes Sybase
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
218
Configurer le serveur de sauvegarde Sybase
Quand le serveur de base de donnes fonctionne, configurer le serveur de
sauvegarde (figure 5.3). Si lon a install une baie de serveurs
1
, on naura
besoin que dun serveur de sauvegarde pour tous les serveurs de base de
donnes. Pour ce faire, ajouter le nom logique du serveur de sauvegarde dans
le fichier dinterfaces de chacun des serveurs de base de donnes et initialiser
le serveur de sauvegarde par dfaut comme on la vu lcran de la figure 5.6,
ltape 5. Sil sagit dun serveur autonome ou dun serveur de sauvegarde
spcifique de la ferme, il faudra crer un nouveau serveur de sauvegarde sur
la machine.
Choisir de crer un nouveau serveur de sauvegarde et lui donner un nom logi-
que. On utilisera le mme nom que celui du serveur de sauvegarde par dfaut,
dans le serveur de base de donnes (figure 5.3). Quand le nom est choisi,
appuyer sur Ctrl-A et le programme sybinit affichera lcran de la figure 5.11.
Loption 1 permet de choisir le fichier dans lequel les messages du serveur de
sauvegarde seront conservs : un fichier quelconque du systme de fichiers
convient. Loption 2 cre, dans le fichier dinterfaces, une entre pour le
serveur de sauvegarde : elle ressemble lentre relative au serveur de base
de donnes. On peut spcifier le nombre dessais, le dlai entre essais et le
service Listener du serveur de sauvegarde. On doit spcifier au moins un
service Listener : ce peut tre un port ou une interface quelconques. Les
options 3 et 4 spcifient la langue et le jeu de caractres que lon veut utiliser
sur le serveur de sauvegarde. Loption 5 indique le fichier de configuration
qui contient des informations sur les bandes. Ce sujet nest pas abord ici,
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.
bAClUl S!\! CCN!1UAT1CN

1. baclu Server errcr`c_: /cl/syLase/nsla``/Laclu.`c_
. !nler / |ccfy baclu Server nlerfaces f`e nfcrnalcn
. baclu Server `an_ua_e: us_en_`sl
4. baclu Server claracler sel: sc_1
5. baclu Server lae ccnf_uralcn f`e: /cl/syLase/Laclu_lae.cf_

Clr`-a Accel anc Ccnlnue, Clr`-x !xl Screen, ? e`.
!nler lle nunLer cf ycur clcce anc ress relurn :
Figure 511
cran de configuration du serveur de sauvegarde dapplications sybinit
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
219
mais est trait dans le Guide de ladministrateur systme de la documentation
des RPM, ainsi que sur le site web de Sybase http://sybooks.sybase.com.
Aprs avoir renseign les cinq options, appuyer sur Ctrl-A et sybinit propose
de dmarrer le serveur de sauvegarde. Rpondre oui. Si tout se passe bien, le
serveur de sauvegarde sera mis en service. La figure 5.12 montre la trace du
dmarrage du serveur de sauvegarde par sybinit.
Configurer les bibliothques client-serveur de Sybase
Aprs les serveurs, il faut aussi configurer les bibliothques client. Cette tape
consiste essentiellement en slections de menus, car il ny a aucun paramtre
fournir. Loption 4. Configure an Open Client/Server product, prsente
dans lcran de la figure 5.2, propose trois produits client configurer ; confi-
gurer chacun deux. Quand cest termin, appuyer sur Ctrl-A plusieurs fois
pour sortir de lapplication sybinit.
Beaucoup dapplications client sattendent ce que la variable denvironne-
ment $SYBASE soit place dans la racine de larbre dinstallation Sybase, et
leur indique o trouver le fichier dinterfaces ainsi que dautres fichiers de
donnes. Si de nombreux utilisateurs de votre machine se connectent de la
mme manire en tant que clients, depuis cette machine ou dautres machines
Linux, insrez la ligne suivante dans /etc/profile, de manire initialiser cette
variable pour tout le monde :
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.
!xecule lle baclu Server ccnf_uralcn nc. ? y
unnn_ lasl: ucale lle baclu Server runserver f`e.
Tasl succeecec: ucale lle baclu Server runserver f`e.
unnn_ lasl: Lccl lle baclu Server.
.aln_ fcr server `SYb_bAClUl` lc Lccl...
Tasl succeecec: Lccl lle baclu Server.
Ccnf_uralcn ccn`elec successfu``y.
lress <relurn> lc ccnlnue.
Figure 512
Processus de dmarrage initial du serveur de sauvegarde
export SYBASE=/opt/sybase
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
220
Dmarrer automatiquement le serveur de base de
donnes et le serveur de sauvegarde
ce stade, le serveur de base de donnes et le serveur de sauvegarde fonc-
tionnent. Pour quun serveur de base de donnes soit indpendant, on
souhaite, en gnral, que ces serveurs dmarrent en mme temps que la
machine. Linstallation de Sybase a cr un fichier /etc/rc.d/init.d/sybase, un
script de dmarrage rc compatible avec la mthode standard de Red Hat de
dmarrage et darrt des services. Pour que Sybase dmarre au moment du
boot et que tout se passe bien quand on larrte, il faut crer des liens symbo-
liques vers ce fichier dans /etc/rc.d/rc0.d, /etc/rc.d/rc3.d, /etc/rc.d/rc5.d et
/etc/rc.d/rc6.d, dont la signification sort du cadre de ce chapitre. Le jeu de
commandes qui suivent assure que Sybase dmarre et se termine correcte-
ment. Ces commandes doivent tre excutes sous le compte root.
Aprs excution de ces commandes, toutes les bases de donnes Sybase et les
serveurs de sauvegarde de la machine seront dmarrs au prochain boot.
Modifier le mot de passe de ladministrateur systme
Le serveur de base de donnes Sybase est oprationnel. On peut se connecter
au serveur depuis une machine locale, laide des noms logiques accessibles
dans le fichier des interfaces. Sybase propose une application appele isql, qui
permet denvoyer de manire interactive des instructions SQL au serveur de
base de donnes et de recevoir les rsultats lcran. NB : on peut aussi tl-
charger sqsh, un outil beaucoup plus agrable pour des fonctionnalits simi-
laires. Voir sa description la section SQSH , page 209.
Sybase installe le serveur de base de donnes avec un mot de passe vide pour
ladministrateur systme (sa), ce qui reprsente un risque important ; par
consquent, il faut le changer aussi vite que possible. Pour changer le mot de
passe de sa, il faut se connecter au serveur avec loutil isql et excuter la
procdure stocke sp_password, comme suit :
#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
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
221
Normalement, quand on met jour le mot de passe dun utilisateur, on doit
aussi donner les paramtres caller_password, new_password et loginame la
procdure stocke sp_password.
Configurer les units de bases de donnes
et les bases de donnes
La prochaine tape de configuration du serveur est de crer les units de bases
de donnes o seront stockes les tables utilisateur. Dans lexemple, il ne
faudra quune seule base de donnes utilisateur sur la machine, mais on peut
trs facilement avoir des bases de donnes multiples sur chaque unit et des
units multiples sur la machine, ainsi quune base de donnes unique rpartie
sur des units multiples. Sybase offre toutes ces possibilits, qui sont autant
dextensions logiques du cas trait ici.
Pour crer une nouvelle unit de base de donnes, utiliser la commande disk
init, dont la syntaxe est :
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.
[brad@wanderer bard]$ /opt/sybase/bin/isql -U sa -S WANDERER
Password:
1> sp_password @new_password="INOTELL"
2> go
Password correctly set.
(return status = 0)
DISK INIT NAME="<name>",
PHYSNAME="<device>",
VDEVNO=<devnumber>,
SIZE=<size>
[, CNTRLTYPE=<controller>] [, VSTART=<offset>] [, CONTIGUOUS]
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
222
Par exemple, on excutera les deux commandes suivantes dans isql :
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 :
La clause on spcifie sur quelle unit sera place la base de donnes, et la
clause =size sa taille, en mga-octets. La clause log on indique SQL Server
o placer le journal des transactions. Par exemple, pour crer une base de
donnes, user_data, de manire ce quelle occupe les deux units data1 et
xact, passer la commande :
1> disk init name="xact", physname="/dev/sdb1",
2> VDEVNO=2, SIZE=<SIZE OF PARTITION in 2KB blocks>
3> go
1> disk init name="data1", physname="/dev/sdc1",
2> VDEVNO=3, SIZE=<SIZE OF PARTITION in 2KB blocks>
3> go
create database database_name
[on {default | database_device } [= size ]
[, database_device [= size ]...]
[log on database_device [ = size ]
[, database_device [= size ]]...]
[with override]
[for load]
1> create database user_data on data1=<SIZE OF PARTITION in MB>
2> log on xact=<SIZE OF PARTITION in MB>
3> go
CREATE DATABASE: allocating 51200 pages on disk 'data1'
CREATE DATABASE : allocating 14336 pages on disk 'xact'
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
223
Nous disposons maintenant dune trs grande base de donnes utilisateur
appele user_data. Pour la mettre en service, passer la commande
use user_data et crer des tables, des vues, des procdures stockes, etc.
Crer des comptes utilisateur et des autorisations
Il nest videmment pas recommand de se servir du nom dutilisateur sa
pour toute connexion dun client la base de donnes. On peut crer dautres
utilisateurs, dautres noms de connexion et dautres groupes, et spcifier les
autorisations des diffrents utilisateurs et groupes.
Les noms de connexion (login) ne sont pas la mme chose que les utilisateurs
(users). Les noms de connexion ne servent quau cours du processus de
connexion relle la base de donnes. Ensuite, le nom dutilisateur rel peut
changer, selon la base de donnes laquelle lutilisateur se connecte. Certains
noms de connexion peuvent avoir le mme nom dutilisateur et dautres
disposer dun alias dans diffrentes bases de donnes. Certains noms de
connexion peuvent mme ne donner accs aucune base de donnes. Les
nouveaux noms de connexion sont crs dans la base de donnes master par
la procdure stocke sp_addlogin, qui attend deux paramtres : le nom de
connexion et le mot de passe. Par exemple, crons deux noms de connexion
dans la base de donnes user_data :
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.
1> sp_addlogin brad, <password>
2> go
Password correctly set.
Account unlocked.
New login created.
(return status = 0)
1> sp_addlogin mary, <password>
2> go
Password correctly set.
Account unlocked.
New login created.
(return status = 0)
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
224
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 :
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.
1> use master
2> go
1> sp_defaultdb brad, user_data
2> go
Default database changed.
(return status = 0)
1> sp_defaultdb mary, user_data
2> go
Default database changed.
(return status = 0)
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
225
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) :
Dautres utilisateurs de la base de donnes peuvent tre ajouts laide de la
procdure stocke sp_adduser : elle indique le nom de connexion, le nouveau
nom dutilisateur dans cette base de donnes, et le groupe auquel appartient
lutilisateur. Par exemple, mary est un nouvel utilisateur ajouter la base de
donnes user_data. Mary est diteur, aussi nous en ferons un membre du
groupe des diteurs et elle hritera toutes les autorisations des diteurs :
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,
1> use user_data
2> go
1> sp_addgroup editors
2> go
1> use user_data
2> go
1> sp_addalias brad, dbo
2> go
Alias user added.
(return status = 0)
1> use user_data
2> go
1> sp_adduser mary, mary, editors
2> go
New user added.
(return status = 0)
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
226
suppression, rfrences ou excuter) sur un objet particulier. Voici la syntaxe
des instructions GRANT et REVOKE correspondantes :
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 :
Tester la base de donnes
Rcapitulons : nous avons une base de donnes compltement oprationnelle
qui contient une base de donnes utilisateur appele user_data, et deux noms
de connexion : brad et mary. Actuellement, ces deux noms de connexion
2
dmarrent par dfaut dans la base de donnes user_data, mais mary (et le
groupe editors tout entier) na aucune autorisation (sauf si lon a cr les
tables auteurs, chapitres et livres, et accord lautorisation de les lire aux
diteurs).
Nous allons maintenant parcourir quelques tapes de test lmentaire de
linstallation de la base de donnes.
Excutons dabord la commande suivante, pour vrifier que le serveur de base
de donnes fonctionne :
grant {all [privileges]| permission_list}
on { table_name [(column_list)]
| view_name[(column_list)]
| stored_procedure_name}
to {public | name_list | role_name}
[with grant option]
revoke [grant option for]
{all [privileges] | permission_list}
on { table_name [(column_list)]
| view_name [(column_list)]
| stored_procedure_name}
from {public | name_list | role_name}
[cascade]
1> grant select on auteurs to editors
2> grant select on chapitres to editors
3> grant select on livres to editors
4> go
2. Rappel : login ; on dit aussi compte .
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
227
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 :
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.
# /etc/rc.d/init.d/sybase status
US! l1L /ClU /|!| \S/ SS TTY STAT STAT T1|! CC||ANL
syLase 648 C.C 8.5 1764 1CC4 ls/C S 18:6 C:C
/cl/syLase/Ln/calaserver -c/cl/syLase/nasler.cal -sSYbAS!
-e/cl/syLase/nsla``/errcr`c_ -/cl/syLase
syLase 64 C.C .1 67C 4C88 ls/C S 18:6 C:CC
/cl/syLase/Ln/Lacluserver -SSYb_bAClUl
-e/cl/syLase/nsla``/ Laclu.`c_ -1/cl/syLase/nlerfaces
-|/cl/syLase/Ln/syLnu`lLuf -!us_en_`sl -!sc_1
-c/cl/syLase/Laclu_lae.cf_
/etc/rc.d/init.d/sybase start
# /opt/sybase/bin/isql -U <username> -S <servername>
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
228
Essayons quelques commandes simples pour interrompre le shell SQL.
Dabord, faisons la liste de tous les objets de la base de donnes que nous
pouvons utiliser. Sybase dispose pour cela dune procdure stocke, sp_help
qui, sans aucun paramtre, listera tous les objets (tables, vues, procdures
stockes, etc.) de la base de donnes courante. Si lon donne en paramtre le
nom dun objet particulier, elle affichera des informations relatives cet
objet. Par exemple, si lon est dans la base de donnes user_data (se connec-
ter avec le login brad, ou avec sa, et excuter la commande use user_data) et
que lon excute sp_help, on obtient une liste telle que :
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 :
1> sp_help
2> go
Nane C.ner CLecl_lye
--------------- --------------- ----------------------
sysa`lernales cLc syslen laL`e
sysallrLules cLc syslen laL`e
syscc`unns cLc syslen laL`e
sysccnnenls cLc syslen laL`e
sysccnslranls cLc syslen laL`e
sysceencs cLc syslen laL`e
sys_ans cLc syslen laL`e
sysncexes cLc syslen laL`e
sysleys cLc syslen laL`e
sys`c_s cLc syslen laL`e
syscLecls cLc syslen laL`e
sysarllcns cLc syslen laL`e
sysrccecures cLc syslen laL`e
sysrclecls cLc syslen laL`e
sysreferences cLc syslen laL`e
sysrc`es cLc syslen laL`e
sysse_nenls cLc syslen laL`e
sysllreslc`cs cLc syslen laL`e
syslyes cLc syslen laL`e
sysusernessa_es cLc syslen laL`e
sysusers cLc syslen laL`e
User_lye Slcra_e_lye !en_ll Nu``s Lefau`l_nane u`e_nane
--------------- --------------- ------ ----- ------------ ---------
'relurn slalus = C)
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
229
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 :
1> sp_help sysusers
2> go
Nane C.ner Ty[e
------------------------ ----------------------------- -------------
sysusers cLc systen taL`e
Lata_`ccatec_cn_se_nent llen_createc
------------------------------ --------------------------
systen !an 1 1CC 1:CCAM
Cc`unn_nane Ty[e !en_tl lrec Sca`e Nu``s Lefau`t_nane u`e_nane 1centty
-------------- ------------ ------ ---- ----- ----- ------------- --------- --------
suc sna``nt NU!! NU!! C NU!! NU!! C
uc sna``nt NU!! NU!! C NU!! NU!! C
_c sna``nt NU!! NU!! C NU!! NU!! C
nane sysnane C NU!! NU!! C NU!! NU!! C
envrcn varclar 55 NU!! NU!! 1 NU!! NU!! C
ncex_nane ncex_cescr[tcn ncex_leys ncex_nax_rc.s_[er_[a_e
----------- ------------------------------------- ------------- --------------------
sysusers c`usterec,unque `ccatec cn systen suc C
ncsysusers1 ncnc`usterec,unque `ccatec cn systen nane C
ncsysusers ncnc`usterec,unque `ccatec cn systen uc C
' rc.s affectec)
leyty[e cLect re`atec_cLect cLect_leys re`atec_leys
-------- -------------- --------------- --------------------- -------------------
fcre_n sysa`ternates sysusers suc,,,,,,, suc,,,,,,,
ccnncn syscLects sysusers uc,,,,,,, uc,,,,,,,
ccnncn sys[rctects sysusers uc,,,,,,, uc,,,,,,,
ccnncn systy[es sysusers uc,,,,,,, uc,,,,,,,
[rnary sysusers -- ncne -- suc,,,,,,, ,,,,,,,
CLect s nct [arttcnec.
'return status = C)
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
230
Aprs avoir excut ce code, laide de isql, dans la base de donnes
user_data, nous disposons maintenant dun nouvel objet appel user_logins.
Si vous tes curieux, essayez encore sp_help pour afficher tous les objets et
voir ce que lon obtient propos de user_logins. Ajoutons maintenant quel-
ques donnes cette table :
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 :
1> CREATE TABLE user_logins (
2> username VARCHAR(20) PRIMARY KEY,
3> password VARCHAR(20),
4> fname VARCHAR(30),
5> lname VARCHAR(50),
6> email VARCHAR(100)
7> )
8> go
INSERT INTO user_logins (username, password, fname, lname, email) VALUES
('brad', 'let me in', 'Brad', 'Dietrich', 'brad@deftech.com')
INSERT INTO user_logins VALUES ('mary', 'let me in', 'Mary', 'Poppins',
'mary@somewhere.net')
INSERT INTO user_logins VALUES ('brad', 'password', 'Brad', 'Poppins',
'brad@somewhere.net')
SELECT username, lname, fname, email FROM user_logins SORT BY lname
CREATE INDEX user_logins_lname_fname ON user_logins(lname, fname)
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
231
Finalement, pour supprimer cette table qui ne nous intresse pas vraiment
ce nest quun test on passe la commande :
Si toutes ces commandes ont fonctionn la fois pour lutilisateur sa et pour
lutilisateur brad, votre base de donnes est compltement configure et
correcte. Si des erreurs se sont produites pendant ce test simple, revenez en
arrire dans le chapitre, assurez-vous que vous avez bien termin toutes les
tches de configuration et dinstallation dcrites. Maintenir une base de
donnes qui fonctionne de manire impeccable est souvent un travail temps
plein pour un DBA accompli ; mais de petites bases de donnes pourront tre
maintenues et fonctionner grce aux commandes exposes dans ce chapitre.
Conception dune base de donnes
La conception est une tape trs importante dans tout projet de dveloppe-
ment dune base de donnes. Cest souvent la premire tape du dveloppe-
ment, et peut-tre lune des plus critiques. Si une base de donnes est mal
pense ds le dpart, elle risque malheureusement de rester en ltat, car tout
changement implique de refaire tous les dveloppements qui reposent sur elle.
Quand on sapprte dvelopper une nouvelle base de donnes, il ne suffit
pas dimaginer les types de donnes qui doivent y tre rangs, mais aussi
toutes les dpendances et les cas dutilisation qui peuvent se prsenter mainte-
nant ou lavenir. Concevoir une base de donnes revient essayer de prdire
le futur, car toute base de donnes non triviale est appele durer. Il faut donc
prendre en considration la teneur des requtes auxquelles elle devra rpon-
dre, ainsi que la manire dont elle rpondra, en termes de structures.
Pour essayer de donner une esquisse de ce qui entre en ligne de compte dans
le dveloppement dune bonne base de donnes, considrons, par exemple, la
socit qui publie cet ouvrage. Elle peut crer une base de donnes dinforma-
tions sur tous les livres quelle publie, les chapitres de chacun des livres, et les
auteurs de ces chapitres. Dans une premire tentative de dfinition de cette
base de donnes, prenons en compte les donnes qui sont rfrences par
dautres. videmment, un livre contiendra des chapitres ; nous reprsenterons
cela en incluant la cl primaire du livre dans la colonne book du chapitre, ce
qui nous permettra de savoir aisment quel livre appartiennent les chapitres.
Le prochain ensemble de donnes relier est lauteur du chapitre. Il est possi-
ble (cest le cas de ce livre) que les diffrents chapitres du livre soient crits
par des auteurs diffrents. Donc, notre modle de donnes doit pouvoir accep-
DROP TABLE user_logins
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
232
ter un auteur par chapitre. Le seul moyen de le faire sera dinclure la cl
primaire de la table auteurs dans la table chapitres. Cela fonctionne tant quil
ny a pas plus dun auteur par chapitre. Mais, comme il est prvoir que
plusieurs auteurs participent lcriture dun mme chapitre, ce modle de
donnes sera inadapt. De mme, nous ne devons pas inclure la cl primaire
du chapitre dans la table auteurs, parce quil est probable quun auteur crira
plusieurs chapitres.
Cette relation n n apparat souvent dans la modlisation des donnes. Pour
modliser cette relation n n correctement, nous pouvons retenir lapproche
nave qui consiste crer des colonnes auteur multiples dans la table des
chapitres, mais nous nous trouverons invariablement face au cas o le nombre
de colonnes sera insuffisant. De mme, crire une instruction SQL qui gre le
cas des colonnes cls trangres multiples sera, au mieux, fastidieux.
La meilleure manire de modliser cette relation n n est de crer une table
de liaison qui contiendra les cls des tables chapitres et auteurs. Donc, pour
chaque chapitre quun auteur crira, il y aura une ligne dans la table de
liaison, et pour chaque chapitre qui a des auteurs multiples, il y aura une ligne
par auteur dans la table de liaison.
Pour clairer cet exemple, le script SQL suivant va crer les quatre tables, les
remplir de quelques donnes dessai et faire des requtes. Supposons quil ny
ait quun seul titre Le modle de base de donnes Wild . Il aura deux
chapitres intituls Chapitre 1 et Chapitre 2 . Chapitre 1 a t crit
exclusivement par Joe User et le chapitre 2, par Joe User et Sally User.
CREATE TABLE books (
book_id NUMERIC(10,0) PRIMARY KEY,
book_title VARCHAR(100)
)
CREATE TABLE chapters (
chapter_num NUMERIC(10,0) PRIMARY KEY,
book_id NUMERIC(10,0) REFERENCES books(book_id),
chapter_title VARCHAR(100)
)
CREATE TABLE authors (
author_id NUMERIC(10,0) PRIMARY KEY,
fname VARCHAR(30),
lname VARCHAR(30)
)
CREATE TABLE chapter_author_link (
link_id NUMERIC(10,0) IDENTITY PRIMARY KEY,
chapter_num NUMERIC(10,0) REFERENCES chapters(chapter_num),
author_id NUMERIC(10,0) REFERENCES authors(author_id)
)
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
233
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.
Colonne Identit (auto-incrmente)
Sybase offre la possibilit de crer des colonnes de type entier qui sincr-
mentent automatiquement chaque fois que lon insre une ligne dans la table.
Ces colonnes sont intressantes pour gnrer des cls primaires, dans les
tables qui nont pas naturellement de colonnes contenant des donnes
uniques, ou si lon veut rfrencer une colonne particulire dune autre table,
sans se servir dune longue chane en cl primaire.
Une colonne identit doit tre du type de donnes NUMERIC et sera toujours
un entier. La taille nest pas importante, mais on prend des risques se servir
dun NUMERIC trop grand. Pour crer une colonne identit, on utilise la
syntaxe suivante :
INSERT INTO books VALUES (1, 'The Wild Database Model')
INSERT INTO chapters VALUES (1, 1, 'Chapter 1')
INSERT INTO chapters VALUES (2, 1, 'Chapter 2')
INSERT INTO authors VALUES (1, 'Joe', 'User')
INSERT INTO authors VALUES (2, 'Sally', 'User')
INSERT INTO chapter_author_link (chapter_num, author_id)
VALUES (1, 1)
INSERT INTO chapter_author_link (chapter_num, author_id)
VALUES (2, 1)
INSERT INTO chapter_author_link (chapter_num, author_id)
VALUES (2, 2)
SELECT book_title, chapter_num, chapter_title, lname, fname
FROM books, chapters, authors, chapter_author_link
WHERE books.book_id=chapters.book_id
AND chapters.chapter_num=chapter_author_link.chapter_num
AND authors.author_id=chatper_author_link.author_id
Lccl_ll`e claler_nun claler_ll`e `nane fnane
----------------------- ----------- ------------- ----- -----
Tle l`c LalaLase |cce` 1 Claler 1 User !ce
Tle l`c LalaLase |cce` Claler User !ce
Tle l`c LalaLase |cce` Claler User Sa``y
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
234
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.
CREATE TABLE <tablename> (
table_id NUMERIC(<size>, 0) IDENTITY PRIMARY KEY,
...
)
set identity_insert <table_name> on
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
235
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.
1> CREATE TABLE table_a (
2> table_a_id NUMERIC(10,0) IDENTITY PRIMARY KEY,
3> value_a VARCHAR(30)
4> )
5> go
1> CREATE TABLE table_b (
2> table_b_id NUMERIC(10,0) IDENTITY PRIMARY KEY,
3> table_a_id NUMERIC(10,0) REFERENCES table_a(table_a_id),
4> value_b VARCHAR(30)
5> )
6> go
1> INSERT INTO table_a (value_a) VALUES ('value_a')
2> INSERT INTO table_b (table_a_id, value_b) VALUES (@@IDENTITY, 'value_b')
3> go
(1 row affected)
(1 row affected)
1> SELECT * FROM table_a, table_b WHERE table_a.table_a_id=table_b.table_a_id
2> go
table_a_id value_a table_b_id table_a_id value_b
------------ ----------------- ------------- ------------------------------
1 value_a 1 1 value_b
(1 row affected)
Figure 513
Exemple de session isql qui illustre lusage de la variable @@IDENTITY
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
236
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 :
Malheureusement, ce nest pas le cas de Sybase en version 11.0.3.3 ; la figure
5.17 montre comment formuler cette instruction dans Sybase pour parvenir au
mme rsultat.
CREATE TABLE authors (
lname VARCHAR(30) PRIMARY KEY,
fname VARCHAR(30),
initial CHAR(1)
)
CREATE TABLE chapters (
chapter_number NUMERIC(10,0) PRIMARY KEY,
author_lname VARCHAR(30) REFERENCES authors(lname),
title VARCHAR(100)
)
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
SELECT chapter_number, title, lname, fname
FROM chapters INNER JOIN authors ON chapters.author_lname=authors.lname
WHERE chapter_number=6
Figure 516
Code SQL pour retrouver le titre et lauteur dun chapitre en utilisant la syntaxe JOIN
SELECT chapter_number, title, lname, fname
FROM chapters, authors
WHERE chapters.author_lname=authors.lname AND chapter_number=6
Figure 517
Code SQL pour retrouver le titre et lauteur dun chapitre en utilisant la syntaxe de Sybase
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
237
On voit que la phrase de la figure 5.17 a exactement la mme signification,
mais quelle est formule autrement. La syntaxe JOIN a t adopte pour
regrouper toutes les relations entre les tables dans la clause FROM, de sorte
quil est plus facile de lire linstruction sous cette forme SQL et de compren-
dre ce qui se passe. Le tableau 5.1 montre la correspondance entre les opra-
teurs de Sybase et la syntaxe JOIN utilise dans les autres SGBDR.
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.
Utilisation de la mmoire par Sybase
Il faut indiquer Sybase combien de mmoire le systme pourra utiliser. Par
dfaut, il ne se sert que denviron 16 Mo de mmoire pour ses caches internes
et les donnes. On obtient de bien meilleures performances si lon donne une
valeur un peu plus grande. La rgle de base est de soustraire la quantit de
mmoire physique dont on a besoin pour les autres processus qui sexcutent
sur la machine (assez peu, esprons-le) de la mmoire physique totale. Le
rsultat indique la taille de la mmoire donner Sybase. Attention, en sens
inverse, ne pas allouer trop de mmoire Sybase, sinon Linux sera forc
dliminer quelque chose sur le disque quand il aura besoin de mmoire
physique, ce qui tue absolument les performances dun serveur de base de
donnes.
On peut spcifier la quantit de mmoire que Sybase essaiera dutiliser, dans
la ligne total memory du fichier SYBASE.cfg dans le rpertoire
/opt/sybase. Le nombre indiquer est un nombre de blocs de 2 Ko que
Sybase utilisera pour la mmoire partage.
Tableau 51
Correspondance entre la syntaxe de JOIN et les oprateurs de Sybase
Syntaxe de jointure Oprateur de Sybase
INNER JOIN =
LEFT JOIN *=
RIGHT JOIN =*
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
238
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.
Important. Attribuer la mmoire partage une valeur aussi leve annihile un
espace dadressage prcieux sur les serveurs de plus de 2 Go de RAM ; utiliser plutt
un vrai matriel 64 bits.
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 :
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
echo 134217728 > /proc/sys/kernel/shmmax
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 ;
for run_server in RUN_* ; do
su -c "startserver -f ${run_server}" sybase > /dev/null 2>&1 ;
echo -n "${run_server} " ;
done )
echo
;;
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
239
changer le script rc pour arrter Sybase SQL Server avec loption wait, au lieu
de nowait. Voici ce quil faut modifier :
que lon change en :
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 :
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
;;
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
240
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).
On a maintenant cr une nouvelle unit de base de donnes qui se sert de
/dev/ram. Il ne faut utiliser cette unit que pour la base de donnes tempdb.
Elle nexiste que dans la RAM et ne doit rien contenir dutile lors du redmar-
rage de la machine. Puisque cest le cas, par dfinition, de tempdb (Sybase
cre tempdb partir du modle de la base de donnes chaque fois quil
dmarre), on peut facilement utiliser la RAM comme support mmoire de
tempdb.
Maintenant, il faut encore transfrer tempdb dans cette unit tempdbdev. Le
jeu de commandes qui suit cre un fichier disque de 20 Mo et transfre
tempdb depuis lunit master vers cette unit.
append=ramdisk_size=<size in KB>
1> disk init name=tempdbdev, physname=/dev/ram, vdevno=XX,
size=<size of partition in 2k blocks>
(Note : remplacer XX par la valeur correcte de vdevno !)
2> go
# /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
1> alter database tempdb on tempdbdev=20
(Note: remplacer =20 par le nombre de mga-octets que vous
avez spcifi pour tempdbdev dans disk init)
2> go
Extending database by 9984 pages on disk tempdbdev
1> use tempdb
2> go
1> sp_helpdb tempdb
(Note: cette commande naffiche que lutilisation de la base de donnes)
2> go
name db_size owner dbid created status
----------- ----------- --------- --------- ------------------- ---------------------
tempdb 21.5 MB sa 2 Jan 12, 2000 select into/bulkcopy
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
241
device_fragments size usage free kbytes
------------------------------ ------------- -------------------- -----------
master 2.0 MB data and log 1184
tempdbdev 19.5 MB data and log 19968
device segment
------------------------------ ----------------------------------------------
master default
master logsegment
master system
tempdbdev default
tempdbdev logsegment
tempdbdev system
(return status = 0)
1> sp_dropsegment "default", tempdb, master
2> go
DBCC execution completed. If DBCC printed error messages, contact a user with
System Administrator (SA) role.
Segment reference to device dropped.
(return status = 0)
1> sp_dropsegment "logsegment", tempdb, master
2> go
DBCC execution completed. If DBCC printed error messages, contact a user with
System Administrator (SA) role.
DBCC execution completed. If DBCC printed error messages, contact a user with
System Administrator (SA) role.
Could not update the last-chance threshold for database tempdb
Segment reference to device dropped.
(return status = 0)
1> sp_dropsegment "system", tempdb, master
2> go
DBCC execution completed. If DBCC printed error messages, contact a user with
System Administrator (SA) role.
Segment reference to device dropped.
WARNING: There are no longer any segments referencing device 'master'. This
device will no longer be used for space allocation.
(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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
242
Remarquer le message davertissement du dernier sp_dropsegment : cest
exactement ce que nous voulons (aucune des bases de donnes de tempdb
nutilise plus lunit master) aussi ne faut-il pas seffrayer. Une dernire
remarque propos du transfert de tempdb sur un disque RAM: il faut se
souvenir que la RAM que lon alloue tempdb doit tre soustraite de la RAM
totale, avant de dterminer la quantit de RAM dont Sybase disposera pour
son cache interne (voir la section prcdente sur lutilisation de la mmoire).
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.
name db_size owner dbid created status
------------- ------------- ----------- ------ -------------- --------
tempdb 21.5 MB sa 2 Jan 12, 2000 select into/bulkcopy
device_fragments size usage free kbytes
------------------------------ ------------- -------------------- -----------
master 2.0 MB data only 1232
tempdbdev 19.5 MB data and log 19888
device segment
------------------------------ --------------------------------------------
master -- unused by any segments --
tempdbdev default
tempdbdev logsegment
tempdbdev system
(return status = 0)
copyright ditions Eyrolles
Installer et utiliser Sybase sur Linux
CHAPITRE V
243
On peut souscrire cette liste sur la page http://www.isug.com/ISUG2/
ase_linux_form.html, et une archive est disponible sur http://forum.swarth-
more.edu/epigone/ase-linux-list. Il y a aussi un groupe international dutilisa-
teurs Sybase (ISUG), qui propose beaucoup de services aux DBA et aux
dveloppeurs Sybase. Consulter leur site http://www.isug.com/.
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.
Q. Mon journal de transaction remplit tout mon fichier de base de donnes, ce
qui fait que les insertions chouent. Comment puis-je remdier cela ?
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
244
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 :
sp_dboption <dbname>, trunc, true
copyright ditions Eyrolles
VI
6
Installer DB2
version 6.1 sur
Linux Red Hat
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
246
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.
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
247
Universelle quant la gestion. Au-del la gestion des affaires sur le Web,
de grandes masses dinformation, des recherches complexes et du datawa-
rehouse, DB2 facilite rellement la vie grce son outil de gestion de
premier ordre, le centre de contrle, qui simplifie la gestion de systme,
la fois locale ou distance, et, de ce fait, diminue le cot total du site.
Ce ne sont l que quelques-unes des caractristiques perceptibles qui font de
DB2 lune des meilleures bases de donnes du monde. Mais on peut encore
combiner la puissance de Linux avec la base de donnes la plus fiable au
monde pour le-business, DB2 dIBM. La base de donnes universelle DB2
pour Linux offre des fonctionnalits Internet sans gal. Le centre de contrle
DB2 propose aux administrateurs une interface prte lusage pour la mainte-
nance de bases de donnes, qui peut tre lance depuis tout navigateur Web
quip de Java. Aux dveloppeurs Java, DB2 pour Linux offre les supports
JDBC et SQLJ, et Net.Data autorise la cration dapplications Web dynami-
ques, pilotes par les donnes. Les dveloppeurs Perl, quant eux, peuvent
tirer parti du driver Perl de DB2 pour linterface de base de donnes Perl.
DB2 pour Linux est un trs bon choix pour le-business. En tant que fonde-
ment de le-business, DB2 est lun des systmes de gestion de base de
donnes relationnelles multimdia et prts pour le web les mieux placs
sur le march, car il est assez fort pour rpondre la demande de grandes
entreprises, et assez flexible pour se mettre au service des petites et moyennes
entreprises. Avec la version 6.1, DB2 pour Linux se dote damliorations
significatives qui facilitent le dveloppement dapplications de-business.
Voici quelques-unes des caractristiques comprises dans le nouveau DB2
pour Linux :
Aide lamlioration de ladministration. Contient le nouveau guide
dindexation et un moniteur de performance.
Amliorations du dveloppement dapplications. Comprend un support
UNICODE amlior, et des limites de table/colonne augmentes.
Support du container OLE DB. Donne accs des sources de donnes
quipes de OLE-DB, telles que Microsoft Access et Lotus Approach.
Support de la connexion DB2. Permet de protger les sources des
donnes et de matriser linvestissement courant quimplique cette tche,
quil sagisse de lhte ou de DB2 sur AS/400. Vu que DB2 gre plus de
70 pour cent des donnes informatiques du monde, le produit de
connexion DB2 vous conduit porter vos efforts sur la recherche et lutili-
sation de vos donnes, plutt que sur leur transmission.
Avec plus de 6500 entreprises maintenant associes au projet, le nombre des
partenaires convertis aux solutions de gestion des donnes dIBM a augment
de 50 % en 1999. Plus de 50 000 programmeurs ont particip la version 6.1
bta de DB2 ; et maintenant on peut essayer la vraie!
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
248
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.
dition DB2 Personal Developer
Saviez-vous que lon peut tlcharger une version non limite dans le
temps de ldition DB2 Personal Developer pour Linux ? Toutes les autres
copies dvaluation de DB2 sont limites. Ldition DB2 Personal Develo-
per fournit aux dveloppeurs de logiciels tous les outils pour dvelopper
des outils de bureau et des applications, dans ldition DB2 Universal
Database Personal. Ce produit peut tre tlcharg gratuitement, et utilis
pour lvaluation, la dmonstration, les tests et le dveloppement de
programmes dapplication. Pour lutiliser dans un environnement de
production, il faut acqurir la licence approprie, payante.
Sont comprises dans ldition DB2 Personal Developer :
ldition DB2 Universal Database Personal, base de donnes DB2 toutes
fonctions, mono-utilisateur. Cette version de DB2 peut se connecter
des bases de donnes DB2 distance, mais ne peut rpondre des
requtes internes du client.
ldition DB2 Connect Personal pour connecter des applications de la
station de travail aux bases de donnes hte et AS/400. Avec ce produit,
une station de travail accde aux donnes DB2 qui rsident sur le
systme hte ou AS/400.
Sont comprises dans les fichiers tlchargs, tant pour dition DB2
Universal Database Personal, que pour ldition DB2 Connect Personal,
les outils suivants :
outils dadministration DB2, y compris le centre de contrle.
kit des dveloppeurs de logiciel DB2, qui comprend une API, des outils
et de la documentation destine aux dveloppeurs.
Les produits DB2 et ldition DB2 Connect Personal sont disponibles pour
Linux, OS/2, Windows 9x, et Windows NT.
Vous voulez en savoir plus ? Allez voir la page DB2 dIBM pour Linux
http://www-4.ibm.com/software/data/db2/linux/
a
.
a. Sur www-4.ibm.com/software/data/db2, la version disponible actuellement est la version 7.0.
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
249
Prparer linstallation de DB2 sur une
station de travail Red Hat
Avant dinstaller un produit DB2 sur la station de travail Red Hat, il faut
rendre cette dernire apte recevoir DB2. Les tches effectuer pour cela
dpendent de la version de Linux Red Hat. Comme le systme dexploitation
Linux volue, et que les relations se renforcent entre IBM et les diteurs
Linux, on peut sattendre voir disparatre ce type dtapes de prparation.
Jusque-l, pour que linstallation se droule bien et que la configuration
prenne le moins de temps possible, suivre soigneusement les instructions qui
suivent.
Avant de pouvoir installer un produit DB2 sur une station de travail Linux, il
faut sassurer que la station de travail Linux rpond aux contraintes
suivantes :
noyau Linux version 2.0.35 ou suprieure ;
RPM (gestionnaire de paquetage Red Hat) ;
paquetage pdksh (shell Korn du domaine public) ;
glibc version 2.0.7 ou suprieure ;
libstdc++ version 2.8.0 ou suprieure.
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.
Prparer Red Hat version 5.2 et version 6.0
une installation de DB2
Il est assez facile de raliser une installation par dfaut de Red Hat version
5.2, ou version 6.0, qui rponde la question. Il suffit dajouter le paquet
pdksh requis pour lancer programme dinstallation de DB2, sil nest pas
encore install. Ce progiciel est disponible sur les CD-ROM Red Hat version
5.2 et version 6.0, dans le rpertoire /RedHat/RPMS, et peut tre install
laide de la commande rpm i.
Remarque. Si vous utilisez Gnome ou lenvironnement KDE, vous pouvez utiliser un
outil graphique pour ajouter ce progiciel.
Par exemple, pour installer le progiciel pdksh-5.2.13-3 sur lune de ces
versions de Red Hat, entrer la commande suivante :
rpm i pdksh-5.2.13-3
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
250
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.
Prparer Red Hat version 6.1 une installation de DB2
Depuis peu, la version 6.1 de Red Hat est, pour lessentiel, disponible. Cette
version de Red Hat prsente un problme sur sa bibliothque de chargement
dynamique, qui provoque lchec de DB2 au dmarrage du gestionnaire de
base de donnes pour une instance. Le gestionnaire de base de donnes,
dmarr par la commande db2start, est requis pour dmarrer une instance,
crer une base de donnes et accder des donnes dans une base de donnes.
Bref, si le gestionnaire de base de donnes nest pas dmarr, on ne peut pas
utiliser DB2. Comme cest le programme dinstallation de DB2 qui effectuera
la plupart des tapes de configuration requises pour initialiser un serveur
DB2, il lui faudra crer et dmarrer une instance, ce qui aura pour effet de
suspendre linstallation.
IBM travaille avec Red Hat corriger ce problme ; en attendant, il y a quel-
ques tapes parcourir pour le contourner et russir installer DB2. Pour que
la station de travail Red Hat version 6.1 installe un produit DB2, il faut tl-
charger un fichier de mise jour (patch). Pour rendre les choses un peu plus
confuses, la mise jour tlcharger dpend de lorigine du code DB2
installer. Votre code DB2 peut provenir de deux sources : la version de DB2
distribue par IBM, disponible pour lessentiel depuis fin 1999, ou la version
de DB2 fournie dans la bote de la version 6.1 de Red Hat.
Pour sassurer que lon tlcharge le bon fichier de mise jour et que limpl-
mentation est correcte, effectuer les tapes suivantes :
1. Se connecter sa station de travail en tant quutilisateur avec lautorisa-
tion root.
2. Se connecter au site ftp de support dIBM ftp://ftp.software.ibm.com
/ps/products/db2/tools.
3. Tlcharger le fichier de chemin appropri.
Pour installer la copie de DB2 livre dans la bote Red Hat version 6.1,
tlcharger le fichier de mise jour db2rh61fix.tgz. Pour installer toute
autre copie de DB2, tlcharger le fichier db2rh61gafix.tgx.
Sassurer que la copie de DB2 que lon installe ne vient pas de la bote
Red Hat version 6.1, si lon tlcharge le fichier db2rh61gafix.tgx. On ne
peut pas partager ces corrections.
4. Dcompresser (unzip et untar) le fichier de mise jour en entrant la
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
251
commande :
o patch_name est le nom du fichier de mise jour appropri, qui a t
tlcharg pour la copie de DB2.
5. Implmenter la mise jour. Aprs dcompression de la mise jour, il reste
trois fichiers dans le rpertoire. Lun de ces fichiers, appel readme.txt,
donne des instructions compltes sur la manire dimplmenter les correc-
tions.
Aprs avoir rsolu le problme associ la bibliothque de chargement
dynamique de la version 6.1, il faut penser ajouter le paquet manquant
pdksh requis pour lancer le programme dinstallation de DB2. Ce progi-
ciel est disponible sur le CD-ROM Red Hat version 6.1, dans le rpertoire
/RedHat/RPMS, et sinstalle laide de la commande rpm i.
Remarque. Si vous utilisez Gnome ou lenvironnement KDE, vous pouvez utiliser un
outil graphique pour ajouter ce progiciel.
Par exemple, pour installer pdksh-5.2.14-1 sur Red Hat version 6.1, entrer
la commande :
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
tar xvf patch_name
rpm i pdksh-5.2.14-1
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
252
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 mainteniez pas de versions prcdentes dun produit DB2 sur
votre station de travail, ou dutilisateurs par dfaut (db2inst1, db2fenc1, et
db2as). Sil existe lun de ces utilisateurs sur votre systme, enlevez-le
laide de la commande userdel. Je vous recommande de suivre les instruc-
tions de ce chapitre sur une station de travail vierge de toute installation de
produit DB2.
Vous pouvez installer DB2 laide de la commande rpm ; mais cela vous
demandera encore quelques efforts, la fin de linstallation, pour configurer
votre serveur correctement. Je vous recommande dutiliser le programme
dinstallation de DB2 pour installer et maintenir tous les produits DB2.
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.
Remarque. lI se produit quelquefois des problmes daffichage, quand on lance le
programme dinstallation de DB2. Si votre affichage rencontre ces problmes, vous
pouvez appuyer sur CTRL-L tout moment, pour rafrachir votre cran. Pour viter la
plupart des problmes daffichage, je vous recommande dinstaller DB2 dans une
session de console virtuelle, cest--dire une fentre de terminal en dehors de linter-
face graphique standard, installe sur la plupart des stations de travail Red Hat. Pour
passer une console virtuelle, appuyer sur CTRL-ALT-F1. Pour revenir linterface
graphique, appuyer sur CTRL-ALT-F7.
Pour installer DB2, effectuer les tapes suivantes :
1. Se connecter la station de travail Red Hat en tant quutilisateur avec
lautorisation root.
2. Insrer le CD-ROM de la base de donnes universelle DB2 version 6.1
dans lunit de CD-ROM.
3. Mme si lon installe DB2 sur une station de travail qui fonctionne avec
Red Hat version 6.1, et que lon se sert de limage cre par le fichier de
mise jour pralablement tlcharg, il y a encore besoin dutiliser le CD-
ROM DB2 : pour installer DB2, le fichier de mise jour se sert des
fichiers quil cre, en mme temps que des fichiers trouvs sur le CD-
ROM DB2. Pour plus dinformation, voir le fichier readme.txt fourni avec
la mise jour.
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
253
4. Monter le CD-ROM en entrant la commande :
5. Se mettre dans le rpertoire CD-ROM mont, en entrant la commande :
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.
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-
mount t iso9660 o ro /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
Figure 61
Fentre dinstallation de DB2 version 6.1
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
254
tion de DB2 sont montres la figure 6.2. Select all choisira tous les com-
posants optionnels pour cette installation.
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.
10. Pour personnaliser les messages de DB2, choisir loption Customize
approprie. La fentre des messages de produit DB2 souvre (figure 6.3).
Les options par dfaut sont bonnes. Choisir OK.
11. Pour personnaliser la bibliothque de produit DB2, choisir loption
Customize approprie. La fentre des messages de produit DB2 souvre
(figure 6.4). Loption par dfaut sert installer la documentation DB2 et
laide en anglais pour le centre de contrle. Pour notre exemple, les
options par dfaut sont bonnes. Choisir OK.
12. La fentre de cration des services DB2 souvre (figure 6.5).
Figure 62
Fentre de personnalisation pour dition DB2 Workgroup
Figure 63
Personnaliser les messages de produit DB2
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
255
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 64
Personnaliser la bibliothque de produit DB2
Figure 65
Fentre de cration des services DB2
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
256
le vrifier dans le champ Verify password. Si lon choue spcifier un
mot de passe, le mot de passe par dfaut ibmdb2 sera utilis. Je vous
recommande de ne pas utiliser le mot de passe par dfaut : comme il est
utilis pour toutes les installations de produits DB2, et est par consquent
bien connu, son utilisation prsente un risque pour votre rseau.
Pour plus dinformations sur lautorisation SYSADM, voir le Guide
dadministration de DB2.
14. Choisir loption Properties. La figure 6.7 illustre les proprits que lon
peut spcifier.
Figure 66
Fentre dinstance DB2
Figure 67
Proprits dune instance
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
257
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.
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
Figure 68
Fentre dutilisateur fenced
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
258
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).
Le programme dinstallation de DB2 gnrera un utilisateur par dfaut,
qui sera connu en tant que propritaire de linstance du serveur dadminis-
tration. Cet utilisateur aura lautorisation administrateur systme
(SYSADM) sur linstance du serveur dadministration. Pour notre exem-
ple, admettre les valeurs par dfaut. Entrer un mot de passe dans le champ
Password, le vrifier dans le champ Verify password, puis choisir OK. Si
lon choue spcifier un mot de passe, cest le mot de passe par dfaut,
ibmdb2, qui sera pris en compte. Je vous recommande de ne pas utiliser le
mot de passe par dfaut : comme il est utilis pour toutes les installations
de produits DB2, et est par consquent bien connu, son utilisation prsente
un risque pour votre rseau. Une fentre contextuelle apparat, qui vous
donne votre nom de systme DB2 (figure 6.10).
Figure 69
Fentre du serveur dadministration
Figure 610
Fentre de nom DB2SYSTEM
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
259
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.
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 611
Fentre de rsum
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
260
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).
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 612
Fentre contextuelle davertissement
Figure 613
Fentre de rapport dtat
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
261
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 :
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.
2. Dmarrer le gestionnaire de base de donnes laide de la commande
db2start. Pour accder une base de donnes qui rside dans une instance,
linstance doit tre dmarre et en fonctionnement. Souvenez-vous : nous
Figure 614
Le fichier log
su db2inst1
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
262
avons opt pour cet auto-dmarrage dinstance ; on reoit le message sui-
vant, aprs lenvoi de la commande :
Remarque. Si vous recevez le message derreur SQL10007N "-1393" ne peut pas
tre retrouv. Code derreur : "1", nayez pas peur ! DB2 ne cherche tout simplement
pas connatre linstance par dfaut. Cela se produit, entre autres, si le fichier de profil
DB2 na t pas excut lentre dans le systme (login). Dans cet exemple, entrer la
commande : export DB2INSTANCE=db2inst1.
3. Entrer, pour se connecter la base de donnes SAMPLE, la commande :
On obtient la rponse suivante :
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.
On obtient la sortie suivante :
SQL1026N The database manager is already active.
db2 connect to sample
Database Connection Information
Database server = DB2/LINUX 6.1.0
SQL authorization ID = DB2INST1
Local database alias = SAMPLE
db2 "select * from staff where dept = 20"
ID NAME DEPT JOB YEARS SALARY COMM
----- -------- ---- ----- ------ ------- ---------
10 Sanders 20 Mgr 7 18357.50 -
20 Pernal 20 Sales 8 18171.25 612.45
80 James 20 Clerk 13504.60 128.20
190 Sneider 20 Clerk 8 14252.75 126.50
4 record(s) selected.
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
263
5. Entrer ensuite, pour restaurer la connexion la base de donnes, la
commande :
Flicitations ! Vous avez russi installer et configurer un serveur de ldition
Workgroup de DB2, et vous tes prt vous servir de lune des meilleures
bases de donnes, sur la plate-forme la plus utilise au monde pour le-
commerce.
Pour utiliser le centre de contrle, il faut dabord le configurer : pour plus
dinformations, voir la prochaine section. Si vous voulez installer un client
DB2, voir la section Installer un client DB2, plus loin dans ce chapitre.
Configurer le centre de contrle
Si lon veut utiliser le centre de contrle pour grer des stations de travail
distance et planifier des scripts sur un serveur DB2, il faut initialiser lenvi-
ronnement Run-Time Java (JRE). On peut lancer le centre de contrle, soit
comme une application Java, soit comme une applet Java au travers dun
serveur Web. Je vous recommande de lancer le centre de contrle comme une
application Java. Pour plus dinformations, se reporter au fichier README
du centre de contrle, appel readme.htm, et situ dans le rpertoire
/usr/IBMdb2/V6.1/cc/prime. Les directives donnes dans cette section suppo-
sent que lon initialise le centre de contrle pour quil fonctionne comme une
application Java. Si lon ne souhaite pas utiliser le centre de contrle, sauter
cette section et aller directement la section Installer un client DB2, plus loin
dans ce chapitre.
Pour initialiser le centre de contrle sur le serveur DB2, passer par les tapes
suivantes :
1. Se connecter la station de travail, en tant quutilisateur avec lautorisa-
tion root.
2. Tlcharger un JRE appropri. Pour avoir les informations les plus rcen-
tes sur les navigateurs et les JRE supports, consulter
http://www.software.ibm.com/data/db2/.
Pour lancer le centre de contrle, il faut au moins Java 1.1.7 v3, ou une
version ultrieure.
Un JRE pour Red Hat est disponible sur le site Web Blackdown :
http://www.blackdown.org/java-linux/mirrors.html.
db2 connect reset
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
264
Pour cet exemple, jai explor le site miroir ftp://metalab.unc.edu
/pub/linux/devel/lang/java/blackdown.org/JDK-1.1.7/i386/glibc/v3/, jai
tlcharg le fichier jre_1.1.7-v3-glibc-x86-native.tar.gz ; puis je lai mis
dans le rpertoire /tmp.
Important. Il y a deux types de threads associs un JRE : natifs et verts . Les
threads affectent la manire dont Java fonctionne sur votre station de travail. Il vous
appartient de tlcharger la version native des threads du JRE que vous voulez utiliser.
Le centre de contrle DB2 ne supporte pas les threads verts.
3. Se mettre dans le rpertoire o lon a tlcharg le JRE. Dans notre exem-
ple, ce sera le rpertoire /tmp. Entrer la commande suivante pour atteindre
ce rpertoire :
4. Une fois tlcharg le JRE appropri, il faut le dcompresser (unzip et
untar) en entrant la commande :
5. Se connecter la station de travail en tant que propritaire dinstance.
Dans notre exemple, se connecter la station de travail en tant quutilisa-
teur db2inst1.
Remarque. Vous pouvez utiliser, dans ce cas, la commande su db2inst1 ; mais
assurez-vous que vous entrez cette commande avec le paramtre , de sorte que le
profil DB2 soit lu correctement.
6. Mettre jour le PATH, pour que la station de travail connaisse lemplace-
ment des fichiers binaires du JRE install. supposer que vous ayez suivi
lexemple, entrez la commande :
o /tmp/jre117_v7/bin est le chemin des fichiers binaires du JRE que vous
avez tlcharg.
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.
7. Dmarrer le serveur dapplet JDBC du centre de contrle en entrant :
cd /tmp
tar xvfz jre_1.1.7-v3-glibc-x86-native.tar.gz
# en shell Bash ou Bourne
export PATH=/tmp/jre117_v3/bin:$PATH
# en shell C
setenv PATH /tmp/jre117_v7/bin:${PATH}
db2jstrt 6790
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
265
Le numro de port 6790 est un nombre arbitraire ; tout numro de port
quatre chiffres est valable, condition quil ne soit pas en cours dutilisa-
tion par une autre application.
8. La commande suivante dmarre le centre de contrle en se servant du port
spcifi. Dans notre exemple, cest le port 6790 :
Si lon a spcifi un autre numro de port au dmarrage du serveur
dapplet JDBC, cest celui-l quil faut utiliser.
9. Cette commande ouvre la fentre didentification du centre de contrle
(figure 6.15). Entrer un ID dutilisateur et un mot de passe, dfini sur la
station de travail locale avec les autorisations correctes. Pour notre exem-
ple, employer lID dutilisateur db2inst1 et le mot de passe spcifi pour
cet utilisateur linstallation du serveur DB2, puis cliquer sur OK.
10. Le centre de contrle apparat (figure 6.16). On peut maintenant commen-
cer lutiliser pour grer les stations de travail DB2, locales et distantes.
Pour plus dinformations, se reporter laide en ligne du centre de con-
trle ou au Guide dadministration de DB2.
Installer un client DB2
Cette section vous fera dcouvrir linitialisation et linstallation dun client
DB2. Avant den parcourir les tapes, sassurer que toutes les tches ncessai-
res linstallation dun produit DB2 sur la station de travail se sont droules
correctement, comme expos la section Prparer linstallation de DB2 sur
une station de travail Red Hat, au dbut de ce chapitre.
db2cc 6790
Figure 615
Fentre didentification du centre de contrle
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
266
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.
Important. lI se produit parfois des problmes daffichage, quand on lance le
programme dinstallation de DB2. Dans ce cas, appuyer sur la touche CTRL-L
nimporte quel moment, pour rafrachir lcran.
Pour viter les problmes daffichage, installer DB2 dans une session de console
virtuelle, cest--dire une fentre de terminal hors de linterface graphique standard,
installe sur la plupart des stations de travail Red Hat. Pour passer une console
virtuelle, appuyer sur CTRL-ALT-F1. Pour revenir linterface graphique, appuyer sur
CTRL-ALT-F7.
Figure 616
Le centre de contrle
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
267
Suivre les instructions de cette section pour installer un client Run-Time ou
un client dadministration DB2. Dans notre exemple, nous installerons un
client dadministration DB2, car il est disponible sur le CD-ROM de la base
de donnes universelle DB2 version 6.1, pralablement utilise pour installer
le serveur DB2. Les clients dadministration DB2 sont aussi disponibles sur le
CD-ROM DB2 Administration Client ; les clients Run-Time DB2 ne sont
disponibles que sur le CD-ROM Client DB2 Run-Time. Pour plus dinforma-
tions, voir les Supplments dinstallation et de configuration de DB2 et DB2
Connect.
Pour installer un client DB2, parcourir les tapes suivantes :
1. Se connecter la station de travail Red Hat en tant quutilisateur avec
lautorisation root.
2. Insrer le CD-ROM de la base de donnes universelle DB2 version 6.1
dans lunit de CD-ROM.
Mme si lon installe DB2 sur une station de travail qui fonctionne avec
Red Hat version 6.1, et que lon se serve de limage cre par le fichier de
mise jour pralablement tlcharg, on a encore besoin du CD-ROM
DB2 : le fichier de mise jour se sert des fichiers quil cre, mais aussi des
fichiers trouvs sur le CD-ROM DB2, pour installer DB2. Pour plus
dinformations, voir le fichier readme.txt fourni avec la mise jour.
3. Monter le CD-ROM en entrant la commande :
4. Se mettre dans le rpertoire cdrom mont, en entrant la commande :
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.
mount t iso9660 o ro /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
268
7. Pour personnaliser linstallation du client DB2, choisir Customize droite
du produit DB2 slectionn. Les options dinstallation du client dadmi-
nistration DB2 sont montres la figure 6.18.
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 617
Fentre dinstallation de DB2 version 6.1
Figure 618
Fentre de personnalisation dun client dadministration de DB2
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
269
mentation DB2, mais laide du centre de contrle, en anglais. Dans notre
exemple, les options par dfaut sont bonnes. Choisir OK.
11. La fentre de cration des services DB2 souvre (figure 6.21). Remarquez
quelle est quelque peu diffrente de la fentre apparue quand vous avez
install un serveur DB2. Il manque le serveur dadministration DB2 : vous
ne pouvez crer un serveur dadministration DB2 sur un client.
12. Choisir Create a DB2 Instance pour crer une instance, qui servira stoc-
ker linformation requise pour se connecter un serveur DB2 distance,
et configurer lenvironnement de la station de travail du client DB2. On
ne peut pas ranger physiquement une base de donnes dans une instance
du client, on ne peut que cataloguer linformation qui indique au client o
est localise la base de donnes laquelle accder. Quand on choisit cette
option, la fentre dinstance DB2 souvre (figure 6.22).
Le programme dinstallation de DB2 gnre un utilisateur par dfaut qui
sera connu en tant que propritaire de linstance ; il aura lautorisation
administrateur systme (SYSADM) sur linstance. Un utilisateur qui a
lautorisation SYSADM sur une instance a le contrle total et lautorit
sur tous les objets de linstance. Dans notre exemple, admettre les valeurs
par dfaut. Entrer, dans le champ Password, le mme mot de passe que
celui de linstallation du serveur DB2, vrifier dans le champ Vrifier
mot de passe, et choisir OK.
Figure 619
Personnaliser les messages de produit DB2
Figure 620
Personnaliser la bibliothque de produit DB2
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
270
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
Figure 621
Fentre de cration des services DB2 pour un client DB2
Figure 622
Fentre dinstance DB2 pour un client DB2
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
271
risque pour votre rseau. Pour plus dinformations sur lautorisation
SYSADM, voir le Guide dadministration de DB2.
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.
13. Choisir OK pour commencer linstallation du client DB2. La fentre de
rsum souvre (figure 6.23). Le rsum liste tous les composants que le
programme dinstallation de DB2 tentera dinstaller et de configurer. Pour
revoir la liste des composants, choisir More et utiliser les flches pour se
dplacer dans le rapport. Aprs vrification, choisir Continue.
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 623
Fentre de rsum
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
272
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 624
Fentre contextuelle davertissement
Figure 625
Fentre de rapport dtat
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
273
Configurer un client DB2 pour
communiquer avec un serveur DB2
Cette section dcrit comment configurer un client DB2 pour communiquer
avec un serveur DB2, laide du processeur de ligne de commande. On
postule ici que TCP/IP fonctionne sur la station de travail du client ainsi que
sur le serveur, et quil tait en fonctionnement au moment de linstallation du
serveur et du client DB2.
Avant quun client DB2 puisse tre configur en vue de communiquer avec
un serveur DB2, le serveur doit tre configur de manire pouvoir traiter des
requtes de client interne. Par dfaut, le programme dinstallation de DB2
configurera automatiquement le serveur DB2 pour les communications
TCP/IP. Si lon nutilise pas le programme dinstallation de DB2, il faudra
configurer manuellement les communications du client interne laide du
processeur de ligne de commande. Pour plus dinformations sur la manire de
configurer le serveur DB2 manuellement dans ce cas, se reporter au Suppl-
ment linstallation et la configuration des connexions DB2.
Remarque. Compte tenu des caractristiques du protocole TCP/IP, celui-ci peut ne
pas tre immdiatement averti de lchec dune autre station de travail ; de sorte
quune application cliente de DB2, accdant un serveur DB2 distance via TCP/IP,
ou lagent quivalent sur le serveur, peut quelquefois sembler suspendue. DB2 se
Figure 626
Le fichier log
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
274
sert de loption de socket TCP/IP SO_KEEPALIVE pour dtecter sil y a eu un chec, et
si la connexion TCP/IP a t coupe. En cas de problme avec la connexion TCP/IP, se
reporter au Guide de dpannage DB2 pour plus dinformations sur le rglage de ce
paramtre, et sur dautres problmes courants, relatifs TCP/IP.
Pour configurer un client DB2 en vue de communiquer avec un serveur DB2
via TCP/IP, effectuer les tapes suivantes :
1. Identifier et enregistrer les paramtres TCP/IP requis. Ces paramtres sont
prsents dans le tableau 6.1.
2. Sassurer que ladresse TCP/IP du serveur DB2 distance peut tre rso-
lue. Si lon a lintention de spcifier directement ladresse IP du serveur
DB2 distance, ou que lon dispose dun serveur de nom sur le rseau,
sauter cette tape. Cela se vrifie laide de la commande ping hostname.
Le client DB2 doit tre capable de convertir ladresse du serveur DB2
avec lequel il essaie dtablir la communication. Sil nexiste pas de ser-
veur de nom sur votre rseau, vous devez spcifier directement un nom
dhte qui corresponde ladresse IP du serveur dans le fichier local
/etc/hosts.
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.
En tant quutilisateur dot de lautorisation root, diter le fichier local
/etc/hosts du client et ajouter une entre pour le nom dhte du serveur
DB2. Par exemple :
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.
3. Mettre jour le fichier local /etc/services. Si lon a lintention dinitialiser
la communication entre un client et un serveur DB2, en nutilisant que le
numro de port du serveur DB2 distance, sauter cette tape.
laide dun diteur de texte local, et en tant quutilisateur dot de lauto-
risation root, ajouter un nom de service arbitraire, ainsi que le numro de
port qui correspond au numro de port du serveur DB2 distance con-
9.21.125.124 db2server # adresse dhte du serveur db2server
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
275
Tableau 61
Paramtres TCP/IP requis pour la communication client-serveur DB2
Paramtre Description Exemple
Nom dhte (hostname)
Ou
Adresse IP (ip_address)
Utiliser le nom dhte ou ladresse IP du serveur
DB2 distance.
Pour renseigner ce paramtre :
Entrer la commande hostname sur le serveur
DB2 pour obtenir le nom dhte.
Entrer la commande ping hostname pour
obtenir ladresse IP, ou contacter votre
administrateur de systme.
db2server
Ou
9.21.125.124
Nom de service
(svcename)
Ou
Numro de port
/Protocole
(port_number/tcp)
Valeurs requises dans le fichier /etc/services.
Le nom de service est un nom local arbitraire,
qui reprsente le numro de port de connexion
sur un client DB2. Le numro de port dun client
DB2 doit tre le mme que celui auquel
correspond svcename dans le fichier
/etc/services sur le serveur DB2. (Le
paramtre svcename est dfini dans le fichier
de configuration du gestionnaire de base de
donnes sur le serveur DB2).
Db2cdb2inst1
correspond au port
50000/tcp
Ce numro de port ne doit pas tre en cours
dutilisation par dautres applications, et doit
tre unique dans les fichiers /etc/services.
Pour dterminer le paramtre svcename, se
connecter au serveur DB2 en tant quutilisateur
avec lautorisation SYSADM et entrer la
commande db2 get dbm cfg.
Le paramtre svcename par dfaut pour une
installation de serveur DB2 par dfaut est
db2cdb2inst1, qui correspond au numro de
port par dfaut 50000.
Si vous avez suivi les instructions de ce
chapitre, vous pouvez utiliser ces valeurs par
dfaut.
Nom de nud
(node_name)
Un surnom local pour le serveur DB2 distance
auquel vous essayez de vous connecter. Un
ordinateur est souvent considr comme un
nud.
Vous pouvez prendre nimporte quel nom ;
mais toutes les valeurs de nom de nud dans
votre rpertoire de nud local doivent tre
uniques.
Je vous recommande dutiliser le nom dhte du
serveur DB2 distance, de manire toujours
savoir quelle station de travail ce nud se
rfre.
db2server
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
276
nexion au fichier des services client DB2 pour TCP/IP. Par exemple :
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.
4. Cataloguer un nud TCP/IP. Ajouter une entre au rpertoire des nuds
du client DB2 pour dcrire le serveur DB2 distance. Elle spcifie le sur-
nom choisi (node_name), le hostname ou ladresse IP, et le svcename ou
numro de port que le client DB2 utilisera pour accder au serveur DB2
distant.
Pour cataloguer un nud TCP/IP, effectuer les tapes suivantes :
a. Se connecter au systme en tant quutilisateur avec lautorisation
SYSADM ou SYSCTRL. Dans notre exemple, utiliser lID dutilisa-
teur du propritaire dinstance, db2inst1.
Remarque. Si lon utilise la commande su pour se connecter au systme, il faut entrer
cette commande avec le paramtre par exemple, su db2inst1. Si lon nutilise pas
ce paramtre, on a en retour un message derreur, parce que DB2 ne lit pas correcte-
ment le profil DB2.
b. Cataloguer le nud TCP/IP en entrant la commande suivante, en met-
tant les variables paramtres entre crochets :
Par exemple, pour cataloguer le serveur distance db2server sur le nud
appel db2server avec, comme nom de service, db2cdb2inst1, entrer la
commande :
db2cdb2inst1 50000/tcp
# nom de service du client DB2 & port correspondant au serveur DB2
db2 "catalog tcpip node node_name remote [hostname or ip_address]
server [svcename or port_number]
db2 terminate
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
277
Pour cataloguer un serveur distance avec ladresse IP 9.21.125.124 sur le
nud appel db2server, en se servant du numro de port 50000, entrer la
commande :
5. Cataloguer la base de donnes. Avant quune application cliente puisse
accder une base de donnes distante, cette dernire doit tre catalogue
sur le serveur DB2, et sur tous les clients DB2 susceptibles de sy connec-
ter. Quand on cre une base de donnes sur un serveur DB2, elle est auto-
matiquement catalogue sur le serveur DB2 avec le mme nom dalias que
son nom de base de donnes. Les informations contenues dans le rper-
toire de base de donnes servent, tout comme celles du rpertoire de nud,
tablir une connexion la base de donnes distante, sur le client DB2.
Pour cataloguer une base de donnes, effectuer les tapes suivantes :
a. Identifier et enregistrer les paramtres de base de donnes requis, pr-
sents dans le tableau 6.2.
b. Se connecter au systme en tant quutilisateur avec les autorisations
SYSADM ou SYSCTRL. Dans notre exemple, prendre lID utilisateur
de propritaire dinstance db2inst1.
c. Cataloguer la base de donnes en entrant la commande :
Remarque. Si lon utilise la commande su pour se connecter au systme, il faut entrer
cette commande avec le paramtre , par exemple su db2inst1. Si lon nutilise pas
ce paramtre, on a en retour un message derreur, parce que DB2 ne lit pas correcte-
ment le profil DB2.
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 :
db2 "catalog tcpip node db2server remote db2server server db2cdb2inst1"
db2 terminate
db2 "catalog tcpip node db2node remote 9.21.125.124 server 50000"
db2 terminate
db2 "catalog database database_name as database_alias at node
node_name"
db2 terminate
db2 "catalog database sample as sample at node db2server"
db2 terminate
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
278
Important. Avant de pouvoir se connecter la base de donnes distante, il faut avoir
dmarr le gestionnaire de base de donnes sur le serveur DB2 distance. Dans notre
exemple, linstance cre tait en auto-dmarrage par dfaut. Si vous avez interrompu
cette instance, entrez, avant dexcuter ces tapes, la commande db2start, en tant
quutilisateur db2inst1, sur le serveur DB2 distant.
6. La configuration du client pour les communications est termine ! Pour
connecter le client DB2 au serveur DB2, effectuer les tapes suivantes :
a. Se connecter au systme en tant quutilisateur db2inst1.
b. Entrer la commande suivante pour se connecter la base de donnes
distante :
o :
database_alias est lalias du client DB2 pour la base de donnes DB2
distante.
Tableau 62
Paramtres de base de donnes requis pour la communication client-serveur
Paramtre Description Exemple
Nom de base de
donnes
(database_name)
Lalias de base de donnes (database_alias) de la
base de donnes DB2 distance.
Quand le programme dinstallation de DB2 a cr la
base de donnes SAMPLE, elle a t
automatiquement catalogue sur le Serveur DB2,
avec le mme nom en tant qualias de base de
donnes et nom de base de donnes.
SAMPLE
Alias de base de
donnes
(database_alias)
Un surnom local pour la base de donnes distante,
sur le client DB2. Si vous nen donnez pas, ce
paramtre prend par dfaut la valeur du nom de base
de donnes dans la table. Ce nom doit tre unique sur
le client DB2.
Je vous recommande dutiliser le mme nom en tant
que nom de base de donnes (lalias de la base de
donnes distance) pour viter les confusions. Cest
ce nom qui est utilis quand on se connecte une
base de donnes du client DB2.
SAMPLE
Nom de nud
(node_name)
Un surnom local pour le serveur DB2 distant auquel
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.
db2server
db2 connect to database_alias user userid using password
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
279
userid est un ID dutilisateur dfini sur le serveur DB2 distant. Dans
notre exemple, utiliser db2inst1.
password est le mot de passe pour le userid spcifi.
Si vous avez suivi lexemple, et cr le mme ID utilisateur, avec les
mmes mots de passe sur le serveur DB2 et sur le client DB2, vous navez
pas spcifier les paramtres userid et password dans cette commande.
Par dfaut, le client DB2 passera lID dutilisateur courant et son mot de
passe au serveur DB2, pour authentification. Comme ils sont identiques
dans cet exemple, ce nest pas dun grand intrt.
Pour se connecter, en tant quutilisateur db2inst1, une base de donnes
DB2 distante avec le nom dalias de base de donnes SAMPLE, catalogue
sur le client DB2 avec le nom dalias de base de donnes locale SAMPLE,
entrer la commande :
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.
On obtient la sortie suivante :
c. Entrer la commande suivante pour slectionner la liste de tous les
employs du dpartement 20 dans la table staff :
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.
db2 connect to sample
Database Connection Information
Database server = DB2/LINUX 6.1.0
SQL authorization ID = DB2INST1
Local database alias = SAMPLE
db2 "select * from staff where dept = 20"
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
280
On obtient la sortie suivante :
d. Entrer la commande suivante pour rinitialiser la connexion la base de
donnes :
Flicitations ! Vous avez russi installer un client DB2 et le connecter un
serveur DB2 distance. Ctait le but de ce modle type de client-serveur, et
vous en tes venu bout (pour installer et configurer, en tous cas).
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 :
3. Le nom de nud, spcifi quand on a catalogu la base de donnes, pointe
lentre correcte dans le rpertoire du nud. On le vrifie en entrant la
commande suivante, en tant quutilisateur db2inst1 :
Sassurer que le champ nom du nud concorde avec le nom donn, la
cration de lentre du nud pour le serveur DB2 distance.
4. La base de donnes sur le client DB2 est maintenant catalogue correcte-
ID NAME DEPT JOB YEARS SALARY COMM
------ --- ----- ----- ---- ------- ---------
10 Sanders 20 Mgr 7 18357.50 -
20 Pernal 20 Sales 8 18171.25 612.45
80 James 20 Clerk 13504.60 128.20
190 Sneider 20 Clerk 8 14252.75 126.50
4 record(s) selected.
db2 connect reset
db2 list node directory
db2 list database directory
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
281
ment, avec un nom dalias de base de donnes du serveur DB2, catalogu
la cration de la base de donnes sur le serveur DB2, en tant que base de
donnes sur le client DB2. Par dfaut, le nom dalias de base de donnes
du serveur DB2, pour un nom de base de donnes SAMPLE, est SAMPLE.
Si la connexion choue encore aprs ces vrifications, voir le Guide de
dpannage.
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
282
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.
R. Cest parce que vous navez pas quitt le programme dinstallation de
DB2 correctement : le fichier /tmp/.db2inst.lck na t pas libr. Pour
redmarrer le programme dinstallation de DB2, il vous faut lenlever en
entrant la commande :
Une fois ce fichier effac, vous pouvez relancer le programme dinstalla-
tion de DB2.
Q. Je nai pas fait le choix de suivre strictement vos instructions. linstalla-
tion dun serveur DB2, je nai pas choisi de crer le serveur dadministra-
tion. Ce faisant, jai reu lavertissement montr la figure 6.28. Alors ?
R. Cest un avertissement standard qui est dit chaque fois que vous ne choi-
sissez pas de crer le serveur dadministration. Je vous recommande de
toujours choisir de crer le serveur dadministration. Sans le serveur
dadministration, votre systme ne sera pas capable dadministrer dautres
stations de travail DB2 distance, de planifier les travaux locaux lancer
plusieurs fois, ou dtre disponible pour ladministration distance.
Figure 627
Erreur reue quand une instance prcdente de programme dinstallation de DB2
ne sest pas termine correctement.
rm /tmp/.db2inst.lck
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
283
Q. Quand jai entr la commande db2start pour dmarrer le gestionnaire de
base de donnes de linstance, jai reu un message derreur : SQL10007N
"-1393" ne peut pas tre retrouv. Code erreur : 1 .
R. DB2 ne se proccupe pas de connatre linstance par dfaut. Quand vous
entrez la commande db2start, DB2 tentera de dmarrer linstance par
dfaut. Cette dernire est dtermine par la variable denvironnement
DB2INSTANCE, initialise par le programme dinstallation de DB2,
linstallation. Cette erreur se rencontre, le plus souvent, quand on se
connecte au systme avec la commande su sans le paramtre , comme
expos prcdemment dans ce chapitre. Si vous recevez ce message
derreur, entrez la commande exporter DB2INSTANCE=db2inst1 (bien sr,
si vous avez spcifi autre chose que linstance db2inst1 comme instance
par dfaut, cest cette dernire quil faudra donner).
Q. Jai utilis les valeurs par dfaut (db2cdb2inst1 et 50000) prconises,
quand jai configur le client DB2 pour communiquer avec le serveur
DB2. La connexion a chou ! Je me suis report la section Dpannage
du client-serveur, et jai entr toutes les commandes correctement. Que
sest-il pass ?
R. Il peut y avoir beaucoup de raisons ; cela a probablement quelque chose
voir avec le svcename et le numro de port. Aviez-vous encore une instal-
lation prcdente de DB2 sur votre machine ? Les conseils, dans ce chapi-
tre, supposent quil ne subsiste rien dune ventuelle installation prc-
dente de DB2 sur cette machine, et que le nom de service par dfaut, ainsi
que le numro de port, soient disponibles. Si DB2 a dj t install sur
cette machine, mme sil est supprim, vrifier le fichier /etc/services
pour voir si db2cdb2inst1 correspond 50000. Peut-tre, quand vous avez
supprim DB2, avez-vous oubli de nettoyer le fichier /etc/services? Dans
Figure 628
Avertissement montr quand vous ne choisissez pas de crer
le serveur dadministration sur un produit de serveur.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
284
ce cas, le nom de service, ou le numro de port, nest pas libr pour le
programme dinstallation de DB2. Avez-vous chang lune des options par
dfaut pendant linstallation ?
Q. Jai dmarr le programme dinstallation de DB2, aprs avoir install un
produit DB2. Pourquoi, tout coup, est-ce la fentre de la figure 6.29 qui
saffiche ?
R. Aprs que lon a install un produit DB2, la fentre principale du
programme dinstallation de DB2 est toujours diffrente. Cest parce que
lon a davantage doptions. Vous pouvez installer un produit DB2 addi-
tionnel en slectionnant Install, ou utiliser la caractristique de cration du
programme dinstallation de DB2 pour crer toutes les instances DB2
additionnelles, ou encore le serveur dadministration, en slectionnant
Create. Si vous utilisez le programme dinstallation de DB2 pour crer
une instance, ou le serveur Administration, ils seront configurs automati-
quement pour les communications de client interne DB2 ; sinon, vous
devrez les configurer manuellement. Je vous recommande dutiliser le
programme dinstallation de DB2, pour crer, sur votre station de travail,
les instances, ou le serveur dadministration.
Figure 629
Fentre du programme dinstallation de DB2 aprs avoir install un produit DB2.
copyright ditions Eyrolles
Installer DB2 version 6.1 sur Linux Red Hat
CHAPITRE VI
285
Q. Maintenant que jai un modle de client-serveur DB2, o aller ?
R. Vaste question ! La rponse est : cela dpend de ce que vous voulez faire.
Voici un itinraire, ou plutt une carte routire :
Tableau 63
Si vous voulez Allez voir
Installer des clients DB2 multiples sans avoir
lancer le programme dinstallation de DB2
chaque station de travail client DB2
Supplment dinstallation et de configuration de
DB2 et DB2 Connect
En savoir plus propos des fonctions de DB2,
ainsi que la marche suivre (par exemple, pour
crer des bases de donnes, des tablespaces,
des instances, des scnarios de sauvegarde et de
restauration, etc.)
Guide dadministration de DB2
Charger des donnes dans vos bases de donnes
ou exporter des donnes dune base de donnes
DB2 existante
Guide des utilitaires et des transferts de donnes
avec DB2
Trouver plus dinformations sur ce que fait IBM
avec Linux, DB2, ou dautres produits IBM
http://www-4.ibm.com/software/data/db2/
ou http://www-4.ibm.com/software/is/mp/linux/
Trouver des rponses des problmes poss par
DB2
Guide de dpannage de DB2
Accder des donnes qui rsident sur un hte
ou une base de donnes DB2 AS/400
DB2 connexion rapide pour dbutants
En savoir plus propos du SQL de DB2 Guide dintroduction SQL DB2 ou
la rfrence SQL
Dsinstaller DB2 Supplment dinstallation et de configuration de
DB2 et DB2 Connect
ou aperu rapide de DB2 pour UNIX
copyright ditions Eyrolles
VII 7
Installer
MySQL
sur Linux
Dans ce chapitre
Installation dune distribution
binaire ou RPM
Installation dune distribution source
Configuration de la scurit
Optimisation des performances
Problmes et dpannage
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
288
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
copyright ditions Eyrolles
Installer MySQL sur Linux
CHAPITRE VII
289
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
290
fonctionnalit. Il sagit plutt dune version historique que dune version
destine lutilisation.
Aprs le choix de la version, il faut choisir entre distribution binaire, RPM et
source. Une distribution binaire est dj compile : il suffit de linstaller et de
choisir lemplacement des fichiers. Le revers est quil faut trouver la distribu-
tion binaire approprie votre plate-forme, car on ne tient pas jour les
versions de toutes les plates-formes.
La distribution RPM est destine la distribution Red Hat Linux. Elle est
similaire une version binaire en ce sens quelle est dj compile et initialise
lenvironnement systme. La dernire option est la distribution source. Cette
distribution permet une meilleure personnalisation, est fournie avec beaucoup
de documentation et dexemples et sa vitesse peut tre optimise. Les
versions binaires peuvent exiger des privilges root mais les distributions
RPM doivent obligatoirement tre installes par le compte root. Binaires et
RPM sont spcifiques de la plate-forme. La distribution source est trs
personnalisable et non spcifique dune plate-forme ; elle peut tre excute
par tout utilisateur : cest pourquoi elle est recommande, de prfrence aux
autres formes de distributions.
Dans la suite de linstallation, il faudra localiser une distribution MySQL. Il
est prfrable dobtenir la distribution depuis un site qui contient une copie
des fichiers les plus rcents du site officiel, cest--dire un site miroir
proximit : cela diminuera probablement le temps de tlchargement. Les
sites miroirs captent aussi une partie du trafic du site officiel, ce qui allge la
charge de sa bande passante. La liste des sites miroir peut tre consulte sur
http://www.mysql.com/mirrors.html. Bien sr, on peut toujours tlcharger la
distribution partir du site officiel si lon ne trouve pas de site miroir appro-
pri. Lemplacement officiel est http://www.mysql.com/download.html.
Versions de MySQL, licences et assistance
MySQL est un paquetage open-source, ce qui signifie que le code source
de la base de donnes et des outils associs est disponible gratuitement.
Cela relve dune conception puissante pour de nombreuses raisons. Lune
delles est quen cas de problme avec la base de donnes, on est en
mesure de le corriger, si lon a des spcialistes porte de la main. Dautre
part, les logiciels open-source sont mis jour en permanence : lutilisateur
dispose donc des caractristiques les plus rcentes et les plus importantes
des bases de donnes, bien que cela complique parfois la gestion. Mais il
ne faut pas trop en faire : chercher tout prix se maintenir jour quil
sagisse du logiciel ou des bibliothques et outils associs peut savrer
quelque peu lourd.
copyright ditions Eyrolles
Installer MySQL sur Linux
CHAPITRE VII
291
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.
Les versions changent constamment, mais il nest pas besoin de mettre
jour en permanence le systme. Quand la distribution dans un environne-
ment serveur est oprationnelle, on na pas besoin de la mettre jour ds
quune nouvelle version apparat, surtout si les fonctionnalits ncessaires
existent dj dans votre application. Il vaut mieux attendre les dernires
corrections apportes la version majeure. Ajouter les nouvelles
caractristiques ; si une caractristique est indispensable une application,
la mettre jour immdiatement. De mme, si lon se sert frquemment
dune fonction qui prsente un bogue ou est cause dun problme, la mettre
jour le plus vite possible pour allger le problme.
MySQL nexige aucune licence dutilisation, mme pour des applications
commerciales. Si lon vend le serveur quip, et que cela comprenne la
facturation de linstallation de MySQL, ou bien si MySQL fait partie dune
distribution payante, il faut une licence. On doit prendre une licence par
processeur, mais les machines multiprocesseurs sont encore considres
comme une seule machine. Les prix pratiqus se trouvent sur la page http://
www.mysql.com/Manual_chapter/manual_Licensing_and_Support.html#Cost.
Au moment de la publication de cet ouvrage, le cot, pour un processeur,
tait de 200 dollars, avec des remises allant de 10 50 dollars.
Si vous utilisez MySQL pour des applications commerciales ou autres, il
vous est propos dacheter une licence dassistance qui contribuera au
dveloppement. Elle se prsente sous quatre formes : e-mail de base, e-
mail tendu, connexion et connexion tendue. Le tarif de base est de 170
euros, le-mail tendu de 1 000 euros, la connexion de 2 000 euros et la
connexion tendue de 5 000 euros.
Si lon veut utiliser une distribution binaire de MySQL, le mieux est de
conserver la mme plate-forme tout du long. Les distributions binaires ne
sont pas mises jour trs frquemment et les nouvelles versions peuvent
rester indisponibles pendant un certain temps aprs parution de leur
version de rfrence. Si vous utilisez une machine Linux sur la plate-forme
Intel, vous aurez accs aux binaires les plus rcents. Les autres plates-
formes risquent dtre moins mises jour que leur distribution binaire.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
292
Pour les distributions binaires, on trouvera ceci :
MySQL-3.22.X-PLATFORM.tar.gz
Pour les distributions RPM:
MySQL-3.22.X-1.PLATFORM.rpm (le serveur)
MySQL-bench-3.22.X-1.PLATFORM.rpm (tests et benchmarks)
MySQL-client-3.22.X-1.PLATFORM.rpm (le client)
MySQL-devel-3.22.X-1.PLATFORM.rpm (client personnaliser)
Pour les distributions sources :
MySQL-3.22.X.tar.gz
Ce sont les fichiers dont vous avez besoin pour chaque distribution.
Remarquez que certains fichiers ont une tiquette supplmentaire : par exem-
ple, alpha, bta ou gamma. Elles indiquent le degr de maturit de la distribu-
tion. Alpha signifie quil y a de nouvelles caractristiques, implmentes mais
non testes : ce nest pas une distribution au point et elle ne sert qu lexpri-
mentation. Bta est une distribution avec de nouvelles caractristiques qui ont
subi un certain nombre de tests ; en gnral, des tests plus approfondis sont
ncessaires, auxquels les utilisateurs peuvent contribuer. Gamma signifie une
version stable destine au plein usage. Encore une fois, sauf si avez vraiment
besoin des nouvelles caractristiques, les versions gamma sont les plus
adquates.
Pour dcompresser les distributions, il faut quelques outils GNU, tels tar et
gunzip, dont on vrifie la prsence sur le systme avec les commandes :
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$ which tar
/bin/tar
shell$ which gunzip
/usr/bin/gunzip
shell$ rpm q make
gzip-1.2.4-14
shell$ rpm q gzip
make-3.77-6
copyright ditions Eyrolles
Installer MySQL sur Linux
CHAPITRE VII
293
Ces outils sinstallent partir de la distribution Linux ou bien des distribu-
tions GNU. Pour plus dinformations, consulter le site web GNU :
http://www.gnu.org/software/software.html.
Installation dune distribution binaire
Aprs avoir tlcharg le fichier, le transfrer dans le rpertoire o lon veut
installer les fichiers, par exemple /usr/local (ce qui peut ncessiter le privilge
root). Pour dcompresser la distribution, excuter la commande suivante dans
le rpertoire o lon a transfr le fichier :
Elle cre un rpertoire du mme nom que le fichier, mysql-3.22.X-PLATFORM.
Crer un lien vers ce rpertoire pour y faire rfrence plus facilement :
La prochaine tape installe et initialise la base de donnes et les tables asso-
cies. Se placer dans le nouveau rpertoire mysql et excuter la commande :
La base de donnes peut tre dmarre dans le mme rpertoire :
et vous tes maintenant prt configurer votre base de donnes.
shell$ gunzip -c mysql-3.22.X-PLATFORM.tar.gz | tar -xvf
shell$ ln s mysql-3.22.X-PLATFORM mysql
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.
Please report any problems with the. /bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://www.tcx.se/license.htmy.
shell$ /bin/safe_mysqld &
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
294
Installation dune distribution RPM
Ce type dinstallation ncessite le privilge root : ceci tant, elle excute la
configuration en entier et linitialise votre place. Il faut avoir tlcharg les
fichiers RPM du client et du serveur indiqus auparavant, et ils doivent tre
dans la mme version. Pour une installation minimale, sans client personna-
lis, il suffit de :
MySQL-3.22.X-1.PLATFORM.rpm
MySQL-client-3.22.X-1.PLATFORM.rpm
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 :
Pour vrifier sils sont bien installs :
Cette opration installe tous les fichiers ncessaires et dmarre la base de
donnes. Elle initialise aussi dans le rpertoire /etc les scripts ncessaires pour
dmarrer la base de donnes en mme temps que la machine. Cette distribu-
tion cre aussi un utilisateur mysql dans la base de donnes, dont elle se sert
lors de linstallation. Il est propritaire des fichiers, ce qui vite laltration ou
la falsification. La prochaine tape configure la base de donnes.
Installation dune distribution source
Dans ce cas, il faut des outils GNU supplmentaires : gcc et make. Pour
savoir sils sont disponibles sur le systme, utiliser les commandes :
Loutil gcc doit tre en version 2.81 ou suprieure. La commande qui suit
affiche la version disponible :
shell# rpm -vi MySQL-3.22.X-1.PLATFORM.rpm MySQL-client-3.22.X-x.PLATFORM.rpm
shell$ rpm -q MySQL
MySQL-3.22.X-1
shell$ which gcc
/usr/bin/gcc
shell$ which make
/usr/bin/make
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)
copyright ditions Eyrolles
Installer MySQL sur Linux
CHAPITRE VII
295
Si ce nest pas la bonne version, se reporter la documentation de la distribu-
tion Linux pour savoir comment la mettre jour. Visiter aussi le site web
GNU dj indiqu pour obtenir de laide sur linstallation de ces outils.
Pour dcompresser la distribution, excuter la commande suivante dans le
rpertoire o lon a transfr le fichier :
Elle cre le rpertoire mysql-3.22.X. Se placer dans ce rpertoire et excuter la
commande configure pour dterminer les informations denvironnement et
prparer la compilation. On peut passer certaines options configure, qui les
range dans dautres variables systme et crase les options par dfaut
(/usr/local/mysql) :
prefix=/path (rpertoire o sont installs les fichiers)
localstatedir=/path (o sont installs les fichiers de la base de donnes)
with-charset=CHARSET (la langue installer)
On trouve de nombreuses autres options dans la documentation :
Maintenant, on compile tout laide de make :
et on installe tous les fichiers dans le rpertoire indiqu dans prefix :
Se placer dans le rpertoire o les fichiers ont t installs et initialiser les
tables ncessaires :
shell$ gunzip -c mysql-3.22.X.tar.gz | tar -xvf
shell$. /configure --prefix=/my/home/
shell$. /make
shell$. /make install
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
296
On peut maintenant dmarrer le serveur de base de donnes :
et vrifier si la base de donnes fonctionne, comme ceci :
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 :
et pour une distribution source, il se prsente ainsi :
Please report any problems with the /usr/local/mysql/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://www.tcx.se/license.htmy.
shell$ /my/home/mysql/bin/safe_mysqld &
shell$ ps -aux | grep mysql | grep -v grep
mysql 1877 0.1 0.7 10636 1004 ttya2 SN 17:14 0:00 /usr/sbin/mysqld
mysql 1879 0.0 0.7 10636 1004 ttya2 SN 17:14 0:00 /usr/sbin/mysqld
mysql 1880 0.0 0.7 10636 1004 ttya2 SN 17:14 0:00 /usr/sbin/mysqld
bin rpertoire principal et programmes de support
data les bases de donnes elles-mmes et les fichiers journaux
include fichiers denttes
lib bibliothques
scripts scripts utiliss pour linstallation
share/mysql messages derreur
sql-bench benchmarks
bin rpertoire principal et programmes de support
include/mysql fichiers inclus
info documentation
lib/mysql bibliothques
copyright ditions Eyrolles
Installer MySQL sur Linux
CHAPITRE VII
297
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 :
libexec le serveur lui-mme
share/mysql fichiers journaux derreur
sql-bench benchmarks and sries de test
var les fichiers de bases de donnes et les journaux
shell$ /my/path/mysql/bin/mysqladmin -u root password 'new-password'
shell$ /usr/sbin/adduser mysql
shell$ chmod R mysql /my/path/mysql
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
298
On peut sassurer que seul ce nouvel utilisateur a la permission dcriture :
MySQL propose aussi des options dexcution pour le rendre plus sr :
secure recherche lorigine des adresses IP et sassure quelles ne sont pas
contrefaites. Cela ajoute une couche supplmentaire de protection contre
les requtes venant de lextrieur, qui essaient de changer leur adresse
distance pour contourner les restrictions.
skip-networking autorise seulement les connexions sur la machine locale,
et non sur le rseau. Cest encore une bonne option si la machine sur
laquelle fonctionne la base de donnes nest pas protge par un firewall.
Voir la documentation de MySQL pour plus de dtails sur les amliorations
de la scurit et la protection du dmon MySQL.
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).
shell$ chmod R go-w /my/path/mysql
Tableau 71
Privilges accords dans MySQL
Privilge Signification
select lire une ligne dans une table
insert crer une ligne dans une table
update mettre jour une ligne dans une table
delete enlever une ligne dune table
index ajouter /supprimer un index sur une table
alter autorise la commande SQL ALTER TABLE
create crer une base de donnes ou une table
drop supprimer une base de donnes ou une table
grant donner des privilges aux utilisateurs
file lire ou crire des fichiers externes la base de donnes
copyright ditions Eyrolles
Installer MySQL sur Linux
CHAPITRE VII
299
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 :
La table des utilisateurs ressemble cela :
reload recharger ou vider des tables
shutdown arrter la base de donnes normalement
process afficher ou supprimer des processus
Tableau 71
Privilges accords dans MySQL
Privilge Signification
./mysql -p user=root mysql
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or
Your MySQL connection id is 3 to server version: 3.22.30
Type 'help' for help.
mysql>
mysql> describe user ;
-----------------------------------------------------------
| Iie1o | Tye | Nu11 | ley | efau1t | xtra |
-----------------------------------------------------------
| Fost | cIar6) | | llI | | |
| User | cIari6) | | llI | | |
| lassworo | cIari6) | | | | |
| Se1ect_riv | enun`N`,`Y`) | | | N | |
| Insert_riv | enun`N`,`Y`) | | | N | |
| Uoate_riv | enun`N`,`Y`) | | | N | |
| e1ete_riv | enun`N`,`Y`) | | | N | |
| Create_riv | enun`N`,`Y`) | | | N | |
| ro_riv | enun`N`,`Y`) | | | N | |
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
300
Le champ host contient lemplacement depuis lequel lutilisateur est
connect. La base de donnes connecte un utilisateur en fonction soit de son
nom dutilisateur et de son adresse IP, soit du nom dhte depuis lequel il se
connecte. Ces informations, le nom dhte, le nom dutilisateur et le mot de
passe, sont compares la liste en vue daccorder la connexion ou non. Le
nom dhte peut tre un nom complet, tel que test.machine.com, ou une
adresse IP, comme 1.2.3.4. Des caractres joker, symboliss par des %,
permettent dautoriser une tranche plus large et dtre moins restrictif quand
on stipule un domaine ou un rseau local tout entier : par exemple,
%.machine.com ou 1.2.3.%.
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 :
ce qui autorisera le nouvel utilisateur dba se connecter localement ou
distance de nimporte quel endroit, et utiliser tous les privilges de la base
de donnes, le mot de passe de lutilisateur dba tant dbapassword. Pour
ajouter un utilisateur local disposant de moindres privilges, on peut aussi
utiliser la commande GRANT :
Cet utilisateur peut maintenant se connecter depuis la machine locale, avec le
mot de passe testuserpassword, et excuter des instructions SELECT et
INSERT sur les tables. Si lon connat bien SQL, on peut contourner GRANT et
insrer soi-mme les donnes dans la table des utilisateurs, ainsi que manipu-
ler cette table directement avec la commande INSERT.
| le1oao_riv | enun`N`,`Y`) | | | N | |
| SIutoown_riv | enun`N`,`Y`) | | | N | |
| lrocess_riv | enun`N`,`Y`) | | | N | |
| Ii1e_riv | enun`N`,`Y`) | | | N | |
| rant_riv | enun`N`,`Y`) | | | N | |
| leferences_riv | enun`N`,`Y`) | | | N | |
| Inoex_riv | enun`N`,`Y`) | | | N | |
| A1ter_riv | enun`N`,`Y`) | | | N | |
-----------------------------------------------------------
i7 rows in set .i sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO dba@localhost
IDENTIFIED BY 'dbapassword WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO dba@"%"
IDENTIFIED BY 'dbapassword' WITH GRANT OPTION ;
Mysql> GRANT SELECT,INSERT ON *.* TO testuser@localhost
IDENTIFIED BY 'testuserpassword'
copyright ditions Eyrolles
Installer MySQL sur Linux
CHAPITRE VII
301
Voici comment crer le compte dba de lexemple prcdent :
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 :
Une autre table, host, dtermine quels sont les htes autoriss se connecter
une base de donnes. La table host se prsente comme suit :
mysql> INSERT INTO user VALUES('localhost','dba',PASSWORD('dbapassword'),
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
mysql> INSERT INTO user VALUES('%,dba,'PASSWORD('dbapassword'),
'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y')
mysql> INSERT INTO user VALUES('localhost','testuser',
PASSWORD ('testuserpassword'),
'Y','Y','N','N','N','N','N','N','N','N','N','N','N','N')
mysql> FLUSH PRIVILEGES ;
mysql> describe db ;
-----------------------------------------------------------
| Iie1o | Tye | Nu11 | ley | efau1t | xtra |
-----------------------------------------------------------
| Fost | cIar6) | | llI | | |
| t | cIar8Z) | | llI | | |
| User | cIari6) | | llI | | |
| Se1ect_riv | enun`N`,`Y`) | | | N | |
| Insert_riv | enun`N`,`Y`) | | | N | |
| Uoate_riv | enun`N`,`Y`) | | | N | |
| e1ete_riv | enun`N`,`Y`) | | | N | |
| Create_riv | enun`N`,`Y`) | | | N | |
| ro_riv | enun`N`,`Y`) | | | N | |
| rant_riv | enun`N`,`Y`) | | | N | |
| leferences_riv | enun`N`,`Y`) | | | N | |
| Inoex_riv | enun`N`,`Y`) | | | N | |
| A1ter_riv | enun`N`,`Y`) | | | N | |
-----------------------------------------------------------
i8 rows in set . sec)
mysql> describe host ;
-----------------------------------------------------------
| Iie1o | Tye | Nu11 | ley | efau1t | xtra |
-----------------------------------------------------------
| Fost | cIar6) | | llI | | |
| t | cIar8Z) | | llI | | |
| Se1ect_riv | enun`N`,`Y`) | | | N | |
| Insert_riv | enun`N`,`Y`) | | | N | |
| Uoate_riv | enun`N`,`Y`) | | | N | |
| e1ete_riv | enun`N`,`Y`) | | | N | |
| Create_riv | enun`N`,`Y`) | | | N | |
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
302
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.
| ro_riv | enun`N`,`Y`) | | | N | |
| rant_riv | enun`N`,`Y`) | | | N | |
| leferences_riv | enun`N`,`Y`) | | | N | |
| Inoex_riv | enun`N`,`Y`) | | | N | |
| A1ter_riv | enun`N`,`Y`) | | | N | |
-----------------------------------------------------------
iZ rows in set .i sec)
copyright ditions Eyrolles
Installer MySQL sur Linux
CHAPITRE VII
303
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 :
Ensuite, on initialise les noms de chemins et de rpertoires :
Puis on crit la partie de dmarrage du script : il faut aller dans le rpertoire
mysql spcifi prcdemment ; sassurer que le programme safe_mysqld
existe, puis lexcuter ; spcifier lutilisateur et le pid_file utiliser, dfini
auparavant. Le fichier pid contient lid du processus, et sera utilis aussi pour
arrter le processus, dans la deuxime partie du script.
# !/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
;;
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
304
La dernire partie arrtera la base de donnes en se servant du fichier pid
gnr auparavant.
Enfin, on donne quelques spcifications de syntaxe avant de sortir :
Ensuite, ce script sera plac dans /etc/rc.d/init.d/mysql. Pour sassurer quil
est bien pris en compte lors de lamorce, crer un lien symbolique, dans
chacun des rpertoires de niveau dexcution, pour le dmarrage et larrt :
dans les rpertoires rc0.d, rc1.d et rc6.d, excuter la commande :
et dans les rpertoires rc2.d, rc3.d, rc4.d et rc5.d :
Cela assurera le dmarrage du serveur de base de donnes lors du boot et son
arrt pendant les phases de redmarrage ou darrt du serveur. Comme cela
peut se produire diffrents niveaux dexcution, il faut un lien dans chaque
rpertoire de niveau. Ladministrateur se doit de connatre les niveaux
dexcution ; pour plus dinformations ce sujet, voir la documentation de la
distribution Linux. Dautres applications importantes mettant en uvre la
base de donnes peuvent aussi tre dmarres de cette manire.
'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
shell$ ln s. ./init.d/mysql K90mysql
shell$ ln s. ./init.d/mysql S90mysql
copyright ditions Eyrolles
Installer MySQL sur Linux
CHAPITRE VII
305
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.
shell$. /mysqladmin variables
--------------------------------------------------------------------
| Variat1e_nane | Va1ue |
--------------------------------------------------------------------
| tacl_1oq | 5 |
| connect_tineout | 5 |
| taseoir | /Ione/tscIwat/nysq1/ |
| oataoir | /Ione/tscIwat/nysq1/var/ |
| oe1ayeo_insert_1init | i |
| oe1ayeo_insert_tineout | 8 |
| oe1ayeo_queue_size | i |
| oin_tuffer | i8i7Z |
| f1usI_tine | |
| ley_tuffer | 88886 |
| 1anquaqe | /Ione/tscIwat/nysq1/sIare/nysq1/enq1isI/|
| 1oq | OII |
| 1oq_uoate | OII |
| 1onq_query_tine | i |
| 1ow_riority_uoates | OII |
| nax_a11oweo_aclet | i48576 |
| nax_connections | i |
| nax_connect_errors | i |
| nax_oe1ayeo_insert_tIreaos | Z |
| nax_oin_size | 4Z94967Z95 |
| nax_sort_1enqtI | iZ4 |
| nax_write_1ocl_count | 4Z94967Z95 |
| net_tuffer_1enqtI | i6884 |
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
306
Voici la dfinition de ces variables :
| io_fi1e | /Ione/tscIwat/nysq1/var/otsioian.io |
| ort | 886 |
| rotoco1_version | i |
| recoro_tuffer | i8i7Z |
| sli_1oclinq | ON |
| sli_networlinq | OII |
| soclet | /tn/nysq1.socl |
| sort_tuffer | Z97i44 |
| tat1e_cacIe | 64 |
| tIreao_stacl | 65586 |
| tn_tat1e_size | i48576 |
| tnoir | /tn/ |
| version | 8.ZZ.8 |
| wait_tineout | Z88 |
--------------------------------------------------------------------
Tableau 72
Variables de contrle des performances
Variable Signification
backlog nombre de requtes qui attendent dtre
traites : cest la taille de la file pour les
connexions TCP/IP entrantes ; elle dpend
beaucoup du systme dexploitation
concurrent_inserts ON (par dfaut) autorise les INSERT sur les
tables MyISAM (sur disque) pendant les
requtes SELECT
connect_timeout dlai, en secondes, pour interrompre une
connexion rseau inactive
delayed_insert_timeout temps dattente avant de supprimer une
requte INSERT DELAYED
delayed_insert_limit temps dattente des SELECT aprs une
requte INSERT DELAYED
delay_key_write par dfaut, delay_key_write est autoris sur
CREATE TABLE, ce qui acclre lcriture
des cls
delayed_queue_size taille de la file dattente en nombre de lignes
pour INSERT DELAYED
flush_time dlai, en secondes, de mise jour physique
de toutes les tables
init_file fichier dinitialisation charg au dmarrage
copyright ditions Eyrolles
Installer MySQL sur Linux
CHAPITRE VII
307
interactive_timeout temps, en secondes, pendant lequel la base
de donnes laissera une connexion inactive
ouverte avant de la fermer
join_buffer_size taille du buffer pour les jointures de table,
allou seulement aux jointures ; utilis pour
acclrer les jointures
key_buffer_size taille du buffer pour les blocs dindex ;
laugmenter amliore la gestion des index
long_query_time incrmente le compteur slow_queries
quand la requte dure plus longtemps que la
valeur indique
max_allowed_packet taille maximale dun paquet ; utilis pour
protger la base de donnes contre les
connexions errones ; doit tre augmente
pour les colonnes BLOB
max_connections nombre maximum de connexions
simultanes
max_connect_errors nombre maximum derreurs au-del duquel
la connexion dun hte est dsactive
max_delayed_threads nombre de threads pour INSERT DELAYED
max_join_size taille maximale dune jointure
max_sort_length taille fixe au tri quand on se sert de valeurs
BLOB ou TEXT
max_tmp_tables pas encore implment
net_buffer_length taille du buffer pour les demandes autres
que les requtes
net_retry_count nombre dessais avant labandon dune
connexion
record_buffer taille du buffer pour un thread de parcours
squentiel de table
skip_show_databases interdit aux utilisateurs de voir les tables de
la base de donnes pour des raisons de
scurit
sort_buffer taille du buffer du thread de tri
Tableau 72
Variables de contrle des performances
Variable Signification
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
308
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 :
Si lon utilise une distribution binaire, on na pas se proccuper de la
version de cette bibliothque. Les distributions les plus anciennes se servent
de libc, prdcesseur de glibc. Si la version de libc est suprieure ou gale
5.4.46, cela fonctionne. Pour Red Hat 4.X, il y a un problme dans la rsolu-
tion des noms dhtes avec des versions plus anciennes de libc. Il suffit de
mettre jour libc en version 5.4.46 ou suprieure. Pour Red Hat 5.X, il faut
installer le glibc le plus rcent, et les RPM suivants conviennent :
La mise jour des bibliothques ncessite le privilge root : si vous ne lavez
pas, demandez votre administrateur systme dinstaller, ou de mettre jour,
les dernires versions de ces bibliothques.
table_cache nombre de tables ouvertes par les threads ;
consomme des descripteurs de fichiers
tmp_table_size taille des tables temporaires
thread_concurrency nombre de threads simultans
thread_stack taille de la pile dun thread
wait_timeout mme chose que interactive_timeout
Tableau 72
Variables de contrle des performances
Variable Signification
shell$ rpm q glibc
glibc-2.0.7-19
glibc-devel-2.0.7-19
copyright ditions Eyrolles
Installer MySQL sur Linux
CHAPITRE VII
309
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.
La version 3.23.7 de MySQL, en dveloppement, contourne provisoirement
ce problme.
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 :
Si lon excute mysqladmin sans aucun argument, on obtient une liste
complte de toutes ses caractristiques :
Pour trouver la version :
shell$ cd /my/path/mysql/bin
shell$. /mysqladmin
shell$. /mysqladmin version
./mysqladmin Ver 7.15 Distrib 3.22.30, for pc-linux-gnu on i686
TCX Datakonsult AB, by Monty
Server version 3.22.30
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /tmp/mysql.sock
Uptime: 10 min 33 sec
Threads : 1 Questions : 3 Slow queries : 0 Opens : 6 Flush tables : 1 Open tables : 2
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
310
Pour trouver ltat :
On peut consulter toutes les variables denvironnement avec :
Pour crer une premire base de donnes, utiliser mysqladmin. Loption p
demande le mot de passe :
Une fois cre, elle peut tre supprime avec la commande :
Pour arrter la base de donnes correctement, utiliser enfin mysqladmin :
On peut importer et exporter facilement des donnes de MySQL en se servant
de mysqldump et mysqlimport. Ces outils permettent de faire un dump
complet de la base de donnes, qui pourra tre rimport plus tard dans la
base de donnes. Cest donc une manire pratique de sauvegarder toutes les
donnes de la base.
Dautres outils sont proposs dans la distribution MySQL. Le tableau 7-3 ci-
dessous rsume toutes les fonctionnalits de mysqladmin.
shell$. /mysqladmin status
Uptime : 901 Threads : 1 Questions : 4 Slow queries : 0 Opens : 6 Flush tables : 1
Open tables : 2
shell$. /mysqladmin variables
shell$. /mysqladmin p create MYDATABASE
shell$. /mysqladmin p drop MYDATABASE
shell$. /mysqladmin p shutdown
Tableau 73
Outils disponibles dans mysqladmin
Outils Utilisation
myisamchk vrifie, optimise, rpare et dcrit les tables MySQL
make_binary_release cre une version binaire de MySQL partir dune version
compile
msql2mysql programmes de conversion pour passer de msql MySQL
mysqlaccess vrification des privilges daccs aux enregistrements de
la base de donnes pour les htes et les utilisateurs
mysqladmin administration gnrale de MySQL
mysqlbug mailing-list des rapports de bogues MySQL
copyright ditions Eyrolles
Installer MySQL sur Linux
CHAPITRE VII
311
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.
mysqld dmon rel de la base de donnes MySQL
mysqldump exporter une base de donnes dans un fichier
mysqlimport importer un fichier dans la base de donnes
mysqlshow affiche des informations propos des bases de donnes et
des tables
mysql_install_db script utilis au dbut de linstallation pour initialiser les
tables initiales
replace script pour remplacer des chanes ; utilis par msql2mysql
safe_mysqld script qui maintient le dmon mysqld en fonctionnement,
et le relance quand il meurt
Tableau 73
Outils disponibles dans mysqladmin
Outils Utilisation
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
312
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.
copyright ditions Eyrolles
Installer MySQL sur Linux
CHAPITRE VII
313
Linstallation relle dpend de la distribution choisie. Les installations RPM
et binaires exigent un minimum de travail et peuvent tre ralises assez vite.
Les distributions RPM ncessitent Red Hat et le privilge root. Les distribu-
tions binaires exigent dtre installes dans un rpertoire systme. Il ny a
aucune compilation faire. La distribution source nexige pas daccs root,
sauf si on la place dans un rpertoire systme. Cette distribution exige plus
doutils systme que les distributions prcdentes, mais ils sont dj installs
par la distribution Linux. La seule tape supplmentaire est la compilation,
dont la dure dpend des ressources systme.
Une fois installe, il faut configurer et initialiser la base de donnes. La
premire tape de linstallation est de sassurer quune scurit correcte est
mise en place. Rien nest plus important, et il faut notamment sassurer que
seuls les utilisateurs habilits y ont accs, en particulier si linformation qui y
est stocke est sensible. Mme si ce nest pas le cas, ne laissez pas aux utilisa-
teurs la possibilit dabmer les donnes ou de les supprimer.
Le premier utilisateur cr, une fois la base de donnes installe, est lutilisa-
teur root. Le mot de passe de cet utilisateur doit tre modifi immdiatement
aprs linstallation : sinon, nimporte qui peut se connecter et disposer dun
accs complet la base de donnes. Crer aussi un utilisateur sur le systme
qui excute le dmon MySQL. Ne lexcutez pas sous le compte root, car ce
serait la porte ouverte aux pirates qui essaient dexploiter le dmon pour obte-
nir le privilge root. Une fois que cet utilisateur est cr, les fichiers et
permissions doivent tre grs de telle sorte quil soit le seul accder ces
fichiers, et pouvoir les crire.
Avec MySQL il y a beaucoup de types de privilges, qui dterminent ce quun
utilisateur peut faire dans la base de donnes : les privilges de ladministra-
teur, tels que la fermeture ou le rechargement de la base de donnes ; ceux
relatifs aux bases de donnes et aux tables, tels que la possibilit de lire les
tables et dy insrer de nouvelles donnes. Les nouveaux utilisateurs seront
crs avec des rles bien spcifiques. Un utilisateur peut tre cr avec seule-
ment les fonctions dadministrateur. Les utilisateurs normaux qui manipulent
les donnes auront des permissions seulement pour ces oprations et nauront
pas accs aux oprations les plus importantes. Les droits des utilisateurs
peuvent aussi tre restreints en fonction de lorigine de leur connexion la
base de donnes. On peut crer des utilisateurs qui sont autoriss se connec-
ter localement, ou partir dhtes distants prcis, ou les deux. Il existe des
tables spciales qui grent laccs restreint certaines tables et dautres,
certains htes, que lon peut combiner pour tablir une matrice de privilges
trs spcifiques de lenvironnement. Ces privilges sont attribus par la
commande GRANT ou, si lon connat bien SQL, par des commandes SQL qui
sappliquent directement aux trois tables o sont grs les droits.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
314
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 :
Vous pouvez aussi utiliser, en labsence de distribution source, les flags
dexcution de mysqld :
Il ne faut pas avoir deux dmons diffrents capables de modifier la mme
base de donnes. Le chemin peut tre spcifi par datadir.
shell$. /configure with-tcp-port=port_number \
with-unix-socket=file_name \
prefix=/usr/local/mysql-3.22.9
shell$ /my/path/bin/safe_mysqld socket=file_name port=port_number
copyright ditions Eyrolles
Installer MySQL sur Linux
CHAPITRE VII
315
Q. Comment puis-je rpliquer ma base de donnes ?
R. Pour linstant, MySQL na pas de fonction pour le faire automatiquement.
Un moyen simple est de faire chaque nuit un dump de la base de donnes
et de limporter dans une autre base. La frquence de cette opration
dpend bien sr de la fracheur souhaite pour les donnes dupliques.
Q. Comment puis-je sauvegarder ma base de donnes ?
R. La commande mysqldump permet de sauvegarder toutes les tables de la
base de donnes.
On peut aussi arrter le serveur et archiver le rpertoire de la base de
donnes avec tar. Pour recharger les tables de la base de donnes, on rta-
blit les fichiers dans le rpertoire de base de donnes avec untar, ou bien
on restaure le dump.
Q. Comment puis-je migrer vers une version plus rcente si jai dj install
MySQL ?
R. Vous pouvez arrter la base de donnes courante et la copier dans un
rpertoire de nom diffrent, puis installer la nouvelle distribution comme
la premire fois. Ensuite, transfrez le rpertoire de la base de donnes
dans le nouveau rpertoire et redmarrez votre base de donnes.
Q. Que se passe-t-il si joublie mon mot de passe ?
R. Il faut dabord arrter le serveur, puis le relancer avec loption skip-
grant-tables pour ne pas utiliser la table des privilges, se connecter
nouveau la base de donnes puis, soit utiliser GRANT pour crer le
nouveau mot de passe, soit utiliser des commandes SQL pour renseigner
directement le mot de passe dans la table des utilisateurs.
Q. Comment puis-je grer des transactions ?
R. linverse des grandes bases de donnes, MySQL ne sait pas grer les
transactions. Il faut attendre les prochaines versions.
shell$ mysqldump tab=/save/path opt full
copyright ditions Eyrolles
VIII
8
Installer et grer
Progress
sur Linux
Dans ce chapitre
Installation
Configuration
Tester la base de donnes
Dpannage
Forces et faiblesses de Progress
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
318
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
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
319
paquetage iBCS et du portage de Progress pour SCO OpenServer. Les
versions 6.2 8.2 ont t utiliss sur Linux de cette manire. Toutefois, ces
versions nentrent pas dans le cadre de cet ouvrage et on trouvera, sur le sujet,
des ressources Internet telles que les FAQ Progress sur Linux ladresse
http://marathon-man.com/pl/Progress-Linux-FAQ.html, et le Progress Email
Group (PEGwww.peg.com). Ce chapitre est consacr la version 8.3, son
installation, sa configuration et sa gestion.
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.
Installer partir du mdia
Linstallation partir du mdia consiste copier tout simplement des excuta-
bles depuis la bande ou le CD-ROM fournis par Progress. Selon la plate-
forme, les scripts dinstallation fonctionnent de manire lgrement diff-
rente. Pour Linux, comme pour la plupart des plates-formes UNIX, on
dispose dune version sur bande o chaque section de la bande contient un
produit. Le script dinstallation de la bande est un enchanement de comman-
des cpio, pour extraire les fichiers, et dd, pour sauter les produits non utiliss.
La version sur CD-ROM est un peu diffrente puisque les fichiers sont dispo-
nibles sans extraction. Dans ce cas, Progress se sert de son propre schma
darchivage de fichier pour les combiner dans un seul fichier darchive sur le
CD-ROM.
Avant de commencer linstallation relle, il faut sassurer que lon est prt.
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
320
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).
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
mount /dev/cdrom /mnt/cdrom
/nnt/coron/roinst
-----------------------------------
| We1cone |
-----------------------------------
| |
| WLCOh TO TF llOlSS SOITWAl |
| INSTALLATION UTILITY |
| |
| le1ease 8.8BZ |
| CoyriqIt c) i99Z-i999 |
| lroqress Software Cor. |
| A11 liqIts leserveo. |
| |
| |
| ]nter=Ol] |
-----------------------------------
Figure 81
cran daccueil de linstallation
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
321
doit ensuite entrer les trois ensembles de codes de contrle du numro de
srie. Bien vrifier les codes et appuyer sur Entre. Si les codes de contrle
concordent avec le numro de srie, lcran indique que lentre est valide,
sinon il faut rechercher les erreurs.
Rpter la saisie des numros de srie pour chaque produit indiqu dans la
feuille verte. Il ny a aucune raison de ne pas installer tous les produits en
mme temps. Quand le dernier numro de srie est saisi, appuyer sur Ctrl-E
pour continuer linstallation dtaille. Certains mulateurs de terminal (par
exemple, TinyTERM de Century Software) utilisent Ctrl-E pour des fonctions
internes il faut modifier cela si lon se sert dun tel mulateur. Attention
aussi loption Quit (Ctrl-T) qui signifie lannulation de linstallation entire.
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
---------------------------------------------------------------------
| lroouct Confiquration ata |
---------------------------------------------------------------------
| ]nter=Aooitiona1] |
| Conany Nane: eoff Crawforo________________ ]Ctr1-=one] |
| Seria1 Nunter: i9Z8i ]CTlL-T=uit] |
| le1ease Nunter: 8.8B____________ ]CTlL-N=le1ease Notes]|
| Contro1 Nunter: Th?9 77UWX X9?hl ]CTlL-V=View] |
| ]TAB=Next Iie1o] |
| |
| |
---------------------------------------------------------------------
Figure 82
Saisie des numros de produit et des codes de contrle
-------------------------------
| Tye, evice ano estination |
-------------------------------
| Se1ect Tye of Insta11ation |
| Se1ect estination latInane |
| Continue witI Insta11ation |
| View le1ease Notes |
| Cance1 |
| uit Insta11ation |
-------------------------------
Figure 83
Options dinstallation
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
322
choisir Custom installation : linstallation personnalise nest pas difficile,
elle demande seulement quelques valeurs supplmentaires ; elle est recom-
mande dans tous les cas.
Choisir ensuite Destination Pathname et indiquer la valeur par dfaut
/usr/dlc. Rien nest mauvais en soi, concernant le chemin ou le nom du rper-
toire, mais il est souvent suggr davoir un nom unique pour chaque version
de Progress. Choisir un nom tel que /opt/progress/dlc83b pour la version de
Progress, car il est courant dinstaller, plus tard, une version mise jour. Ne
jamais installer une nouvelle version dans le mme rpertoire quune
ancienne choisir un autre rpertoire et rgler les variables denvironnement
en conformit. Bien que, la plupart du temps, cela ne concerne que les gran-
des installations et ne soit pas obligatoire, on obtiendra des gains de perfor-
mance en plaant les excutables sur leur propre lecteur de disque. Dans tous
les cas, modifier le nom de rpertoire de manire se trouver dans lensemble
des zones juxtaposes ncessaires la prparation.
Ce peut tre le moment de consulter les notices relatives aux versions. Par
ailleurs, on les trouve dans un fichier texte sur le CD-ROM. Slectionner
loption Continue with Installation. On est alors invit choisir une langue
(figure 8.4) : utiliser les flches pour slectionner la langue principale. Quand
on appuie sur la touche Entre, sur la slection en surbrillance, un astrisque
marque la langue slectionne. Choisir alors loption Make Default pour la
premire langue. Terminer en slectionnant les autres langues souhaites, puis
choisir Continue with Installation.
Comme il sagit dune installation personnalise, il vous est maintenant
propos dinstaller seulement des parties de chaque produit, ou encore
----------------------------
|Lanquaqe Se1ection |
----------------------------
| ernan |
| SanisI |
| IrencI |
| nq1isI - Internationa1 |
|*nq1isI - Anericano) |
| hale efau1t |
| Continue witI Insta11ation |
| Cance1 |
----------------------------

isl Sace lequireo for lrooucts: 5,894,iiZ tytes
isl Sace lequireo for Insta11ation: 5,785,Z8 tytes
isl Sace lenaininq After Insta11ation : ii8,64,8 tytes
Figure 84
Slection de la langue
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
323
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.
------------------------------
| Custon - Se1ect lrooucts |
------------------------------
|*nterrise atatase 5 USlS)|
|*C1ient/Networlinq 5 USlS) |
|*4L eve1onent i USl) |
| Insta11 Se1ecteo lrooucts |
| CIanqe estination latInane |
| Cance1 |
------------------------------
| uit Insta11ation |
------------------------------
Figure 85
Slection des produits
-----------------------------
| Coy Scrits? |
-----------------------------
| |
|Coy tIe scrits to /usr/tin?|
| |
| ]Y=YS] ]N=NO] |
-----------------------------
Figure 86
Copie des scripts de shell, en option
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
324
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 mutex
1
, 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.
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
325
gorie, si lon se fie des tudes menes par des utilisateurs, tel le Rapport
annuel du VAR
2
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.
La mmoire partage est organise en segments ; chaque groupe de segments
reoit un identificateur unique. Chaque base de donnes Progress a besoin
dau moins un segment de mmoire partage et dun identifiant. Prendre le
nombre de bases de donnes que lon envisage dexcuter sur le systme, et
larrondir, par scurit, au multiple de cinq le plus proche le rsultat est
une valeur minimale pour SHMMNI. La valeur par dfaut dans Red Hat Linux
est de 10, ce qui sera suffisant pour la plupart des systmes.
SHMSEG et SHMMAX sont lis entre eux : comme la mmoire partage est
organise en segments, la taille maximale de la mmoire partage est le
produit du nombre de segments par la taille de chaque segment. Les versions
8.3 de Progress crent des segments dont la taille est le minimum de la valeur
de SHMSEG, soit 16 776 214 octets (16 Mo) : il est donc inutile, actuellement,
de donner SHMSEG une valeur plus grande que 16 Mo, car Progress ne
crera pas de segments de taille suprieure.
2. VAR : value-added resellers, revendeurs valeur ajoute. N.d.T.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
326
Autre question : de combien de mmoire partage doit-on disposer ? Les
manuels donnent des valeurs prcises mais, invariablement, cest le cache qui
prdomine sur tout autre usage, pour lutilisation de la RAM et lvaluation
de la mmoire partage. Pour des raisons de performance, dans un systme de
production, il faut essayer daffecter au cache un minimum absolu denviron
2 Mo despace par utilisateur. Si possible, essayer davoir 4 Mo, quitte
acqurir plus de mmoire, sachant que la mmoire partage doit tre comprise
dans la RAM physique. Si lon alloue plus de mmoire partage que lon na
de RAM physique, Linux placera une partie des pages du cache dans lespace
dchange pour combler la diffrence, et cela aura un impact dsastreux sur
les performances.
Pour atteindre la capacit optimale de SHMSEG : prendre le nombre dutilisa-
teurs de chaque base de donnes et le multiplier par la valeur de la RAM que
lon a dcid de lui rserver ; rpter ce calcul pour chaque base de donnes et
dterminer laquelle aura la valeur maximale de mmoire partage ; diviser la
valeur maximale de la RAM par 16 Mo, valeur indique pour SHMMAX, et
larrondir la valeur suprieure. Le rsultat donne le nombre maximum de
segments exig par une base de donnes : ce sera la valeur de SHMSEG.
Smaphores
Trois autres paramtres sont initialiser :
SEMMNI : nombre didentifiants de smaphore ;
SEMMNS : nombre de smaphores pour le systme ;
SEMMSL : nombre de smaphores par identificateur.
Les smaphores, comme la mmoire partage, sont organiss en un ensemble
de noms dot dun identifiant. Progress a besoin dun ensemble de smapho-
res par base de donnes. Le calcul de SEMMNI est le mme que celui de
SHMMNI les deux paramtres ont gnralement la mme valeur.
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
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
327
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.
Autres paramtres divers
En plus de la mmoire partage et des smaphores, il y a dautres paramtres
prendre en considration :
MAXUMEM : maximum de mmoire utilise par un processus ;
NOFILES : nombre maximum de fichiers ouverts par processus ;
NFILES : nombre maximum de fichiers ouverts sur le systme ;
NBUFS : nombre de tampons disque (buffers).
Puisque tous les utilisateurs, ainsi que le processus de base de donnes,
doivent se connecter au segment de mmoire partage, il arrive que la
mmoire laquelle chaque processus Linux doit accder augmente considra-
blement. MAXUMEM doit tre gal la taille de limage de lexcutable
Progress, augmente de la taille de la zone de mmoire partage la plus
grande dans le systme. Une bonne rgle est de prendre SHMSEG * SHMMAX
(ce qui donne la plus grande valeur possible de mmoire partage) et dajou-
ter 5 Mo, ou de lui donner la taille de la RAM physique du systme.
Comme nous le verrons plus loin, certaines bases de donnes sont en ralit
composes de seulement deux ou trois fichiers du systme dexploitation.
Cependant, les plus grandes bases de donnes, qui se servent de structures
multivolumes, sont rparties dans de nombreux fichiers du systme dexploi-
tation. Quand on utilise de telles bases de donnes, il faut parfois modifier les
paramtres NOFILES, NFILES et NINODES. Avec la version 8.3 de Progress, le
nombre de fichiers dune base de donnes est de 256, au maximum. (La
version 9 peut se servir de milliers de fichiers, aussi on prendra garde
damliorer ce calcul quand la version 9 sera disponible sur Linux.) Chaque
utilisateur a besoin des trois fichiers standard entre, sortie, erreur, ainsi que
de tout fichier spool ou temporaire quil cre ( concurrence de 12 pointeurs
de fichier, sans compter les fichiers relatifs la base de donnes). Par cons-
quent, NOFILES na pas besoin dtre suprieur 300.
NFILES est le nombre de fichiers sur le systme : il sera, au maximum, gal au
nombre dutilisateurs connects, multipli par le nombre de bases de donnes
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
328
et multipli par le nombre de fichiers du systme dexploitation de chaque
base de donnes. Attention : il ne sagit ici que du nombre de fichiers relatifs
Progress. On doit y ajouter le nombre de fichiers ouverts par Linux lui-
mme et par les autres utilisateurs de Linux. Les manuels Progress suggrent
de se servir de ce nombre maximal pour NFILES mais, comme lindique le
calcul, ce nombre peut rapidement devenir trs grand. On peut sen tenir l,
mais cela suppose que chaque utilisateur est connect toutes les bases de
donnes. En ralit, des nombres plus petits pourront convenir.
Sur de petits sites o il ny a quune seule base de donnes, ce nest pas un
problme en gnral, mais sur de plus grands sites, cela conduira un
gaspillage. Un calcul correct pour NFILES fera la somme des produits du
nombre dutilisateurs simultans par le nombre de fichiers du systme
dexploitation de chaque base de donnes, pour dfinir le niveau dutilisation
de Progress. On pourra ajouter 10 % pour faire face la croissance ou des
modifications de profil des logins. Ajouter encore 10 % pour lusage des
fichiers du systme dexploitation.
Il reste voir un dernier paramtre Linux. Depuis que Progress se sert de son
propre cache pour grer les accs aux enregistrements, les tampons disque
standard de Linux nont plus la mme utilit. Sur les systmes o la RAM est
mesure, il est souvent avantageux de rduire lgrement les tampons Linux
et dallouer la RAM ainsi dgage la mmoire partage. Le paramtre
NBUFS contrle le nombre de tampons, mais il faut prendre des prcautions
avec ce paramtre. Tous les fichiers de spool, les fichiers de programme et les
autres fichiers du systme dexploitation doivent passer par les tampons
disque de Linux. Diminuer cette valeur peut donner de meilleures performan-
ces du point de vue de la base de donnes, mais causer un ralentissement de
limpression et dautres accs disque. Dans le doute, rduire ce paramtre
graduellement depuis la valeur dorigine. Vrifier soigneusement si le
systme prsente des ralentissements limpression ou des pauses quand de
nouveaux programmes Progress sont lancs. Se servir des outils doptimisa-
tion de Progress pour quilibrer les paramtres et voir comment une augmen-
tation du cache affecte les performances de la base de donnes. On trouvera
plus de dtails sur lquilibrage de lallocation de la RAM la section de
configuration, dans la suite de ce chapitre.
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
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
329
Progress. Cette installation de terminal sajoute linstallation normale
termcap/terminfo, et peut se rvler plus complexe que le simple choix du
bon type de terminal.
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) :
On doit oprer avec le profil de login systme (/etc/profile) ou bien dans le
.profile ou le .login de chaque utilisateur (ou ce qui convient au shell utilis).
Sauf sil y a une raison imprative de faire une installation personnalise,
toutes les autres variables denvironnement de Progress doivent avoir des
valeurs par dfaut compatibles avec $DLC. Il vaut toujours mieux mettre les
excutables Progress dans le PATH. Ajouter les deux rpertoires $DLC et
$DLC/bin au PATH de tous les administrateurs de base de donnes, de manire
ce que tous les utilitaires de la base de donnes soient dans leur chemin.
Installation du terminal PROTERMCAP
Progress se sert dune bibliothque davertissements et de messages (curses-
like)
3
appele Vermont Views (que lon reconnat ses messages derreur
prfixs par vv_) pour laffichage et le rafrachissement des crans : la valeur
TERM doit donc tre initialise correctement. Progress a son propre fichier de
configuration de type termcap appel PROTERMCAP, qui dfinit certains
attributs du terminal, non disponibles dans le termcap standard. Ils concer-
nent principalement les touches de fonction tendues et les options de couleur
du L4G Progress.
Les dfinitions relatives de nombreux terminaux sont fournies dans le
fichier PROTERMCAP, livr avec le produit. En ce qui concerne Linux, il y a
une entre pour la console Linux sous le type de terminal linux (celle o les
codes de contrles rduisent la zone de donnes visible). Pour un terminal X,
le type qui convient est xterm. Les anciens terminaux de type toute
visibilit ou space-taking (Wyse 50, Televideo 925, et ainsi de suite) ne sont
plus supports. On peut toujours chercher une hypothtique mulation de
terminal. La disposition dorigine du clavier dun VT100 navait que quatre
touches de fonctions, et un VT220 un usage prdfini dans le matriel pour
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
330
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 :
Installation du mode client-serveur
Si la seule mthode daccs est lmulation dun terminal telnet, il sagit de ce
que lon appelle un client self-service, et il ny a pas dautres tapes franchir.
Le mode client-serveur diffre de lutilisation de telnet pour accder la
machine Linux. Si les utilisateurs accdent la base de donnes en mode
client-serveur, il faut un autre fichier. Progress a besoin de ladresse TCP/IP
de la machine et dun port TCP/IP ddi pour chaque base de donnes atteinte
via le rseau. Ladresse IP de la machine est en principe affecte pendant
linstallation de TCP/IP. Pour rserver le port TCP/IP, diter le fichier
/etc/services. Chaque ligne a le format :
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.
stty erase ^h intr ^c
name 1000/tcp
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
331
Choisir des numros de port suprieurs au dernier numro en cours dutilisa-
tion et laisser au moins un cart de 500 entre les ports. Ce nest pas le seul
port utilis en ralit et, dans le modle dassignation de port de Progress, des
incompatibilits peuvent quelquefois se produire, si les numros de port
affects aux bases de donnes multiples sont trop proches. Un seul port TCP
est obligatoire ; la partie base de donnes de Progress nutilisera pas dUDP.
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
Nom de rpertoire Usage
/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 bande
a
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
332
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.
/mnt/bi
/mnt/ai
Les systmes de fichier .bi et .ai seront sur des disques en miroir, non
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
/mnt/rcode
/mnt/tmp
/mnt/scripts
Ces systmes de fichiers seront rapides et fiables mais ils nont pas besoin
dtre rcuprables au plus haut degr lagrgat par bande (striping) et
la mise en miroir suffisent. Le full logging (une option de journalisation du
fs, actuellement non disponible sur Linux) nest pas ncessaire puisque
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.
/mnt/dump Zone rserve pour dcharger et charger, ou sauvegarder sur disque
(avant une sauvegarde sur bande, bien sr), spare de toutes les autres
zones, ce qui procure un maximum de souplesse. Le mieux est que cette
zone se serve de disques qui ne sont pas utiliss en dehors dun
processus de dchargement, de chargement ou de sauvegarde.
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.
Tableau 81
Tableau des rpertoires
Nom de rpertoire Usage
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
333
Espace disque et dbit dentre/sortie
Un autre lment prendre en considration quand on configure un systme
en vue dexcuter une base de donnes : la disposition des disques physiques
et les capacits du sous-systme disques. Cette section ne concerne pas les
petits systmes peu chargs.Si lon a suivi le modle de conception propos
dans ce qui prcde, on pourra revenir en arrire pour appliquer ces techni-
ques si le besoin sen fait sentir.
La capacit dun disque, en giga-octets, ou le flux de transfert, en mga-octets
par seconde, est un indicateur intressant si lon fait de la vido la demande
ou dautres applications dominante texte pr-Internet. Mais ce dont il faut
vraiment se proccuper est le nombre doprations traites par seconde. Bien
sr, le PC a convaincu tout un chacun que la seule chose vraiment importante
est la taille dun lecteur de disque, mais si un jour on doit expliquer pourquoi
on gaspille autant despace un comptable particulirement pointilleux, il
va falloir tre trs patient.
Le sous-programme dentre/sortie de la base de donnes Progress gre les
donnes en blocs uniformes disperss, au hasard sur le disque. Le disque qui
contient la base de donnes doit, par consquent, se concentrer sur des
entres/sorties alatoires. Les agrgats par bandes (striped) sont excellents
pour loptimisation des E/S dans ce cas. La mise en miroir a des rsultats
corrects. RAID 5 est un mauvais choix sil ny a pas dactivit dcriture
sensible. Pourtant une nouvelle forme de RAID, RAID 10 (qui combine
RAID 0 + RAID 1) est le choix idal. JBOD (Just a Bunch Of Disks) vient en
deuxime position, le troisime est celui dun disque assez grand, et RAID 5
sera vit tout prix.
La gestion des entres/sorties des fichiers dimages avant (.bi) et aprs
(.ai) est surtout squentielle. Les disques excutent les oprations squentiel-
les 10 ou 20 fois plus vite que les oprations alatoires. Si lon mlange les
types daccs, on obtient des performances daccs alatoires. Si la demande
globale pour les oprations dentres/sorties est plus grande que les disques
ne peuvent en traiter, cela cre une file dattente sur le disque et cause de
mauvaises performances. En premier lieu, ce problme se fait sentir au niveau
des checkpoints (trop frquents, comme dans le cas de synchronisations rp-
tes entre les copies de donnes en mmoire et le disque) qui gle tous les
autres utilisateurs si lon a une licence workgroup (ou si lon ne se sert pas des
caractristiques dcriture asynchrone de pages de la licence enterprise).
Ddier un disque au fichier .bi permet dviter dtre affect par dautres acti-
vits dentre/sortie et de fonctionner pleine vitesse. Cest particulirement
important avec la licence workgroup, mais encore plus important avec la
licence enterprise quand on commence pousser les capacits de la machine.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
334
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.
Si vous ne pouvez utiliser la mmoire pour rediriger ces entres/sorties (les
paramtres mmax et Bt sont les paramtres pertinents), il est important que
la zone T ait un excellent dbit dentr/sortie ce que lon trouve dans un
ensemble de disques agrgs par bande et en miroir.
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
335
Crer une nouvelle base de donnes
Il y a, certes, beaucoup de manires dinitialiser une base de donnes, mais
nous allons nous intresser celles qui fonctionnent le mieux. Progress
propose deux mthodes diffrentes pour mettre en oeuvre une base de
donnes : volume simple et multivolume. La mthode multivolume est abso-
lument ncessaire dans un environnement grande chelle ; elle offre de
surcrot beaucoup davantages tous les utilisateurs.
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
336
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 :
La premire colonne indique le type de fichier : B pour image-avant, A pour
image-aprs, D pour donnes ; le f signifie un fichier de taille fixe. Dans ce
cas, si le fichier image-avant (B) a atteint la taille de 10 Mo (cest--dire,
10 000 blocs), le second fichier .b2 sera utilis. De la mme faon, le fichier
.d2 sera utilis ds que les fichiers de donnes auront atteint la taille de
500 Mo. Remarquer aussi que les fichiers sont rpartis entre diffrents points
de montage.
Le calibrage des fichiers est un exercice dquilibre. En gnral, plus il y a de
fichiers, moins il se produit daccs conflictuels ; il vaut donc mieux crer 10
fichiers de 200 Mo plutt que deux de 1 Go, pour une base de donnes de
2 Go. On peut aussi rserver de lespace de croissance pour rduire au mini-
mum les interventions de ladministrateur pour ajouter ou redimensionner
les fichiers.
Il reste deux tapes pour terminer le processus. Dabord, lutilitaire Progress
prostrct sert traduire le fichier de structure en une disposition physique de
base de donnes prte lemploi. Tous les fichiers de longueur fixe sont crs
avec les tailles requises (arrondies aux 16 Ko les plus proches). Voici la
syntaxe, qui utilise le fichier de structure de base de donnes cr auparavant :
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 :
La base de donnes vide est un cas particulier de la commande procopy. Il
nest pas ncessaire de spcifier le chemin complet de cette structure mme si
B /nnt/ti/nyoata.ti f i
B /nnt/ti/nyoata.tZ
/nnt/ot/nyoata.oi f 5
/nnt/ot/nyoata.oZ
prostrct create /mnt/db/mydata mydata.st
procopy empty /mnt/db/mydata
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
337
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
338
Lectures
logiques
-B
Nombre
doprations
dentre/sortie
Taux de
succs
Taux dchec
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
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
339
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.
Grer la base de donnes
Progress dispose de scripts simples pour dmarrer, arrter, surveiller et sauve-
garder la base de donnes. Bien quils soient gnralement adapts un envi-
ronnement de dveloppement initial, une approche plus sophistique ou
personnalise est souvent souhaitable dans un environnement de production.
Une premire tape est de crer un petit script denvironnement, qui concen-
tre toutes les variables denvironnement utilises couramment par Progress ou
lies lapplication en un seul script : celui-ci est alors intgr,
discrtion , dans les scripts qui en ont besoin. Par exemple :
# Common Environment Script
#
# To use :
#
# . /mnt/scripts/env
export TMP=/mnt/tmp
export MTH=`date +%m
export DAY=`date +%d
export LOGS=/mnt/logs/$MTH.$DAY
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
340
Dmarrer la base de donnes
Les sites relativement petits utilisent souvent des scripts qui dtectent auto-
matiquement ltat de la base de donnes et la dmarrent lorsquun premier
utilisateur tente dy accder. Quelquefois, ils larrtent mme automatique-
ment quand le dernier utilisateur se dconnecte. Bien que trs commode, cette
approche recle plusieurs piges. Un tel script ne devra jamais supprimer le
fichier .lk. Si Progress indique quil existe un fichier de verrouillage, il faut
prendre ce message au srieux et comprendre do il vient. Ce peut tre parce
quun autre utilisateur a, indpendamment de vous, dmarr une session
mono-utilisateur lgitime (peut-tre pour excuter une opration de mainte-
nance de base de donnes). Supprimer le fichier .lk puis accder la base de
donnes sont des actions qui gnrent deux ensembles de processus, qui
risquent de mettre jour la base de donnes simultanment, sans avoir cons-
cience lun de lautre une situation qui conduit videmment au dsastre.
Autre inconvnient de cette approche, il est difficile dobtenir un accs exclu-
sif la base de donnes pour les oprations de maintenance ou de restaura-
tion. Un conseil : dissocier le dmarrage du serveur de base de donnes du
dmarrage des sessions utilisateur et instituer un ensemble de contrles stan-
dard, respects par tous les scripts, de manire pouvoir administrer la base
de donnes, en toute scurit et tout moment. Pour cela, il existe une techni-
que bien utile, utiliser un fichier flag pour donner laccs aux sessions utilisa-
teur, comme ceci :
export SRV=`uname `
export SCRIPTS=/mnt/scripts
export DLC=/opt/progress/dlc83b
export DBNAME=/mnt/db/sports
# standard messaging routine
msg()
{
MSG=$1 ; shift
echo "$MSG"
echo `date` "$MSG" >> $LOGS/start.log
# If additional arguments were passed then mail the message to
# those people (the names might be pager addresses)
[ "$1" != "" ] && {
echo $SRV: `date` "$MSG" | mailx -s "$MSG" $*
}
}
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
341
# Start server
#
. /mnt/scripts/env
# Start something and verify it
strt()
{
CMD=$1
USR=$2
GTX=$3
WHO=$4
msg "Starting: $1"
$CMD >> $LOGS/start.log
sleep 5
ps fu $USR | grep "$GTX" > /dev/null
if [ $? = "1" ]; then
msg "*** $CMD did not start" $WHO
exit 0
else
msg "+++ $CMD started successfully"
fi
}
# Create logging directory
if [ ! -d $LOGS ]; then
mkdir $LOGS
chmod 755 $LOGS
fi
msg Starting database
msg Locking out users
echo Starting Database Please wait > $TMP/User_Lockout
chmod 644 $TMP/User_Lockout
rm -f $TMP/DB_IS_UP
sleep 5
strt $DLC/bin/_mprosrv -pf $SCRIPTS/db.pf
progress
[m]prosrv
dba
strt $DLC/bin/_mprshut $DBNAME C biw
progress
[b]iw
dba
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
342
Dmarrer une session
Le dmarrage dune session peut tre trs simple. Placer un message dans les
fichiers de verrouillage aide les utilisateurs comprendre ltat de la base de
donnes, quand elle nest pas disponible. La commande sleep 30 (secondes)
donne la possibilit de lire les messages et diminue la vitesse de reconnexion
lapplication. Enfin, excuter Progress avec exec amliore la scurit, en
vitant quun utilisateur puisse revenir au shell si ce script est excut depuis
le processus de login.
strt $DLC/bin/_mprshut $DBNAME C aiw
progress
[a]iw
dba
strt $DLC/bin/_mprshut $DBNAME C apw
progress
[a]pw
dba
strt $DLC/bin/_mprshut $DBNAME C watchdog
progress
[w]atchdog
dba
msg "Creating DB_IS_UP file..."
touch $TMP/DB_IS_UP
chmod 644 $TMP/DB_IS_UP
sleep 5
# Remove user lockout flag file
if [ "$1" != "maintenance" ]; then
msg "Users allowed into database"
rm $TMP/User_Lockout
else
msg "*** Database is up in maintenance mode ***
echo Database is in maintenance mode Please wait > $TMP/User_Lockout
fi
sleep 5
msg "Database startup has completed"
# Start session
#
. /mnt/scripts/env # export TMP=/mnt/tmp
if [ -f $TMP/User_Lockout ]; then
clear
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
343
La commande trap du shell est quelquefois utilise pour empcher laccs au
shell, mais ce nest pas une bonne ide : Progress se sert des messages pour la
communication interprocessus, et il vaut mieux ne pas interfrer avec la
gestion des messages, car cela peut conduire de srieux problmes de fiabi-
lit et de performance.
Arrter la base de donnes
Une base de donnes sarrte comme ceci :
cat $TMP/User_Lockout
sleep 30
exit 0
fi
# continue startup
exec $DLC/bin/_progres pf $SCRIPTS/standard.pf -T $TMP
# Stop server
#
. /mnt/scripts/env # export TMP=/mnt/tmp
# Create logging directory
if [ ! -d $LOGS ]; then
mkdir $LOGS
chmod 755 $LOGS
fi
msg Stopping database
msg Locking out users
echo Stopping Database Please wait > $TMP/User_Lockout
chmod 644 $TMP/User_Lockout
rm -f $TMP/DB_IS_UP
sleep 5
$DLC/bin/proshut $DBNAME by >> $LOGS/stop.log 2>&1 &
sleep 60
# Verify that broker has shut down the by option
# Does not guarantee shutdown if there are some users in the system
ps | grep "[m]prosrv -pf $DBNAME" > /dev/null
if [ $? = "0" ]; then
msg "*** DATABASE DID NOT SHUTDOWN WITH JUST -BY" dba
msg "*** Attempting to force shutdown with -F option..."
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
344
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 :
$DLC/bin/proshut $DBNAME -F by >> $LOGS/stop.log 2>&
fi
ps | grep "[m]prosrv -pf $DBNAME" > /dev/null
if [ $? = "0" ]; then # panic
msg "*** DATABASE DID NOT SHUTDOWN WITH -F" dba
cp $DBNAME.lk $LOGS/$DBNAME.xxx
exit 0
fi
msg +++ Database is shutdown
# sweep. lg file into archive
mv $DBNAME.lk $LOGS # This wont happen unless the shutdown is clean
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
345
Il est essentiel de tester priodiquement les procdures de restauration pour
sassurer de la validit de la sauvegarde et de lexhaustivit du contenu des
bandes. La meilleure mthode est de restaurer sur une machine diffrente.
Cela vrifie lensemble du processus et tous les mdia. Le PEG (Progress
Email Group, www.peg.com) raconte de temps autre lhistoire triste dmes
en peine, qui pensaient avoir fait des sauvegardes toutes les nuits, mais dun
coup dcouvraient quils navaient plus rien. Evitez de vous joindre au club,
et vrifiez votre sauvegarde.
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 :
# 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 $ ?
# Monitor
#
. /mnt/scripts/env # export TMP=/mnt/tmp
TM=`date %H.%M`
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
346
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.
Excuter ce script depuis cron intervalles rguliers (toutes les demi-heures
est un bon dbut) : cela constitue un chantillon pour surveiller et contrler la
base de donnes. Il existe un grand choix dautres informations intressantes
dans PROMON ajoutez-en autant que vous le pouvez. Il est utile aussi de
rassembler les informations systme qui concident avec ces donnes pour
analyser les corrlations possibles. Par exemple :
$DLC/bin/promon $DBNAME > $LOGS/sample.$TM <<- "EOF" 2> /dev/null
R&D
5
3
300
1
9999
p
2
1
s
p
x
EOF
i/i8/ Activity : Sunnary
i5:4:85 i/i8/ i4:59 to i/i8/ i5:4 5 nin i sec)
vent Tota1 ler Sec |vent Tota1 ler Sec
Connits i795i 59.6 |B leaos Z659 86.5
Unoos Z . |B Writes 98 8.
lecoro leaos iZi9458 45i.8 |BI leaos .
lecoro Uoates 5i44 i7. |BI Writes 554 i.8
lecoro Creates 945 8. |AI Writes 8i6 i.
lecoro e1etes 869 Z.8 |CIecloints .
lecoro Locls 77587 Z57.5 |I1usIeo at cIlt .
lecoro Waits .
lec Locl Waits / BI Buf Waits / AI Buf Waits /
Writes ty AlW i / Writes ty BIW 4Z / Writes ty AIW 75 /
B Size: 95884i86 l BI Size: Z55984 l AI Size: 7Z656 l
nty t1ocls: iZ847 Iree t1ocls: lh cIain: 8 .
Buffer Fits 99 / Active trans: i8
8 Servers, 679 C1ients 679 Loca1, lenote, ii BatcI), Z Aws
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
347
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 :
cd /mnt/tmp
ls -l DBI* > $LOGS/dbi.$TM
ls -l srt* > $LOGS/srt.$TM
ls -l lbi* > $LOGS/lbi.$TM
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
/* zippy.p */
define variable l as character no-undo.
Define variable stime as integer no-undo.
Define variable endtime as integer no-undo.
Define variable ttime as integer no-undo format ">>>>>9".
Define variable utime as integer no-undo format ">>>>>9".
Define variable rcount as integer no-undo.
Define variable nxtapp as integer no-undo initial 100000.
Define variable z as integer no-undo.
Define variable next_time as integer no-undo initial 21600. /* 6am */
Define variable curord as integer no-undo.
Define variable oldord as integer no-undo format ">>>>>9".
Define variable I as integer no-undo.
Define variable r as integer no-undo extent 100.
Define variable w as integer no-undo extent 5.
Define variable t as integer no-undo.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
348
Define variable rt as integer no-undo.
Define variable wt as integer no-undo.
Define variable mr as integer no-undo.
Define variable mw as integer no-undo.
Define variable fname as character no-undo.
Fname = "/mnt/logs/" + string( month( today ), "99" ) + "." +
string( day( today ), "99" ) + "/zippy.dat".
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. */
/* 100 sort of random record reads of 5 common tables (20 each) */
r = 0.
Stime = etime( yes ).
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.
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
349
Ce programme fonctionne en arrire-plan, connect la base de donnes
sports. Toutes les cinq minutes, il lit 100 enregistrements pseudoalatoires,
crit un enregistrement (qui ne doit jamais tre modifi ou verrouill) et
calcule le nombre de nouvelles commandes reues dans lintervalle. Les
statistiques et le nombre de commandes sont sortis toutes les cinq minutes.
Vous pouvez surveiller la sortie laide de :
Les pointes, dans les rsultats, indiquent des vnements intressants si le
nombre de commandes prsente des pointes, cest que les donnes sont acti-
ves, et on peut admettre que le temps de rponse en lecture et en criture
augmente lgrement. De grandes variations dans le temps de rponse, avec
ou sans variations correspondantes de lactivit, tendent indiquer quil y a
un problme dans lenvironnement, quil va falloir identifier cela peut
signifier, par exemple, quune autre application, qui partage les disques, les
surchargent trop au point que lapplication Progress en est affecte, ou bien
que lon fonctionne trop prs de la limite de capacit de la configuration
courante et quun rglage ou une mise niveau sont prvoir.
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.
Output to value( fname ) append.
Put string( time, "HH:MM" ) + " " + l.
Put
Ttime
Utime
Oldord
" ".
export mr rt mw wt.
Output close.
Oldord = curord.
End.
Return.
$ tail f /mnt/log/01.12/zippy.dat
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
350
On a intrt rassembler des donnes relatives la performance, quil
sagisse de mesures ou dindicateurs pertinents de lactivit (tels que le
nombre de commandes) et les comparer : cest une aide prcieuse au
moment de dfinir une mise niveau du systme, ou dexaminer dautres
solutions sil ny a aucune augmentation de lactivit, pourquoi des probl-
mes de performance apparaissent-ils ? Il y a srement quelque chose de mal
configur ou de mal conu quelque part.
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.
Utilisateurs suspendus, emballements et autres psychodrames
Le moyen le plus simple (et le plus sr) de grer les processus _progress
(sessions utilisateur en self-service), qui demande quand mme une interven-
tion externe, est dattendre quils soient termins. Si ce nest pas la solution,
alors il faudra, dans ce cas, carter le plus gentiment possible lutilisateur de
son clavier, tout en gardant un il sur ses mains. Ce qui vitera (on lespre)
tout problme qui pourrait surgir de tentatives de remdier simultanment la
situation. Le meilleur parti est kill -2 (SIGINT), qui active la condition STOP
dans les procdures L4G et relance la procdure de dmarrage -p. La tche
nest pas dtruite, mais il ne se passe rien de mauvais. Et si le problme est
survenu pendant la suspension , lutilisateur pourra probablement revenir
dans sa session sans avoir faire un nouveau login UNIX (si, par contre, cest
un problme rseau ou de PC, vous navez pas de chance).
Si kill -2 ne suffit pas par exemple, si lon a limit un le nombre de login
dun utilisateur et quil y a un problme rseau, la session au repos bloque
laccs alors on utilisera encore kill -2 pour stabiliser le processus. Une fois
quil est stabilis (le fichier .lg dit que toute transaction est acheve, quil ne
consomme plus aucun temps du processeur et nexcute plus doprations
dentre/sortie) kill -1 (SIGHUP) ou le terminera de manire trs sre, comme
si lutilisateur avait teint son terminal. kill -15 (SIGTERM) a le mme effet.
Ce nest pas une bonne ide de se servir dune srie de commandes kill sauf si
lon peut les espacer dans le temps, et si lon contrle la fois le fichier .lg et
ltat du processus. Si lon interrompt les sous-programmes Progress dinter-
ruption propre au profit dune interruption non gre correctement, on peut
facilement aboutir une panne totale de la base de donnes.
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
351
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
352
La corruption, que beaucoup ne constatent quaprs stre servis de kill -9,
provient dautres vnements concomitants. En aucun cas, lcriture de
mauvaises donnes sur le disque ne peut rsulter directement dune
commande kill, quil sagisse dun fichier .bi ou du fichier .db. Des actions
inconsidres telles que la suppression des fichiers .lk vivants, la modification
de la localisation du fichier .bi, lutilisation imprudente de dbrpr, ou lusage
de loption -F peuvent produire une corruption des donnes (il faut quand
mme ignorer bon nombre de messages davertissement pour y parvenir). Les
environnements o kill -9 est utilis sont souvent trs peu contrls et chaoti-
ques. Beaucoup de btises sont commises, mais ne font pas lobjet dun
rapport ou dune rflexion, de sorte quil est difficile daller au fond des
choses. Et cest kill -9 qui se retrouve incrimin.
En rsum, kill -9 sera, un jour ou lautre, cause dune panne de la base de
donnes cest comme jouer la roulette russe. Il ne produit pas, en soi, de
corruption de la base de donnes. Cependant, il cre les conditions dautres
activits qui sont susceptibles dendommager les donnes. Si vous estimez
devoir arrter un processus, utiliser dabord kill -2, puis, si ncessaire, kill -1.
Si cela ne suffit pas, alors quelque chose dautre va vraiment mal et vous avez
besoin daide.
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
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
353
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.
Restauration aprs panne lpreuve des balles
Parmi les forces de ventes de Progress, circule une vieille histoire sur la
manire dont les reprsentants taient entrans faire la preuve de la fiabilit
de la base de donnes. Des dmonstrations taient faites sur des ordinateurs
portables, fonctionnant sous MS-DOS. Il y a toujours eu un problme sur
cette plate-forme vis--vis des fichiers ouverts, en cas de panne : ctait
connu, ils en prenaient pour leur grade. Au milieu de la dmonstration, le
reprsentant devait arracher du mur le cordon dalimentation de la machine
qui, sans soutien dune batterie, devait tomber en panne. Sans exception, la
base de donnes tait remise en tat et restaure avec succs aprs la panne.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
354
La technologie qui entre dans le traitement des transactions de Progress est la
mme que celle qui prserve la base de donnes de la panne dalimentation
ravageuse. Il ne sagit pas dune panace en cas de panne matrielle. Toutes
les bases de donnes perdront des donnes si le mdia physique est irrcup-
rable au niveau du matriel.
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.
Indexation des mots
Lune des perles souvent oublie de la base de donnes Progress est une fonc-
tionnalit connue sous le nom de Word index. Les donnes de type caractre
servent constituer un index qui identifie tous les mots contenus dans les
donnes. Ce nest pas une caractristique particulirement sophistique de
recherche de texte, mais cest un moyen peu coteux doprer une recherche
avance sur les bases de donnes de messages, quil sagisse de groupes de
news, dinformations pratiques ou de bases de connaissances. Laccs
lindex est fourni par la simple fonction CONTAINS du L4G.
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.
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
355
De plus, Progress propose un gestionnaire de traduction, en option. Sa fonc-
tion principale est de parcourir le code source du L4G Progress pour trouver
les chanes utilises dans lapplication en tant que messages et lgendes
dcran. Cette liste peut alors tre confie un traducteur professionnel qui
na pas besoin de connatre linformatique. Les copies des chanes traduites
peuvent alors tre conserves ou faire lobjet dun remplacement par le
gestionnaire de traduction.
Fonctionnement 24 heures sur 24
Progress a ajout une fonctionnalit de sauvegarde en ligne dans plusieurs des
versions prcdentes ; mais il manque encore quelques caractristiques au
produit actuellement disponible pour Linux. La version 8.3 ne permet pas de
rorganiser les index quand la base de donnes est en ligne. Lactivation et la
dsactivation des index, ainsi que la plupart des modifications du schma de
la base de donnes, ne peuvent actuellement pas tre effectues en ligne.
Progress a, petit petit, ajout des caractristiques pour attnuer quelques-uns
de ces problmes. Par exemple, de nouveaux champs peuvent maintenant tre
ajouts, sans quil faille rorganiser toute la table. De plus, la version 9 offre
maintenant le transfert de table et la construction dindex en ligne. La plate-
forme Linux devrait en bnficier avec lintroduction de Progress 9.1.
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.
Pas de requtes parallles
Seules un petit nombre de bases de donnes de haut de gamme ont incorpor
la capacit de traiter une requte de base de donnes simple laide de
processeurs multiples. La technologie sous-jacente a montr quelle est extr-
mement coteuse et demande du temps de dbogage. Les architectures
processeurs massivement parallles actuelles peuvent certainement fournir
dimmenses ressources, mais le cot de telles machines et le cot de cration
de la technologie les placent hors de porte des dpartements informatiques
quips de matriels de taille moyenne. De plus, il ny a aucune garantie que
les requtes individuelles bnficieront du traitement sur plusieurs proces-
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
356
seurs. Souvent, on saperoit que les oprations dentres/sorties deviennent
le goulot dtranglement, la place du processeur et, dans ce cas, tout largent
dpens sur un systme de requtes parallles naura servi rien.
Aucune gestion de verrouillage distribu
Pour fournir un rollback transactionnel complet entre bases de donnes multi-
ples, une technique dite commit deux phases est ncessaire. Elle fit son
apparition peu aprs lintroduction de la possibilit, pour une mme session
Progress, de se connecter simultanment plusieurs bases de donnes.
Comme le schma de commit deux phases implique des donnes partages
en mmoire principale, il ny a aucun problme si ces bases de donnes sont
implantes sur le mme systme. Mais si les bases de donnes sont situes sur
des machines diffrentes, la mthode ne fonctionne plus. Pour disposer dune
telle caractristique, il faut un gestionnaire de verrouillage distribu. La tho-
rie de ce type de logiciel est complexe et la pratique coteuse : cest de plus
en plus cher mesure que lon sen sert. PSC a pris position : le cot dun tel
gestionnaire de verrouillage sera beaucoup trop lev pour un client de base
soucieux dutiliser une base de donnes de haute rentabilit (ROI). Par cons-
quent, les systmes qui demandent des produits comme Tuxedo et TopEnd ne
sont pas des candidats pour Progress.
Une interface CGI simple vers Progress
Le serveur http standard de processus CGI se contente de fournir stdin et
stdout un programme, programme qui peut tre nimporte quoi. Le script
de shell suivant passe tout simplement le stdin une pile FIFO classique
qui, cela tombe bien, est justement lue, en tche de fond, par une procdure
Progress L4G (ce pourquoi elle est classique les procdures taient
davance bien rdes). Puis il lit une rponse dune FIFO quil a cre pour
les besoins du serveur Progress. Il faut ici sassurer que la rponse est bien
retourne lutilisateur voir le chapitre 3 du Guide des interfaces exter-
nes Progress pour plus dinformations. Le programme Progress reoit les
requtes et y rpond la formulation, dans notre exemple, de la demande
et de la rponse sont, videmment, peu intressantes mais on les modifie
facilement :
# !/bin/sh
#
# cgi-bin/xxx
PIPE=/tmp/cgi$$ # lendroit o envoyer la rponse
rm -f $PIPE # sassurer quil ny a rien en suspens
/etc/mknod $PIPE p # crer le canal nomm
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
357
chmod 666 $PIPE # permettre lecriture
read INPUT # lire lentre
# ajouter le nom du canal nomm pour envoyer la rponse au dbut du formulaire
# des donnes et crire tout le message au canal "bien connu" /tmp/cgi-pipe
echo "$PIPE&"$INPUT > /tmp/cgi-pipe
cat < $PIPE # lit la rponse et la renvoie au serveur
rm -f $PIPE # nettoie
Voici la partie en L4G Progress :
/* websrvr.p */
define variable I as integer no-undo.
define variable req as character no-undo.
define variable outpipe as character no-undo.
/* enlever ce commentaire pour que le dmon progress cre le canal...
unix silent value( "rm -f /tmp/cgi-pipe" ).
unix silent value( "/etc/mknod /tmp/cgi-pipe p" ).
*/
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).
/* faire quelque chose comme analyser la requte, chercher les donnes et
envoyer la rponse...
*/
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.
Le HTML correspondant est le suivant :
<form action="cgi-bin/xxx" method="post">
What ? <input name="something" size="30" maxlength="30">
<input type="submit" value="submit">
</form>
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
358
Un script trs simple lance le dmon :
# 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
sh -c "eval nohup $DLC/bin/_progres -b p websrvr.p >> $LOG 2>&1 &"
Tout cela reprsente un moyen simple et direct daccder Progress via
une interface web. videmment il y a des problmes de scurit et
dchelle avec cette mthode, mais elle se prte bien un usage interne
rapide et trivial, car elle est trs puissante dans ce cas.
Voici un exemple de table HTML simple, construite partir de donnes de
la base sports fournie avec le produit. Elle contient une liste dinforma-
tions sur les clients :
/* sportssrvr.p */
define variable I as integer no-undo.
define variable req as character no-undo.
define variable outpipe as character no-undo.
/* enlever ce commentaire pour que le dmon progress cre le canal...
unix silent value( "rm -f /tmp/cgi-pipe" ).
unix silent value( "/etc/mknod /tmp/cgi-pipe p" ).
*/
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).
/* analyser la requte, chercher les donnes et envoyer la rponse...
*/
I = I + 1.
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
359
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.
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.
put unformatted "</table></body></html>".
output close.
input close.
end.
return.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
360
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
copyright ditions Eyrolles
Installer et grer Progress sur Linux
CHAPITRE VIII
361
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
362
matriel X-Terminal particulier ou une mulation coteuse de X Window
sur PC. La popularit de Linux ntait pas ce quelle est aujourdhui, et le
nombre dordinateurs capables de fonctionner avec X Window a cr dans
les mmes proportions depuis. De toutes faons, appelez votre commercial
Progress et exprimez votre intrt pour la rvision du support X Window.
Q. Jai entendu dire que limage aprs est un gouffre de performance. Est-
ce que jen ai vraiment besoin ? Aprs tout, je peux toujours sauvegarder
la base de donnes.
R. Limage aprs vous sauvera un jour ou lautre. Elle permet de restaurer
une base de donnes dans ltat o elle tait juste une minute avant la
panne. Mme si vous sauvegardez le systme entier toutes les nuits, vous
prenez le risque dune panne en fin de journe, et vous perdez un jour
entier de travail si vous nutilisez pas limage aprs . Se poser toujours
la question, Puis-je me permettre de perdre des donnes depuis la
dernire sauvegarde ? . Sur les systmes qui fonctionnent 24 heures sur
24 et autres systmes critiques, la perte de donnes nest, en gnral, pas
admissible.
Q. La documentation Progress dit que je peux administrer la base de donnes
laide du dictionnaire, mme si je nai que des clients runtime. Comment
puis-je accder au dictionnaire ?
R. Le code du dictionnaire est crypt. Dmarrer simplement votre session
Progress avec le paramtre rx, pour indiquer que le mode source est
crypt.
Q. Quand je dmarre ma session Progress, je reois le message Cette
version de Progress exige une procdure de dmarrage . O est lerreur ?
R. Il y a plusieurs possibilits. Cela se produit quand vous avez dmarr une
session Progress et avez tent daccder lditeur de procdures. Le
produit Client/Networking est conu pour nexcuter que du code compil
ou du code source crypt. Vous ne pourrez pas compiler de nouveaux
programmes avec ce client Progress ; il vous faut le Query/Runtime ou le
client L4G. Si vous avez achet lun de ces produits et que le message
apparat encore, vrifier les variables $DLC et $PROCFG, car Progress
consulte le fichier progress.cfg pour savoir quels produits sont installs, et
sil ne peut trouver ce fichier, il suppose que vous navez pas les licences
associes. Un fichier progress.cfg abim peut aussi en tre lorigine,
ainsi que le paramtre de dmarrage de session rr.
copyright ditions Eyrolles
IX
9
Installer et grer
PostgreSQL
sur Linux
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
364
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.
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
365
Auteurs : PostgreSQL est dvelopp, depuis 15 ans, par des millions de
gens, que ce soit dans les entreprises, les universits ou sur lInternet.
MySQL est un autre systme de base de donnes open-source, presque un
progiciel ; il propose des caractristiques importantes, mais lourdes, telles que
les transactions.
PostgreSQL dans le sillage de lInternet
LInternet, qui est au dpart un projet militaire, est maintenant ouvert au
monde entier ; il peut mettre en relation des gens de tous les continents. Il
permet dchanger rapidement des informations, des ides innovantes ou des
sujets de recherche depuis tous les points du globe. LInternet est donc devenu
le plus grand gnrateur de logiciel du monde. Les mthodologies de
dveloppement de logiciel ont volu, des sources statiques et propritaires
(closed-source) vers le dveloppement open-source
1
, cest--dire dynamique,
volutif, selon de nouvelles modalits dchange, et lInternet facilite un tel
systme.
LInternet a permis de crer le systme dexploitation Linux, devenu trs
courant. Devant les progrs de Linux, beaucoup de gens ont opt pour des
applications informatiques comme les systmes de bases de donnes, les
tableurs, etc. Plutt que de partir de zro, les dveloppeurs sur lInternet ont
utilis le code Postgres du domaine public de luniversit de Californie et, peu
peu, lont enrichi et amlior : le rsultat est PostgreSQL.
LInternet est un vritable moteur pour PostgreSQL. Les statistiques et les
constats defficacit dordre matriel sont en partie lorigine du succs de
PostgreSQL, car elles favorisent les systmes open-source, tels PostgreSQL
ou Linux. Comme la vitesse dInternet augmente de jour en jour, et que
lInternet est de plus en plus fiable, les systmes open-source sont de plus en
plus ractifs. Si lon soumet le logiciel des critres fonds sur les principes
statistiques, mathmatiques et scientifiques, on aboutit au label de meilleure
qualit du logiciel . Ce sont les systmes base de code open-source qui
obtiennent les meilleurs rsultats, car ils bnficient de lapport dInternet,
autoroute de linformation , par dfinition : PostgreSQL est de ceux-l.
Plus il y a de gens travailler sur le code, plus le logiciel samliore. Le
modle de code open-source limine aussi le travail redondant, est donc trs
conome, y compris du point de vue de la distribution, et il rpond aux imp-
1. open-source = ouvert ; lvolution et ladaptation de tels logiciels dpend de suggestions, dvelop-
pements et tests, qui sont externes aux premires quipes de dveloppement, et sont accepts comme
un enrichissement. N.d.T.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
366
ratifs conomiques doptimisation des ressources nationales et globales. On
na pas besoin de gaspiller son temps refaire ce qui est dj bien fait.
Le modle de dveloppement open-source est lorigine de nombreuses
caractristiques de PostgreSQL. Le dveloppement du logiciel sur lInternet
est trs rapide, car un rseau dordinateurs et de gens extrmement vaste est
impliqu dans le processus. Les tendances font apparatre que la plupart des
dveloppements de logiciels prennent place sur les autoroutes de linforma-
tion, qui parcourent le monde entier. Dans un proche avenir, la croissance
dInternet sera explosive, et cela dpassera de loin la simple adoption de
PostgreSQL par lindustrie.
Comme un gros travail a t fait depuis 15 ans sur PostgreSQL, il ny a aucun
intrt recrer, de toutes pices, un systme de base de donnes qui satisfait
aux standards SQL ANSI/ISO. Au contraire, il vaut mieux prendre le code
existant de PostgreSQL, quitte lui ajouter certaines fonctionnalits qui lui
manquent, ou des amliorations, pour pouvoir sen servir le plus vite possible.
La demande de produits Internet tels que PostgreSQL devrait crotre de
manire exponentielle : on est en effet capable de maintenir un haut niveau de
qualit et, pour un cot rduit, de fournir, aux utilisateurs et aux dveloppeurs,
un environnement trs vaste. Les pays qui nont gure daccs aux produits
dvelopps sur lInternet risquent de prendre un srieux retard et de rater la
rvolution cyber-mondiale lie la toile. Internet est le plus grand diteur
de logiciel au monde.
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
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
367
Si lon veut tlcharger depuis lInternet, visiter les sites suivants :
RPM source et binaires de PostgreSQL :
http://www.ramifordistat.net/postgres
Lamar Owen, pour la maintenance des RPM PostgreSQL :
lamar.owen@wgcr.org
RPM source et binaires de PostgreSQL : http://www.postgresql.org
Cliquer sur Latest News et sur Red Hat RPMs.
RPM source et binaires de PostgreSQL :
http://www.redhat.com/pub/contrib/i386/
Site ftp : ftp://ftp.redhat.com/pub/contrib/i386/
Site pour les binaires sur Solaris, HPUX, AIX, IRIX et Linux :
ftp://ftp.postgresql.org/pub/bindist
Installation rapide de PostgreSQL
Mme si PostgreSQL est le plus avanc et le plus sophistiqu des systmes de
base de donnes au monde, il nest pas du tout complexe installer, et de fait,
linstallation prend moins de cinq minutes, avec un RPM binaire. PostgreSQL
ncessite un minimum de 40 Mo despace disque et de 8 Mo de RAM, mais,
comme aujourd'hui, mme les systmes PC bas prix ont souvent un disque
dur de 10 Go et 64 Mo RAM, et que le disque dur nest pas cher... Cette
section donne une vue densemble du processus dinstallation. Si lon a une
certaine exprience de Linux et des paquetages RPM Red Hat, on pourra
effectuer linstallation de PostgreSQL en un rien de temps en se conformant
aux tapes qui suivent. Si lon est novice en Linux/UNIX, se reporter la
section suivante, Instructions dtailles , qui explique en dtail toutes ces
tapes.
Sur les systmes Red Hat Linux, suivre les tapes ci-dessous. Sur Debian
Linux, les tapes sont similaires, mais il faut remplacer .rpm par .deb. Sur
Debian Linux, si lon na pas les paquetages PostgreSQL, on peut convertir
les paquetages PostgreSQL de Red Hat en paquetages Debian laide du
programme rpm2deb. Se connecter comme root et passer les commandes :
# 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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
368
Si le postmaster est en fonctionnement, sortir des applications PostgreSQL et
arrter le processus postmaster.
Important. Si lon constate quil existe dj un utilisateur postgres, sauvegarder et
nettoyer le rpertoire racine de Postgres, ~postgres, supprimer lutilisateur postgres,
ou ventuellement le renommer postgres2. Il faut que linstallation soit propre.
Installer les paquetages postgresql ncessaires il faut installer tous les
paquetages clients, donnes et serveur, pour que pgaccess fonctionne.
Pour dmarrer PostgreSQL lors du dmarrage (boot) :
Pour lancer le serveur Postgres ds maintenant :
Pour donner pgaccess laccs laffichage :
Maintenant on peut commencer taper des commandes SQL dans psql ou
pgaccess !
Pour consulter les FAQ, les guides dutilisation, de programmation et dadmi-
nistration, ou les didacticiels, utiliser :
Ce rpertoire contient tous les documents de PostgreSQL.
# cat /etc/passwd | grep postgres
# 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*
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
369
Pour lire les fichiers Postscript compresss :
Si les tapes prcdentes naboutissent pas, chercher dautres informations
sur linstallation http://www.ramifordistat.net/postgres. Lamar Owen assure
la maintenance des RPM PostgreSQL RPM: son adresse e-mail est
lamar.owen@wgcr.org. Il faut se familiariser soi-mme avec le gestionnaire
de paquets RPM de Red Hat pour bien grer les installations PostgreSQL.
Tlcharger le manuel Maximum RPM de http://www.rpm.org, et consulter le
fichier nomm maximum-rpm.ps.gz on peut le lire sur Linux laide de la
commande gv :
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:
qui monte le CD-ROM dans le rpertoire /mnt/cdrom. Ensuite, aller dans le
rpertoire qui contient tous les RPM:
Quelques connaissances de base sur les paquetages RPM et la commande
Linux rpm sont ncessaires : voir la documentation en ligne, qui explique les
options et lusage de rpm, laide de la commande man rpm.
Les RPM PostgreSQL sont en gnral nomms postgresql-aaa-x.x.x-r.rpm,
o aaa est le paquetage, comme jdbc ou server, x.x.x le numro de version,
7.0.0, par exemple, et r la version du paquetage, telle 1, 2, 3, etc. Pour voir la
liste des RPM PostgreSQL :
bash$ man gv
bash$ gv admin.ps.gz
bash$ gv maximum-rpm.ps.gz
# 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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
370
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:
Loption -q signifie mode de requte, -p paquetage et -l liste des fichiers.
Si PostgreSQL existe dj sur le systme et que la base de donnes fonctionne
sur le port par dfaut, il faut dabord arrter le processus postmaster. Pour voir
sil existe un processus PostgreSQL, taper :
Si le postmaster est actif, sortir de toutes les applications PostgreSQL et arr-
ter le processus postmaster. Pour ce faire, utiliser la commande :
Linstallation de PostgreSQL doit toujours tre un clean slate cest--dire
quil faut dbarrasser le systme de toute installation antrieure. Si lon a dj
install PostgreSQL, il faut la transfrer ou la renommer de sorte quil ny ait
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
# rpm -qpi postgre*.rpm | less
Name : postgresql Relocations : /usr
Version : 6.5.2 Vendor : Red Hat Software
Release : 1 Build Date : Sun 26 Sep 1999
03:41:44 PM CDT
Install date : (not installed) Build Host : porky.devel.redhat.com
Group : Applications/Databases Source RPM : postgresql-6.5.2-1.src.rpm
Size : 7354692 License : BSD
Packager : Red Hat Software <http://developer.redhat.com/bugzilla>
URL : http://www.ramifordistat.net/
Summary : The PostgreSQL server programs.
Description : Postgresql includes the programs needed to create and run
a PostgreSQLserver, which will in turn allow you to create and maintain
PostgreSQL databases. PostgreSQL is an advanced Object-Relational database
management system (DBMS) that supports almost all SQL constructs.
# rpm -qpl postgre*.rpm | less
# ps -auxw | grep -I postmaster
# /etc/rc.d/init.d/postgresql stop
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
371
aucun conflit de nom . En gnral, PostgreSQL est install sous lid
dutilisateur UNIX postgres. Pour vrifier sil y a dj un utilisateur UNIX
nomm postgres sur le systme Linux, taper :
Sil y a dj un utilisateur postgres, sauvegarder et nettoyer le rpertoire
racine de Postgres, nomm ~postgres, et supprimer lutilisateur UNIX
postgres, ou le renommer, par exemple, postgres2.
Installer les paquetages postgresql ncessaires ; si lon a assez despace
disque, installer tous les RPM PostgreSQL.
Si lon veut que la base de donnes PostgreSQL dmarre automatiquement au
dmarrage du systme Linux, ajouter PostgreSQL aux scripts de dmarrage
du systme laide de la commande Linux chkconfig. Pour lire le manuel en
ligne, utiliser man chkconfig ; la commande
ajoutera les liens suivants au fichier /etc/rc.d/init.d/postgresql du rpertoire
/etc/rc?.d :
partir de maintenant, tous les fichiers de systme PostgreSQL sont en place,
on dmarre le serveur Postgres avec la commande
qui lance le processus Linux postmaster, lequel va tre lcoute des requ-
tes sur le port TCP 5432. Pour consulter le processus, taper
Maintenant, on peut utiliser les applications interfaces de PostgreSQL. Les
deux interfaces utilisateur de PostgreSQL les plus souvent utilises sont
# cat /etc/passwd | grep postgres
postgres:x:40:233:PostgreSQL Server:/var/lib/pgsql:/bin/bash
# rpm -i postgre*.rpm
# chkconfig add postgresql
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
# ps -auxw | grep -I postmaster
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
372
pgaccess et psql. psql est un terminal interactif en ligne de commande, et
pgaccess une application graphique X Window crite en Tcl/Tk, extrme-
ment convivial : on peut utiliser la souris pour cliquer sur des fonctions diver-
ses, telles que crer des tables et des bases de donnes, excuter des requtes
et des rapports, etc. Comme pgaccess est une application X Window, on doit
donner aux autres utilisateurs UNIX la permission dutiliser laffichage du
serveur X Window.
Pour ce faire, taper
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 :
Se connecter en tant que postgres laide de la commande :
Voir man su pour les dtails de la commande su (setuser).
Maintenant, linvite # disparat au profit de bash$. Taper :
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 :
Pour accder mydatabase, entrer la commande :
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-
# xhost +
# man xhost
# su - postgres
bash$ id
postgres(uid=10 gid=4)
bash$ createdb mydatabase
bash$ man psql
bash$ psql mydatabase
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
373
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 :
o hostname est le nom de lhte Linux donn dans le fichier /etc/hosts ou
ladresse IP de lhte. Par exemple, on peut taper :
ou bien :
o 198.210.32.110 est ladresse IP de lhte nomm elmo. Pour consulter le
manuel de pgaccess, taper :
Pour accder la base de donnes mydatabase, taper :
qui lancera lapplication graphique adquate sur le systme X Window (KDE
ou GNOME). Il y a aussi un bouton daide, qui donne plus de dtails sur
pgaccess.
Maintenant, on peut passer des commandes SQL avec psql ou pgaccess !
Sur un systme Red Hat Linux, toute la documentation est installe dans le
rpertoire /usr/doc. Pour consulter les FAQ, les guides dutilisation, de
programmation et dadministration, et les didacticiels, taper :
On peut lire un fichier Postscript compress laide de la commande :
Consulter la documentation en ligne de la commande gv :
bash$ export DISPLAY=<hostname>:0.0
bash$ export DISPLAY=elmo:0.0
bash$ export DISPLAY=198.210.32.110:0.0
bash$ man pgaccess
bash$ pgaccess mydatabase
bash$ cd /usr/doc/postgresql*
bash$ gv admin.ps.gz
bash$ man gv
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
374
Si les tapes prcdentes naboutissent pas, on peut obtenir dautres informa-
tions http://www.ramifordistat.net/postgres. Lamar Owen assure la mainte-
nance des RPM PostgreSQL : son adresse e-mail est lamar.owen@wgcr.org.
Il faut se familiariser soi-mme avec le gestionnaire de paquet RPM de Red
Hat pour bien grer les installations PostgreSQL. Tlcharger le manuel
Maximum RPM de http://www.rpm.org, et consulter le fichier nomm
maximum-rpm.ps.gz on peut le lire sur Linux laide de la commande gv
maximum-rpm.ps.gz.
Installation de la distribution source
Ensuite, vous aurez besoin des outils GNU gcc et make. On peut vrifier si
lon dispose de ces outils laide des commandes suivantes :
Le gcc install doit tre en version 2.81 ou suprieure. Vrifier la version par
la commande :
Si ce nest pas la bonne version, se reporter la documentation de la distribu-
tion Linux pour la mettre jour. Consulter le site GNU (http://www.gnu.org),
si lon a besoin daide pour installer les outils. Les commandes ont t testes
avec une version 5.2 de Red Hat Linux, utilisant le shell Bash. Sauf indication
contraire, elles fonctionneront probablement sur la plupart des systmes. Les
options des commandes telles que ps et tar varient sensiblement selon les
plates-formes. Le mieux est de se fier au bon sens avant demployer ces
commandes.
Si lon na pas la distribution PostgreSQL, la prendre sur ftp.postgresql.org,
puis la dcompresser comme ceci :
shell$ which gcc
/usr/bin/gcc
shell$ which make
/usr/bin/make
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
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
375
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 :
Pour rcuprer make de GNU, voir ftp://ftp.gnu.org. On trouve des informa-
tions jour propos des plates-formes http://www.postgresql.org/
docs/admin/ports.htm. En gnral, les plates-formes compatibles UNIX avec
les bibliothques actuellement utilises sont capables dexcuter PostgreSQL.
Dans le sous-rpertoire doc de la distribution figurent plusieurs documents
README et FAQ spcifiques de la plate-forme, que lon peut consulter si
lon rencontre un problme.
Bien que lon puisse excuter PostgreSQL avec la mmoire minimale exige
de 8 Mo, la vitesse samliore nettement quand la mmoire est tendue
96 Mo, ou plus. La rgle est que lon na jamais trop de mmoire.
Vrifier aussi que lespace disque est suffisant : il faut environ 30 Mo pour
larborescence du source pendant la compilation, et 5 Mo pour le rpertoire
dinstallation. Une base de donnes, vide, occupe environ 1 Mo ; sinon, il faut
prvoir cinq fois plus que lespace pris par un fichier texte pour le mme
volume de donnes. Si lon excute les tests de non-rgression, prvoir un
espace temporaire denviron 20 Mo. Pour vrifier lespace disque, utiliser la
commande
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.
Procder tape par tape
Lors dune nouvelle installation, ou lors de la mise jour dune version prc-
dente de PostgreSQL, procder comme suit :
1. Crer le compte du super-utilisateur PostgreSQL, qui sera celui du ser-
veur. Pour la production, crer un compte spar, sans privilges (on uti-
lise couramment postgres). Si lon souhaite seulement se servir du
$ gmake version
$ df -k
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
376
compte, sans avoir daccs root, un compte utilisateur suffit.
Excuter PostgreSQL en tant que root, bin ou tout autre compte dot de
droits daccs spciaux prsente un risque pour la scurit : ce nest donc
pas recommand. On na pas besoin de faire linstallation sous ces comp-
tes particuliers, bien que ce soit possible. Lorsque les droits du super-utili-
sateur de base de donnes sont ncessaires, cest indiqu dans la
procdure.
2. Sil ne sagit pas dune mise jour, passer ltape 4.
Il faut maintenant sauvegarder la base de donnes existante il sagit de
linstallation de la base de donnes la plus rcente, au-del de la version
6.0 taper
Pour conserver les identifiants dobjets (OID), utiliser loption o quand
on excute pg_dumpall. Cependant, sauf raison particulire (par exemple,
si lon se sert des OID comme cls dans les tables), il ne faut pas le faire.
Bien utiliser la commande pg_dumpall de la version en cours ; ne pas uti-
liser le script pg_dumpall de la version 6.0, sinon tout deviendra la pro-
prit du super-utilisateur PostgreSQL. Dans ce cas, il faudra rcuprer un
pg_dumpall dune version 6.x.x plus rcente, sachant que le pg_dumpall
de la version 7.0 ne fonctionne pas sur les bases de donnes dune version
antrieure. Si lon migre depuis une version antrieure la version 1.09 de
Postgres95, il faut sauvegarder la base de donnes, installer Postgres95
v1.09, restaurer la base et la sauvegarder nouveau.
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.
3. Si lon met jour un systme existant, arrter le serveur de base de don-
nes. Entrer la commande
Pour obtenir la liste des numros de processus en cours :
Taper la ligne suivante en remplaant pid par lid du processus postmaster
(1032 dans ce cas ne pas utiliser lID du processus grep postmaster).
$ pg_dumpall > db.out
$ ps ax | grep postmaster
1032 ? S 0:00 /usr/bin/postmaster -i -S -D/var/lib/pgseql
1089 pts/3 S 0:00 grep postmaster
$ kill pid
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
377
Remarque. Sur les systmes o PostgreSQL dmarre lors du boot, il y a probable-
ment un fichier de dmarrage qui fait la mme chose. Par exemple, sur un systme
Red Hat Linux, on trouvera que la commande :
$ /etc/rc.d/init.d/postgres.init stop
fonctionne. Il faut aussi mettre de ct les anciens rpertoires. Entrer
$ mv /usr/local/pgsql /usr/local/pgsql.old
ou bien les chemins modifis.
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
suivi de toutes les options. Pour une premire installation, on peut ne rien
mettre. Pour consulter la liste complte des options, taper :
Voici quelques-unes des options les plus couramment utilises :
prefix=BASEDIR : choisit un rpertoire de base part pour installer
PostgreSQL. Par dfaut, cest /usr/local/pgsql.
enable-locale : permet dutiliser les variables locales.
enable-multibyte : autorise lutilisation de lencodage multi-caractres.
Cela concerne surtout le japonais, le coren ou le chinois.
with-perl : construit linterface Perl. Noter que linterface Perl est
installe la place habituelle des modules Perl (en gnral, sous
/usr/lib/perl), mais il faut un accs root pour utiliser cette option.
with-odbc : construit le pilote ODBC.
with-tcl : construit les bibliothques dinterface et les programmes qui
ont besoin de Tcl/Tk, dont libpgtcl, pgtclsh et pgtksh.
5. Compiler le programme ; taper
Le processus de compilation peut durer assez longtemps : de 10 minutes
une heure, selon les cas. La dernire ligne affiche sera, esprons-le :
Se souvenir que gmake peut sappeler make, selon le systme.
$. /configure
. /configure help
$ gmake
All of PostgreSQL is successfully made. Ready to install.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
378
6. Installer le programme. Taper
7. Indiquer au systme comment trouver les nouvelles bibliothques
partages : la mthode varie selon les plates-formes. Celle qui fonctionne
partout consiste crer la variable denvironnement LD_LIBRARY_PATH :
On peut mettre ces commandes dans un fichier de dmarrage du shell, tel
que /.bash_profile.
Sur certains systmes, la meilleure mthode est celle qui suit, mais on doit
avoir un accs root. diter le fichier /etc/ld.so.conf pour lui ajouter la ligne
et excuter la commande /sbin/ldconfig. En cas de doute, se reporter au
manuel de rfrence du systme. Si lon obtient le message
cest que ltape prcdente tait ncessaire : il suffit alors de lexcuter.
8. Faire linstallation de la base de donnes. Pour cela, se connecter sous le
compte du super-utilisateur PostgreSQL avec root, cela ne fonctionne
pas.
Loption D spcifie lemplacement o les donnes seront ranges. On
peut utiliser un chemin quelconque il na pas besoin dtre dans le
rpertoire dinstallation. Sassurer quand mme que le compte du super-
utilisateur peut crire dans ce rpertoire (ou le crer) avant de dmarrer
initdb. Si lon a fait linstallation, jusqu maintenant en tant que super-
utilisateur PostgreSQL, il faut se connecter temporairement en tant que
root pour crer le rpertoire des donnes.
9. Ltape prcdente demande de dmarrer le serveur de base de donnes.
La commande
$ gmake install
$ LD_LIBRARY_PATH=/usr/local/pgsql/lib
$ export LD_LIBRARY_PATH
/usr/local/pgsql/lib
./psql : error in loading shared libraries
libpq.so.2.1 : cannot open shared object file : No such file or directory
$ 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
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
379
dmarre le serveur en tche de premier plan. Pour le dmarrer en tche de
fond, utiliser loption S.
10. Si lon migre une installation existante, restaurer les donnes laide de :
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) :
De plus, si lon met PGDATA dans lenvironnement du super-utilisateur
PostgreSQL, on peut omettre loption D dans les commandes postmaster
et initdb.
Pour installer le manuel man et la documentation HTML, entrer :
Les fichiers seront installs dans les rpertoires /usr/local/pgsql/doc et
/usr/local/pgsql/man. Pour donner au systme laccs la documentation
man, il faut ajouter la ligne suivante un fichier de dmarrage du shell :
La documentation est disponible aussi en format Postscript. Si lon a une
imprimante Postscript, ou si la machine est dj initialise pour imprimer
les fichiers Postscript laide dun filtre, on imprime le guide de lutilisa-
teur comme ceci :
Voici comment faire dans le cas o ghostscript est install sur le systme
et que lon utilise une imprimante laser :
$ /usr/local/pgsql/bin/psql < db.out
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
$ alias gshp='gs -sDEVICE=laserjet -r300 -dNOPAUSE'
$ export GS_LIB=/usr/share/ghostscript:/usr/share/ghostscript/fonts
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
380
En cas de doute, consulter les manuels ou un expert. Le guide de ladmi-
nistrateur sera probablement lire en premier si lon est novice sur
PostgreSQL : il contient toutes les informations sur la manire de crer les
utilisateurs des bases de donnes et de mettre en uvre lauthentification.
En gnral, on souhaite configurer lordinateur de sorte quil dmarre le
serveur de base de donnes automatiquement, quand il est mis sous
tension ; mais ce nest pas ncessaire, car le serveur PostgreSQL peut tre
lanc depuis un compte non privilgi, sans intervention du compte root.
Les systmes ont des conventions diffrentes de dmarrage des dmons au
moment du boot, aussi on sera bien avis de sen informer. La plupart des
systmes ont un fichier appel /etc/rc.local ou /etc/rc.d/rc.local : cest
certainement lun des meilleurs endroits pour une telle commande. Quoi
que lon fasse, postmaster doit tre excut par le super-utilisateur
PostgreSQL (postgres) et non par root ou tout autre utilisateur. Par cons-
quent, il faudra toujours formuler les lignes de commande selon la syntaxe
su -c ... postgres.
Conserver une trace de la sortie du serveur. Pour cela, au dmarrage du
serveur, essayer :
Voici dautres suggestions, appliquer selon les systmes dexploitation.
Editer le fichier rc.local sur NetBSD, ou rc2.d sur SPARC Solaris 2.5.1
pour y ajouter la ligne suivante :
Dans FreeBSD 2.2-RELEASE, diter /usr/local/etc/rc.d/pgsql.sh pour y
ajouter les lignes suivantes, puis modifier ses attributs par les commandes
chmod 755 et chown root:bin.
$ gunzip user.ps.gz
$ gshp -sOUTPUTFILE=user.hp user.ps
$ gzip user.ps
$ lpr -l -s -r manpage.hp
nohup su -c 'postmaster -D /usr/local/pgsql/data > server.log 2>&1' postgres &
su postgres -c "/usr/local/pgsql/bin/postmaster -S -D /usr/local/pgsql/data"
# !/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'
}
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
381
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.
Valider linstallation de PostgreSQL
Les RPM dexemples contiennent des programmes qui permettent de valider
linstallation de PostgreSQL sur un site et de tester diverses interfaces vers
PostgreSQL.
Les exemples de PostgreSQL
Le rpertoire dexemples postgresql sinstalle depuis lune de ces sources :
CD-ROM Linux : postgresql-*examples.rpm ;
Tlcharger postgresql-*examples.rpm depuis http://www.aldev.8m.com
ou http://www.aldev.webjump.com ;
Dans larborescence du code source de PostgreSQL, postgresql*.src.rpm :
chercher les rpertoires contenant des exemples, des rsultats de test ou
des guides dutilisation.
Tester linterface Tcl/Tk
Le programme pgaccess est un exemple dinterface Tcl/Tk. Il fonctionne
sous X Window, avec KDE, GNOME ou une fentre Motif. Consulter le
fichier /usr/bin/pgaccess laide dun diteur tel que vi, gvim ou view :
# 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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
382
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.
Tester linterface Python PyGreSQL
Aprs avoir install les exemples de PostgreSQL, procder comme suit :
Cela semble fonctionner, maintenant installons-le proprement :
Tester linterface Perl
Aprs avoir install les exemples de PostgreSQL, entrer les commandes :
Important. Si la commande ne fonctionne pas, essayer la suivante. La variable
globale @INC doit inclure le module Pg.pm du rpertoire site_perl, aussi on utilise
loption -i :
bash$ perl -I/usr/lib/perl5/site_perl/5.005/i386-linux-thread. /example.pl
Perl est lanc et accde la base de donnes PostgreSQL ! Pour plus dinformations
sur lutilisation de linterface Perl, consulter le fichier example.pl.
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")
eins|zwei
--------
inq|onq
i row)
>>>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
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
383
Tester les interfaces libpq++ et libpq
Aprs avoir install les exemples de PostgreSQL, entrer les commandes :
Ignorer les messages derreur sil y en a, comme ci-dessous :
Dans cet exemple, on a excut directement les interfaces C/C++ de
PostgreSQL.
Tester les interfaces Java
Aprs avoir install les exemples PostgreSQL, installer ensuite :
le JDK, jdk-*glibc*.rpm : voir ftp://ftp.redhat.com/pub/contrib/i386
ou http://www.blackdown.org
postgresql-jdbc-*.rpm : voir ftp://ftp.redhat.com/pub/contrib/i386
puis passer les commandes
qui doivent afficher
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
> create table foo (aa int, bb char(60));
No tuples returned...
status = 1
Error returned: fe_setauthsvc: invalid name: , ignoring...
> insert into foo values ('4535', 'vasu');
No tuples returned...
status = 1
Error returned: fe_setauthsvc: invalid name: , ignoring...
> select * from foo;
aa |tt |
-----|-----|
4585 |vasu |
Query returned 1 row.
>CTRL+D
bash$
bash$ cd /usr/doc/postgresql-7.0.0/examples/jdbc
bash$ echo $CLASSPATH
CLASSPATH=/usr/lib/jdk-x.x.x/lib/classes.zip
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
384
o x.x.x est le numro de version correct :
Editer les fichiers psql.java et mettre en commentaire la ligne du paquetage :
On a excut directement linterface Java de PostgreSQL.
Tester linterface ecpg
Aprs avoir install les exemples de PostgreSQL, entrer les commandes.
On a excut Embedded C-SQL dans la base de donnes PostgreSQL.
Tester linterface ODBC
Chercher le pilote ODBC win32 pgsql sur http://www.insightdist.com/
psqlodbc/. Voir aussi dans /usr/lib/libpsqlodbc.a.
Tester le pilote laide dun programme Windows qui accde la base de
donnes PostgreSQL.
Tester linterface MPSQL Motif-Worksheet
Chercher le RPM sur http://www.mutinybaysoftware.com et suivre les
instructions.
Tester les exemples SQL, les types dfinis par lutilisateur
et les fonctions
Aprs avoir install les exemples de PostgreSQL, entrer les commandes :
bash$ export CLASSPATH=$CLASSPATH::./usr/lib/pgsql/jdbc7.0-1.2.jar
bash$ javac psql.java
bash$ java psql jdbc:postgresql:template1 postgres < password>[1]
select * from pg_tables;
tat1enane tat1eowner Iasinoexes Iasru1es
q_tye ostqres true fa1se fa1se
q_attritute ostqres true fa1se fa1se
[2]
CTRL+C
bash$
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
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
385
Vrifier linstallation de PostgreSQL
Pour vrifier la qualit de PostgreSQL, excuter le paquetage de tests de non-
rgression. Se connecter en tant que root :
Consulter aussi le fichier README ou installer larborescence du code
source qui contient le rpertoire regress
pour savoir quel paquetage RPM systme on doit installer. Excuter ce qui
suit pour prparer le paquetage :
Le test de non-rgression a besoin des fichiers make et de certains fichiers
den-tte tels que *fmgr*.h, construits laide de la commande :
Interrompre la commande par Ctrl+C, sitt quapparat make -C common
SUBSYS.o : la configuration est alors termine et les fichiers make et en-ttes
sont crs. On na pas besoin daller plus loin :
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
# rpm -bp postgresql*.spec
# rpm short-circuit -bc postgresql*.spec
# 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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
386
Appliquer les corrections durgence
Certaines corrections de bogues critiques ont t apportes aprs que la
version GA de PostgreSQL eut t distribue. Ces correctifs optionnels
sappliquent selon les besoins de lapplication. Dabord, se placer dans le
rpertoire source de postgresql.
Les fichiers correctifs se trouvent dans les correctifs de PostgreSQL sur le site
ftp://ftp.postgresql.org/pub/patches.
Comment sassurer de la fiabilit de PostgreSQL ?
Une manire quasi-scientifique de valider la fiabilit du systme
PostgreSQL : la distribution propose un paquetage de test de non-rgression
(src/test/regress), qui vrifie les oprations SQL standard ainsi que les capa-
cits dextension de PostgreSQL. Les paquetages de test contiennent dj des
centaines de programmes de test en SQL.
On utilise la puissance dordinateurs ultra-rapides pour valider PostgreSQL,
la place dun cerveau humain. Les ordinateurs peuvent excuter des tests de
non-rgression du logiciel des millions, voire des milliards de fois plus vite
quun humain, donc excuter des milliards de tests SQL en un temps record.
Dans un avenir proche, la vitesse des ordinateurs sera des millions et des
millions de fois plus rapide que le cerveau humain ! Il est donc tout fait
pertinent dutiliser la puissance des ordinateurs pour valider un logiciel.
On peut au besoin enrichir les tests, et les dposer sur le site web principal de
PostgreSQL si lon estime quils peuvent tre utiles dautres personnes. Les
paquetages de tests de non-rgression renforcent la confiance des clients et
facilitent le dploiement de PostgreSQL sur les systmes de production.
Le paquetage de tests de non-rgression est considr comme une base tech-
nique trs solide, qui fait lunanimit entre les dveloppeurs et les utilisateurs
finaux. Les dveloppeurs de PostgreSQL utilisent beaucoup le paquetage de
tests de non-rgression pendant la priode de dveloppement, et juste avant
de livrer le logiciel au public, en gnral.
# su - root
# rpm -i postgresql*.src.rpm
# cd /usr/src/postgresql7.0.0
# man patch
# patch -p0 < patchfile
# make clean
# make
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
387
Les possibilits de PostgreSQL sont directement refltes par le paquetage de
tests de non-rgression. Si une fonctionnalit, une partie de la syntaxe ou une
caractristique est prsente dans le paquetage de tests de non-rgression, cela
veut dire quelles sont valides ; sinon, cest quelles ne sont pas supportes
par PostgreSQL ! On peut les vrifier et les ajouter au paquetage de tests de
non-rgression.
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
dans le fichier de login du rpertoire racine (home). Si lon utilise une
variante du shell Bourne, comme sh, ksh ou Bash, on ajoutera
au fichier .profile du rpertoire racine.
partir dici, nous supposons que lon a ajout le rpertoire bin de Postgres
au chemin. De plus, nous ferons frquemment rfrence la mise jour
dune variable de shell ou la mise jour dune variable
denvironnement dans la suite de ce chapitre. Si lon na pas bien compris le
dernier paragraphe sur la modification du chemin de recherche, consulter les
pages du manuel UNIX qui dcrivent le shell, avant daller plus loin.
Si lon na rien initialis dans la mthode par dfaut il reste quelques
points rgler. Par exemple, si la machine serveur de base de donnes est une
machine distante, il faut initialiser la variable denvironnement PGHOST avec
le nom de cette machine ; la variable denvironnement PGPORT doit aussi
tre renseigne. Le fil directeur est : si lon essaie de dmarrer un programme
dapplication et quil ne peut pas se connecter au postmaster, il faut revenir en
arrire et sassurer quil est initialis correctement dans lenvironnement.
set path = ( /usr/local/pgsql/bin path )
PATH=/usr/local/pgsql/bin:$PATH
export PATH
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
388
Utiliser Postgres sur UNIX/Linux
en environnement runtime
Toutes les commandes Postgres qui sont excutes directement depuis le shell
UNIX se trouvent dans le rpertoire .../bin. Pour faciliter lexcution de ces
commandes, mettre ce rpertoire dans le chemin de recherche.
Il existe, sur chaque site, une collection de catalogues systme qui compren-
nent une classe (pg_user) contenant une instance par utilisateur Postgres
valide. Linstance spcifie un ensemble de privilges Postgres, tels que la
capacit dagir en tant que super-utilisateur Postgres, celle de crer ou de
dtruire des bases de donnes ou celle de mettre jour les catalogues du
systme. Un utilisateur UNIX ne peut rien faire avec Postgres tant quune
instance approprie nest pas installe dans cette classe. On obtient dautres
informations sur les catalogues de systme en excutant des requtes sur les
classes appropries.
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 imprime loccasion des messages, souvent utiles au dpannage.
Si lon souhaite avoir les messages daide au dbogage de postmaster, le
dmarrer avec loption d, qui redirige la sortie vers le fichier de trace :
Pour ne pas voir ces messages, on utilise loption -S, comme S ilence, qui
les inhibe :
Remarque : il ny a aucun & la fin du dernier exemple ; postmaster sera
donc excut en tche de premier plan.
% postmaster
% postmaster -d >& pm.log 2>&1 &
% postmaster -S
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
389
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 :
Les fonctions dimpression derreurs et de messages de dbogage peuvent
maintenant utiliser le service du syslog(2). Un message imprim sur stdout
ou stderr contient la date, lheure et aussi lidentifiant (pid) du back-end :
Ce format amliore la lisibilit des traces et permet de comprendre exacte-
ment ce que fait le back-end, et quel moment. Cela facilite aussi lcriture
dun script simple, en awk ou en perl, qui gre la trace pour dtecter des
erreurs ou des problmes de base de donnes, ou pour calculer des statistiques
sur les temps de transaction. Les messages imprims sur syslog utilisent
loutil LOG_LOCAL0 et loption syslog permet de contrler lutilisation de
syslog. Malheureusement, beaucoup de fonctions font directement appel
printf() pour imprimer leurs messages sur stdout ou stderr, et cette sortie ne
peut tre redirige vers syslog ou contenir des marques horaires. Il est prf-
postgres options -T "verbose=2,query,hostlookup-"
#timestamp #pid #message
980127.17:52:14.173 [29271] StartTransactionCommand
980127.17:52:14.174 [29271] ProcessUtility: drop table t;
980127.17:52:14.186 [29271] SIIncNumEntries: table is 70% full
980127.17:52:14.186 [29286] Async_NotifyHandler
980127.17:52:14.186 [29286] Waking up sleeping backend process
980127.19:52:14.292 [29286] Async_NotifyFrontEnd
980127.19:52:14.413 [29286] Async_NotifyFrontEnd done
980127.19:52:14.466 [29286] Async_NotifyHandler done
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
390
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 :
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 :
Options dfinies
Les options dfinies actuellement sont dcrites dans le tableau suivant :
# comment
option=integer_value # donne une valeur loption
option # met loption 1
option+ # met loption 1
option- # met loption 0
verbose=2
query
hostlookup
showportnumber
Tableau 91
Options dexcution de PostgreSQL
Options Description
all Flag de trace globale. Les valeurs autorises sont :
0 messages de trace autoriss cas par cas ;
1 activer tous les messages de trace ;
-1 dsactiver tous les messages de trace.
verbose Flag Commentaires. Les valeurs autorises sont :
0 aucun message ; valeur par dfaut ;
1 imprimer les messages dinformation ;
2 imprimer davantage de messages dinformation.
query Flag de trace des requtes. Les valeurs autorises sont :
0 ne pas imprimer de requtes ;
1 imprimer une requte condense sur une ligne ;
4 imprimer la requte complte.
plan Imprimer le plan de la requte.
parse Imprimer la sortie du programme danalyse.
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
391
rewritten Imprimer la requte rcrite.
parserstats Imprimer les statistiques du programme danalyse.
plannerstats Imprimer les statistiques relatives lagenda.
executorstats Imprimer les statistiques dexcution.
shortlocks Actuellement inutilise, mais rserve pour des
caractristiques futures.
locks Trace des verrouillages.
userlocks Trace des verrouillages utilisateur.
spinlocks Trace des verrouillages par rotation.
notify Trace des fonctions de notification.
malloc Actuellement inutilise.
palloc Actuellement inutilise.
lock_debug_oidmin Valeur minimale de lOID de relation trac lors du
verrouillage.
lock_debug_relid OID, si non nul, de la trace lors du verrouillage.
lock_read_priority Actuellement inutilis.
deadlock_timeout Frquence de vrification des interblocages (deadlock).
syslog Flag syslog. Les valeurs autorises sont :
0 messages sur stdout/stderr ;
1 messages sur stdout/stderr et syslog ;
2 messages seulement sur syslog.
hostlookup Active linspection des noms dhte dans ps_status.
showportnumber Montre le numro de port dans ps_status.
notifyunlock Dverrouille pg_listener aprs notification.
notifyhack Enlve les doublons de pg_listener.
Tableau 91
Options dexcution de PostgreSQL
Options Description
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
392
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.
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
393
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).
local database mthode_authentification
host database adresse_TCP/IP masque_TCP/IP mthode_authentification
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
394
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 :
Authentification Kerberos
Kerberos est un systme dauthentification scuris au standard des profes-
sionnels et adapt aux rseaux informatiques publics.
# Toute connection via 1es soclets Unix : trust
1oca1 trust
# Toute connection via 1es TCl/Il oe cette nacIine : trus
Iost a11 iZ7...i Z55.Z55.Z55.Z55 trust
# On ne sait rien oe cette nacIine : reect
Iost a11 i9Z.i68..i Z55.Z55.Z55. reect
# Ce11e-ci ne eut as cryter: on oenanoe 1es nots oe asse en c1air.
Iost a11 i9Z.i68..8 Z55.Z55.Z55. assworo
# Les autres nacIines euvent fournir oes nots oe asse crytes.
Iost a11 i9Z.i68.. Z55.Z55.Z55. cryt
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
395
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.
Les utilisateurs situs en dehors des tats-Unis et du Canada doivent savoir
que la distribution du code de cryptage rel de Kerberos est restreinte de par
la rglementation lexport fixe par le gouvernement amricain. Les requ-
tes concernant la version de Kerberos que vous souhaitez doivent tre adres-
ses votre diteur ou au projet Athena du MIT. Notez que des listes de FAQ
sont postes priodiquement sur la liste de diffusion de Kerberos (envoyer un
message pour y souscrire), et sur le groupe de news USENET.
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.
Dans la documentation de la version 5 de Kerberos, on suppose, propos de
la dnomination des utilisateurs et des services (voir tableau 9.1) que :
les noms principaux des utilisateurs (anames) ne contiennent pas de nom
rel dutilisateur UNIX/Postgres dans le premier composant ;
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
396
le service Postgres contient deux composants : le nom de service et un
nom dhte, gnrique comme en version 4 (tous les suffixes de
domaines sont supprims).
Le support de la version 4 est appel disparatre quand le MIT aura publi la
version 5 de production.
Crer des utilisateurs
Pour dfinir un nouvel utilisateur, on excute lutilitaire createuser. Pour assi-
gner un utilisateur ou un ensemble dutilisateurs un nouveau groupe, il faut
dfinir le groupe puis lui affecter les utilisateurs. Dans Postgres, il nexiste
pas encore de commande create group. : les groupes sont donc dfinis en
ajoutant les valeurs appropries dans la table systme pg_group et en se
servant de la commande grant pour leur affecter des privilges.
Crer des groupes
Actuellement, il ny a pas dinterface simple destine initialiser les groupes
dutilisateurs. On doit explicitement insrer ou mettre jour un enregistre-
ment de la table pg_group. Par exemple :
Les champs de pg_group sont :
groname : nom du groupe. Ce nom sera strictement alphanumrique
sans caractre de soulignement ni de ponctuation.
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
jolly=> insert into pg_group (groname, grosysid, grolist)
jolly=> values ('posthackers', '1234', '{5443, 8261}');
INSERT 548224
jolly=> grant insert on foo to group posthackers;
CHANGE
jolly=>
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
397
grosysid : id du groupe, de type int4, unique pour chaque groupe.
grolist : liste des ID de pg_user qui appartiennent au groupe. Cest un
champ de type int4[ ].
Ajouter et supprimer des utilisateurs
La commande createuser permet de crer des utilisateurs spcifiques qui
accdent Postgres, et destroyuser les supprime ainsi que leur droit daccs
Postgres. Ces commandes naffectent que les droits de lutilisateur dans
Postgres ; elles nont aucun effet sur les autres privilges de lutilisateur ni sur
son statut vis--vis du systme dexploitation sous-jacent. Voici un exemple
de cration :
Contrle des accs
Postgres donne lutilisateur les moyens de limiter laccs ses donnes.
Voici quelques-unes de ces possibilits :
super-utilisateurs de bases de donnes (database superusers), cest--dire
les utilisateurs habilits par pg_user.usesuper : ils contournent, sans
mme que lon sen aperoive, tous les contrles daccs sauf dans deux
cas, la mise jour manuelle des catalogues systme, autorise seulement si
lutilisateur a le droit pg_user.usecatupd, et la destruction de catalogues
systme (ou la modification de leurs schmas), jamais autorise.
privilge daccs (access privilege) : lutilisation des privilges daccs
pour limiter la lecture, lcriture et la mise jour des rgles sur les classes
est traite par grant/revoke(1).
suppression de classe et modification de schma (class removal and
schema modification) : les commandes qui dtruisent ou modifient la
structure dune classe existante, telles alter, drop table et drop index ne
fonctionnent que pour le propritaire. Pour rappel, ces oprations ne sont
jamais permises sur les catalogues systme.
bash# su - postgres
bash$ man createuser
bash$ createuser
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
398
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.
Scuriser les connexions TCP/IP
On peut utiliser ssh pour crypter la connexion rseau entre un serveur
Postgres et les clients. Si lon sy prend bien, on tablit les conditions dune
connexion rseau sre. La documentation de ssh donne la plupart des infor-
mations ncessaires au dmarrage. Pour plus de dtails, se reporter la page
http://www.heimhardt.de/htdocs/ssh.html.
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
399
Excuter une passerelle scurise via ssh
Voici un cas, trait en deux tapes seulement.
tablir une passerelle vers le serveur, comme ceci :
Le premier nombre, 3333, dans largument -L, est le numro de port de
lextrmit locale de la passerelle. Le second, 5432, reprsente lextrmit
distante de la passerelle le numro de port dont se sert le serveur. Le
nom, ou ladresse, qui prend place entre les numros de port appartient la
machine serveur, ainsi que le dernier argument de ssh, qui contient un
nom dutilisateur optionnel. En labsence de ce dernier, ssh essaie dutili-
ser le nom sous lequel on est actuellement connect sur la machine cliente.
On peut utiliser tout nom dutilisateur que la machine serveur est suscepti-
ble daccepter, pas ncessairement celui qui se rfre Postgres.
Maintenant que lon a une session ssh qui fonctionne : connecter un client
Postgres lhte local sur le numro de port spcifi ltape prcdente.
Si cest psql, ouvrir une autre session de shell parce que celle de ltape 1
est maintenant prise par ssh.
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.
Gestion des disques et support des
grandes bases de donnes
PostgreSQL peut grer des bases de donnes extrmement grandes, dont la
taille dpasse 200 Go ! Les performances des machines 32 bits dclinent rapi-
dement, ds que la taille de la base de donnes excde 5 Go. On arrive faire
fonctionner une base de donnes de 30 Go sur un processeur 32 bits, mais les
performances sont dgrades. Les processeurs 32 bits imposent des limites de
2 Go sur la RAM (bien que les nouvelles versions de Linux aient tendu quel-
que peu cette limite), de 2 Go sur la taille du systme de fichiers, et dautres
limitations sur le systme dexploitation. Il faut utiliser les systmes de
fichiers spcialement conus pour Linux par SGI, IBM ou HP, ou le systme
ext3-fs pour supporter des tailles de fichiers suprieures 2 Go sur les machi-
nes Linux 32 bits.
ssh -L 3333:wit.mcs.anl.gov:5432 postgres@wit.mcs.anl.gov
psql -h localhost -p 3333 -d mpw
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
400
Pour les bases de donnes extrmement grandes, il est vivement conseill
dutiliser des machines processeurs 64 bits, telles Digital Alpha, Sun Ultra-
SPARC 64 bits, Silicon Graphics 64 bits, Intel Merced IA-64, les machines
64 bits HPUX ou IBM. Compiler PostgreSQL pour un processeur 64 bits, et il
peut supporter dimmenses bases de donnes et des requtes de grande enver-
gure. Les performances de PostgreSQL pour les requtes sur de grandes
tables ou bases de donnes seront plusieurs fois suprieures celles de
PostgreSQL sur les machines 32 bits. Les machines 64 bits ont lavantage de
disposer dun trs grand espace dadressage mmoire, de sorte que le systme
dexploitation peut supporter de trs grands systmes de fichiers, fournir de
meilleures performances avec les grandes bases de donnes et disposer de
beaucoup plus de mmoire pour amliorer lefficacit de ses fonctionnalits.
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.
Important. Dans les versions prcdentes de Postgres, il tait possible dutiliser un
nom de chemin absolu pour spcifier un emplacement de stockage secondaire. La
spcification laide dune variable denvironnement est prfrable, car elle donne plus
de souplesse ladministrateur pour grer lespace disque. Si lon prfre se servir de
chemins absolus, redfinir ALLOW_ABSOLUTE_DBPATHS et recompiler Postgres.
Pour ce faire, on peut soit ajouter la ligne
#define ALLOW_ABSOLUTE_DBPATHS 1
au fichier src/include/config.h, soit ajouter la spcification
CFLAGS+= -DALLOW_ABSOLUTE_DBPATHS
au fichier makefile.custom.
sachant que la cration de la base de donnes est excute rellement par le
back-end de la base de donnes. Par consquent, toute variable denvironne-
ment qui spcifie un emplacement secondaire doit avoir t dfinie avant le
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
401
dmarrage du serveur. Pour dfinir un emplacement secondaire, PGDATA2,
qui pointe vers /home/postgres/data, entrer :
qui dfinit la variable denvironnement utiliser dans les commandes suivan-
tes. En gnral, on dfinit cette variable dans le fichier .profile ou le fichier
dinitialisation .cshrc du super-utilisateur Postgres pour sassurer quelle est
bien renseigne au dmarrage du systme. Toute variable denvironnement
peut rfrencer un emplacement secondaire, bien quil soit prfrable dutili-
ser des variables prfixes par PGDATA pour liminer toute confusion et tout
risque dincompatibilit ou dcrasement des autres variables.
Pour crer une zone de stockage de donnes dans PGDATA2, sassurer que
/home/postgres existe dj et que ladministrateur Postgres peut crire
dedans. Dans la ligne de commande, taper : :
Pour tester le nouvel emplacement, crer une base de donnes de test laide
de la commande :
Grer une base de donnes
Si le postmaster Postgres est dmarr, nous pouvons crer quelques bases de
donnes pour lexprimenter. Ici, nous dcrivons les principales commandes
qui grent les bases de donnes.
Crer une base de donnes
Pour crer une base de donnes nomme mydb, par exemple, entrer la
commande suivante :
% setenv PGDATA2 /home/postgres/data
% setenv PGDATA2 /home/postgres/data
% initlocation $PGDATA2
Creating Postgres database system directory /home/postgres/data
Creating Postgres database system directory /home/postgres/data/base
% createdb -D PGDATA2 test
% dropdb test
% createdb dbname
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
402
Postgres permet de crer un nombre quelconque de bases de donnes sur un
site donn, et lon devient automatiquement administrateur de la base de
donnes que lon vient de crer. Les noms de bases de donnes commencent
obligatoirement par un caractre alphabtique et sont limits une longueur
de 31 caractres. Tous les utilisateurs nont pas lautorisation de devenir
administrateur de base de donnes : si Postgres refuse de vous crer une base
de donnes, cest ladministrateur du site de vous accorder cette permission.
Consulter votre administrateur de site si cela se produit.
Accder une base de donnes
Une fois que lon a construit une base de donnes, on peut y accder de deux
faons :
laide du programme terminal de Postgres (psql), qui permet dentrer,
dditer et dexcuter des commandes SQL de manire interactive ;
en crivant un programme C qui se sert de la bibliothque libpq, pour
soumettre des commandes SQL depuis le C et obtenir des rponses et des
messages dtat en retour dans le programme. Cette interface est dcrite
plus loin dans le guide du programmeur PostgreSQL.
Commencer par psql et essayer les exemples du manuel. On lactive sur une
base de donnes dbname par la commande :
On est accueilli par le message suivant :
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 :
% psql dbname
Welcome to the Postgres interactive sql monitor :
type \? for help on slash commands
type \q to quit
type \g or terminate with semicolon to execute query
You are currently connected to the database: dbname
dbname=>
dbname=> \h
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
403
Aprs avoir entr une requte dans lespace de travail, on envoie le contenu
de lespace de travail au serveur Postgres en entrant :
Le serveur va alors traiter la requte. Si lon termine la requte par un point-
virgule, le \g nest pas ncessaire. psql traite automatiquement les requtes
termines par un point-virgule. Pour lire des requtes depuis un fichier, au
lieu de les taper, entrer :
Pour sortir de psql et revenir UNIX, taper
psql sarrte et lon revient au shell de commande. (Pour connatre dautres
codes dchappement, taper \-h linvite du terminal.) Les blancs espaces,
tabulations et retours la ligne peuvent tre utiliss librement dans les
requtes SQL. Les commentaires sur une seule ligne sont signals par deux
tirets (--) : tout ce qui suit les tirets, jusqu la fin de la ligne, est ignor. Les
commentaires sur plusieurs lignes et les commentaires dans une ligne sont
indiqus par /* ... */, une convention emprunte Ingres.
Dtruire une base de donnes
Si lon est administrateur de la base de donnes mydb, on peut la dtruire
laide de la commande UNIX suivante :
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.
dbname=> \g
dbname=> \i filename
dbname=> \q
% dropdb dbname
> drop database dbname
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
404
Une base de donnes peut tre sauvegarde isolment par la commande :
et restaure par :
Cette technique sert encore transfrer des bases de donnes vers de
nouveaux emplacements ou renommer des bases de donnes existantes.
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.
Grandes bases de donnes
Depuis que Postgres admet des tables dune taille plus grande que la taille
maximale des fichiers sur le systme, on peut rencontrer des problmes lors
du dump dune table dans un fichier, car le fichier rsultat risque de dpasser
la taille maximale autorise sur le systme. Quand pg_dump crit sur stdout,
il est de bon aloi dutiliser les outils *nix standard pour contourner ce
problme :
Utiliser un dump compress :
et recharger avec
ou bien
Utiliser loption split :
et recharger avec
% pg_dump dbname > dbname .pgdump
cat dbname.pgdump | psql dbname
% pg_dump dbname | gzip > filename .dump.gz
% createdb dbname
% gunzip -c filename.dump.gz | psql dbname
% cat filename.dump.gz | gunzip | psql dbname
% pg_dump dbname | split -b 1m - filename.dump.
% createdb dbname
% cat filename.dump.* | pgsql dbname
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
405
Bien sr, le nom du fichier (filename) et celui de la sortie de pg_dump nont
pas besoin dtre cohrents avec le nom de la base de donnes. La base de
donnes restaure peut avoir un nouveau nom, arbitraire : ce mcanisme peut
donc aussi servir renommer des bases de donnes.
Utiliser un botier de commutationavec PostgreSQL
On peut empiler plusieurs serveurs et les connecter un mme terminal en
passant par un botier de commutation KVM (Keyboard, Vido, Monitor).
Cela vite lencombrement, conomise de lespace, et aussi de largent : le
moniteur, le clavier et la souris cotent de 100 500 dollars US par ensemble.
Avec ce botier de commutation, on peut empiler beaucoup de serveurs dans
une tour : PostgreSQL (dveloppement, test, production), web, ftp, intranet,
serveurs de courrier et de nouvelles. Le botier de commutation peut servir
aussi contrler Windows 95/NT, ainsi que OS/2.
Consultez les sites suivants :
DataComm Warehouse Inc. Tlphone 18003282261
http://www.warehouse.com.
fournit toutes sortes de matriels informatiques : un botier KVM manuel
quatre ports (PS/2) cote 89.99 dollars (Rfrence : DDS1354).
Network Technologies Inc.
http://www.networktechinc.com/servswt.html.
propose des commutateurs de serveurs et des commutateurs vido
(120 dollars par PC 8 ports).
Scene Double Inc., Angleterre
http://www.scene.demon.co.uk/qswitch.htm.
Cybex Corporation : http://www.cybex.com.
Raritan Inc. : http://www.raritan.com.
RealStar Solutions Inc. : http://www.real-star.com/kvm.htm.
Belkin Inc. : http://www.belkin.com.
Better Box Communications Ltd.
http://www.betterbox.com/info.html.
Rendez-vous au magasin de matriel le plus proche et demandez un commu-
tateur de serveurs, connu aussi sous le nom de commutateur KVM automati-
que. Pensez aussi utiliser le moteur de recherche Yahoo! pour trouver
dautres socits qui proposent des commutateurs de serveur ou des commu-
tateurs KVM.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
406
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 !
chec au dmarrage de postmaster
Certaines pannes au dmarrage de postmaster sont courantes et faciles
comprendre. Vrifier le fichier de trace de postmaster ou le dmarrer la
main (sans rediriger ni la sortie standard ni la sortie des erreurs) pour analyser
les messages mis. Certains messages derreur sont vidents et sexpliquent
deux-mmes, mais en voici quelques-uns qui ne le sont pas :
En gnral, celui-ci est prendre au premier degr : nauriez-vous pas, par
hasard, dmarr un second postmaster sur un port o un autre postmaster est
dj actif ? Cependant, si le corps du message derreur nest pas Adresse
dj utilise ou une variante de ce libell, il y a peut-tre un autre problme.
Par exemple, essayer de dmarrer un postmaster sur un numro de port
rserv donne quelque chose comme :
Ce message signifie probablement que la taille limite des zones de mmoire
partage du noyau est infrieure la zone de buffer que Postgres essaie de
crer cela peut signifier aussi que le noyau nest pas du tout configur avec
le support de mmoire partage de type SysV. Un moyen de contournement
provisoire : dmarrer le postmaster avec un nombre de buffers plus petit que
la normale (option B). Il faudra certainement reconfigurer le noyau pour
augmenter la taille de mmoire partage autorise. Le message suivant appa-
rat si lon essaie de dmarrer plusieurs postmasters sur la mme machine, et
que leur besoin total despace excde la limite du noyau.
FATAL : StreamServerPort : bind() failed : Address already in use
Is another postmaster already running on that port ?
$ postmaster -i -p 666
FATAL: StreamServerPort: bind() failed: Permission denied
Is another postmaster already running on that port?
IpcMemoryCreate: shmget failed (Invalid argument) key=5440001,
size=83918612, permission=600
FATAL 1 : ShmemCreate : cannot create region
IpcSemaphoreCreate : semget failed (No space left on device) key=5440026,
num=16, permission=600
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
407
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.
Problmes de connexion du client
Une fois que postmaster fonctionne, la connexion dapplications clientes peut
encore chouer pour diverses raisons. Les exemples de messages derreur qui
suivent ne concernent que les clients sappuyant sur les versions rcentes de
libpq ; les clients qui font appel dautres bibliothques dinterface peuvent
produire dautres messages, plus ou moins explicites.
Cest lchec gnrique : Je ne trouve pas de postmaster qui parler .
Lexemple prcdent concerne le cas dune communication TCP/IP, et le
suivant, celui dune communication locale via un socket UNIX :
La dernire ligne sert vrifier quoi le client essaie de se connecter. Sil ny
a aucun postmaster en fonctionnement, le corps du message derreur sera
Connexion refuse ou Fichier ou rpertoire inconnu (No such file or
directory), comme dans lexemple. Remarque : il faut bien noter que
Connexion refuse dans ce contexte ne signifie pas que le postmaster a
rejet la demande de connexion ce cas produira un message diffrent, que
nous allons voir. Dautres messages derreur, tel Temps de connexion
coul (Connection timed out), traduisent des problmes plus fondamen-
taux, comme labsence de connectivit du rseau.
On tente de se connecter un postmaster, sachant quil risque de refuser la
connexion. Comme lindique le message, postmaster refuse la demande de
connexion parce quil na trouv aucune entre dans son fichier de configura-
tion pg_hba.conf.
connectDB() connect() failed : Connection refused
Is the postmaster running (with -i) at 'server.joe.com' and accepting
connections on TCP/IP port '5432' ?
connectDB() connect() failed : No such file or directory
Is the postmaster running at 'localhost' and accepting connections
on Unix socket '5432' ?
No pg_hba.conf entry for host 123.123.123.123, user joeblow, database testdb
Password authentication failed for user 'joeblow'
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
408
Ce message indique que le postmaster naccepte pas la demande de
connexion tant que lon naura pas satisfait la mthode dautorisation spci-
fie dans pg_hba.conf. Vrifier le mot de passe fourni, ou bien les logiciels
Kerberos ou IDENT, si lun de ces types dauthentification est en cause.
Il sagit dune autre variante dchec de lauthentification : aucune commande
Postgres create_user na t excute avec le nom dutilisateur donn.
Le nom de la base de donnes est inconnu du postmaster. Noter que si lon ne
spcifie pas le nom dune base de donnes, cest le nom par dfaut associ
lutilisateur Postgres qui est pris en compte, ce qui nest pas forcment bon.
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 :
Pour ne pas les voir, entrer
et postmaster restera S ilencieux. Remarque : il ny a pas de & la fin
du dernier exemple ; postmaster sera donc excut en tche de premier plan.
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.
FATAL 1 : SetUserId : user 'joeblow' is not in 'pg_shadow'
FATAL 1 : Database testdb does not exist in pg_database
% postmaster -d > pm.log 2>&1 &
% postmaster -S
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
409
Les pg_options peuvent aussi tre stipules avec loption T de Postgres :
Les fonctions dimpression derreurs et de messages de dbogage peuvent
maintenant passer par syslog(2). Un message imprim sur stdout ou stderr
contient la date, lheure et lidentifiant (pid) du back-end :
Ce format amliore la lisibilit des traces et permet de comprendre exacte-
ment ce que fait le back-end, et quel moment. Cela facilite aussi lcriture
de scripts simples, en awk ou Perl, qui grent la trace pour dtecter des erreurs
ou des problmes de base de donnes, ou pour calculer des statistiques sur les
temps de transaction. Les messages imprims dans syslog utilisent
LOG_LOCAL0 et loption syslog permet de contrler lutilisation de syslog.
Malheureusement, beaucoup de fonctions font directement appel printf()
pour imprimer leurs messages sur stdout ou stderr, et cette sortie ne peut tre
redirige vers syslog ou contenir des marques horaires. Il vaut mieux rempla-
cer tous les appels printf par la macro PRINTF et modifier les sorties sur
stderr de manire utiliser EPRINTF : on peut alors contrler lensemble des
sorties de manire uniforme.
Le format du fichier pg_options est le suivant :
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.
postgres options -T "verbose=2,query,hostlookup-"
#timestamp #pid #message
980127.17:52:14.173 [29271] StartTransactionCommand
980127.17:52:14.174 [29271] ProcessUtility: drop table t;
980127.17:52:14.186 [29271] SIIncNumEntries: table is 70% full
980127.17:52:14.186 [29286] Async_NotifyHandler
980127.17:52:14.186 [29286] Waking up sleeping backend process
980127.19:52:14.292 [29286] Async_NotifyFrontEnd
980127.19:52:14.413 [29286] Async_NotifyFrontEnd done
980127.19:52:14.466 [29286] Async_NotifyHandler done
# comment
option=integer_value # donne une valeur loption
option # met loption 1
option+ # met loption 1
option- # met loption 0
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
410
Ressources PostgreSQL sur lInternet
De nombreuses ressources de lInternet sont consacres PostgreSQL. Nous
allons trouver, successivement :
le support technique ;
les listes de diffusion ;
des outils graphiques pour PostgreSQL ;
les pilotes ODBC, JDBC et UDBC ;
les interfaces Perl et DBI ;
des didacticiels pour PostgreSQL ;
les sites de rfrence de PostgreSQL.
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, Anderson
2
, 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
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
411
groupe de news : comp.databases.postgresql.bugs
groupe de news : linux.postgres
autre mailing listes http://www.postgresql.org
En principe, le dlai de rponse un e-mail est infrieur une journe.
Comme les utilisateurs des produits Internet reprsentent un ensemble trs
vaste, et que les utilisateurs correspondent et sassistent les uns les autres,
lInternet pourra facilement apporter de lassistance technique des milliards
dindividus. Le-mail est beaucoup plus commode que le tlphone, parce que
lon peut copier-coller des messages derreur, des sorties de programme, etc.
et les envoyer sur une liste de diffusion ou un groupe de news.
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.
Comptes e-mail pour PostgreSQL
Les sources suivantes donnent accs des comptes e-mail gratuits :
dans Yahoo! : http://www.yahoo.com,
cliquer sur Yahoo! Mail et suivre la procdure dinscription
dans Lycos : http://www.lycos.com,
cliquer sur E-mail gratuit, dans la rubrique Services, et suivre la procdure
dinscription.
dans hotmail : http://www.hotmail.com,
suivre la procdure dinscription pour un nouveau compte e-mail.
Souscrire la liste de diffusion PostgreSQL. Yahoo! propose, en supplment,
de crer un dossier part pour les messages PostgreSQL, de sorte que la bote
e-mail normale ne soit pas sature. Dans le menu E-mail | Options | Filters,
opter pour un dossier spar pour le-mail. Ce compte est accessible depuis
nimporte quel poste dans le monde, ds lors que lon a accs une page web.
Avec tout autre e-mail, on peut utiliser une option Filtrer le courrier pour
recevoir automatiquement les messages PostgreSQL, dans un dossier spar.
Listes de diffusion en anglais
On trouve les listes de diffusion sur la page web principale de :
http://www.postgresql.org/
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
412
Pour poser une question par e-mail :
pgsql-questions@postgresql.org, pour des questions gnrales
pgsql-hackers@postgresql.org, pour les dveloppeurs
pgsql-ports@postgresql.org, pour les questions spcifiques dune version
pgsql-docs@postgresql.org, pour les questions de documentation
On obtient une rponse en moins dune journe.
On peut aussi sinscrire des listes de diffusion. Pour sinscrire la liste ou
annuler linscription, envoyer un message :
pgsql-questions-request@postgresql.org
pgsql-hackers-request@postgresql.org
pgsql-ports-request@postgresql.org
pgsql-docs-request@postgresql.org
Le corps du message doit simplement contenir subscribe ou unsubscribe.
Archives de listes de diffusion
Les listes de diffusion sont aussi archives en format HTML aux emplace-
ments suivants :
Des listes dates, disponibles via Mhonarc, ladresse
http://www.postgresql.org/mhonarc/pgsql-questions
Le rpertoire darchives sur ftp://ftp.postgresql.org : /pub/majordomo
Il y a aussi un moteur de recherche disponible sur le site web principal de
PostgreSQL, en particulier pour les questions sur pgsql.
Listes de diffusion en espagnol
Il existe aujourdhui une liste non officielle de PostgreSQL en espagnol. Pour
sy inscrire, lutilisateur doit envoyer un message :
majordomo@tlali.iztacala.unam.mx
Le corps du message contiendra une seule ligne :
inscripcion pgsql-ayuda
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
413
Outils graphiques pour PostgreSQL
Quand PostgreSQL est install, on a souvent envie dinstaller dautres paque-
tages ou des outils dinterface graphiques pour commencer se servir du
systme de base de donnes. Le navigateur web est appel tre le terminal
graphique le plus rpandu lavenir. Le code sera probablement crit sur le
serveur web dans un langage de script compil tel que le compilateur
PHP+Zend, en HTML, en DHTML et avec un peu de JavaScript et dapplets
Java du ct du client web. Dans cette optique, il est conseill de migrer ses
applications existantes sous Windows 95/NT vers le compilateur PHP+Zend.
Les meilleurs outils sont, par ordre de prfrence :
Script PHP et compilateur Zend : le compilateur PHP+Zend ;
X-Designer supporte C++, Java et MFC : http://www.ist.co.uk/xd ;
Qt pour Windows95 et UNIX : http://www.troll.no et ftp://ftp.troll.no ;
Code Crusader est disponible sur le CD-ROM Linux, une version
freeware de Code Warrior de MetroWorks :
http://www.kaze.stetson.edu/cdevel/code_crusader/about.html ;
Code Warrior de MetroWorks : http://www.metrowerks.com ;
GNU Prof C++ IDE de (Red Hat) Cygnus : http://www.cygnus.com ;
Borland C++ Builder pour Linux : http://www.inprise.com ;
Borland Java JBuilder pour Linux : http://www.inprise.com.
Les choix de langage sont, par ordre de prfrence :
Langage de script PHP Web server, HTML, DHTML avec scripts en
Javascript sur le client et les applets Java ;
Langage de script Perl, avec Perl-Qt ou linterface de base de donnes Perl
Perl-Tk.
Pour le langage de programmation le plus rpandu, C++ (GNU g++) :
Fast CGI (crit en GNU C++) avec un frontal web/graphique en Java-
script/applets Java ;
GNU C++ et QtEZ ou QT ;
GNU C++ avec Lesstiff ou Motif ;
Le langage Java, mais les programmes Java sont trs lents (20 fois plus
lents que C++ !) et il faut une licence payante.
Dautres outils sont disponibles : PostgreSQL a une bibliothque dinterface
Tcl/Tk dans la distribution appele pgTcl. Voir aussi :
Lesstiff Motif : ftp://ftp.redhat.com/pub/contrib/i386/lesstiff*.rpm ;
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
414
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.
Pilotes ODBC, JDBC et UDBC
Les utilisateurs de PostgreSQL demandent parfois ladministrateur dinstal-
ler des pilotes daccs la base de donnes tels que ODBC, UDBC, etc.
ODBC (Open DataBase Connectivity), cr par Microsoft, est un standard
rpandu daccs aux informations des bases de donnes des divers diteurs.
Les applications crites laide des pilotes ODBC sont censes fonctionner
sur des bases de donnes aussi diverses que PostgreSQL, Oracle, Sybase,
Informix, etc. Voici les sources disponibles pour se procurer ODBC :
PostODBC est compris dans la distribution, sur le CD-ROM PostgreSQL.
Voir le site principal web : http://www.postgresql.org.
Open Link Software Corporation (http://www.openlinksw.com) commer-
cialise ODBC pour PostgreSQL et dautres bases de donnes, et propose
aussi une version gratuite dODBC (nombre limit de sessions) voir.
Insight ODBC pour PostgreSQL (http://www.insightdist.com/psqlodbc) :
cest le site officiel pour PostODBC.
FreeODBC (http://www.ids.net/~bjepson/freeODBC/) : cest une version
gratuite dODBC.
UDBC est une version statique dODBC, indpendante des gestionnaires de
pilotes et du support DLL, qui intgre un support de connectivit aux bases de
donnes directement dans les applications.
Open Link Software Corporation (http://www.openlinksw.com) commer-
cialise UDBC pour PostgreSQL et dautres bases de donnes, et propose
aussi une version gratuite dUDBC (nombre limit de sessions) voir.
Java est un langage de programmation indpendant de la plate-forme, dve-
lopp par Sun Microsystems. Les programmeurs Java ont intrt crire les
applications de bases de donnes laide de JDBC (Java Database Connec-
tivity) pour faciliter la portabilit sur les bases de donnes telles PostgreSQL,
Oracle, Informix, etc. Si lon crit des applications Java, on trouve les pilotes
JDBC pour PostgreSQL sur les sites suivants :
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
415
Le pilote JDBC compris dans la distribution PostgreSQL se trouve dans
postgresql-jdbc*.rpm.
http://www.demon.co.uk/finder/postgres/index.html propose le module
Sun de connectivit Java PostgreSQL.
ftp://ftp.ai.mit.edu/people/rst/rst-jdbc.tar.gz.
http://www.openlinksw.com : Open Link Software Corporation vend
JDBC pour PostgreSQL et dautres bases de donnes, et propose aussi une
version gratuite de JDBC (nombre limit de sessions) voir.
Site JDBC en Grande-Bretagne : http://www.retep.org.uk/postgres.
Site de FAQ sur JDBC : http://eagle.eku.edu/tools/jdbc/faq.html
La page daccueil, le guide et les FAQ de JDBC se trouvent respectivement :
Accueil JDBC : http://splash.javasoft.com/jdbc
Guide JDBC : http://www.javasoft.com/products/jdk/1.1/docs/guide/jdbc
FAQ JDBC : http://javanese.yoyoweb.com/JDBC/FAQ.txt
Voir aussi la section Tester les interfaces Java , page 383.
Les programmeurs Java peuvent aussi consulter deux sites trs utiles pour
PostgreSQL :
ftp://ftp.redhat.com/pub/contrib/i386 : voir postgresql-jdbc-*.rpm.
http://www.blackdown.org.
Interfaces Perl et DBI
PERL (Practical Extraction and Report Language) est disponible sur tous les
systmes dexploitation et toutes les plates-formes matrielles du monde. On
peut utiliser Perl sur Windows 95/NT, Apple Macintosh iMac, toutes les
variantes dUNIX (Solaris, HPUX, AIX, Linux, Irix, SCO, etc.), les units
centrales MVS, OS/2, OS/400, Amdahl UTS et beaucoup dautres.
Interface Perl 5 pour PostgreSQL
Linterface Perl pour PostgreSQL est incluse dans la distribution de
PostgreSQL. Voir le rpertoire src/pgsql_perl5.
Autres ressources :
propos de pgsql_perl5, contacter par e-mail : E.Mergl@bawue.de
Une autre source : ftp://ftp.kciLink.com/pub/PostgresPerl-1.3.tar.gz
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
416
Page daccueil de Perl : http://www.perl.com/perl/index.html
Didacticiel Perl ; chercher le titre Tutorial sur : http://reference.perl.com/
Les FAQ Perl se trouvent sur :
http://www.yahoo.com/Computers_and_Internet/Programming_
Languages/Perl/
RPM de Perl-Qt, interfaces utilisateur graphiques Perl :
ftp://ftp.redhat.com/pub/contrib/i386
chercher : PerlQt-1.06-1.i386.rpm
Perl-Qt, interfaces utilisateur graphiques Perl :
http://www.accessone.com/ jql/perlqt.html
Perl-XForms, interfaces utilisateur graphiques Perl :
ftp://ftp.redhat.com/pub/contrib/i386
chercher : Xforms4Perl-0.8.4-1.i386.rpm
Perl-Tk, interfaces utilisateur graphiques Perl :
ftp://ftp.redhat.com/pub/contrib/i386
Kits graphiques Perl :
http://reference.perl.com/query.cgi ?ui
Interfaces de base de donnes Perl :
http://reference.perl.com/query.cgi ?database
Traducteur de Perl en C :
http://www.perl.com/CPAN-local/modules/by-module/B/
chercher : Compiler-a3.tar.gz
Traducteur de shell Bourne en Perl :
http://www.perl.com/CPAN/authors/id/MERLYN/sh2perl-0.02.tar.gz
Les traducteurs awk vers Perl (a2p) et sed vers Perl (s2p) sont inclus dans
la distribution Perl.
Voir aussi les groupe de news PERL sur comp.lang.perl.*
Perl DBI, de quoi sagit-il ?
Linterface de base de donnes Perl (DBI, Database Interface) est une API
(Application Programming Interface) destine programmer des applications
daccs aux bases de donnes en langage Perl. Les spcifications de Perl DBI
API dfinissent un ensemble de fonctions, de variables et de conventions qui
fournissent une interface de base de donnes complte et cohrente mais ind-
pendante de la base de donnes relle.
Les FAQ de Descartes Hermetica, diteur de DBI, se trouvent sur
descarte@hermetica.com
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
417
DBD-Pg-0.89, pilote DBI pour PostgreSQL
Le fichier du pilote, DBD-Pg-0.89.tar.gz, se trouve sur les sites suivants :
DBD-Pg-0.89 : http://www.perl.com/CPAN/modules/by-module/DBD/
Comprehensive Perl Archive Network, CPAN :
http://www.perl.com/CPAN
Liste des pilotes DBI et pages des modules DBI :
http://www.hermetica.com/technologia/perl/DBI
Informations sur DBI : http://www.fugue.com/dbi/
Site ftp primaire : ftp://ftp.demon.co.uk/pub/perl/db
Liens divers DBI : http://www-ccs.cs.umass.edu/db.html
Liens divers DBI : http://www.odmg.org/odmg93/updates_dbarry.html
Liens divers DBI : http://www.jcc.com/sql_stnd.html
Base de donnes PostgreSQL : http://www.postgresql.org
Support technique pour DBI
Envoyer commentaires et rapports de bogue E.Mergl@bawue.de. Inclure la
sortie de perl -v et de perl -V, la version de PostgreSQL, la version de DBD-Pg
et la version de DBI dans le rapport de bogue.
DBI, Perl et DBperl, de quoi sagit-il ?
Pour paraphraser Tim Bunce, architecte et auteur de DBI :
DBI est une interface de programmation dapplications (API) daccs aux
bases de donnes pour le langage Perl. La spcification DBI API dfinit un
ensemble de fonctions, de variables et de conventions qui fournissent une
interface de base de donnes complte et cohrente mais indpendante de la
base de donnes relle qui est utilise .
Traduction : linterface DBI permet aux utilisateurs daccder aux diffrents
types de base de donnes de manire transparente. Ainsi, que lon se connecte
Oracle, Informix, mSQL, Sybase ou nimporte quelle autre base de donnes,
on na pas besoin de connatre le mcanisme sous-jacent de la couche L3G :
lAPI dfinie par DBI fonctionne sur tous les types de bases de donnes. Un
autre avantage est la capacit de se connecter deux bases de donnes
dditeurs diffrents avec le mme script Perl : par exemple, lire des donnes
dune base de donnes Oracle et les insrer dans une base de donnes Infor-
mix, le tout en un seul programme. La couche DBI permet de le faire de
manire simple et puissante.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
418
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
Guides pour PostgreSQL
Un administrateur PostgreSQL doit avoir une solide connaissance des
commandes SQL, car il se sert directement de SQL pour manipuler les tables
systme de PostgreSQL. PostgreSQL est accompagn dun guide SQL, dont
les scripts se trouvent dans le rpertoire src/tutorial.
Ressources sur lInternet
Le guide SQL se trouve sur http://w3.one.net/jhoffman/sqltut.htm.
Les commentaires et suggestions peuvent tre adresss Jim Hoffman :
jhoffman@one.net.
Il propose les sites suivants :
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
419
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
420
Sites de rfrence de PostgreSQL
Le site principal se trouve : http://www.postgresql.org.
Le HOWTO de la base de donnes PostgreSQL se trouve :
http: ://www.metalab.unc.edu/LDP/HOWTO/PostgreSQL-HOWTO.html.
Pour apprendre pourquoi Linux est considr comme un meilleur serveur de
base de donnes que Windows 95/NT, voir :
http://www.aldev.8m.com ou http://www.aldev.webjump.com.
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.
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
421
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
422
Q. Comment puis-je viter que dautres htes accdent ma base de donnes
PostgreSQL ?
R. Par dfaut, PostgreSQL nautorise que les connexions de la machine
locale, laide de sockets du domaine UNIX. Les autres machines ne
pourront pas se connecter sauf si vous ajoutez le flag -i au lancement du
postmaster et que vous autorisez lauthentification des noms dhte en
modifiant le fichier $PGDATA/pg_hba.conf en consquence, pour permet-
tre les connexions TCP/IP.
Q. Pourquoi ne puis-je pas me connecter ma base de donnes depuis une
autre machine ?
R. La configuration par dfaut nautorise que les connexions de la machine
locale laide de sockets UNIX. Pour autoriser les connexions TCP/IP,
assurez-vous que le postmaster a t dmarr avec loption i et quune
entre a t ajoute au fichier pgsql/data/pg_hba.conf pour lhte
concern. Voir le manuel de pg_hba.conf.
Q. Pourquoi ne puis-je pas accder la base en tant quutilisateur root ?
R. Vous ne devez pas crer dutilisateurs de bases de donnes avec lid utili-
sateur 0 (root), qui ne peuvent pas accder la base de donnes. Cest une
rgle de scurit : sinon, tout utilisateur pourrait lier dynamiquement des
modules objet dans le moteur de la base de donnes.
Q. Tous mes serveurs plantent sur laccs concurrent une table. Pourquoi ?
R. Ce problme est sans doute d un noyau qui nest pas configur pour le
support des smaphores.
Q. Comment rgler le moteur de base de donnes pour de meilleures
performances ?
R. Les index peuvent certainement acclrer les requtes. La commande
explain permet de voir comment PostgreSQL interprte une requte, et
quels index sont utiliss.
Si lon fait des insertions en masse, il vaut mieux les faire dans un batch
qui se sert de la commande copy : cest beaucoup plus rapide que les
insertions individuelles. Dautre part, les instructions qui ne sont pas
places dans un bloc de transaction begin work/commit sont considres
comme des transactions isoles : il vaut donc mieux excuter plusieurs
instructions en un seul bloc de transaction. Cela rduit la charge lie aux
transactions. Il faut aussi envisager de supprimer et de recrer les index
quand on modifie les donnes en grand nombre.
On peut effectuer plusieurs rglages : dsactiver fsync() en dmarrant
postmaster avec les options -o F, ce qui vite que fsync() actualise le
disque aprs chaque transaction.
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
423
Loption B de postmaster permet daugmenter le nombre de buffers de
mmoire partage utiliss par les processus de back-end. Si lon augmente
trop ce paramtre, le postmaster ne peut plus dmarrer parce que lon a
dpass la limite du noyau pour lespace de mmoire partage. Par dfaut,
il y a 64 buffers qui occupent 8 Ko chacun.
Loption S du back-end permet daugmenter la valeur maximale de
mmoire utilise par chaque processus de backend, pour des tris temporai-
res. La valeur -S se mesure en kilo-octets et, par dfaut, elle est de 512 Ko.
Il est imprudent de trop augmenter cette valeur, car on peut manquer de
mmoire au moment o une requte appelle plusieurs tris simultanment.
La commande cluster permet de grouper les donnes de tables de base
pour constituer un nouvel index. Voir le manuel de cluster(l) pour plus de
dtails.
Q. Quelles sont les fonctionnalits de dbogage de PostgreSQL ?
R. PostgreSQL propose plusieurs fonctionnalits utiles au dbogage.
Dabord, lors de la configuration, loption enable-cassert active des
assert() qui surveillent la progression du back-end et linterrompent en cas
dincident.
Postgres et postmaster ont plusieurs options de dbogage. Dabord,
chaque fois que lon dmarre le postmaster, on peut envoyer la sortie stan-
dard et la sortie derreur vers un fichier de trace, laide des commandes :
Cette instruction place un fichier server.log dans le rpertoire principal de
PostgreSQL. Ce fichier contient des informations concernant les probl-
mes ou erreurs rencontrs par le serveur. Postmaster dispose de loption d
pour des informations plus dtailles ; elle comprend un nombre qui spci-
fie le niveau de dbogage. Il faut savoir que les plus hautes valeurs de ce
niveau gnrent des fichiers de trace trs volumineux.
On peut tester le back-end postgres en lexcutant depuis la ligne de
commande et en entrant directement des instructions SQL ; mais ce nest
pas recommand, en dehors des phases de dbogage. Noter que, dans ce
cas, un retour la ligne termine la requte et non un point-virgule. Si
lon a compil avec les options de dbogage, on peut utiliser un dbogueur
et voir ce quil se passe. Mais, comme le back-end na pas t dmarr
partir du postmaster, il ne fonctionne pas dans un environnement identi-
que, et les problmes dinteraction entre le verrouillage et le back-end ne
peuvent pas tre reproduits. Certains systmes dexploitation peuvent
suivre le fonctionnement dun back-end et procder directement au
diagnostic des problmes.
cd /usr/local/pgsql
. /bin/postmaster >server.log 2>&1 &
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
424
Le programme postgres propose des options -s, -A et - t pour le dbogage
et les mesures de performances.
On peut aussi le compiler avec un profil qui repre les fonctions les plus
consommatrices de temps machine. Les fichiers de profil de back-end sont
placs dans le rpertoire pgsql/data/base/dbname. Le fichier de profil du
client est plac dans le rpertoire courant.
Q. Jobtiens le message Sorry, too many clients quand jessaie de me connec-
ter. Pourquoi ?
R. Il faut augmenter le nombre maximum de processus de back-end concur-
rents dmarrer par postmaster.
Dans Postgres 6.5.*, la limite par dfaut est de 32 processus. On peut
laugmenter en redmarrant postmaster avec la valeur voulue dans
loption -N. Dans la configuration par dfaut, la valeur de -N peut atteindre
1024 ; pour disposer dun nombre suprieur, il faut augmenter la valeur de
MAXBACKENDS dans include/config.h et reconstruire lexcutable. On
peut dfinir la valeur par dfaut de -N au moment de la configuration,
laide de loption de configuration with-maxbackends.
Si lon augmente -N au-del de 32, il faut augmenter -B au-del de la
valeur par dfaut de 64. Pour un grand nombre de processus de back-end,
on sera probablement amen augmenter dautres paramtres de configu-
ration de noyau UNIX. Penser vrifier la taille maximale des blocs de
mmoire partage, SHMMAX ; le nombre maximum de smaphores,
SEMMNS et SEMMNI ; le nombre maximum de processus, NPROC ; le
nombre maximum de processus par utilisateur, MAXUPRC et le nombre
maximum de fichiers ouverts, NFILE et NINODE. On impose Postgres
une limite sur le nombre de processus de back-end pour sassurer que le
systme ne manque pas de ressources.
Dans les versions de Postgres antrieures la version 6.5, le nombre maxi-
mum de back-ends tait de 64 ; le changer obligeait reconstruire lexcu-
table aprs avoir modifi la constante MaxBackendId dans le fichier
include/storage/sinvaladt.h.
Q. Que signifient les fichiers pg_tempNNN.NN, qui apparaissent dans mon
rpertoire de base de donnes ?
R. Ce sont des fichiers temporaires gnrs par lexcuteur de requte. Par
exemple, sil faut un tri pour traiter un ORDER BY, et que le tri exige plus
despace que le paramtre S du back-end ne lautorise, des fichiers
temporaires sont crs pour contenir les donnes excdentaires.
Les fichiers temporaires seront supprims automatiquement, sauf si un
back-end choue pendant le tri. Si lon na aucune transaction en cours, il
vaut mieux supprimer les fichiers pg_tempNNN.NN.
copyright ditions Eyrolles
Installer et grer PostgreSQL sur Linux
CHAPITRE IX
425
Q. Comment initialiser un pg_group ?
R. Actuellement, il nexiste aucun moyen facile dinitialiser les groupes
dutilisateur. On doit explicitement insrer ou mettre jour un enregistre-
ment dans la table pg_group. Par exemple :
Les champs de pg_group sont :
groname : nom de groupe. Ce nom sera strictement alphanumrique
sans caractre de soulignement ni de ponctuation.
grosysid : id du groupe, de type int4, unique pour chaque groupe.
grolist : liste des id de pg_user qui appartiennent au groupe. Cest un
champ de type int4[ ].
jolly=> insert into pg_group (groname, grosysid, grolist)
jolly=> values ('posthackers', '1234', '{5443, 8261}');
INSERT 548224
jolly=> grant insert on foo to group posthackers;
CHANGE
jolly=>
copyright ditions Eyrolles
X
10
Dvelopper une
application web
Dans ce chapitre
Plates-formes dapplication web
Dmarrage
Enjeux de la conception
Conception du schma
Flux de donnes
Connectivit de PHP
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
428
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.
Plates-formes dapplication web
Les plates-formes dapplication web disponibles aujourdhui sont JSP, PHP,
Cold Fusion, Zope, ASP, et dautres encore. Nous allons voir les rapports
quelles entretiennent, ainsi que leur relation Linux.
Figure 101
Une application de-commerce
copyright ditions Eyrolles
Dvelopper une application web
CHAPITRE X
429
Active Server Pages
Active Server Pages (ASP) de Microsoft est conu pour Windows NT/2000
mais peut aussi fonctionner (mieux, en fait) sur beaucoup de plates-formes
UNIX/Linux, dont Red Hat Linux, via lexcellent mulateur de Chili!Soft.
ASP peut utiliser tous les objets Component Object Model (COM), mais il
sagit dune technologie Microsoft. Visual Studio et Internet Information
Server de Microsoft reprsentent un environnement de dveloppement excel-
lent, mais il est plus que perturb par les problmes de fiabilit et de scurit,
et nest finalement pas compatible avec les serveurs web autres quIIS, sauf
utiliser Chili!ASP. Pour plus dinformations, visiter le site web de Chili!Soft
http://www.chilisoft.com.
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.
Java Server Pages
Java Server Pages, de Sun, est un nouveau venu dans larne des plates-
formes dapplication web, mais il a le mrite de mettre disposition la puis-
sance du langage Java de Sun. Bien quil soit plein de caractristiques
complexes, cest un excellent choix si votre entreprise a opt pour les stan-
dards Java et CORBA. JSP est disponible sur toute plate-forme qui dispose
dun interprteur Java, cest--dire Linux, UNIX et Windows NT. Voir
http://www.sun.com pour plus dinformations.
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.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
430
De plus, il propose un modle de contrle dexcution pour des applications
en aval, ainsi quune stratgie dautorisations intgre. Zope, comme la
plupart des projets open-source, se dveloppe trs rapidement, et est en train
de faire ses preuves. Du point de vue de la complexit et de lexhaustivit
dun modle incluant la scurit, Zope est moins rapide que PHP. Voir le site
http://www.zope.org.
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
copyright ditions Eyrolles
Dvelopper une application web
CHAPITRE X
431
dApache, peu satisfaits de la lenteur du dveloppement du serveur web
NCSA, ont ralis leur propre version, le Patchy Web Server. Depuis quel-
ques annes, Apache dveloppe une plate-forme portable et robuste. La
correction des bogues qui affectent la scurit prend peu de temps, de lordre
de quelques heures : tout un chacun dispose du code source et peut participer
au dpannage, en retour linformation sur la panne.
Perl et PHP, comme la plupart des autres plates-formes langages open-source,
sont disponibles en tant que modules plug-in dApache. Bien que PHP puisse
fonctionner sur dautres serveurs web, nous allons lutiliser comme plug-in
dApache, parce dautres contraintes de scurit sont mises en jeu quand on
sen sert via CGI.
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
432
seul cookie par ordinateur : il contient un identifiant de session unique, qui
sincrmente chaque nouvelle connexion dun ordinateur, de sorte quil ny
a jamais de conflit. Il y a un dfaut de scurit dans ce modle, dont nous
reparlerons la section relative la scurit, plus loin dans ce chapitre.
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
Figure 102
Utiliser phpMyAdmin pour dvelopper un nouveau systme de base de donnes
copyright ditions Eyrolles
Dvelopper une application web
CHAPITRE X
433
globales ou statiques, de variables locales et dun certain nombre dautres
caractristiques conues pour dvelopper du code modulaire, comme la
plupart des langages.
Nous avons dvelopp un noyau avec lide dtoffer le code par la suite,
mais beaucoup de travail reste faire. Vos contributions seront les bienve-
nues. Par exemple, nous travaillons sur un systme de caisse plus labor.
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
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
434
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
Figure 103
Structure de la base de donnes
copyright ditions Eyrolles
Dvelopper une application web
CHAPITRE X
435
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, MySQL et Apache : installer lapplication
Cette application fonctionnera en PHP compil, soit comme un module pour
Apache (mod_php), soit comme un module CGI. Pour vrifier que PHP a t
install correctement sur le serveur web, entrer le texte suivant et lenregistrer
dans un fichier test.php3 du rpertoire Documents du navigateur web :
Si lon va http://webserver/test.php3, on voit une grande page qui donne
toutes sortes dinformations propos de linstallation PHP. Dans la section
des extensions, vrifier quune extension mysql est bien charge. Si ce nest
pas le cas, compiler lextension mysql (voir la documentation MySQL).
Pour crer le schma de la base de donnes, crer et charger le script de la
base de donnes. Toutes les tables de lapplication sont situes dans la mme
base. Si elle nest pas encore cre, choisir un nom et entrer la commande
suivante :
Modifier le code des annexes A et B, daprs les instructions qui se succdent
dans les paragraphes qui suivent.
Importer le fichier de script dans MySQL laide de la commande :
Enfin, diter la fonction init_db_variables() dans le fichier index.php3 (voir
lannexe A) et indiquer : le nom du serveur de base de donnes, le nom
dutilisateur, le mot de passe et le nom de la base de donnes.
Aller http://webserver/ et sassurer que les crans de lapplication saffi-
chent sans erreur. Si lon obtient une liste de rpertoires ou un message
< ?php
phpinfo();
?>
servername : $ mysql u username p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or
Your MySQL connection id is 106270 to server version: 3.22.27
Type 'help' for help.mysql> CREATE DATABASE shopcart
servername : $ mysql u username p shopcart <shopcart.sql
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
436
Permission denied , il faut sans doute ajouter index.php3 dans la liste
DirectoryIndex du fichier httpd.conf dApache.
On peut galement crer une page HTTP de rafrachissement, nomme
index.html, qui transfre immdiatement le navigateur vers index.php3.
Connectivit de PHP : faire la connexion
Dans la fonction connect_db(), on se connecte au serveur de base de donnes
et on choisit la base de donnes. Pour faciliter le portage de cette application
sur un autre serveur de base de donnes, il existe des variables spares dans
init_db_variables().
Lire les donnes de la base
Voir, dans browse_column(), un exemple simple de lecture de donnes :
Dans la premire instruction, on excute une instruction SQL SELECT simple
sur la table items. Les rsultats sont rangs dans la variable $result. Dans la
seconde instruction, on compte le nombre darticles reus.
Dans cette instruction, on extrait le premier enregistrement de lensemble
rsultat. On peut alors extraire tous les champs de cet enregistrement en se
servant de la commande :
Dans ce cas, on a simplement mis jour la variable $item_id par la valeur de
linformation contenue dans la ligne courante de $results, dans le champ
nomm item_id. Il y a bien dautres moyens dextraire des donnes dune
chane de rsultat. PHP est faiblement typ, ce qui signifie quil ny a que peu
de distinction entre les variables qui contiennent les divers types dinforma-
tions, tels les nombres ou les textes ; PHP se prononce daprs le contexte de
la variable, ce qui le rend trs facile coder. Bien sr, si on le souhaite, on
peut toujours forcer le type dune variable laide de la fonction settype().
MYSQL_CONNECT($db_server,$db_username,$db_password) OR DIE("Unable to
connect to database");
@MYSQL_SELECT_DB("symetix") or die("Unable to select database") ;
$result=mysql_query("SELECT * FROM items WHERE category_id=$category_id") ;
$num_results=mysql_num_rows($result) ;
$row=mysql_fetch_array($result)) ;
$item_id=$row["item_id"] ;
copyright ditions Eyrolles
Dvelopper une application web
CHAPITRE X
437
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.
Quels sont les avantages de Linux par rapport
Windows NT/2000 pour les services web ?
Linux prsente tous les avantages traditionnels dUNIX tels que la stabi-
lit, la capacit et la fiabilit, mais il offre en outre une facilit demploi,
un grand nombre dutilitaires puissants et quips, beaucoup de logiciels
gratuits bien utiles, et, la base, une architecture qui le distingue de
NT/2000. Dans Linux, comme dans UNIX, laccent est mis sur la cons-
truction de petits programmes modulaires qui peuvent tre relis rapide-
ment depuis la ligne de commande. Bien que Microsoft ait tent daller
dans ce sens depuis de nombreuses annes (par exemple, avec les techno-
logies COM, DCOM et DNA), la plupart de ses applications et outils
consistent encore en de grandes applications monolithiques qui essaient
gnralement de tout faire par elles-mmes. En revanche, les outils Linux
sont conus pour fonctionner ensemble. Si lon ose une mtaphore, cela
signifie que, si une brique particulire dont on se sert pour btir une tour
nest pas de la bonne couleur, on peut rcuprer directement cette brique et
la remplacer par une autre, sans que toute la structure ne seffondre.
Lun des avantages de Microsoft sur Linux rside dans la facilit demploi
des outils de dveloppement. Mais, cette assertion est sujette dbat.
Comme les outils Microsoft facilitent le dveloppement rapide dune
application, cest la conception qui en souffre, notamment en la faisant
reposer sur un cycle continu de prototypes. Comme tout administrateur
lattestera, la conception correcte dune base de donnes est absolument
cruciale et il ne faut pas commencer rellement le codage avant quelle ne
soit acquise. Les outils de Microsoft tentent dpargner lutilisateur la
complexit relle de la tche faite la main. Pourtant, si lon y regarde de
prs, cest une direction que Linux est en train de prendre ; par exemple,
KDE, lun des bureaux (gestionnaires de fentres) Linux les plus rpandus,
est rput plus facile utiliser que Windows 98 lui-mme.
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
438
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.
Finalement, Linux et UNIX bnficient dune immense avance sur NT, la
fois en termes dinstallations relles de grands sites et de support de dve-
loppement. Alors quil y a des milliers et des milliers de programmeurs
Visual Basic qui sont passs au dveloppement web, Visual Basic na
jamais t conu pour grer la demande de dveloppement web que lon
attendait. tant donn que les outils de Visual Basic et Visual Studio
dchargent le programmeur de beaucoup de contraintes de conception,
beaucoup de programmeurs VB nont jamais appris coder correctement
des procdures ou des interfaces de base de donnes. Cela peut tre accep-
table pour de petites applications : mais les dfauts de conception et les
limitations deviennent vite plus apparents sitt que les applications gros-
sissent.
En dehors de Microsoft, trs peu de professionnels des systmes dinfor-
mations contestent que Linux est une plate-forme beaucoup plus stable et
quipe que NT/2000. Il y a aussi une piste de migration vers dautres
matriels, les plates-formes non Intel, que NT noffre pas. Par exemple,
Linux est disponible sur les plus grandes plates-formes, dont Sparc de Sun,
Alpha de Compaq, PowerPC de Apple, PA-RISC de HP et les processeurs
annoncs IA-64 de Intel. Si ces machines ne sont pas suffisantes, IBM
supporte Linux sur ses plus grands mainframes. En plus de son dveloppe-
ment sur les trs grands systmes, Linux a toujours fonctionn sur Palm
Pilot de 3Com, et Linus Torvalds dveloppe une version spciale de Linux
pour le prochain processeur Crusoe Transmeta qui promet de rvolutionner
les ordinateurs portables, de par la dure de vie exceptionnelle de ses batte-
ries et une architecture de processeur qui sauto-optimise.
La vrit est quen choisissant Linux, vous avez fait le pas dans le bon
sens. Lopen-source est appel durer, ce que toute lindustrie a reconnu et
a accept comme un fait.
copyright ditions Eyrolles
Dvelopper une application web
CHAPITRE X
439
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.
copyright ditions Eyrolles
A A
Script PHP
de lapplication
de-commerce
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
442
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
// Shopping Cart Application
// By Jamie Becker
// Copyright (c) 2000, Jamie Becker, jamiebecker@ring0.com
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// 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.
copyright ditions Eyrolles
Script PHP de lapplication de-commerce
ANNEXE A
443
// Source Code modified <80 cols. (JamieBecker,2/16/99)
// strongly recommend this function be separated into a separate, non-public
// file and included here.
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';
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
444
$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';
}
// Initiate connection to database
// userid and password should be stored in a separate,
// non-public file and be include()'d here.
function connect_db()
{
global $db_server;
global $db_username;
global $db_password;
MYSQL_CONNECT($db_server,$db_username,$db_password)
OR DIE("Unable to connect to database");
@MYSQL_SELECT_DB($db_name) or die("Unable to select database");
}
// If an image is requested, display the image and exit. Exit is critical!
function display_image()
{
global $image_id;
$result=mysql_query("SELECT * FROM images WHERE image_id=$image_id");
WHILE ($row=mysql_fetch_array($result))
{
$image_type=$row["image_type"];
$image_data=$row["image_data"];
}
header("Content-type: $image_type");
print $image_data;
exit();
}
copyright ditions Eyrolles
Script PHP de lapplication de-commerce
ANNEXE A
445
// 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;
}
// Register User in Database
function register_user()
{
global $register_form;
global $user_id;
global $user_first_name;
global $user_last_name;
global $user_mail_address;
global $user_credit_card;
global $user_password;
global $session_id;
If ($register_form!=""):
// Verify that information is accurate and acceptable for input
// into the database.
// (Insert your info checking routines here)
// Insert the information into database.
$fields="user_first_name, user_last_name, user_mail_address, ";
$fields=$fields."user_credit_card, user_password";
$values="'$user_first_name', '$user_last_name', '$user_mail_address', ";
$values=$values."'$user_credit_card', '$user_password'";
$query = "INSERT INTO users ($fields) VALUES($values)";
$result = MYSQL_QUERY($query);
$user_id=mysql_insert_id();
$query="UPDATE sessions SET user_id = '$user_id' WHERE session_id = ";
$query=$query."'$session_id'";
$result=MYSQL_QUERY($query);
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
446
Endif;
}
// Log out user
function logout_user()
{
global $session_id;
global $session_status;
global $login_success;
global $logout;
If ($logout):
$query="UPDATE sessions SET user_id = '' WHERE session_id = '$session_id'";
$result=MYSQL_QUERY($query);
$query="UPDATE sessions SET session_status = '0' WHERE session_id = ";
$query=$query."'$session_id'";
$result=MYSQL_QUERY($query);
$session_status=0;
$login_success=0;
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;
copyright ditions Eyrolles
Script PHP de lapplication de-commerce
ANNEXE A
447
Else:
$login_success=0;
Endif;
Else:
$login_success=0;
Endif;
Endif;
}
// See if User has logged in yet and read info if so.
function read_user_info()
{
global $user_id;
global $user_first_name;
global $user_last_name;
global $user_mail_address;
global $user_credit_card;
global $user_password;
global $user_perm;
global $session_status;
global $session_id;
global $uc_user_first_name;
$query="SELECT user_id from sessions WHERE session_id=$session_id";
$result=mysql_query($query);
$num_results=mysql_num_rows($result);
If ($num_results==1):
$row=mysql_fetch_array($result);
$user_id=$row["user_id"];
$result=mysql_query("SELECT * from users WHERE user_id=$user_id");
$num_results=mysql_num_rows($result);
If ($num_results==1):
$row=mysql_fetch_array($result);
$user_id=$row["user_id"];
$user_first_name=$row["user_first_name"];
$uc_user_first_name=ucwords($user_first_name);
$user_last_name=$row["user_last_name"];
$user_mail_address=$row["user_mail_address"];
$user_credit_card=$row["user_credit_cart"];
$user_password=$row["user_password"];
$user_perm=$row["user_perm"];
$session_status=1;
$query = "UPDATE sessions SET session_status = '1' WHERE session_id =";
$query = " '$session_id'";
$result = MYSQL_QUERY($query);
Endif;
Endif;
}
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
448
// 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";
}
// Select initial category
function init_category()
{
global $category_id;
global $session_id;
// get category id from current session, if it exists.
If ($category_id=="" || $category_id=="0"):
$query="SELECT category_id from sessions WHERE session_id=$session_id";
$result=mysql_query($query);
$row=mysql_fetch_array($result);
$category_id=$row["category_id"];
Else:
// this would get executed if category id was set on the URL, for example
// when changing categories.
$query = "UPDATE sessions SET category_id = '$category_id' WHERE ";
$query = $query."session_id = '$session_id'";
$result = MYSQL_QUERY($query);
Endif;
// If $category_id is still 0 or "", then go ahead and set it to 1.
If ($category_id=="" || $category_id=="0"):
$category_id='1';
$query = "UPDATE sessions SET category_id = '$category_id' WHERE ";
$query = $query."session_id = '$session_id'";
$result = MYSQL_QUERY($query);
Endif;
}
// Draw Header Table
function header_table()
{
global $top_header_color;
copyright ditions Eyrolles
Script PHP de lapplication de-commerce
ANNEXE A
449
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";
}
// Draw dividing line
function divide_lineh()
{
global $dividing_hline_color;
Print "<TABLE WIDTH=100% BORDER=0 CELLSPACING='0' CELLPADDING='0'>\n";
Print "<TR>\n<TD HEIGHT=1 WIDTH='100%' BGCOLOR='#$dividing_hline_color'>\n";
Print "<IMG SRC='img/clear.gif' HEIGHT=1 WIDTH=1></TD>\n</TR>\n";
Print "</TABLE>\n";
}
// Draw dividing line
function divide_colv()
{
global $dividing_vline_color;
Print "<TD HEIGHT='100%' ROWSPAN=1 WIDTH='1' ";
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
450
Print "BGCOLOR='#$dividing_vline_color'>";
Print "<IMG SRC='img/clear.gif' HEIGHT=1 WIDTH=1></TD>\n";
}
// Checkout!!! Another successful sale!
function checkout()
{
global $session_status;
global $session_id;
$session_status=2;
$query = "UPDATE sessions SET session_status = '2' WHERE session_id = ";
$query = $query."'$session_id'";
$result = MYSQL_QUERY($query);
If ($result):
Print "<H3>Checkout Successful! Thank you!</H3><HR><BR>";
Else:
Print "<H3>Checkout Failed! Thank you!</H3><HR><BR>";
Endif;
}
// Start table for shopping cart and browse columns
function start_shop_browse_table()
{
global $browse_color;
Print "<TABLE BORDER=0 WIDTH='100%' CELLSPACING='0' CELLPADDING='0'";
Print " BGCOLOR='#$browse_color'>\n<TR>\n";
}
// Start Shopping Cart Column
function start_shop_column()
{
global $shopping_cart_color;
global $shopping_cart_height;
global $shopping_cart_width;
Print "<TD BGCOLOR='#$shopping_cart_color'
HEIGHT='$shopping_cart_height'";
Print " WIDTH='$shopping_cart_width' VALIGN=TOP>";
}
// Delete an item from the cart before display.
function delete_item()
{
global $delete_cart_id;
If ($delete_cart_id!=""):
// Delete item from the carts database
copyright ditions Eyrolles
Script PHP de lapplication de-commerce
ANNEXE A
451
$query = "DELETE FROM carts WHERE cart_id='$delete_cart_id'";
$result = MYSQL_QUERY($query);
Endif;
}
// Buy (Add) an item to the cart before display.
function buy_item()
{
global $buy_item_id;
global $session_id;
If ($buy_item_id!=""):
// Insert this buy item into the carts database
$query = "INSERT INTO carts (session_id,item_id) VALUES('$session_id',";
$query = $query."'$buy_item_id')";
$result = MYSQL_QUERY($query);
Endif;
}
// Print Shopping Cart contents
function print_shopping_cart()
{
global $session_id;
global $shopping_cart_font_color;
global $shopping_cart_width;
global $PHP_SELF;
global $session_status;
global $uc_user_first_name;
global $user_perm;
global $total;
global $items_in_cart;
$query="SELECT items.item_id, items.item_name, items.item_price, ";
$query=$query."carts.cart_id FROM items, carts WHERE carts.session_id ";
$query=$query."='$session_id' AND carts.item_id=items.item_id ORDER BY ";
$query=$query." items.item_name";
$result=mysql_query($query);
If (mysql_num_rows($result)>0):
If ($session_status>0):
Print "<FONT FACE='Helvetica, Verdana, Arial' COLOR=";
Print "'$shopping_cart_font_color'>$uc_user_first_name's ";
Print "Selections:<BR></FONT>\n";
Else:
Print "<FONT FACE='Helvetica, Verdana, Arial' COLOR=";
Print "'$shopping_cart_font_color'>My Selections:<BR></FONT>\n";
Endif;
Endif;
// start microtable
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
452
Print "<TABLE WIDTH=100% BORDER=0 CELLSPACING='0' CELLPADDING='0'>\n";
Print "<TR><TD COLSPAN=2><IMG SRC='img/clear.gif' HEIGHT='10' WIDTH=";
Print "'$shopping_cart_width'></TD></TR>";
$items_in_cart=0;
WHILE ($row=mysql_fetch_array($result))
{
$items_in_cart++;
$cart_id=$row["cart_id"];
$item_id=$row["item_id"];
$item_name=$row["item_name"];
$item_price=$row["item_price"];
$total=$item_price+$total;
// allow the opportunity to review an item in the cart.
Print "<TR><TD VALIGN=TOP>";
Print "<a href='$PHP_SELF?review_cart_id=$cart_id";
Print "&reviewbuy_item_id=$item_id'>";
Print "<FONT FACE='Helvetica, Verdana, Arial' SIZE=-3 COLOR=";
Print "'$shopping_cart_font_color'>$item_name</FONT>";
Print "</a></TD>";
Print "<TD VALIGN=TOP ALIGN=RIGHT><FONT FACE='Helvetica, Verdana,";
Print "Arial' SIZE=-2 COLOR='#$shopping_cart_font_color'>";
$item_price_str=number_format($item_price,2,'.',',');
Print "$item_price_str</FONT></TD>";
Print "<TR><TD COLSPAN=2><IMG SRC='img/clear.gif' HEIGHT='5' ";
Print "WIDTH='$shopping_cart_width'></TD></TR>";
}
If ($items_in_cart>0):
Print "<TR><TD VALIGN=TOP>";
Print "<FONT FACE='Helvetica, Verdana, Arial' SIZE=-3 COLOR=";
Print "'$shopping_cart_font_color'>Total:</FONT>";
Print "</TD>";
Print "<TD VALIGN=TOP ALIGN=RIGHT><FONT FACE='Helvetica, Verdana, ";
Print "Arial' SIZE=-2 COLOR='#$shopping_cart_font_color'>";
$total_str=number_format($total,2,'.',',');
Print "$$total_str</FONT></TD>";
Print "<TR><TD COLSPAN=2><IMG SRC='img/clear.gif' HEIGHT='5' WIDTH=";
Print "'$shopping_cart_width'></TD></TR>";
Endif;
Print "</TABLE>\n";
// end microtable
}
// Start Browse Column
function start_browse_column()
{
global $browse_color;
global $browse_font_color;
Print "<TD WIDTH='100%' VALIGN=TOP BGCOLOR='#$browse_color' ROWSPAN=1>";
copyright ditions Eyrolles
Script PHP de lapplication de-commerce
ANNEXE A
453
Print "<FONT FACE='Helvetica, Verdana, Arial' COLOR='#$browse_font_color'>";
}
// Draw Category Table
function category_table()
{
global $index_tab_color;
global $index_tab_font_color;
global $main_index_tab_color;
global $main_index_tab_font_color;
global $PHP_SELF;
global $category_id;
Print "<TABLE WIDTH=100% BORDER=0 CELLSPACING='0' CELLPADDING='3'>\n";
Print "<TR BGCOLOR='#$index_tab_color'>\n";
$result=mysql_query("SELECT * FROM categories ORDER BY category_name");
WHILE ($row=mysql_fetch_array($result))
{
$col_category_id=$row["category_id"];
$col_category_name=$row["category_name"];
If ($col_category_id==$category_id):
$category_name=$col_category_name;
Print "<TD BGCOLOR='#$main_index_tab_color'>\n<CENTER>\n";
Print "<a href='$PHP_SELF?category_id=$col_category_id'>\n";
Print "<FONT FACE='Helvetica, Verdana, Arial'";
Print " COLOR='#$main_index_tab_font_color'>\n";
Print "$category_name</FONT>\n</a>\n</CENTER>\n</TD>\n";
Else:
Print "<TD BGCOLOR='#$index_tab_color'>\n<CENTER>\n";
Print "<a href='$PHP_SELF?category_id=$col_category_id'>\n";
Print "<FONT FACE='Helvetica, Verdana, Arial' COLOR=";
Print "'#$index_tab_font_color'>\n";
Print "$col_category_name</FONT>\n</a>\n</CENTER>\n</TD>\n";
Endif;
}
Print "</TR>\n</TABLE>\n";
}
// Inform the user of userid after registration
function inform_user()
{
global $register_form;
global $user_id;
global $user_first_name;
global $user_last_name;
global $user_mail_address;
global $user_credit_card;
global $user_password;
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
454
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;
}
// Inform a user if he was successfully logged in or out.
function inform_auth()
{
global $login;
global $logout;
global $login_success;
global $uc_user_first_name;
If ($login):
If ($login_success):
Print "<H3>Login Successful! Welcome, $uc_user_first_name!</H3><HR><BR>";
Else:
Print "<H3>Login Failed!</H3>";
Print "Unauthorized access is prohibited and will be prosecuted. Please";
Print " <a href='$PHP_SELF?create_account=1'>";
Print "create an account</a>. If you already have a valid account, ";
Print "please try again.<BR><HR><BR>";
Endif;
Endif;
If ($logout):
// Logout always succeeds unless there is a database problem.
// It might be useful to remove the cookie from the user's PC.
Print "<H3>Logout Successful! Feel free to continue browsing.</H3><HR><BR>";
Endif;
}
copyright ditions Eyrolles
Script PHP de lapplication de-commerce
ANNEXE A
455
// Input Table Row Form
function row_form($field_title,$field_name,$field_type)
{
global $browse_color;
global $browse_font_color;
global $table_row_rows;
global $table_row_cols;
If ($field_type==""):
$field_type="text";
Endif;
Print "<TR><TD>";
Print "<FONT FACE='Helvetica, Verdana, Arial' COLOR='#$browse_font_color'>";
Print "$field_title";
Print "</FONT></TD><TD>";
Print "<FONT FACE='Helvetica, Verdana, Arial' COLOR='#$browse_font_color'>";
If ($field_type=="textarea"):
Print "<$field_type ROWS=$table_row_rows COLS=$table_row_cols NAME=";
Print "'$field_name'></$field_type>";
Else:
Print "<INPUT TYPE='$field_type' NAME='$field_name'>";
Endif;
Print "</FONT>";
Print "</TD></TR>\n";
}
// Admin the site
function admin()
{
global $PHP_SELF;
global $browse_color;
global $browse_font_color;
global $category_id;
global $table_row_rows;
global $table_row_cols;
$table_row_rows=5;
$table_row_cols=30;
Print "<CENTER><TABLE BORDER=0 WIDTH=75% VALIGN=TOP CELLSPACING='0'";
Print " CELLPADDING='0' BGCOLOR='#$browse_color'>";
Print "<FORM ACTION='$PHP_SELF' ENCTYPE='multipart/form-data' METHOD=POST>";
Print "<INPUT TYPE=hidden NAME='admin_add' VALUE='1'>\n";
Print "<TR><TD COLSPAN=2 ALIGN=CENTER>";
Print "<FONT FACE='Helvetica, Verdana, Arial' COLOR='#$browse_font_color'>";
Print "<H3>Add an Item</H3></FONT></TD></TR>\n";
row_form("Item Name:","item_name","");
row_form("Item Description:","item_description","textarea");
row_form("Item Price:","item_price","text");
// Make Category Pull-down
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
456
$result=mysql_query("SELECT * FROM categories ORDER BY category_name");
Print "<TR><TD>";
Print "<FONT FACE='Helvetica, Verdana, Arial' COLOR='#$browse_font_color'>";
Print "Category:</FONT></TD><TD>";
Print "<FONT FACE='Helvetica, Verdana, Arial' COLOR='#$browse_font_color'>";
Print "<SELECT NAME='add_item_category_id'>";
WHILE ($row=mysql_fetch_array($result))
{
$col_category_id=$row["category_id"];
$col_category_name=$row["category_name"];
Print "<OPTION VALUE=$col_category_id>$col_category_name";
}
Print "</SELECT></TD></TR>\n";
Print "<TR><TD>";
Print "<FONT FACE='Helvetica, Verdana, Arial' COLOR='#$browse_font_color'>";
Print "Select an Image: (optional)</FONT></TD><TD>";
Print "<FONT FACE='Helvetica, Verdana, Arial' COLOR='#$browse_font_color'>";
Print "<INPUT TYPE='hidden' name='MAX_FILE_SIZE' value=500000>";
Print "<input type=file name=image accept='image/*'></FONT></TD></TR>\n";
Print "<TR><TD COLSPAN=2 ALIGN=CENTER>";
Print "<INPUT TYPE=SUBMIT></FONT></TD></TR>\n";
Print "</FORM>";
Print "</TABLE></CENTER>";
}
// Add an item to the site
function admin_add_item()
{
global $category_id;
global $item_name;
global $item_description;
global $item_price;
global $add_item_category_id;
global $image_id;
global $image; // PHP-provided variable (temporary filename)
global $image_name; // PHP-provided variable (original filename)
global $image_size; // PHP-provided variable (in bytes)
global $image_type; // PHP-provided variable (mime-type: image/gif,image/jpeg)
global $PHP_SELF;
If ($image != 'none'):
$image_data = addslashes(fread(fopen($image,"r"),filesize($image)));
// insert mime type into images database and get an id #.
$fields="image_type, image_data";
$values="'$image_type', '$image_data'";
$query = "INSERT INTO images ($fields) VALUES($values)";
$result = MYSQL_QUERY($query);
$image_id=mysql_insert_id();
copyright ditions Eyrolles
Script PHP de lapplication de-commerce
ANNEXE A
457
Print "<img src='$PHP_SELF?image_id=$image_id'><BR>";
Endif;
$fields="item_name, item_description, item_price, category_id, image_id";
$values="'$item_name', '$item_description', '$item_price', ";
$values=$values."'$add_item_category_id', '$image_id'";
$query = "INSERT INTO items ($fields) VALUES($values)";
$result = MYSQL_QUERY($query);
$item_id=mysql_insert_id();
If ($result):
Print "Item ID#$item_id addition ($item_name) succeeded.";
Else:
Print "Item ID#$item_id addition ($item_name) failed.";
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>";
}
// Review an individual item
function review_item()
{
global $review_item_id;
global $PHP_SELF;
global $browse_font_color;
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
458
$result=mysql_query("SELECT * FROM items WHERE
item_id=$review_item_id");
WHILE ($row=mysql_fetch_array($result))
{
$item_name=$row["item_name"];
$item_description=$row["item_description"];
$item_price=$row["item_price"];
$image_id=$row["image_id"];
If ($image_id!='0'):
Print "<img src='$PHP_SELF?image_id=$image_id'><BR>";
Endif;
Print "$item_name<BR>\n$item_description<BR>\n<BR>\n\$$item_price<BR><BR>";
Print "<a href='$PHP_SELF?buy_item_id=$review_item_id'>\n";
Print "<FONT FACE='Helvetica,Verdana,Arial' COLOR='#$browse_font_color'>";
Print "Purchase this Item";
Print "</FONT>";
Print "</a>\n";
}
}
// Review the purchase of an individual item
function review_purchase()
{
global $reviewbuy_item_id;
global $review_cart_id;
global $PHP_SELF;
global $browse_font_color;
$result=mysql_query("SELECT * FROM items WHERE
item_id=$reviewbuy_item_id");
WHILE ($row=mysql_fetch_array($result))
{
$item_name=$row["item_name"];
$item_description=$row["item_description"];
$item_price=$row["item_price"];
Print "$item_name<BR>\n$item_description<BR><BR>\$$item_price<BR><BR>";
Print "<a href='$PHP_SELF?delete_cart_id=$review_cart_id'>\n";
Print "<FONT FACE='Helvetica,Verdana,Arial' COLOR='#$browse_font_color'>";
Print "Delete this Item from shopping basket.";
Print "</FONT>";
Print "</a>\n";
}
}
copyright ditions Eyrolles
Script PHP de lapplication de-commerce
ANNEXE A
459
// Start Browse Column, but for search items
function search_column()
{
global $category_id;
global $category_name;
global $search;
global $lower_limit;
global $browse_font_color;
global $PHP_SELF;
global $search_categories;
If ($lower_limit==""):
$lower_limit=1;
Endif;
$upper_limit=$lower_limit+4;
If ($search_categories=='current'):
$query="SELECT * FROM items WHERE item_name LIKE '%$search%' OR item_";
$query=$query."description LIKE '%$search%' AND category_id=$category_id";
$result=mysql_query($query);
Else:
$query="SELECT * FROM items WHERE item_name LIKE '%$search%' OR item_";
$query=$query."description LIKE '%$search%'";
$result=mysql_query($query);
Endif;
$num_results=mysql_num_rows($result);
$upper_limit=$num_results+$lower_limit-1;
Print "Displaying $category_name containing '$search' from $lower_limit to ";
Print "$upper_limit:<BR>\n<BR>\n";
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 "<a href='$PHP_SELF?review_item_id=$item_id&current_category_id=";
Print "$category_id'>\n";
Print "<FONT FACE='Helvetica,Verdana,Arial' COLOR='#$browse_font_color'>";
Print "$item_name \$$item_price";
Print "</FONT>\n";
Print "</a>\n";
Print "<BR>\n<BR>\n";
}
}
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
460
// Display the normal browse window.
function browse_column()
{
global $category_id;
global $category_name;
global $search;
global $lower_limit;
global $browse_font_color;
global $PHP_SELF;
// display photos first...
$query="SELECT * FROM items WHERE category_id=$category_id AND image_id>0";
$result=mysql_query($query);
$num_results=mysql_num_rows($result);
$max_pics=4;
If ($num_results>0):
Print ("<BR><CENTER><TABLE WIDTH='80%' BORDER=0>");
If ($num_results > $max_pics):
$num_results=$max_pics;
Endif;
FOR ($x=1;$x<=$num_results;$x++)
{
$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"];
$image_id=$row["image_id"];
If ($x%2 != 0): // if $x is odd
Print "<TR><TD><CENTER>\n<a href='$PHP_SELF?review_item_id=$item_id'>";
Print "<img src='$PHP_SELF?image_id=$image_id' BORDER=0 WIDTH=225>";
Print "<BR><FONT FACE='Helvetica,Verdana,Arial'";
Print " COLOR='#$browse_font_color'>";
Print "$item_name \$$item_price</FONT></a>";
Print "</TD>\n";
Else:
Print "<TD><CENTER>\n<a href='$PHP_SELF?review_item_id=$item_id'>";
Print "<img src='$PHP_SELF?image_id=$image_id' BORDER=0 WIDTH=225>";
Print "<BR>";
Print "<FONT FACE='Helvetica, Verdana, Arial' COLOR=";
Print "'#$browse_font_color'>";
Print "$item_name \$$item_price</FONT></a>";
Print "</TD></TR>\n";
Endif;
}
Print ("</TABLE></CENTER><BR>");
Endif;
If ($lower_limit==""):
$lower_limit=1;
copyright ditions Eyrolles
Script PHP de lapplication de-commerce
ANNEXE A
461
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 "&nbsp</TD></TR>\n";
}
// Display bottom of Shopping Cart column
function end_shop_column()
{
global $session_id;
global $shopping_cart_color;
global $shopping_cart_font_color;
global $shopping_cart_width;
global $PHP_SELF;
global $session_status;
global $uc_user_first_name;
global $user_perm;
global $items_in_cart;
Print "<TR><TD BGCOLOR='#$shopping_cart_color' VALIGN=BOTTOM><p>";
If ($session_status == 1):
Print "<CENTER><A HREF='$PHP_SELF?logout=1'><FONT FACE=";
Print "'Helvetica,Verdana,Arial' COLOR='$shopping_cart_font_color'";
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
462
Print " SIZE=-1>Logout</FONT></CENTER><BR>";
Endif;
If ($session_status > 0 and $items_in_cart > 0):
Print "<CENTER><A HREF='$PHP_SELF?checkout=1'><FONT FACE=";
Print "'Helvetica, Verdana, Arial' COLOR='$shopping_cart_font_color' ";
Print "SIZE=-1>Checkout</FONT></CENTER><BR>";
Endif;
If ($user_perm > 0):
Print "<CENTER><A HREF='$PHP_SELF?admin=1'><FONT FACE=";
Print "'Helvetica, Verdana, Arial' COLOR='$shopping_cart_font_color'";
Print " SIZE=-1>Add an Item</FONT></CENTER><BR>";
Endif;
Print "<a href='$PHP_SELF?create_account=1'>\n";
Print "<FONT FACE='Helvetica, Verdana, Arial' SIZE=-1 COLOR=";
Print "'#$shopping_cart_font_color'>";
Print "<CENTER>Create an account</CENTER>";
Print "</FONT></a>";
Print "<BR>";
Print "<FORM ACTION='$PHP_SELF' METHOD=POST>\n";
Print "<FONT FACE='Helvetica, Verdana, Arial' SIZE=-2 COLOR=";
Print "'$shopping_cart_font_color'>Your User ID:<br>&nbsp";
Print "<INPUT TYPE=text NAME='user_id'>&nbsp<br>\n";
Print "Your Password:<br>&nbsp<INPUT TYPE=password NAME='user_password'>";
Print "&nbsp<br>\n";
Print "<INPUT TYPE=hidden NAME='login' VALUE='1'><br>\n";
Print "<CENTER><INPUT TYPE=SUBMIT VALUE='Login'>";
Print "</CENTER></FONT></FORM>\n";
Print "</p></TD>";
}
// Display bottom of Browse column
function end_browse_column()
{
global $browse_color;
global $browse_font_color;
global $company_name;
Print "<TD VALIGN=BOTTOM BGCOLOR='#$browse_color'><FONT FACE='Helvetica,";
Print "Verdana, Arial' COLOR='#$browse_font_color' SIZE=-2><CENTER>Copyright ";
Print "&copy 2000 $company_name</CENTER></FONT></TD>";
Print "</TR>";
}
// End Shopping Cart & Browse Table
function end_shop_browse_table()
{
Print "</TABLE>";
}
copyright ditions Eyrolles
Script PHP de lapplication de-commerce
ANNEXE A
463
// 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();
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
464
Else:
browse_column();
Endif;
// Display page footer
end_shop_column();
divide_colv();
end_browse_column();
end_shop_browse_table();
?>
copyright ditions Eyrolles
B B
Script MySQL
de lapplication
de-commerce
copyright ditions Eyrolles
Bases de donnes sous Linux Guide de ladministrateur
466
# phpMyAdmin MySQL-Dump
# http://phpwizard.net/phpMyAdmin/
#
# Host: localhost Database : shopcart
# --------------------------------------------------------
#
# Table structure for table 'carts'
#
CREATE TABLE carts (
cart_id mediumint(9) DEFAULT '0' NOT NULL auto_increment,
session_id tinyint(4) DEFAULT '0' NOT NULL,
item_id tinyint(4) DEFAULT '0' NOT NULL,
PRIMARY KEY (cart_id),
KEY session_id (session_id, item_id)
);
# --------------------------------------------------------
#
# Table structure for table 'categories'
#
CREATE TABLE categories (
category_id tinyint(4) DEFAULT '0' NOT NULL auto_increment,
category_name varchar(15) NOT NULL,
PRIMARY KEY (category_id),
KEY category_id (category_id),
UNIQUE category_name (category_name)
);
# --------------------------------------------------------
#
# Table structure for table 'images'
#
CREATE TABLE images (
image_id mediumint(9) DEFAULT '0' NOT NULL auto_increment,
image_type varchar(30) NOT NULL,
image_data longblob,
PRIMARY KEY (image_id)
);
# --------------------------------------------------------
#
copyright ditions Eyrolles
Script MySQL de lapplication de-commerce
ANNEXE B
467
# Table structure for table 'items'
#
CREATE TABLE items (
item_id int(11) DEFAULT '0' NOT NULL auto_increment,
item_name varchar(30),
item_description tinytext,
item_price float(10,2) DEFAULT '0.00' NOT NULL,
category_id tinyint(4) DEFAULT '0' NOT NULL,
image_id mediumint(9) DEFAULT '0' NOT NULL,
PRIMARY KEY (item_id),
KEY image_id (image_id),
KEY category_id (category_id)
);
# --------------------------------------------------------
#
# Table structure for table 'sessions'
#
CREATE TABLE sessions (
session_id int(11) DEFAULT '0' NOT NULL auto_increment,
user_id int(11) DEFAULT '0',
session_status tinyint(4) DEFAULT '0' NOT NULL,
category_id tinyint(4),
PRIMARY KEY (session_id)
);
# --------------------------------------------------------
#
# Table structure for table 'users'
#
CREATE TABLE users (
user_id int(11) DEFAULT '0' NOT NULL auto_increment,
user_first_name varchar(15),
user_last_name varchar(15),
user_mail_address varchar(100),
user_credit_card varchar(20),
user_password varchar(30) NOT NULL,
user_perm tinyint(4) DEFAULT '0' NOT NULL,
PRIMARY KEY (user_id)
);
copyright ditions Eyrolles
Index
@@IDENTITY, 234
A
Active Server Pages, 17, 429
Advanced Oracle Queuing, 114
Advanced Replication, option
Oracle8i, 102
ALL, vue du dictionnaire des donnes
Oracle, 119
Allaire, 429
ALLOW_ABSOLUTE_DBPATHS, 400
ALTER SYSTEM DISCONNECT,
Oracle, 116
ALTER SYSTEM KILL SESSION,
Oracle, 116
ALTER USER IDENTIFIED, Oracle, 116
Apache, 17, 430
application web
conception, 431, 433
exemple, 428, 439
installer lexemple, 435
plates-formes, 428, 431
scurit, 437
structure de la base de donnes, 434
Applixware, 19
ASE, Adaptive Server Enterprise
(Sybase), 202
ASP, Association of Shareware
Professionals, 318
assistance
constructeurs, 28, 41
diteurs de Linux, 41
Informix, 196
Linux Care, 28
MySQL, 290, 291
PostgreSQL, 410
versions commerciales, 13
Athlon, processeur, 12
authentification, 55, 56
Kerberos, 394, 396
B
bande de sauvegarde, 40
base de donnes
conception, 231, 233
et instance, Oracle, 74
objet-relationnelle, 364
BLOB, Binary Large OBjects, 355
botier de commutation KVM, 405
Borland C++ Builder, 413
Borland Java JBuilder, 413
C
Caldera Systems OpenLinux, 21
cartes dinterface rseau, 40
CAT, vue du dictionnaire des donnes
Oracle, 120
CATEXP.SQL, script Oracle, 121
CGI, 17
une interface vers Progress, 356
CHANGE, commande SQL*Plus, 117
Chili!Soft, mulateur, 429
chkconfig, 108, 371
chunks, Informix, 143
C-ISAM, 130, 132
Cobalt Networks, 26
Code Crusader, 413
Code Warrior, 413
Cold Fusion, 429
colonne Identit, 233, 235, 243
copyright ditions Eyrolles
Bases de donnes sous Linux - Guide de ladministrateur
INDEX
470
commit deux phases, 356
compatibilit matrielle, 25
Component Object Model (COM), 429
Comprehensive Perl Archive Network
(CPAN), 124
comptes
MySQL, 297, 302
Oracle, 114, 116
Sybase, 223, 226
Conectiva Linux, 21
CONNECT, rle Oracle, 115
CONTAINS, fonction du L4G
Progress, 354
contraintes matrielles, 37, 40
disques, 38
exemples, 67
Informix, 144
interface rseau, 40
MySQL, 288
Oracle, 78, 79
PostgreSQL, 367, 399
processeur, 38
RAID, 39, 40
RAM, 38
sauvegarde, 40
Sybase, 205
Corel Linux, 24
Corel WordPerfect, 19
Cox, Alan, 12
CPAN, site web, 124, 210
D
datadbs01, Informix, 144
DB2, 246, 285
accder au logiciel, tlcharger, 248
avantages, 246, 247
centre de contrle, 247
configuration, 263, 265
fentre principale, 266
configurer un client DB2
paramtres de base de donnes
requis, 278
paramtres TCP/IP
requis, 274275
pour communiquer avec un
serveur DB2, 273, 281
dpannage de la connexion, 280
documentation, 285
e-business, 247
ditions
Connect Personal, 248
Personal Developer, 248
Universal Database Personal, 248
Workgroup, 254
installer un client, 265, 272
crer une instance, 269
fentre dinstallation de DB2 268
fentre dinstance, 270
fentre de cration des
services, 270
fentre de rsum, 271
personnaliser
la bibliothque de
produit, 269
les messages de produit, 269
un client
dadministration, 268
rapport dtat, 272
installer un serveur version 6.1, 251,
260
crer le serveur
dadministration, 257
crer une instance, 255
fentre contextuelle
davertissement, 260
fentre de cration des
services, 255
fentre de rsum, 259
personnaliser
ldition Workgroup, 254
la bibliothque de
produit, 255
les messages de produit, 254
proprits de linstance, 256
proprits du serveur
dadministration, 258
rapport dtat, 260
instance
auto-dmarrage, 257
copyright ditions Eyrolles
Bases de donnes sous Linux - Guide de ladministrateur
INDEX
471
crer sur un client, 269
crer sur un serveur, 255
message derreur SQL10007N "-
1393", 262, 283
prparer linstallation sur Red Hat
Linux, 249, 251
version 5.2 et version 6.0, 249
version 6.1, 250
programme dinstallation, 253, 282
vrifier linstallation, 261, 263
DB2 Connect Personal, 248
DB2 Personal Developer, 248
DB2 Universal Database Personal, 248
DB2, kit des dveloppeurs de logiciel, 248
db2rh61fix.tgz, correctifs DB2, 250
db2rh61gafix.tgx, correctifs DB2, 250
DBA, Oracle
rle dadministration, 115
vue du dictionnaire des donnes, 119
dbaccess, Informix, 194
dbassist, assistant de configuration
Oracle8i, 100
DBD-Pg-0.89, pilote DBI pour
PostgreSQL, 417
DBI, interface de base de donnes, 124,
209, 416, 418
dbs_dbs, Informix, 144
dbspaces, Informix, 144, 167
DBSPACETEMP, option Informix, 188
dbstart, script Oracle, 106
Debian GNU/Linux, 21, 22
DEFINE, commande SQL*Plus, 117
Descartes Hermetica, FAQ DBI, 416
DHCP, Dynamic Host Configuration
Protocol, 52
DICT, vue du dictionnaire des donnes
Oracle, 120
dictionnaire des donnes
Oracle, 119
Disk Druid, 47
disques, 38
bruts (raw disks), 141, 204
conseils pour Informix, 144
Sybase, 243
disquette de dmarrage, 64, 65
durgence, 64
distributions, 12, 13, 21, 24
choisir, 28, 37
comparaison, 23
liste non exhaustive, 21
mise jour, 27
DNS, Domain Name Service, 53
DOS, mulation, 16
DOSEMU, 16
DSS, Decison Support System. Voir
systmes daide la dcision
dual boot, 27, 31
DUAL, vue du dictionnaire des donnes
Oracle, 119
E
ecpg
et PostgreSQL, 384
EDIT, commande SQL*Plus, 117
ELF, Executable and Linking Format
format binaire, 15
environnement de test, 27
/etc/services
configuration dInformix, 159
configuration de Progress, 330
configurer pour DB2, 274
Export, utilitaire Oracle, 120
extents
Oracle, 75
Progress, 335
F
Fast CGI, 413
FAT32
et Linux, 48
fdisk, 47, 206
fichiers de donnes
Informix, 143
Oracle, 75
Oracle, emplacement, 103
Progress, 335
Sybase, 204
formations, 29
Informix, 198
copyright ditions Eyrolles
Bases de donnes sous Linux - Guide de ladministrateur
INDEX
472
FreeBSD 2.2-RELEASE et
PostgreSQL, 380
FreeODBC, 414
fuseau horaire, 54
G
gcc, outil GNU, 294, 374
genclntsh, 127
ghostscript, 379
glibc, bibliothques, 85, 249, 308
glibcpatch, correctif, 90, 92
Global Knowledge Inc., 29
gmake, 126, 377
Gnome, 60
GNU C++, 413
GNU Prof C++ IDE, 413
GPL, General Public License, 438
noyau Linux, 11
GRANT, 115, 226, 300
groupadd, 82
groupe dutilisateurs
Informix, 197
Oracle, 127
GUI, Graphical User Interface, 13
gunzip, utilitaire, 292
H
histoire de Linux, 10
HOST, commande SQL*Plus, 118
HTTP Listener, 121
80510patchset, correctif, 90, 91
I
iBCS, 319, 361
IDN, Informix Developers Network, 200
IDS 7.30, 133
IDS.2000, 133, 134
IIUG, International Informix Users
Group, 197
Illustra, 134
Import, utilitaire Oracle, 120
incompatibilits, 19
INCR, extension de Tcl, 414
INDEX, tablespaces Oracle, 103
indexdbs01, Informix, 144
Informix, 130, 199
accder au logiciel, tlcharger le
fichier, 136
acquisition et mise en place du
logiciel, 135, 138
besoins despace, 145
chunks, 143
C-ISAM, 130, 132
comparaison Oracle, 131
contraintes matrielles
disques bruts (raw disks), 141
fichiers prformats
(cooked), 142, 143
cration des fichiers de
donnes, 143144
datadbs01, 144
dbs_dbs, 144
dbspaces, 144, 167
dmarrer le moteur, 160, 166
redmarrer, 189, 191
FAQ, 199
groupe international des utilisateurs
Informix (IIUG), 197
IDS 7.30, 133
IDS.2000, 133, 134
indexdbs01, 144
initialisation du disque et dmarrage
du serveur, 141, 143
installation et marquage, 138, 140
dun serveur IDS, 140
du client SDK, 139
logs logiques, 175, 184
logsdbs, 144, 173, 175
mmoire, utilisation, 187
moteur standard (SE), 132
oninit, 161, 189
onmode, 179
onparams, 169
onspaces, 169
onstat, 163, 189, 191
ontape, 171
options de configuration de
$ONCONFIG, 187, 188
outils, 191, 196
copyright ditions Eyrolles
Bases de donnes sous Linux - Guide de ladministrateur
INDEX
473
dbaccess, 194
dbschema, 192
finderr, 192
IDSchunks, rapport, 193
IDSspaces, rapport, 192
onlog, 191
onmonitor, 195
physdbs, 144, 168, 173
rpertoires, 145
ressources, 196, 198
formations, 198
groupe de news Usenet, 197
presse, 197
site web, 197
support technique, 196
rootdbs, 144
tempdbs, 184, 186
tempdbs01, 144
Informix Dynamic Server (IDS), 132, 134
$INFORMIXDIR, variable
denvironnement, 131
$INFORMIXDIR/etc/
$ONCONFIG 147159, 187, 188
$INFORMIXDIR/etc/sqlhosts, 159
INFORMIXSERVER, variable
denvironnement, 147
INFORMIXTEMP, espace, 184
Ingres, 134
INIT.ORA, fichier de paramtres
Oracle, 77, 106
INIT<SID>.ORA, 77
initdb,utilitaire PostgreSQL, 378
Insight ODBC, 414
installation
autres versions de Linux, 66
DB2, version 6.1, 251, 263
dcisions prliminaires, 37, 41
Informix, 134, 144
MySQL 3.22, 289, 296
Oracle8, 87, 94
Oracle8i, 94, 105
PostgreSQL, 367, 387
Progress 8.3, 318, 331
Red Hat Linux, 41, 66
Sybase SQL Server 11.0.3, 203, 210
X Window, 60, 62
instance
DB2, 255
Oracle, 74
interface graphique utilisateur, 13, 16
Internet, 17
PostgreSQL et, 365
Internet Information Server, 429
Iomega Jaz, 40
ISAM, Indexed Sequential Access
Method, 130
isql, client Sybase, 209
J
Java, 413, 429
et DB2, 263
et Oracle8i, 72
et PostgreSQL, 383
et Sybase, 210
pour Linux, 86
Java FreeBuilder, 414
Java RAD Tool Kanchenjunga, 414
Java Server Pages, 429
JBOD, Just a Bunch Of Disks, 333
jConnect, Sybase, 210
JDBC
avec Sybase, jConnect, 210
et DB2, 246
pour PostgreSQL, 414
JOIN
oprateurs *=, = et =* de
sybase, 235237
syntaxe SQL, 236
journaux, 76
Oracle, 104
JRE, Java Runtime Environment
pour DB2, 263, 264
tlcharger, 86
K
KDE, 60
Kerberos, 394, 396
kill, commande
avec Progress, 350, 352
copyright ditions Eyrolles
Bases de donnes sous Linux - Guide de ladministrateur
INDEX
474
kpackage, utilitaire KDE, 136
KVM, botier de commutation, 405
L
L4G Progress, 318, 352, 361
$LANG,variable denvironnement, 210
langages de script, 430
$LC_ALL,variable denvironnement, 210
LD_LIBRARY_PATH, variable
denvironnement, 84, 378
Lesstiff, 413
libclntsh.so.8.0, 127
libpq++ et libpq, 383
Libranet, 21
LILO, Linux Loader
configuration, 64
Linux
architectures multiprocesseurs, 15
avantages sur Windows 95/NT, 420
avantages sur Windows NT/2000, 437
caractristiques de base, 14, 17
code source, 12
distribution, 12
et matriels anciens, 20
FAQ, 31, 69
fonctions rseau, 17
format ELF, 15
histoire, 10
interface graphique utilisateur, 16
marque commerciale dpose, 11
mmoire virtuelle 32 bits, 15
mode noyau compltement protg 16
multitche, 15
multi-utilisateur, 16
noyau, 11, 13
noyau originel, 10
pr-installation pour Oracle, 79, 87
quand lutiliser, 18
services UNIX standard, 17
stations de travail, 20
suites bureautiques, 19
support des disques bruts, 141
support des services Internet, 17
systme dexploitation, 10, 33
Linux Mandrake, 21, 23
LinuxPPC, 21
LIST, commande SQL*Plus, 117
lnxpatch, correctif, 90
logsdbs, Informix, 144
LRU, options Informix, 188
M
make, outil GNU, 294, 374
Mandrake, 23
matriels
anciens, 20, 25
Voir contraintes matrielles
MAXUMEM, paramtre du noyau, 327
mdrecoverd, dmon, 40
mmoire
Informix, 187
Oracle, 74, 75
Progress, 337
Sybase, 237
mmoire virtuelle 32 bits, 15
Microsoft SQL Server 6.5, 202
Microsoft Visual Studio, 429
migration, 25, 28
compatibilit matrielle, 25
cots, 30
depuis un autre OS, 27
environnement de test, 27
valuation, 29
processus, 28, 30
recyclage des utilisateurs, 25
Minix, 10
mise jour, 27
mkbootdisk, utilitaire, 64
mots de passe
masqus, 56
MySQL, 297
systme, DB2, 258
systme, Oracle, 105
systme, Sybase, 220
MPSQL Motif-Worksheet, 384
multiprocesseurs, 15, 38
symtriques, 60
multitche, 15
multi-utilisateur, 16
MySQL, 288, 315, 430
copyright ditions Eyrolles
Bases de donnes sous Linux - Guide de ladministrateur
INDEX
475
accder au logiciel, 290
compte mysql, 299
comptes utilisateurs, 297, 302
privilges, 298, 301
configuration, 296, 308
contrle daccs, 302
dpannage, points vrifier, 311
distributions
Alpha, 292
Bta, 292
binaires, 288
conventions
dappellation, 291292
Gamma, 292
RPM, 288
sources, 288
environnement dexcution, 309
FAQ, 314
installation dune
distribution, 289296
binaire, 293
choix de la version, 289
RPM, 294
source, 294, 296
installation du systme, 303, 304
licences et assistance, 290, 291
outils, 310
mysqlaccess, 310
mysqladmin, 309, 311
mysqld, 311
mysqldump, 311
mysqlimport, 311
safe_mysqld, 311
performances, 305, 308
flag static, 305
variables de contrle, 305, 308
problmes, 308, 312
rpertoire, disposition, 296
scurit, 297, 298
tables systme
db, bases de donnes, 301
host, htes autoriss, 301
user, utilisateurs, 300
transactions, 315
versions
dsapprouve, 3.21.X, 289
dveloppement, 3.23.X, 289
stable, 3.22.X, 289
mysqladmin, outil dadministration de
MySQL, 305, 309, 311
mysqld, outil MySQL, 314
mysqldump, outil MySQL, 315
N
NBUFS, paramtre du noyau, 327
Net8, assistant de configuration rseau
Oracle8i, 109
netasst, application Java, 109
NetBSD, et PostgreSQL, 380
netca, application Java, 109
Network Assistant, configuration rseau
Oracle8i, 108
NFILES, paramtre du noyau, 327
NIC, Network Interface Card, 40
NIS, Network Information System, 56
niveau dexcution, 107
NLS_LANG, variable
denvironnement, 84
NOFILES, paramtre du noyau, 327
nom
rsolution de, 53
noms de connexion
et utilisateurs, 223
noyau Linux, 11, 13
licence GPL, 11
mode protg, 16
reconfiguration, 59
O
ObjectManager, Orasoft, 124
objet relationnel, 364
ODBC, Open DataBase Connectivity
pour PostgreSQL, 384, 414
OFA, Optimal Flexible Architecture, 80,
93, 96, 103, 104
OLTP, OnLine Transaction Processing.
Voir systmes transactionnels
$ONCONFIG, variable denvironnement
Informix, 148
copyright ditions Eyrolles
Bases de donnes sous Linux - Guide de ladministrateur
INDEX
476
oninit, Informix, 160
options ivy, 161
onmode, Informix, 179
option ky, 167
onmonitor, Informix, 195
onparams, Informix, 169, 170, 172, 175,
181
onspaces, Informix, 169, 185
onstat, Informix, 163, 171
ontape, Informix, 171, 176
Open Client Library de Sybase, 209
Open Client Library pour C, 209
Open Client Library pour Perl, 209
Open Link Software Corporation, 414
OpenLinux, 22
open-source, 10, 200, 290, 364, 365, 429,
430
/opt/data, rpertoire Informix, 145
/opt/data/rootdbs, 160
/opt/informix/ids7.30, rpertoire
Informix, 145
/opt/sybase, rpertoire, 207
ORA_NLS33, variable
denvironnement, 84
Orac, 124
Oracle, 72, 126
accder au logiciel, 87
base de donnes et instance, 73
cache de journalisation, 75
comptes et groupes systme, 82, 83
groupe dba, 82
groupe oinstall, 83
groupe OSDBA, 82
comptes SYS et SYSTEM, 105
concepts, 73, 78
configuration
de lespace dchange, 81
du fichier de paramtres, 106
du rseau, 108, 109
du systme de fichiers, 80, 81
contraintes matrielles, 78, 79
correctifs, 87
crer un compte, 114, 116
dbstart, 106
dmarrage et arrt
automatiques, 106108
dictionnaire des donnes, 119
et Perl, 124
extents, 75
FAQ, 126
fichiers
de contrle, 76
de donnes, 75
de paramtres, 77
identifiants de version, 77
INIT.ORA, fichier de paramtres, 77,
106
INIT<SID>.ORA, 77
installation, 78, 109
Oracle8, 87, 94
Oracle8i, 94, 105
journaux, 76, 104
mmoire, organisation, 74, 75
options denvironnement, 83, 85
$ORACLE_BASE, 77
$ORACLE_HOME, 77, 84
paquetages de compatibilit, 85
paramtres du noyau, 82
PL/SQL, 78
pool partag, 74
post-installation, 105, 109
pr-installation du systme
Linux, 7987
privilges systme, 115
processus, 113, 114
archivage (ARCn), 114
checkpoint (CKPT), 113
criture de la base de donnes
(DBW0), 113
criture du journal (LGWR), 113
file des travaux (SNPn), 114
moniteur de processus
(PMON), 113
moniteur de queue (QMNn), 114
moniteur systme (SMON), 113
rcupration (RECO), 114
verrouillage (LCK0), 114
rles, 115
copyright ditions Eyrolles
Bases de donnes sous Linux - Guide de ladministrateur
INDEX
477
schma, 78
segments, 76
de rollback, 76
SID, 77
SQL*Plus, 116, 119
systme hybride, 73, 100
tablespaces, 75
utilisation, 110, 121
utilitaires
Export, 120
Import, 120
SQL*Loader, 121
WebDB, 121
zone globale
des programmes (PGA), 75
systme (SGA), 74
Voir aussi Oracle8, Oracle8i
Oracle interMedia Text, option, 101
Oracle interMedia, option, 101
Oracle JServer, option, 102
Oracle Names Servers, 109
Oracle Parallel Server, 114
Oracle Server Manager, 110, 112
ALTER DATABASE OPEN, 111
CREATE SESSION, 111
RESTRICTED SESSION, 111
SHOW SGA, 112
SHUTDOWN, 112
SHUTDOWN ABORT, 112
SHUTDOWN IMMEDIATE, 112
SHUTDOWN NORMAL, 112
SHUTDOWN
TRANSACTIONAL, 112
STARTUP, 111
STARTUP MOUNT, 111
STARTUP NOMOUNT, 111
STARTUP OPEN RECOVER, 112
STARTUP PFILE=initSID.ora, 111
STARTUP RESTRICT, 111
Oracle Spatial, option, 102
Oracle Technology Network, 87, 90, 127
Oracle Times Series, option, 101
Oracle Universal Installer, 86
cran daccueil, 95
lancement du script orainstRootsh, 96
problmes, 94
Oracle Visual Information Retrieval,
option, 101
$ORACLE_BASE, 77
$ORACLE_HOME, 77, 84
Oracle8
crer les objets de base de donnes, 93
installation, 87, 94
installer les correctifs, 90, 92
options denvironnement, 84
orainst, programme dinstallation, 87
Oracle8i, 72
Advanced Replication, option, 102
dbassist, assistant de
configuration, 100
dialogue dinstallation des
privilges, 98
et Java, 86
installation, 94, 105
installer les correctifs, 98, 99
options denvironnement, 84
orainstRootsh, script, 96
produits complmentaires en
option, 101
scripts de cration de base de
donnes, 99, 104
orainst, programme dinstallation
Oracle8, 87
orainstRoot, script Oracle8i, 96
Orasoft, 122, 124
ObjectManager, 124
SQLWork, 123
ORCL, SID dOracle, 77
OTN. Voir Oracle Technology Network
OUI. Voir Oracle Universal Installer
P
Palm Pilot, 24
paramtres du noyau
Oracle, 82
Progress, 324, 328
partitions, 47, 51
ajouter, 48
brute non formate, 204
copyright ditions Eyrolles
Bases de donnes sous Linux - Guide de ladministrateur
INDEX
478
conseils, 66
dchange multiples, 47
modifier, 48
point de montage, 49
slection dun lecteur physique, 51
supprimer, 47
Sybase, 206
taille de la partition, 49
type de partition, 50
type Linux natif, 50
PASSWORD, 116
pdksh, paquetage, 249
Penguin Computing, 26
Perl, 430, 439
Practical Extraction and Report
Language
et Oracle, 124
et PostgreSQL, 382, 415, 416
et Sybase, sybperl, 209
Perl 5 pour PostgreSQL, 415
Perl-Qt, 413
Perl-Tk, 413
pg_dumpall, utilitaire PostgreSQL, 376
pg_options, options PostgreSQL 389, 391,
408
PGA, Program Global Area, 75
pgaccess, client graphique de
PostgreSQL, 372, 381
Phat Linux, 21
PHP, 413, 430, 432, 439
connectivit, 436
PHPLib, 432
phpMyAdmin, 431
physdbs, Informix, 144
pilotes
localisation, 20
PL/SQL, 78
points de montage, 49
pool partag, 74
Postgres, 134
PostgreSQL, 364, 425
accder au logiciel, 366
cas de certains systmes
dexploitation, 380
compte Linux postgres, 371, 375
connexion du client, 407
contraintes matrielles, 367
grandes bases de donnes, 399
corriger les bogues, 386
dmarrer le serveur, 378
emplacement secondaire, 400
et Internet, 365
exemples, 381, 384
fiche didentit, 364
grer une base de donnes
accder une base, 402
crer une base, 401
dtruire une base, 403
grandes bases, 399, 404
sauvegarde et restauration, 403
installation
de la distribution source 374, 381
dtails, 369, 374
rapide, 367, 369
validation, 381, 384
vrification, 385, 387
interfaces Perl et DBI, 415
listes de diffusion, 411, 412
messages de dbogage, 408
mise jour dun systme existant, 376
options de compilation, 377
outils graphiques, 413
paquetages RPM, 369
pg_group, 396
pg_options, 389, 391, 408
pilotes ODBC, JDBC et UDBC, 414
postmaster, 368, 388, 406
rpertoire pgsql, 387
rpertoires du systme, 387
ressources sur lInternet, 410, 420
sassurer de la fiabilit, 386
scurit, 392, 399
authentification de
lutilisateur, 392
authentification
Kerberos, 394396
contrle daccs, 393, 397
crer des groupes, 396
copyright ditions Eyrolles
Bases de donnes sous Linux - Guide de ladministrateur
INDEX
479
crer des utilisateurs, 396
des connexions TCP/IP, 398
fonctions et rgles, 398
mthodes dauthentification, 394
sites de rfrence, 420
suggestions, 379
support technique, 410
tests de rgression, 381, 385
tutoriels, 418
postmaster, processus PostgreSQL, 368
PostODBC, 414
PROBKUP, programme de sauvegarde
Progress, 344
processeurs 64 bits, 400
processus
Oracle, 113, 114
Progress, 318, 362
base de donnes
vide, 336
void, 336
besoin de mmoire, 337
commande kill, 350, 352
configuration, 331, 339
calibrage du pool de buffers, 337
crer une base
multivolume, 335337
espace disque et dbit dentre/
sortie, 333, 334
cot de proprit, 354
dictionnaire, 362
ditions, 323, 360
grer la base de donnes, 339, 350
arrter la base, 343
dmarrer la base, 340
dmarrer une session, 342
sauvegarder la base, 344
surveillance, 345, 350
images avant et aprs, 333
indexation des mots, 354
installation, 319, 331
conditions pralables, 319
de lenvironnement, 328, 331
du mode client-serveur, 330
du terminal PROTERMCAP, 329
cran daccueil, 320
options dinstallation, 321
saisie des numros de produits et
des codes de contrle, 321
slection de la langue, 322
slection des produits, 323
variables denvironnement, 329
internationalisation, 354
L4G, 352
orientation OLTP, 353
paramtres du noyau, 324, 328
mmoire partage, 325
paramtres divers, 327
smaphores, 326
restauration aprs panne, 353
sauvegarde en ligne, 355
structure de rpertoire, 331
types de fichiers ou extents, 335
version 8.3, 318
version 9.1, 318, 353, 355
Progress Email Group, PEG, 319, 345
Progress Software Corporation, PSC, 318,
352, 360
progress.cfg, fichier de configuration, 362
PROMON, moniteur Progress, 345, 350
prostrct, utilitaire Progress, 335
protg, noyau, 16
PROTERMCAP, fichier de configuration
de Progress, 329
protocole de transfert de fichier, FTP, 18
PSC, Progress Software Corporation
psql, terminal de PostgreSQL, 372
Python, 430
et PostgreSQL, 382
Q
Qt pour Windows95, 413
QtEZ, 413
R
RAID, 37, 39, 40, 305
cots, 39
matriel ou logiciel, 39
Progress et, 333, 334, 360
RAM, 38
copyright ditions Eyrolles
Bases de donnes sous Linux - Guide de ladministrateur
INDEX
480
et partitions dchange, 47
Red Hat Linux, 19, 21, 22, 36, 70, 430
et Oracle, 85
et Sybase, 203
installation, 41, 66
authentification, 55, 56
dun serveur,45
dune station de travail,44
du rseau,51, 54
mise niveau, 46
option Tout installer, 60
personnalise, ou
manuelle, 4666
rapide, 41, 46
slection de la langue, 42
slection de la souris, 43
slection du clavier, 43
slection du fuseau horaire, 54
type dinstallation, 44
installer PostgreSQL, 367, 381
paquetages de base, 57
paquetages optionnels, 58
partitions, 47, 51
prparer linstallation de
DB2, 249251
requtes parallles
Progress et, 355
rseau, 17
activation au dmarrage, 52
configuration, 51, 54
configuration avec Oracle, 108, 109
DHCP, 52
nom dhte, 53
RESOURCE, rle Oracle, 115
REVOKE, 115, 226
rles, Oracle, 115
ROLLBACK, tablespaces Oracle, 103
root
configuration du compte, 54
et MySQL, 293, 294, 297, 303, 308
et Oracle, 82, 83, 89, 96, 97, 126
et PostgreSQL, 378
rootdbs, Informix, 144
rpm, outil Red Hat Linux, 294
RPM, Red Hat Package Manager, 57, 288
RUN, commande SQL*Plus, 117
S
safe_mysqld, outil MySQL, 311
sauvegarde
matriels, 40
schma
Oracle, 78
SCO OpenServer, 319
SCSI, lecteurs, 51, 205
SE, Standard Engine (Informix), 132
segments, Oracle, 76
de rollback, 76
SEMMNI, paramtre du noyau, 326
SEMMNS, paramtre du noyau, 326
SEMMSL, paramtre du noyau, 326
serveurs
de bases de donnes
configuration, 65
exemples de configuration, 67
matriels, 26, 36
principales versions de Linux, 23
et stations de travail, 18, 19
services UNIX standard, 17
SET SQLPROMPT, commande
SQL*Plus, 117
SGA SHOW. Voir Oracle Server Manager
SGA, System Global Area, 74
SGBD, site web, 419
SHMMAX, paramtre du noyau, 82, 325
SHMMNI, paramtre du noyau, 325
SHMSEG, paramtre du noyau, 325
SHUTDOWN. Voir Oracle Server
Manager
SID, identificateur systme, 74, 77, 102
Slackware Linux, 21
SMP, matriel multiprocesseur
symtrique, 60
SPARC Solaris 2.5.1 et PostgreSQL, 380
SpecTCL, 414
SPIRO-Linux, 24
SQL Pro, site web, 419
SQL*Loader, utilitaire Oracle, 121
SQL*Plus, 116, 119
copyright ditions Eyrolles
Bases de donnes sous Linux - Guide de ladministrateur
INDEX
481
SQL, compatibilit de base, 130
SQL, site web, 419
SQL3
PostgreSQL et, 364
SQL-92
PostgreSQL et, 364, 420
Progress et, 353
SQLWork, Orasoft, 123
sqsh, client SQL sous licence GNU, 209
ssh, 399
Stampede GNU/Linux, 21, 66
StarOffice, 19, 20
STARTUP. Voir Oracle Server Manager
stations de travail, 20
et serveurs, 18, 19
su, commande setuser, 95, 372
support
services Internet, 17
technique. Voir assistance
SuSE Linux, 21, 23
svrmgrl, 110
Sybase, 202, 243
accder au logiciel
ASE 11.9.2, licence payante, 203
SQL Server 11.0.3, licence
gratuite, 203
tlchargement, 203
bibliothques de dveloppement, 209
client
isql, 209
Microsoft SQL Server sous
Windows, 214
sqsh, 209
comptes utilisateur, 223, 226
configuration, 210, 226
de la langue, 210
de la machine de
destination, 204206
des bibliothques client-
serveur, 219
des units de bases de
donnes, 221
du serveur de base de
donnes, 211, 216
du serveur de
sauvegarde, 218219
crer des bases de donnes, 222
dmarrer automatiquement les
serveurs, 220
et Java, 210
et les index, 243
et Red Hat Linux, 203
FAQ, 243
format RPM, 203
installer SQL Server 11.0.3, 203, 208
journal de transactions, 244
mot de passe de ladministrateur
systme, 220
partitions, 206
problmes, 233, 242
colonne Identit, 233
conformit SQL, 235
environnement dexcution, 237
scripts rc, 238
tempdb, 239, 242
utilisation de la mmoire, 237
procdure stocke
sp_addalias, 225
sp_addgroup, 224
sp_addlogin, 223
sp_defaultdb, 223
sp_help, 228
sp_helpdevice, 221
sp_password, 220
rglages, 237
sybinit et Red Hat version 6.1, 210
sybinstall.sh, 207
tester la base de donnes, 226, 231
sybinstall.sh, script dinstallation de
Sybase, 207
sybperl, 209
SYS, compte dadministration Oracle, 105
SYSADM, administrateur systme
DB2, 255, 269
SYSTEM, Oracle
compte dadministration, 105
tablespace, 103
systmes
copyright ditions Eyrolles
Bases de donnes sous Linux - Guide de ladministrateur
INDEX
482
daide la dcision, 73, 100
hybrides, 73, 100
transactionnels, 73, 100, 318
systmes de fichiers
haute performance, 51
Linux natifs, 48
T
tablespaces, 75
emplacement, 103
tar, utilitaire, 292
TCL, 430
Tcl/Tk
interface PostgreSQL, 381, 413
TCP/IP, paramtres, 274, 275
tempdb, Sybase, 239
tempdbs01, Informix, 144
TEMPORARY, tablespaces Oracle, 103
TERM, variable denvironnement
Progress, 329
TNS, Transport Network Substrate, 108
Torvalds, Linus, 10
trap, commande
et Progress, 343
TurboLinux, 21, 22
U
UDBC
pour PostgreSQL, 414
UDF, User-Defined Functions, 257
umask, 84
UNIX
connaissances ncessaires, 69
services standards, 17
utilitaires, 12
unzip, utilitaire, 135
UPS, uninterruptible power supply, 205
Usenet
Informix, 197
USER, Oracle
tablespaces, 103
vue du dictionnaire des donnes, 119
utilisateurs
et groupes, Sybase, 224
et noms de connexion, Sybase, 223
MySQL, table des, 299
utilitaires UNIX, 12
V
V$, vues des performances dynamiques
Oracle, 120
VA Linux Systems, 26
verrouillage
distribu et Progress, 356
versions commerciales, avantages, 13
VMWare, 16, 36, 69
W
web, exemple dapplication. Voir
application web
web, plates-formes
dapplications, 428431
Active Server Pages, 429
Apache, 430
Cold Fusion, 429
Java Server Pages, 429
langages de script, 430
PHP, 430
Zope, 429
WebDB, 121
Windows NT/2000
les avantages de Linux sur, 437
Windows, mulation, 16
WINE, 16
WS-FTP, 18
X
X Window, 13, 16, 85, 86
installation, 60, 62
PostgreSQL et, 372
Progress et, 361
X-Designer, 413
xhost, 85, 372
Y
Yellow Dog Linux, 21
Z
Zend, 413, 432
Zope, 429
copyright ditions Eyrolles

You might also like