# Administrateur de base de données

L'administrateur de base de données (DBA : DataBase Administrator en anglais) est une personne responsable du bon fonctionnement de serveurs de bases de données, essentiellement relationnelles (OLTP) ou décisionnelles (OLAP), tant au niveau de la conception des bases, des tests de validation, de la coordination des intervenants, de l'exploitation, de la protection et du contrôle d'utilisation. Les compétences requises pour cette fonction sont multipolaires : système, développement, sécurité et fonctionnement des serveurs de bases de données. L'expérience y est prépondérante. Le DBA travaille souvent en relation étroite avec les administrateurs systèmes et les développeurs au sein d'une direction des systèmes d'information.

## Description

Le DBA est principalement chargé de :
* La mise en place de standards, préconisation et bonnes pratiques : il décide des normes de nommage des objets pour les bases créées en interne, édicte les bonnes pratiques que les développeurs devront suivre, documente les procédures de maintenance afin que d'autres acteurs puissent intervenir en son absence.
* L'évaluation des besoins et de la qualité : certaines bases de données n'étant pas développées de manière interne, il est important qu'il soit consulté afin de dimensionner les serveurs devant héberger une solution applicative d'éditeur, tant sur le plan des ressources (volumétrie, nombre d'accès), que sur le plan de la maintenance (maintien des performances, fréquence des sauvegardes…).
* La modélisation de la base : bien qu'elle incombe normalement à l'analyste ou au concepteur (parfois au développeur), les principes de modélisation de bases de données doivent être parfaitement maitrisés par le DBA. En effet, les facteurs de dégradation des performances étant en premier lieu liés à la structuration des données (respects des principes de modélisation, relationnel ou décisionnel…), le DBA se doit de bien connaître les principes de modélisation et les problématiques en jeu afin de conseiller les analystes et développeurs ou bien pour résoudre les problèmes de performance à ce niveau par refactoring.
* La définition et la gestion des espaces de stockage : comme une base de données a besoin de beaucoup de place pour les données et le journal de transaction, il doit dimensionner les espaces de stockage physiques (storage : tablespace, groupes de fichiers…) et logiques (partitionnement), et choisir les disques ou SAN de manière préventive, et les auditer régulièrement afin de décider de l'ajout ou du basculement de certains objets logiques sur de nouveaux espaces (croissance de la volumétrie des données et "capacity planning").
* L'intégrité des données : il vérifie ou aide à vérifier la cohérence des données de la base afin qu'elles n'entrent pas en conflit avec les principes du système réel. Pour cela, il est chargé de la mise en œuvre de contraintes d'intégrité (intégrité de domaine, clefs primaires et subrogées, clefs étrangères et leur mode de gestion, validation des données, assertions…) ;
* La sécurité d'accès aux données : il définit ou implémente l'accès aux données en autorisant des profils de connexion ayant faculté d'exécuter certaines commandes dans certaines bases (gestion des privilèges) ;
* La récupération de données : il doit s'assurer que le plan de sauvegarde mis en place est opérationnel et recouvrant. Pour ce faire il doit auditer la fréquence de changement des données sensibles afin, par ses sauvegardes, de pouvoir remonter une base à un point particulier du calendrier, à la suite d'une erreur fonctionnelle. Il doit aussi et très régulièrement vérifier la consistance des sauvegardes et la faisabilité de la restauration en expérimentant celle-ci dans des conditions proches de la réalité (gestion de désastre).
* La maintenance de base : il doit vérifier que les espaces de stockage sont en bon état et dans le cas contraire les réparer. Il doit défragmenter les structures de stockage et les index afin d'assurer un temps de réponse linéaire. Il doit s'assurer de la bonne gestion des fichiers (données et journaux de transactions) afin que ces derniers ne saturent pas les disques.
* La gestion des désastres (disaster recovery) : il doit créer et tester des solutions de maintien de la continuité de la production (clusterisation, mise en miroir, log shipping…) afin qu'en cas de sinistre matériel la production puisse redémarrer dans un temps imparti prédéfini (quelques secondes pour les meilleures solutions);
* Le maintien de la performance : il assure que l'accès aux données se fasse dans un temps raisonnable et que cette performance soit maintenue dans le temps. Il doit donc mettre en œuvre une veille sur les statistiques d'exécution et réagir sur des allongements de temps de réponse en diagnostiquant le problème et en le résolvant si celui-ci est de son ressort (procédures de maintenance, ajout de ressources physique, refactoring du modèle de données…). Pour cela il dispose d'outils qui lui donnent des informations sur les objets les plus utilisés et leur consommation de ressource lors des traitements (lecture, écritures, temps CPU…).
* L'optimisation : il doit régulièrement et de manière pro-active faire des campagnes de mesure afin de débusquer les problèmes de contention ou de temps de réponse avant qu'ils ne deviennent handicapants pour l'exploitation et proposer les mesures nécessaires à les éradiquer : meilleurs gestion des transactions, études d'indexation, statistiques, réécritures de requêtes.
* L'aide au développement et aux tests : il doit fournir un support aux équipes de développement. Par exemple, il peut fournir des jeux de données en vue de tests (pris sur des bases en production), conseiller les développeurs sur les techniques à utiliser afin d'obtenir les meilleures performances d'emblée, voir participer à la structuration de la base afin notamment d'implémenter les nouvelles fonctions. En dernier ressort, il valide les demandes de modifications ou modification du schéma de la base;
* La gestion des flux de données : il est responsable des problématiques d'import et d'export des données tant sur le plan des ressources à y allouer que de la sécurité à mettre en œuvre.
* Migration et mises à jour : il doit régulièrement appliquer les mises à jour préconisées (système et SGBD) et assurer la migration des bases par exemple dans le cas d'un changement de serveur.
NOTA : la plupart des opérations de maintenance qu'un DBA doit réaliser s'effectuent en production, c'est-à-dire sans interrompre le service des données. Les exigences en matière de disponibilité visant bien souvent 99,999 % du temps (soit 5 minutes d'interruption par an), les SGBD sont conçus pour ne jamais devoir être arrêtés quelles que soient les opérations à effectuer, et certains serveurs physiques d'aujourd'hui permettent d'ajouter de la mémoire ou du CPU à chaud.
Le DBA doit être en mesure de bien connaître les systèmes de production ou de services existant (physiques, c'est-à-dire OS et réseau, et logiques, c'est-à-dire sur le plan fonctionnel) sur les sites d'utilisation de la base de données. Il est en général spécialisé sur un type de moteur de base de données particulier (MySQL, Oracle Database, DB2, Microsoft SQL Server, Sybase, Informix, PostgreSQL, Ingres…) commercial ou non.
On distingue plusieurs sous-catégories de DBA :
* L'administrateur de bases de données développement ou études : Il travaille conjointement avec les équipes de développement et est responsable du modèle logique et physique de la base de données. Il a souvent à charge l'administration des bases pendant la durée du projet. Il peut être amené à développer les procédures ou scripts SQL, et participe à la validation et aux tests. Il est très souvent responsable du contenu et du contenant (les données et le serveur lui-même).
* L'administrateur de bases de données production : Il assure la disponibilité et le bon fonctionnement des systèmes de bases de données. Il travaille en environnement haute disponibilité 24h/24h 7/7j. Cette fonction s'accompagne presque systématiquement d'astreintes. La volumétrie peut ici être très importante, quelques dizaines à quelques milliers de bases de données par DBA, soit au maximum une centaine de serveurs à surveiller. Il est en général responsable du contenant mais pas du contenu : le système de bases de données, mais pas les données elles-mêmes. Cependant il doit toujours être en mesure de récupérer les données, et de restaurer une image valide des systèmes. Il est mieux rémunéré que l'administrateur développement principalement à cause des risques et des responsabilités qu'il assume : une panne majeure pouvant aller jusqu'à la faillite de la compagnie.

## Outils du DBA

Les outils utiles au travail du DBA sont les suivants :
* outils internes (propre au SGBD) : utilitaire de sauvegarde, de vérification des structures d'allocation, de défragmentation des données, outils d'audit ou de tuning, assistants de mise en place de réplications, outils d'intégration de la haute disponibilité au niveau logique.
* outils externes (propre au SGBDR ou d'éditeurs indépendants) : outils d'intégration ou d'export des données dit ETL (Extract Transform and Load) ou ELT (Extract Load and Transform) comme Talend, Pentaho, Oracle Data Integrator, SQL Server Integration Services - outils de sauvegarde (Herman de Falconstore pour Oracle, Speed Light de Quest Software pour SQL Server…) - outils d'audit divers (Performance Advisor de Sentry pour SQL Server, Toad de Quest Software pour Oracle…) - outils de gestion de la haute disponibilités au niveau physique (Oracle RAC, Microsoft Clustering Services), de vérification des bonnes pratiques (SQL Server Best Practices Analyzer…).
NOTA : certains éditeurs comme Oracle font payer chacun des outils séparément en sus de la licence d'exploitation du serveur. D'autres comme MS SQL Server intègrent tous ces outils en standard dans la licence, certains étant téléchargeables.

## Qualités requises

Les caractéristiques personnelles requises pour faire un bon DBA sont les suivantes :
* expérience : étant donné les enjeux de son métier, il est rare qu'un informaticien soit promu DBA à la sortie de l'école. La fonction se doit d'avoir une certaine expérience avant de pouvoir être assumée pleinement;
* disponibilité : dans une PME, un DBA doit pouvoir être joint parfois 24h/24 et agir en urgence partout où il se trouve. Dans une grande entreprise, bien que le travail s'effectue aux horaires de bureau normaux, les opérations de maintenance ou de migration les plus risquées sont programmées les dimanche et jours fériés afin de ne pas pénaliser les utilisateurs (la production et la clientèle).
* pragmatisme : même s'il doit agir dans l'urgence, il doit conserver son sang-froid et avoir assez d'autorité et de compétence pour imposer son savoir-faire et ses manières
* froideur, distance : compte tenu de l'importance stratégique des données dans les SI, le DBA peut être obligé de devenir un interlocuteur privilégié de la direction lorsqu'il est en contradiction avec ses supérieurs directs ou ses collatéraux (DSI, ingénieurs systèmes).
* raisonnement : compte tenu de la diversité des techniques nécessaires à maitriser et de la complexité des SGBD, il est impératif de faire preuve de discernement et de bon sens afin de résoudre certains problèmes.
NOTA : un des principaux avantages du métier de DBA est qu'il est peu sensible à l'offshore. En effet, autant les entreprises ont intérêt à déplacer les développeurs là où les coûts sont moindres, autant les données étant très souvent le cœur du pouvoir les entreprises ont tout intérêt à conserver leurs données sensibles (notamment décisionnelles) au plus près du pouvoir.
Ce fait est cependant remise en cause théoriquement, par la concurrence des pays émergeant comme l'Inde, où IBM avait le projet de délocaliser l'ensemble des fonctions de services informatiques de la SNCF, lorsqu'elle a remporté un appel d'offres. Face au tollé médiatique, IBM, qui se portait garant de l'intégrité des informations (puisqu'elle est un élément de l'appel d'offre) tout en réduisant les coûts par dix, a dû rester en France mais au prix fort. La direction de la SNCF n'enterre pas le projet car elle subit de lourdes pertes financières et qu'elle estime que ce n'est pas à elle de subventionner l'emploi en France.

## Conditions générales d'exercice de la profession

Suivant le type de prestation, et l'environnement à gérer, les conditions peuvent varier. En général, cette profession s'exerce selon des horaires de travail réguliers, mais occasionne presque toujours la demande d'heures supplémentaires ou de week-end, pour les postes de production. D'importants efforts intellectuels sont parfois nécessaires afin de suivre les données et d'en comprendre la nomenclature et la structure. La profession s'exerce principalement devant un écran. Un effort constant de mise à jour des connaissances est nécessaire.

## Formation

L'accès à cette activité demande généralement un diplôme de l'enseignement supérieur ou universitaire. L'intérêt pour les modèles mathématiques et l'aptitude à penser de manière structurée font également partie des critères de sélection.
Il existe à ce jour des diplômes couplés généralement avec l'administration de réseaux (licence professionnelle ARDB) il existe aussi certaines formations spécialisées en administration de bases de données dispensées par des universités (« UV NFE 113 du CNAM ») ou des organismes de formation professionnelles (Orsys, Learning Tree…) formant sur les solutions propres aux éditeurs.
Le parcours de formation nécessaire pour obtenir les compétences par une certification est souvent très onéreux car multiple. Exemple : l'obtention de la certification MCDBA pour MS SQL Server nécessite 4 à 5 cursus de formation et 3 à 4 examens.
Les DBA sont souvent d'anciens informaticiens qui se sont spécialisés.

## Rémunération
### En France

De 35 000 € (débutant) à 75 000 € par an (situation 2008). Moyenne aux alentours de 40 000 €. Médiane aux alentours de 50 000 €.
Cependant, ces salaires concernent un cadre, a priori bac+5, alors qu'un agent de maitrise, a priori bac+3 ou BTS, ou un technicien (BTS, diplôme inférieur ou autodidacte), auront moins de responsabilité et moins de revenus. La formation personnelle (langages informatiques, relations humaines avec les collaborateurs, les donneurs d'ordre et les clients) et continue (concepts de programmation, gestion de projet) est donc très importante.

### Aux États-Unis et Canada

De 50 000 $ (débutant) à 100 000 $ par an (situation 2011), Moyenne aux alentours de 70 000 $. Médiane aux alentours de 80 000 $. Les DBAs indépendant sont les mieux payés de tous (100 000 $), mais leur emploi n'est jamais garanti.
$ en dollars US, le dollars Canadien (CAD) est à parité (juillet 2011)
À noter : dans les grandes organisations, le DBA est mieux payé que les administrateurs de SI du fait de l'importance vitale des données. Un crash d'exploitation est toujours réversible, mais pas la perte des données (si on fait des économies sur les sauvegardes de données).

## Lectures conseillées

* C. J. Date, Introduction aux bases de données, Paris, Vuibert, 2004, 8e éd., 1047 p. (ISBN 978-2-711-74838-9, OCLC 58569189)
* Nacer Boudjlida, Gestion et administration des bases de données : applications à Sybase et Oracle : cours et exercices corrigés, Paris, Dunod, coll. « Sciences Sup. Informatique », 2003, 237 p. (ISBN 978-2-100-05847-1, OCLC 77097744)
* (en) Craig Mullins, Database administration : the complete guide to practices and procedures, Boston [Mass.], Addison-Wesley, 2007, 703 p. (ISBN 978-0-201-74129-2, OCLC 934257466, lire en ligne)