Wildix PBX - Riparare database CDR SQLite danneggiato

Wildix - Riparare database CDR SQLite

In caso di errore database per uno o più utenti CDR (es. disk image is malformed ) 

 
Si può procedere come segue, alla riparazione o alla ricreazione del db SQLite 

  

1) Spegnere le funzionalità CDR lato pbx 

  


 (togliere la spunta a fianco "abilitato" e premere "salva"


2) Creare backup del database danneggiato
 
 

Scaricare il file da ssh (es. WinSCP) e metterlo sul pc per evitare danni.  
 
Una volta scaricato il db, è possibile verificare che i dati siano quelli giusti con la app gratuita DB Browser 

Ovviamente, il programma riscontrerà degli errori in consultazione, ciò confermerebbe i disservizi riscontrati (ad esempio, cancellando i record che fanno parte della zona danneggiata). 

  

3) Analizzare dove sono localizzati gli errori nel db 
 

Da terminale del pbx, abilitare i permessi di root: 
 
su 
 
(la password è: wildix)  
 
e raggiungere la cartella contenente il database:  

cd /mnt/cdr/ 

  

Effettuare un check integrità con sqlite3: 

sqlite3 cdrdb "pragma integrity_check" 

  

Il sistema elencherà degli errori, con le righe corrispondenti alla posizione.  

  

4) Tentare la riparazione automatica 
 

sqlite3 può effettuare una riparazione automatica del database coi seguenti comandi: 

sqlite3 cdrdb "reindex nodes" 

E poi  

sqlite3 cdrdb "reindex pristine" 

  

In caso i comandi non facciano effetto (es. Errorunable to identify the object to be reindexed)... 

Si può procedere come segue... 

  

5) Esportare il contenuto del database in un file di testo, e reimportarlo in un nuovo database 

  

Aprire il database da riga di comando: 

sqlite3 cdrdb 

  

e inserire i seguenti comandi per esportare su file di testo:  

sqlite> .mode insert 

(premere invio) 

sqlite> .output scaricatutto.sql 

(premere invio) 

sqlite> .dump 

(premere invio e attendere l'esportazione) 

sqlite> .exit 

(premere invio) 

  

Ora, va rinonimato il vecchio database: 

mv cdrdb cdrdbcorrotto 

  

E reimportiamo i dati esportati in un nuovo database con lo stesso nome dell'originale: 

sqlite3 cdrdb 

sqlite> .read scaricatutto.sql 

(premere invio e attendere l'importazione) 

sqlite> .exit  

(premere invio) 

  

6) Riabilitare il database lato pbx 

  

Dare permessi completi di lettura e scrittura sul nuovo database appena ricreato. 

chmod 777 cdrdb 
 
In caso i file salvati siano molti, si può fare spazio buttando via il vecchio database corrotto, e il file di testo sql usato per l'esportazione sul nuovo db 
 
rm cdrdbcorrotto 
rm scaricatutto.sql 

  

7) Verificare il funzionamento del cdr 
 
 Riaccendere le funzionalità cdr sqlite lato pbx , reinserendo la spunta e premendo "salva". 
 


Entrare da collaboration e verificare il funzionamento.