Bonjour,
Je cherche un moyen de purger la base log du serveur de réplication sybase, sachant que les diverses commandes du type :
dump tran with no log ou dump tran with truncate only ne fonctionnent pas.
C'est une version 12.5
Merci.
Bonjour,
Je cherche un moyen de purger la base log du serveur de réplication sybase, sachant que les diverses commandes du type :
dump tran with no log ou dump tran with truncate only ne fonctionnent pas.
C'est une version 12.5
Merci.
Si la log ne se purge pas c'est vraisemblablement qu'une transaction est encore ouverte.
On peut voir l'état avec:
ce qui donne quelque chose comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select * from master..syslogshold
On notera la transaction ouverte du SPID 111.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 dbid reserved spid page xactid masterxactid starttime name xloid ------ ----------- ------ ----------- ---------------- ---------------- ------------------- ------------------------------------------------------------------- ----------- 8 0 0 198787 0x000000000000 0x000000000000 Jul 27 2006 12:54AM $replication_truncation_point 0 4 0 111 2629258 0x00281e8a0000 0x000000000000 Jul 27 2006 11:03AM $upd 222 4 0 0 2629190 0x000000000000 0x000000000000 Jul 27 2006 11:03AM $replication_truncation_point 0
Si la replication est enclenchée il peut aussi y avoir une très grande opération (p.ex. un UPDATE avec une clause WHERE peu restrictive). Cette opération est exécutée comme une seule transaction, mais doit être répliquée ligne par ligne (cad un UPDATE pour chaque ligne modifiée dans la base source). Ce genre de chose peu s'exécuter très lentement et faire en sorte que la log de la base source se remplisse...
Michael
Michael Peppler
Membre de TeamSybase - www.teamsybase.com
"A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson
Si vous ne souhaitez pas répliquer le contenu du log (par exemple si vous avez loadé votre primary database sur un ASE ne faisant par partie d'un Sytème de réplication), il faut supprimer le second point de troncature du log (celui du Replication Server).
Attention, vous en pourrez plus répliquer les données contenues dans le log.
dbcc settrunc("ltm","ignore") permet de désactiver le second point de troncature.
Je rajouterai même :
- dbcc gettrunc() pour voir si le 2e point de troncature existe (sinon l'adresse retournée est 0)
- Il y a toujours moyen de remettre le pointeur avec un dbcc settrunc('ltm','valid')... mais là, il faut savoir ou l'on met ses pieds
Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2
N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD
Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !
On peut aussi , mais on pert une transaction, faire un truncate de la table rslastcommit ....
Bourrin peut être mais efficasse ...![]()
"dbcc gettrunc" sans les paranthèses
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager