meta données pour cette page
  •  

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
certif:do:procedurereparationbase [2026/09/24 14:03] – [Piste de réparation d'une base cassée] nicolascertif:do:procedurereparationbase [2026/10/01 15:44] (Version actuelle) – nicolas
Ligne 1: Ligne 1:
-====== Procédure de réparation/optimisation des bases sqlites ====== +|{{:undo-2.svg?30|}}| [[certif:do:proceduresuivisauvegarde|Retour à Proc#130 - Sauvegardes : plan, suivi et restauration]]\\ [[certif:do#procedures|Retour au Dossier Organisationnel]]| 
-===== Etape 1 : mise de la base en maintenance ===== +|{{:connexe.jpg?40|}} **Sujets connexes**|[[certif:dat#inventaire_des_machines|DAT - Inventaire des machines]]| 
-Si un problème est détecté sur une base, il va falloir couper son accès.+|**Document technique** | Rattaché à Proc#130 - Sauvegardes : plan, suivi et restauration. Non soumis à approbation.| 
 + 
 +====== Réparation et optimisation des bases SQLite ====== 
 +===== Étape 1 : mise en maintenance de la base ===== 
 +Si un problème est détecté sur une base, il va falloir couper son accès.\\
 Il convient donc de prévenir les utilisateurs de la maintenance (téléphone, newsletters...) Il convient donc de prévenir les utilisateurs de la maintenance (téléphone, newsletters...)
-===== Etape 2 : sauvegarde =====+===== Étape 2 : sauvegarde =====
 On ne travaille **jamais** sur les bases directement. On ne travaille **jamais** sur les bases directement.
-  - Si la base est en cours d'utilisation, il faut la "démonter depuis l'assistance", ou peut aussi en profiter pour faire une version non cryptée (ne marche pas toujours)+  - Si la base est en cours d'utilisation, il faut la "démonter depuis l'assistance", on peut aussi en profiter pour faire une version non cryptée (ne marche pas toujours)
   - Dupliquez le fichier de la base   - Dupliquez le fichier de la base
   - Créer un dossier temporaire et y glisser les bases originales   - Créer un dossier temporaire et y glisser les bases originales
   - Rapatrier la base sur votre poste. Le travail directement sur le serveur est déconseillé, surtout sur les grosses bases (en plus cela fait un niveau de sauvegarde supplémentaire)   - Rapatrier la base sur votre poste. Le travail directement sur le serveur est déconseillé, surtout sur les grosses bases (en plus cela fait un niveau de sauvegarde supplémentaire)
-===== Etape 3 : décryptage =====+===== Étape 3 : décryptage =====
 Si vous n'aviez pas décrypté la base lors de l'étape de sauvegarde, vous pouvez le faire via l'utilitaire en récupérant la clef dans la base de cryptage. Si vous n'aviez pas décrypté la base lors de l'étape de sauvegarde, vous pouvez le faire via l'utilitaire en récupérant la clef dans la base de cryptage.
 **A partir de là on travaille sur la base décryptée** **A partir de là on travaille sur la base décryptée**
-===== Etape 4 : Commande test =====+===== Étape 4 : Commande test =====
 Dans un premier temps on travaille de préférence avec **SynDBExplorer**\\ Dans un premier temps on travaille de préférence avec **SynDBExplorer**\\
 |Lancer la commande|<code>PRAGMA integrity_check;</code>|Le traitement peut être long sur de grosses bases\\ La réponse "correcte" est **OK**\\ Dans le cas contraire on peut tenter une commande de réindexation et réessayer| |Lancer la commande|<code>PRAGMA integrity_check;</code>|Le traitement peut être long sur de grosses bases\\ La réponse "correcte" est **OK**\\ Dans le cas contraire on peut tenter une commande de réindexation et réessayer|
Ligne 19: Ligne 23:
 === Créer une sauvegarde sql puis restaurer === === Créer une sauvegarde sql puis restaurer ===
 == Sauvegarde == == Sauvegarde ==
-Utilisez l'utilitaire sqlite3 en ligne de commande. La commande .recover est disponible depuis la version 3.29.0 et est plus robuste que .dump.+Utiliser l’utilitaire sqlite3 en ligne de commande. La commande .recover est disponible depuis la version 3.29.0 et est plus robuste que .dump.
 Si .recover n'est pas disponible, utilisez l'ancienne méthode : Si .recover n'est pas disponible, utilisez l'ancienne méthode :
 <code>sqlite3 base_corrompue.s3dbBrut ".dump" > reparation.sql </code> <code>sqlite3 base_corrompue.s3dbBrut ".dump" > reparation.sql </code>
Ligne 27: Ligne 31:
 NB : il faut enlever le startTransaction et le commit à la fin NB : il faut enlever le startTransaction et le commit à la fin
 == autre piste : == == autre piste : ==
-⚠️ Si base_corrompue.s3db est réellement corrompue, .dump peut échouer ou produire un dump incomplet. Pour tenter de récupérer un maximum de données, tu peux aussi utiliser+⚠️ Si base_corrompue.s3db est réellement corrompue, .dump peut échouer ou produire un dump incomplet. Pour tenter de récupérer un maximum de données, on peut aussi utiliser
 <code> <code>
 sqlite3 base_corrompue.s3db ".recover" > reparation.sql sqlite3 base_corrompue.s3db ".recover" > reparation.sql
Ligne 33: Ligne 37:
 </code> </code>
 .recover est généralement plus adapté à une base endommagée. .recover est généralement plus adapté à une base endommagée.
-===== Etape 5 : Optimisation de la base =====+===== Étape 5 : Optimisation de la base =====
 ==== Fichier à effacer ==== ==== Fichier à effacer ====
 |On peut lancer sans danger la commande|<code>Drop Table TableDeleted;</code>| |On peut lancer sans danger la commande|<code>Drop Table TableDeleted;</code>|
 |On ne peut pas effacer la piste d'audit, mais on peut|1. L'enregistrer à côté de la base\\ Pour ce faire, enregistrer la piste en entier au format csv\\ Repérer l'ID d'une piste ayant disons 3 ans\\ Effacer <code>Delete from PisteAudit Where ID<?????</code>\\ Il est conseillé d'utiliser SynDbExplorer même si on regarde l'ID dans DBBrowser\\ Finir par un REINDEX puis un VACUUM| |On ne peut pas effacer la piste d'audit, mais on peut|1. L'enregistrer à côté de la base\\ Pour ce faire, enregistrer la piste en entier au format csv\\ Repérer l'ID d'une piste ayant disons 3 ans\\ Effacer <code>Delete from PisteAudit Where ID<?????</code>\\ Il est conseillé d'utiliser SynDbExplorer même si on regarde l'ID dans DBBrowser\\ Finir par un REINDEX puis un VACUUM|
-===== Etape 6 : Nettoyage =====+===== Étape 6 : Nettoyage =====
 Après avoir remis la base en ligne, on ne laisse que le fichier de la piste d'audit avec la date de sauvegarde.\\ Après avoir remis la base en ligne, on ne laisse que le fichier de la piste d'audit avec la date de sauvegarde.\\
 On efface les autres fichiers afin de ne pas amplifier les sauvegardes.\\ On efface les autres fichiers afin de ne pas amplifier les sauvegardes.\\
 On garde sur son poste les versions de travail quelques jours en attente de vérification du client On garde sur son poste les versions de travail quelques jours en attente de vérification du client
-===== Etape 7 : Information client =====+===== Étape 7 : Information client =====
 On indique au client : On indique au client :
   - les opérations faites   - les opérations faites
   - que la base est de nouveau en accès   - que la base est de nouveau en accès
   - on lui demande de tester que tout est OK   - on lui demande de tester que tout est OK