Beruflich Dokumente
Kultur Dokumente
Introduction
On prsentera ici trois systmes diffrents de gestion de base de donnes : MySQL 5.1, base de donnes libre trs utilise par les hbergeurs web pour ses bonnes performances et dont la version 5 comble les principaux manques (trigger, procdures stockes...). MySQL a la particularit de fournir plusieurs moteurs de bases de donnes (InnoDB, MyIsam, Berkeley DB...), qui ne fournissent pas les mmes fonctionnalits ni les mmes performances, afin de s'adapter au besoin. Par exemple, le moteur ARCHIVE est optimis pour stocker et fournir des informations, mais il n'est pas possible de mettre jour une ligne dans une table. PostgreSQL 8.1 est la base de donnes qui offre le plus de fonctionnalits en logiciel libre. Oracle 10g
Conseils prliminaires
Voici quelques conseils qui permettent de gagner du temps lors de la dcouverte et la maintenance d'une base de donnes : 1. Demander s'il y a une fiche technique du serveur sur un partage de fichiers ou sur un wiki. 2. Interroger les personnes qui travaillent sur ce serveur pour savoir s'il y a des recommandations en plus par rapport la documentation au cas o elle ne serait pas jour. 3. Crer ou mettre jour la documentation du serveur. 4. Lire la documentation officielle de la base de donnes et regarder les commentaires : (fr) MySQL 5.0 [1] | (en) MySQL 5.1 (fr) PostgreSQL 8.1.5 [3] (en) Oracle [4]
[2]
Dtermination de l'environnement
Pour connatre le(s) processeur(s) : # cat /proc/cpuinfo Les partitions swap utilises : # cat /proc/swaps La quantit de RAM disponible/utilise : # cat /proc/meminfo La configuration rseau : # ifconfig
Dcouverte de MySQL, PostgreSQL et Oracle pour obtenir la liste des dmons dmarrs.
Threads: 1 Questions: 157 Slow queries: 0 Opens: 0 Open tables: 64 Queries per second avg: 0.547
Dcouverte de MySQL, PostgreSQL et Oracle PostgreSQL # /etc/init.d/postgresql-8.1 status Exemple de rsultat pour une base en cours de fonctionnement : Version Cluster 8.1 Port Status Owner Data directory Log file main 5432 online postgres /var/lib/postgresql/8.1/main /var/log/postgresql/postgresql-8.1-main.log
Oracle # /etc/init.d/oracle status On identifie la liste des instances Oracle en cours de fonctionnement avec la commande: 1. ps -ef | grep pmon (Le processus PMON, Process Monitor, tant unique chaque instance, et identifiant le SID de la base concerne)
Dcouverte de MySQL, PostgreSQL et Oracle Oracle Avec init Dans le cas d'une base de donnes : # /etc/init.d/oracle (start|stop|restart) Avec initng # ngc --(start|stop|restart) oracle
Dcouverte de MySQL, PostgreSQL et Oracle # Put commands in the background if they should not block the server start. ( mycheck; ) & exit 0 my.cnf : Tous les paramtres de configuration de MySQL comme les ports/sockets d'coute, les interfaces rseaux autorises, le tuning de la base, l'emplacement des logs et des fichiers de base de donnes... Enfin, ce fichier dfinit si le serveur MySQL est un noeud de cluster ou un le matre du cluster. Les commentaires dans ce fichier sont assez dtaills. Exemple : # # The MySQL database server configuration file. # # You can copy this to one of: # - "/etc/mysql/my.cnf" to set global options, # - "/var/lib/mysql/my.cnf" to set server-specific options or # - "~/.my.cnf" to set user-specific options. # # One can use all long options that the program supports. # Run program with --help to get a list of available options and with # --print-defaults to see which it would actually understand and use. # # For explanations see # http:/ / dev. mysql. com/ doc/ mysql/ en/ server-system-variables. html # This will be passed to all mysql clients # It has been reported that passwords should be enclosed with ticks/quotes # escpecially if they contain "#" chars... # Remember to edit /etc/mysql/debian.cnf when changing the socket location. [client] port = 3306 socket = /var/run/mysqld/mysqld.sock # Here is entries for some specific programs # The following values assume you have at least 32M ram # This was formally known as [safe_mysqld]. Both versions are currently parsed. [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0
Dcouverte de MySQL, PostgreSQL et Oracle [mysqld] # # * Basic Settings # user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp language = /usr/share/mysql/english skip-external-locking # # For compatibility to other Debian packages that still use # libmysqlclient10 and libmysqlclient12. old_passwords = 1 # # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. bind-address = 127.0.0.1 # # * Fine Tuning # key_buffer = 16M max_allowed_packet = 16M thread_stack = 128K # # * Query Cache Configuration # query_cache_limit = 1048576 query_cache_size = 16777216 query_cache_type = 1 # # * Logging and Replication # # Both location gets rotated by the cronjob. # Be aware that this log type is a performance killer. #log = /var/log/mysql.log #log = /var/log/mysql/mysql.log # # Error logging goes to syslog. This is a Debian improvement :) # # Here you can see queries with especially long duration #log-slow-queries = /var/log/mysql/mysql-slow.log # # The following can be used as easy to replay backup logs or for
Dcouverte de MySQL, PostgreSQL et Oracle replication. #server-id = 1 log-bin = /var/log/mysql/mysql-bin.log # See /etc/mysql/debian-log-rotate.conf for the number of files kept. max_binlog_size = 104857600 #binlog-do-db = include_database_name #binlog-ignore-db = include_database_name # # * BerkeleyDB # # According to an MySQL employee the use of BerkeleyDB is now discouraged # and support for it will probably cease in the next versions. skip-bdb # # * InnoDB # # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/. # Read the manual for more InnoDB related options. There are many! # # * Security Features # # Read the manual, too, if you want chroot! # chroot = /var/lib/mysql/ # # If you want to enable SSL support (recommended) read the manual or my # HOWTO in /usr/share/doc/mysql-server/SSL-MINI-HOWTO.txt.gz # ssl-ca=/etc/mysql/cacert.pem # ssl-cert=/etc/mysql/server-cert.pem # ssl-key=/etc/mysql/server-key.pem [mysqldump] quick quote-names max_allowed_packet [mysql] #no-auto-rehash [isamchk] key_buffer # # # # # # #
= 16M
= 16M
* NDB Cluster See /usr/share/doc/mysql-server-*/README.Debian for more information. The following configuration is read by the ndbd storage daemons, not from the ndb_mgmd management daemon.
Dcouverte de MySQL, PostgreSQL et Oracle # # [MYSQL_CLUSTER] # ndb-connectstring=127.0.0.1 PostgreSQL Les fichiers de configuration se trouvent dans /usr/local/pgsql/data /etc/postgresql/8.1/main/. PostegreSQL possde 3 fichiers de configuration: pg_hba.conf : fichier de configuration pour l'authentification des utilisateurs. Ce fichier est une suite d'enregistrements. Les lignes vides sont ignores. Chaque ligne est structure d'une des manires suivantes: local database host database hostssl database hostnossl database host database [auth-option] hostssl database [auth-option] hostnossl database [auth-option] user user user user user user user auth-method [auth-option] CIDR-address auth-method [auth-option] CIDR-address auth-method [auth-option] CIDR-address auth-method [auth-option] IP-address IP-mask auth-method IP-address IP-address IP-mask IP-mask auth-method auth-method ou
pg_ident.conf: fichier de configuration utilis si l'on veut effectuer une authentification automatique avec le login utilis lors du lancement de l'OS. Exemple : # MAPNAME IDENT-USERNAME PG-USERNAME
omicron bryanh bryanh omicron ann ann # bob has user name robert on these machines omicron robert bob # bryanh can also connect as guest1 omicron bryanh guest1 postgresql.conf : principal fichier de configuration. Toutes les informations propres au SGBD sont stockes dans ce fichier. Oracle Par dfaut, le fichier de configuration /home/oracle/admin/%ORACLE_SID%/pfile et se nomme en gnral init%ORACLE_SID%.ora %ORACLE_SID% est le nom de l'instance d'oracle utilise Il contient en gnral tous les paramtres dont a besoin la base. Exemple db_name=isima db_files=1020 control_files=/home/oracle/admin/isima/isima.ora db_file_multiblock_read_count = 8 se trouve dans
Dcouverte de MySQL, PostgreSQL et Oracle db_block_buffers=200 shared_pool_size=6500000 log_checkpoint_interval=8000 processes=50 dml_locks=100 log_buffers=8192 sequence_cache_entries=10 sequence_cache_hash_buckets=10 #audit_trail=true #timed_statistics=true background_dump_dest=/home/oracle/rdbms80/trace user_dump_dest=/home/oracle/rdbms80/trace db_block_size=2048 compatible=8.0.4.0.0 ...
10
Dcouverte de MySQL, PostgreSQL et Oracle Sys. de fich. /dev/md0 /dev/sda6 Cette commande : # du -hs /var/lib/mysql/* affiche des informations prcises sur la taille de chaque fichier. Tail. Occ. Disp. %Occ. Mont sur 186G 163G 23G 88% / 9,2G 1,7G 7,1G 20% /home
11
Web
MySQL PhpMyAdmin est l'interface web la plus utilise pour grer une base de donnes MySQL. PostgreSQL PhpPgAdmin Oracle isql*plus sql*Plus SQLPlus Worksheet
Applications graphique
Pour tous les serveurs de base de donnes Kexi - Outil KDE OpenOffice.org Base - Intgr OpenOffice 2. permet de gnrer des schmas de la base de donnes.
Dcouverte de MySQL, PostgreSQL et Oracle MySQL MySQL Administrator PostgreSQL pgAdmin Oracle Tora Oracle Enterprise Manager
[7] [6] [5]
12
Ligne de commande
MySQL # mysql PostgreSQL # psql Oracle # sqlplus
Gnralits
MySQL Pour auditer un serveur MySQL, la commande SHOW permet d'afficher la plupart des informations utiles. (Documentation dtaille [8])
CREATE USER user [IDENTIFIED BY [PASSWORD] 'password'] Supprimer un utilisateur (Documentation dtaille DROP USER user;
[11]
Dcouverte de MySQL, PostgreSQL et Oracle PostgreSQL L'authentification dans PostgreSQL se fait via les rles ou via les utilisateurs. Liste des rles: SELECT rolname FROM pg_roles; Crer un rle: (Documentation dtaille
[12]
13
CREATE ROLE name [ [ WITH ] option [ ... ] ] Supprimer un rle: (Documentation dtaille DROP ROLE name; liste des utilisateurs SELECT usename FROM pg_user; ou en gnral on utilise la mtacommande \du Cration d'un utilisateur (Documentation dtaille
[14] [13]
CREATE USER nom [ [ WITH ] SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | CREATEUSER | NOCREATEUSER | INHERIT | NOINHERIT | LOGIN | NOLOGIN | CONNECTION LIMIT limite_connexion | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'motdepasse' | VALID UNTIL 'dateheure' | IN ROLE nomrole [, ...] | IN GROUP nomrole [, ...] | ROLE nomrole [, ...] | ADMIN nomrole [, ...] | USER nomrole [, ...] | SYSID uid Effacer un utilisateur DROP USER modifier un utilisateur ALTER USER
Dcouverte de MySQL, PostgreSQL et Oracle Oracle Les Utilisateurs Afficher les utilisateurs SELECT * FROM DBA_USERS Crer un utilisateur CREATE USER nom IDENTIFIED BY mot_de_passe DEFAULT TABLESPACE tablespace_par_defaut TEMPORARY TABLESPACE tablespace_temporaire QUOTA quota ON tablespace Supprimer un utilisateur DROP USER utilisateur [CASCADE] Modifier un utilisateur ALTER USER utilisateur Les rles et les privilges Afficher les rles SELECT * FROM DBA_ROLES Crer un rle CREATE ROLE Attribuer un privilge/un rle GRANT privilge/rle TO rle/utilisateur Supprimer un rle DROP ROLE role
14
15
Tables
MySQL Liste des tables SHOW TABLES; PostgreSQL liste des tables: (Plus d'infos
[16]
SELECT tablename FROM pg_tables; ou la mtacommande \dt Oracle liste des tables: SELECT owner,table_name FROM all_tables;
16
Threads: 1 Questions: 157 Slow queries: 0 Opens: 0 Open tables: 64 Queries per second avg: 0.547 Oracle En version 10g, via la DBConsole.
Sinon, interroger la vue V$SESSION_WAIT, qui renseigne en temps rel des sessions en attentes. Event: correspond l'evnement P1, P2, et P3 correspondent aux spcifications de l'event (exemple: db file sequential read: P1: file #, P2: block #) Nanmoins le suivi de l'activit d'une instance Oracle est complexe, et requiert l'utilisation d'outil type PERFSTAT pour avoir des informations concrtes.
17
Triggers
Pour afficher les diffrents triggers dfinis dans la base de donnes : MySQL SHOW TRIGGERS; PostgreSQL liste des triggers : (Plus d'infos
[20]
Procdures stockes
Permet d'afficher la liste des procdures stockes. MySQL USE mysql SELECT * FROM `func`; (Documentation sur les procdures stockes PostgreSQL Ou utilise la mtacommande \df, si on connait le schma on peut faire \df schema.*, par exemple \df public.* donne toutes les fonctions cre dans ce schma, qui est celui affect par dfaut utilisateur. On pourrait tout aussi bien faire \df public.ab* pour avoir toutes les fonctions commenant par ab. Avec \df+ on obtient aussi les commentaires (CREATE COMMENT) sur la fonction Oracle Pour selectionner la liste des procdures stockes: SELECT object_name FROM user_objects WHERE object_type='PROCEDURE'; Pour afficher le contenu d'une procdure stocke: SELECT text FROM user_source WHERE NAME = 'NOM DE LA PROCEDURE' AND TYPE = 'PROCEDURE'; On peut aussi utiliser les vues dba_objects et dba_source
[21]
18
Logs
Les logs sont des fichiers textes qui contiennent tout ce qui se passe dans le logiciel. Ces fichiers sont importants pour dtecter et localiser une panne. Les logs des distributions linux sont dans le dossier : /var/log Le fichier de log le plus important est : /var/log/syslog MySQL /var/log/mysql.log contient toutes les erreurs autour du serveur MySQL. C'est le premier fichier regarder quand le serveur ne MySQL dmarre pas. Il est possible d'activer des logs pour sauvegarder toutes les requtes, les modifications dans les tables ou pour identifier les requtes les plus lentes. (Dtails sur les types de logs [22] ) PostgreSQL Lors de la cration d'une base , elle est configur avec un archivage minimum (un certains nombre de fichiers de taille fixes sont utiliss pour l'archivage) Cet archivage n'est pas suffisant pour pouvoir restaurer des sauvegardes chaud, il faut un archivage de type WAL, qui n'crase pas les log les plus anciens. Pour configurer un archivage WAL: Dans le fichier postgresql.conf, recherchez le parametre archive_command et donnez lui la valeur suivante: archive_command = 'cp -i %p /mnt/server/archivedir/%f </dev/null' (%p correspond au path du fichier archiver, alors que %f corespond seulement au nom du fichier) Sous certaines plateformes, la commande cp -i crase les fichiers dja existant, ce qui est contraire la logique d'un archivage WAL. Si vous rencontrez des problemes, il faut rajouter un test dans la commande: archive_command = 'test ! -f .../%f && cp %p .../%f' Oracle On distingue deux types de "logs" avec Oracle: - les fichiers "redo logs", qui assurent l'intgrit de la base - les fichiers textes statuant de l'tat de la base Pour avoir des fichiers "redo log" actifs, la base doit tre en mode ARCHIVELOG. Pour connatre le mode d'archivage: SELECT name, log_mode FROM V$DATABASE Pour activer le mode ARCHIVELOG, il faut arrter la base shutdown immediate puis modifier le fichier init<SID>.ora log_archive_start = TRUE Les fichiers de log sont galement crits dans le fichier init<SID>.ora Exemple :
Dcouverte de MySQL, PostgreSQL et Oracle log_archive_dest_1 = "location=/home/oracle/oradata/isima/archive" log_archive_dest_2 = "location=/home/oracle/temp" On trouvera les fichiers de "log" texte en cherchant les paramtres: SQL> show parameter dump SQL> NAME TYPE VALUE ----------- ------------------------------ background_core_dump string partial background_dump_dest string /u01/oracle/admin/V102/bdump core_dump_dest string /u01/oracle/admin/V102/cdump max_dump_file_size string UNLIMITED shadow_core_dump string partial user_dump_dest string /u01/oracle/admin/V102/udump Sachant que: - bdump: processus systmes - udump: processus "user": client - cdump: fautes de segmentations (bugs)
19
Suivi de scurit
Il est primordial de suivre les alertes propos de failles de scurit qui peuvent tre dtects dans l'ensemble des logiciels prsents sur le serveur. Heureusement, avec la plupart des distributions linux, dont Debian, le suivi de scurit est ralis pour tous les logiciels contenus dans la distribution. Il suffit de s'abonner la liste de diffusion debian-security-announce
[23]
chaque alerte de scurit, un mail est envoy tous les abonns pour signaler le problme. Si l'alerte de scurit concerne un logiciel prsent sur le serveur, il faut le mettre jour grce aux commandes : # apt-get update # apt-get upgrade Bien entendu, il faut que les logiciels installs soient des paquetages debian officiels, sinon cette politique de scurit est dfaillante. Oracle Debian n'effectue pas de suivi de scurit pour Oracle, car c'est un logiciel propritaire. Il faut donc mettre en place une procdure de scurit spcifique pour Oracle. Il est impratif, pour un systme en production, d'avoir un support valide auprs d'Oracle. Le site WEB de la base de connaissances est http:/ / metalink. oracle. com
Sauvegardes
Un serveur de base de donnes doit tre obligatoirement sauvegard car un serveur sera obligatoirement en panne un jour. Il est donc important de mettre en place une politique de sauvegardes et de les effectuer rgulirement. Une multitude de mthodes sont possibles pour sauvegarder un serveur. La plus courante est de possder un serveur de sauvegardes qui automatise et centralise toutes les sauvegardes de l'entreprise, puis de stocker sur bande magntique ou DVD-R. BackupPc est un logiciel trs utilis pour sauvegarder un ensemble d'ordinateurs, car il possde une interface web afin de lancer des sauvegardes ou de restaurer des fichiers.
Dcouverte de MySQL, PostgreSQL et Oracle MySQL chaud : La procdure recommande pour sauvegarder est : # mysqldump --tab=/emplacement/du/fichier.sql --opt nom_bdd Ceci gnre un fichier SQL de la base de donnes qui est facile compresser et sauvegarder. (Documentation dtaille [24]) froid : Sauvegarder le dossier o MySQL stocke ses bases de donnes. (Gnralement /var/lib/mysql) PostgreSQL Les sauvegardes peuvent se faire de trois manires: SQL DUMP: Faire un SQL DUMP signifie crer un fichier texte contenant une suite de requetes SQL permettant de pouvoir reconstruire toute la base de donnes. Dans PostgreSQL, nous disposons de la commande pg_dump qui s'utilise de la manire suivante. pg_dump dbname > outfile Une sauvegarde au niveau du systme de fichier: Cette sauvegarde se fait elle aussi a froid, et elle consiste simplement en un archivage de toutes les donnes de la base sauvegarder. On peut utiliser une commande comme celle ci: tar -cf backup.tar /usr/local/pgsql/data Une sauvegarde chaud: Les sauvegardes chaud se font alors que la base est en exploitation. Pour pouvoir faire des restaurations correctes, il est ncessaire que la base dispose d'un systme d'archivage WAL. Cela permet de faire du point-in-time recovery (PITR): On peut rcuprer l'tat de la base n'importe quel instant, du moment qu'il y ait eu un backup de fait Crer la sauvegarde de la base : Apres s'tre assur que l'archivage WAL fonctionne, loggez vous en administrateur, et lancez la commande : SELECT pg_start_backup('label'); (label corespond au nom que vous voulez donner a cette sauvegarde) Ensuite, effectuez une sauvegarde avec la commande cpio ou tar, comme dans la sauvergarde au niveau du systme de fichier. Et aprs cette derniere effectue, reloggez vous en administarteur et lancer la requete : SELECT pg_stop_backup();
20
Dcouverte de MySQL, PostgreSQL et Oracle Oracle Il existe plusieurs faons d'effectuer la sauvegarde d'une base de donnes. Sauvegarde froid Il s'agit de faire une sauvegarde de la base dans un tat donn. Formatage de texte sous SQL*Plus Set Set Set Set Set Set feedback off Linesize 200 Heading off Pagesize 0 Trimspool off Verify off
21
crire les donnes dans un script sql spool ~/backup.sql select 'host cp ' select 'host cp ' select 'host cp ' select 'host cp ' spool off Arrter la base shutdown immediate Effectuer la sauvegarde proprement parler @~/backup.sql Redmarrer la base startup Sauvegarde chaud Il s'agit de sauvegarder des donnes alors que la base est en marche. Il est ncessaire que le mode ARCHIVELOG soit activ. Il faut tout d'abord identifier le tablespace qui va tre sauvegard. Ensuite il faut mettre le tablespace hors ligne Exemple : ALTER TABLESPACE exple_tablespace OFFLINE NORMAL; Sauvegarder le fichier concern (un simple copier/coller) Enfin, remettre le tablespace en ligne Exemple : ALTER TABLESPACE exple_tablespace ONLINE NORMAL;
|| || || ||
name || ' ~/backup ' from v$datafile; member || ' ~/backup ' from v$logfile; name || ' ~/backup ' from v$controlfile; name || ' ~/backup ' from v$tempfile;
22
Restauration
MySQL Si la sauvegarde a t effectue chaud : # mysql < nom_du_fichier.sql Sinon : Arrter le serveur, et copier la sauvegarde dans le dossier de travail MySQL, puis dmarrer le serveur. PostgreSQL La restauration s'effectue de diffrente manire, suivante le type de suvegarde utilise. SQL DUMP Pour recuprer la base de donnes, il faut utiliser la commande suivante: psql dbname < infile Sauvegarde au niveau du systme de fichier Il suffit de lancer la commande: tar -xvf backup.tar /usr/local/pgsql/data point-in-time recovery (PITR), restauration d'une sauvegarde chaud Aprs avoir ferm la base de donnes et restaur le fichier de sauvegarde comme pour une sauvegarde a froid, crez un fichier de configuration pour la restauration dans le rpertoire data. Appelez ce fichier recovery.conf et dans ce fichier insrez la commande suivante : restore_command = 'cp /mnt/archivedir/%f %p' Oracle Si la sauvegarde a t effectue chaud, utiliser la commande 'recover' aprs avoir ventuellement remis des fichiers sauvegards RECOVER [AUTOMATIC] [FROM location] {[STANDBY] DATABASE [UNTIL options] [USING BACKUP CONTROLFILE] |TABLESPACE {tablespace [, tablespace ...]} |DATAFILE {datafilename [,datafilename ...]} |STANDBY {TABLESPACE tablespace [,tablespace ...] |DATAFILE datafilename [,datafilename ...]} UNTIL CONTROLFILE |LOGFILE filename |CONTINUE [DEFAULT] |CANCEL} [PARALLEL clause] Si la sauvegarde a t effectue froid, recopier tous les fichiers de la sauvegarde dans la base aprs l'avoir au pralable arrte.
23
Mise jour
Pour mettre jour le serveur de base de donnes, s'il est install en paquetage, il suffit de faire : # apt-get update # apt-get upgrade Sinon, bon courage :-)
Rfrences
[1] http:/ / dev. mysql. com/ doc/ refman/ 5. 0/ fr/ [2] http:/ / dev. mysql. com/ doc/ refman/ 5. 1/ en/ [3] http:/ / docs. postgresqlfr. org/ 8. 1/ [4] http:/ / www. oracle-10g. de/ oracle_10g_documentation/ [5] http:/ / www. mysql. com/ products/ tools/ administrator/ [6] http:/ / pgadmin. org/ [7] http:/ / www. oracle. com/ enterprise_manager/ index. html [8] http:/ / dev. mysql. com/ doc/ refman/ 5. 1/ en/ show. html [9] http:/ / dev. mysql. com/ doc/ refman/ 5. 1/ en/ user-account-management. html [10] http:/ / dev. mysql. com/ doc/ refman/ 5. 1/ en/ create-user. html [11] http:/ / dev. mysql. com/ doc/ refman/ 5. 1/ en/ drop-user. html [12] http:/ / docs. postgresqlfr. org/ 8-1/ sql-createrole. html [13] http:/ / docs. postgresqlfr. org/ 8-1/ sql-droprole. html [14] http:/ / docs. postgresqlfr. org/ 8. 0/ user-manag. html [15] http:/ / docs. postgresqlfr. org/ 8-1/ catalog-pg-database. html [16] http:/ / docs. postgresqlfr. org/ 8-1/ view-pg-tables. html [17] http:/ / docs. postgresqlfr. org/ 8. 1/ catalog-pg-depend. html [18] http:/ / gert. sos. be/ en/ projects/ mysqlar/ [19] http:/ / gert. sos. be/ demo/ mysqlar/ [20] http:/ / docs. postgresqlfr. org/ 8. 2/ catalog-pg-trigger. html [21] http:/ / dev. mysql. com/ doc/ refman/ 5. 1/ en/ stored-procedures. html [22] http:/ / dev. mysql. com/ doc/ refman/ 5. 1/ en/ log-files. html
24
25
Licence
Creative Commons Attribution-Share Alike 3.0 Unported http:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/