IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration PostgreSQL Discussion :

BD supprimée introuvable


Sujet :

Administration PostgreSQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Mai 2009
    Messages : 132
    Points : 43
    Points
    43
    Par défaut BD supprimée introuvable
    Bonjour,

    à la date du 07/06/2024 j'ai eu une surprise sur une base de donnée postgres en production, toutes les tables étaient supprimées

    heureusement, on avais une sauvegarde de J-1

    j'aimerais de l'aide pour voir quel user ou IP a effectuer ces suppressions

    Merci

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 266
    Points : 39 407
    Points
    39 407
    Billets dans le blog
    9
    Par défaut
    Bonjour,
    C'est dans le journal de transactions

  3. #3
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 766
    Points : 1 473
    Points
    1 473
    Par défaut
    Citation Envoyé par paco503 Voir le message
    j'ai eu une surprise sur une base de donnée postgres en production, toutes les tables étaient supprimées
    Quelques questions :
    1- Est-ce qu'il y a plusieurs bases "utilisateurs" dans cette instance, ou est-ce la seule ?
    2- Est-ce que toutes les tables étaient dans le schéma public ?
    3- Quels sont les comptes qui ont les GRANT nécessaires pour pouvoir faire ça ?
    Le savoir est une nourriture qui exige des efforts.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 766
    Points : 1 473
    Points
    1 473
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    C'est dans le journal de transactions
    Que les transactions soient dans le journal = pas de doute.
    Par contre :
    * Est-ce que dans le journal on a le compte à l'origine de la transaction ?
    * Comment "remonter" le journal pour lire en clair les opérations ?
    * Vu que
    **-- le demandeur précise qu'il a une sauvegarde de la veille, je crains qu'il ne soit pas en archivage continu.
    **-- la restauration a eu lieu, comment lire les WAL à froid (si les fichiers ont été récupérés avant restauration !)

    note : PITR = https://docs.postgresql.fr/10/continuous-archiving.html
    Le savoir est une nourriture qui exige des efforts.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 837
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 837
    Points : 52 927
    Points
    52 927
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Bonjour,
    C'est dans le journal de transactions
    Pas forcément, car la suppression a pu être physique : suppression du répertoire.... ou des fichiers. PostgerSQL ne protégeant pas les fichiers, même quand il est en marche, contrairement à SQL Server ou Oracle sous Windows....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 766
    Points : 1 473
    Points
    1 473
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Pas forcément, car la suppression a pu être physique : suppression du répertoire.... ou des fichiers.
    Bonjour Frédérick, soit je vais apprendre un truc, soit tu te mélanges les pinceaux.
    La description du problème est : "sur une base de donnée postgres en production, toutes les tables étaient supprimées"
    Question : quels sont les fichiers à supprimer pour obtenir strictement ce résultat : "1 base de donnée, toutes les tables" ?
    Ne confondrais tu pas avec MySQL ?
    Le savoir est une nourriture qui exige des efforts.

  7. #7
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 029
    Points : 23 751
    Points
    23 751
    Par défaut
    Dans le répertoire $PGDATA (celui qui stocke les données de l'instance PostgreSQL tel que spécifié dans le fichier de configuration), il y a un répertoire nommé "base" qui contient un sous-répertoire par base de données sur l'instance (dont le nom est l'OID de la base de données).
    Et dans ces répertoires, on trouve les fichiers contenant les données des tables (plus d'autres fichiers nécessaires au fonctionnement du moteur MVCC). Si on supprime ces fichiers physiquement, on supprime les tables...

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  8. #8
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 766
    Points : 1 473
    Points
    1 473
    Par défaut
    Citation Envoyé par ced Voir le message
    Dans le répertoire $PGDATA (celui qui stocke les données de l'instance PostgreSQL tel que spécifié dans le fichier de configuration), il y a un répertoire nommé "base" qui contient un sous-répertoire par base de données sur l'instance (dont le nom est l'OID de la base de données).
    Et dans ces répertoires, on trouve les fichiers contenant les données des tables (plus d'autres fichiers nécessaires au fonctionnement du moteur MVCC). Si on supprime ces fichiers physiquement, on supprime les tables...
    Merci Ced, tu m'as appris qqchose

    Ceci étant dit, pour répondre à la demande, on devrait trouver dans les fichiers de log (alert) des erreurs d'entrée-sortie, ce qui permet de préciser la date-heure de la manip. Correct ?
    et en remontant au Sudoer trouver qui était connecté à ce moment.

    Autre hypothèse, TERRAFORM.
    De manière assez stupide ce module "descend" jusqu'à la base ; supprimant les bases surnuméraires et recréant les bases à vide les bases supprimées, au lieu de s'arrêter à la conf.

    Ce serait bien que Paco503 nous donne plus de retours
    Le savoir est une nourriture qui exige des efforts.

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 837
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 837
    Points : 52 927
    Points
    52 927
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Michel.Priori Voir le message
    Bonjour Frédérick, soit je vais apprendre un truc, soit tu te mélanges les pinceaux.
    La description du problème est : "sur une base de donnée postgres en production, toutes les tables étaient supprimées"
    Question : quels sont les fichiers à supprimer pour obtenir strictement ce résultat : "1 base de donnée, toutes les tables" ?
    Ne confondrais tu pas avec MySQL ?
    pas du tout.....
    Contrauirement à Oracle, DB2 ou MS SQL Server qui gèrent directement le stockage de leurs bases de données, PostGreSQL ne fait que déléguer cela à l'OS. Il utilise donc la notion de répertoire comme lieu et place d'une base et y place de nombreux fichiers, au moins 1 (mais très souvent beaucoup plus) par table + les index.
    Ces fichiers étant désolidarisé de PostgreSQL il est alors très facile de les supprimer par un simple commande OS...
    Ce qui a pu t'arriver !
    Commence par voir si les tables systèmes de ta base "voient" lesdites tables utilisateur. Si ces requêtes te présentent les tables, mais que tu n'as plus les fichiers c'est que quelqu'un les a supprimé.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 837
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 837
    Points : 52 927
    Points
    52 927
    Billets dans le blog
    5
    Par défaut
    Utilise la requête suivante pour "voir" ou sont stockées les tables de tes bases :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    SELECT *, 
           CASE WHEN 
                pg_catalog.pg_tablespace_location(oid)
                   = '' AND spcname = 'pg_default' 
                  THEN (SELECT setting 
                        FROM   pg_catalog.pg_settings 
                        WHERE  name = 'data_directory')
                    || '/base'
                WHEN
                pg_catalog.pg_tablespace_location(oid)
                    = '' AND spcname = 'pg_global' 
                  THEN (SELECT setting 
                        FROM   pg_catalog.pg_settings 
                        WHERE  name = 'data_directory') 
                    || '/global' 
                ELSE 
                 pg_catalog.pg_tablespace_location(oid)
           END AS directory_location
    FROM   pg_catalog.pg_tablespace
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Solution pour supprimer dossier " introuvable "
    Par NIVERDU dans le forum Windows
    Réponses: 31
    Dernier message: 22/05/2018, 08h37
  2. Réponses: 4
    Dernier message: 25/11/2015, 10h11
  3. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  4. Supprimer un élément d'un tableau
    Par CaptainChoc dans le forum Langage
    Réponses: 15
    Dernier message: 23/12/2002, 23h14
  5. [VB6] Supprimer un enregistrement dans une ListView ??
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2002, 09h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo