band Posted August 3, 2011 Report Share Posted August 3, 2011 Καλημέρα. Έχω 2 sql server 2005 standard edition και έναν sql express 2008. Οι δύο 2005 έχουν μια database σε mirror και ο 2008 είναι ο witness. Το mirror δουλεύει σωστά. H database είναι σε full recovery mode. Το πρόβλημα είναι ότι το log file μεγαλώνει μέσα σε μια εβδομάδα και γεμίζει ο δίσκος. Όταν πάω από το management studio στο tasks-shrink-files και επιλέγω το log file και τη δεύτερη επιλογή στο shrink action, το log δε μικραίνει. <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> Υπάρχει κάποιος τρόπος να γίνει αυτό με scheduled task? Ευχαριστώ Link to comment Share on other sites More sharing options...
antonch Posted August 3, 2011 Report Share Posted August 3, 2011 Η μαγική ενέργεια είναι transaction log backup τότε και μόνο τότε καθαρίζει εσωτερικά το log και φυσικά μετα απο αυτο μπορείς να κανείς και shrink αυτο αν και δεν χρειάζεται εφόσον παίρνεις καθημερινά και τακτικά log backup Link to comment Share on other sites More sharing options...
band Posted August 3, 2011 Author Report Share Posted August 3, 2011 καλησπέρα. έκανα backup το transaction log, αλλά δε μειώθηκε το μέγεθος. ούτε με shrink. τι άλλο μπορώ να δοκιμάσω? Ευχαριστώ Link to comment Share on other sites More sharing options...
band Posted August 3, 2011 Author Report Share Posted August 3, 2011 διαβάζοντας είδα το εξής. ότι για να γίνει το shrink πρέπει η βάση να είναι σε simple recovery mode. όμως για να δουλέψει το mirror πρέπει να είναι σε full. οπότε πως θα κάνω shrink ενώ είναι σε full recovery mode? με το backup το μέγεθος του αρχείου δε μειώθηκε. Link to comment Share on other sites More sharing options...
antonch Posted August 3, 2011 Report Share Posted August 3, 2011 Να ξεκαθαρίσουμε πρώτα απο όλα ότι όταν λέμε στην γλώσσα του SQL server ότι γίνεται truncate το log σε καμμιά περίπτωση δεν εννοούμε ότι μικραίνει σαν μέγεθος το φυσικό αρχείο στο δίσκο. Αν θα πας στο sqlschool.gr και ψάξεις για το web cast με τίτλο ο θαυμαστος κόσμος του transaction log δεις τι ακριβώς γίνεται. Το άλλο που πρέπει να γίνει και αυτο αντιληπτό είναι ότι το database mirroring παίζει μόνο με full recovery model.Οποιαδήποτε αλλαγή κανείς σε αυτό αυτη την στιγμή θα έχει σαν αποτέλεσμα να σταματήσει το mirroring. Aρα δεν το πειραζουμε Τώρα όσον αφορά το γιατί ενώ έκανες backup το log και μετα έκανες shrink και δεν έγινε τίποτα, απλά επεσες πιθανότητα στην περίπτωση που ήταν με active transaction το τελευταίο virtual log του transaction log. Σε αυτή την περίπτωση η Μονή λύση είναι να κάνουμε την διαδικασία ξανά απο την αρχή δλδ backup log και shrink μετα. Link to comment Share on other sites More sharing options...
band Posted August 4, 2011 Author Report Share Posted August 4, 2011 καλησπέρα. άρα αν κατάλαβα καλά με backup του transaction log και shrink αμέσως μετά, μικραίνει και το μέγεθος του αρχείου, εκτός πχ της περίπτωσης που είπατε. οπότε αν το βάλω σε ένα scheduled task, δε θα αντιμετωπίσω το πρόβλημα του να γεμίζει ο δίσκος. Σωστά? Link to comment Share on other sites More sharing options...
antonch Posted August 4, 2011 Report Share Posted August 4, 2011 Σωστά. Αλλά δεν χρειάζεται να κανείς συνέχεια shrink.Πάρε το log backup κανε shrink και μετα βάλε schedule να παίρνεις log backup κάθε μια ώρα για παράδειγμα. Έτσι θα γίνετε πάντα επαναχρησιμοποιηση του καθαρισμενου μέρους του log Link to comment Share on other sites More sharing options...
band Posted August 4, 2011 Author Report Share Posted August 4, 2011 Καλημέρα. έκανα και κάποιες δοκιμές σε βάση που δεν είναι mirror αλλά είναι σε full recovery model. κάνοντας backup το transaction log και μετά shrink, το μέγεθος του αρχείου στο δίσκο, δε μειώνεται. Υπάρχει κάποιος τρόπος? Ευχαριστώ Link to comment Share on other sites More sharing options...
antonch Posted August 4, 2011 Report Share Posted August 4, 2011 Παράξενο... Για δώσε dbcc sqlperf(logspace) όπου με αυτη θα δεις πόσο χρησιμοποιείται το log.Απο εκεί και πέρα θα πρέπει να κάνει dbcc shrinkfile είτε με το command είτε απο το γραφικό περιβάλλον. Ξαναλέω ότι σε περιπτώσεις που είναι ενεργό το τελευταίο virtual log θα χρειαστεί να πάρεις περισσότερα απο ένα log backups... Link to comment Share on other sites More sharing options...
band Posted August 4, 2011 Author Report Share Posted August 4, 2011 τρέχοντας το query λέει Log Size (MB) 2379,367 και Log Space Used(%) 2,13803. Στη βάση που κάνω τις δοκιμές τώρα δεν είναι συνδεδεμένος κάνενας χρήστης, δεν χρησιμοποιείται, δεν κάνει κάτι. οπότε δε ξέρω αν αν ισχύει αυτό με το virtual log που λέτε. να κάνω συνεχόμενα backup και shrink δηλαδή μέχρι να μειωθεί το μέγεθος στο δίσκο? πόσα μπορεί να χρειαστεί σε μια βάση που δεν κάνει τίποτα? Link to comment Share on other sites More sharing options...
antonch Posted August 4, 2011 Report Share Posted August 4, 2011 Ουσιαστικά είναι άδειο το log. Το ερώτημα μου τώρα είναι πως κανείς shrink το log. Μπορείς να μου δώσεις την εντολή η να μου περιγράψεις την διαδικασία που κανείς;. Βέβαια υπάρχει και ο εύκολος τρόπος για να κανείς shrink σε αυτη την βάση που κανείς πειράματα , να γυρίσεις σε simple recovery model, αλλα δεν παίζει αυτο στην άλλη που έχει mirror γιατί θα το χαλάσει. Περιμένω να μου πεις την εντολή ή την διαδικασία που κανείς shrink Link to comment Share on other sites More sharing options...
band Posted August 4, 2011 Author Report Share Posted August 4, 2011 το shrink το κάνω από το magement studio. Δεξί κλικ στη βάση,tasks,shrink, files. Στο file type βάζω Log. Στο shrink action δοκίμασα με το πρώτο (release unused space) και το δεύτερο (Reorganize pages........) βάζοντας 1ΜΒ Link to comment Share on other sites More sharing options...
antonch Posted August 4, 2011 Report Share Posted August 4, 2011 http://msdn.microsoft.com/en-us/library/ms345414.aspx ρίξε μια ματιά σε αυτο και τρέξει το query που λέει για να δούμε τι τελικά φταίει Link to comment Share on other sites More sharing options...
band Posted August 5, 2011 Author Report Share Posted August 5, 2011 Καλημέρα. Το log_reuse_wait έβγαλε 0 (οπότε το log_reuse_wait_desc NOTHING) Link to comment Share on other sites More sharing options...
band Posted August 5, 2011 Author Report Share Posted August 5, 2011 Χμμμμ, τελικά δούλεψε. το έβαλα να κάνει διαδοχικά backup κάθε 2 λεπτά το transaction log και μετά από 6-7 το έκανα shrink και μειώθηκε. Δεν είχα καταλάβει ότι θέλει τόσα πολλά backup για να γίνει επιτυχώς το shrink. Ευχαριστώ πολύ!!!!!! Link to comment Share on other sites More sharing options...
ckotsidimos Posted August 5, 2011 Report Share Posted August 5, 2011 Αυτό είναι ψιλο bug. Πρέπει να κάνει 2 backup και μετά shrink το log στον 2005. Βασικά βρες αν υπάρχει και κάποιος άλλος λόγος πέραν της έλλειψης backpup που μεγαλώνει το log. Link to comment Share on other sites More sharing options...
skok Posted August 5, 2011 Report Share Posted August 5, 2011 Δεν υπάρχει κανένα Bug Απλά είναι Active transaction στο log . Θα πρότεινα το Shrink να το ενεργοποιήσεις σε Scheduled Task σε βραδυνή που δεν έχει active transaction η DB. Ο Αντώνης το είχε τονίσει αυτό από την αρχή : Τώρα όσον αφορά το γιατί ενώ έκανες backup το log και μετα έκανες shrink και δεν έγινε τίποτα, απλά επεσες πιθανότητα στην περίπτωση που ήταν με active transaction το τελευταίο virtual log του transaction log. Σε αυτή την περίπτωση η Μονή λύση είναι να κάνουμε την διαδικασία ξανά απο την αρχή δλδ backup log και shrink μετα. http://autoexec.gr/forums/permalink/35259/35230/ShowThread.aspx#35230 Link to comment Share on other sites More sharing options...
skok Posted August 5, 2011 Report Share Posted August 5, 2011 Το log δεν γίνετε Shrink μετά από Backup γιατί υπάρχουν open transactions Kαπου σε Sql log θα έχεις error Cannot shrink log file because all logical log files are in use Επίσης χρησιμοποίησε το DBCC OPENTRAN http://msdn.microsoft.com/en-us/library/ms182792(v=sql.90).aspx για να δεις το Open transactions. Link to comment Share on other sites More sharing options...
antonch Posted August 5, 2011 Report Share Posted August 5, 2011 Δεν υπάρχει κανένα bug, έτσι δουλεύει η shrink. Δηλαδή με απλά ελληνικά για να δουλέψει πρέπει ο ελεύθερος χώρος να είναι στο τέλος του αρχείου για να μπορέσει να το κάνει shrink. To λέω εδώ και χρόνια αυτό αλλά δεν με πιστεύται έτσι προς επίρρωση των όσων λέω εδώ και χρόνια δείτε και αυτό http://jmkehayias.blogspot.com/2008/11/database-transaction-log-part-2-how.html και αυτό http://technet.microsoft.com/en-us/library/ms189085.aspx. Επίσης χρόνια φωνάζω ότι εφόσον έχετε βάση με full recovery model απαραίτητα πρέπει να παίρνουμε σε τακτά χρονικά διαστήματα transaction log backup δείτε πόσες φορές το έχω πει το έχω γράψει αυτό. http://sqlschoolgr.wordpress.com/2010/01/24/why-truncate_log-discontinued-answer-to-mr-kladakis/ http://sqlschoolgr.wordpress.com/2010/03/09/%cf%8c-%cf%8c-transaction-log/ http://sqlschoolgr.wordpress.com/2010/11/03/%ce%ac-transaction-log-%ce%ad-%cf%8e-%ce%ad/ http://sqlschoolgr.wordpress.com/2010/03/14/lesson-backuprestore-in-sql-server-2008/ Τέλος όσον αφορά την shrink αφού δεν θέλετε να με ακούτε ότι δεν κάνουμε shrink (εξαίρεση σε ειδικές περιπτώσεις είναι το log) ακούστε τουλάχιστον την άποψη κάποιου που έφτιαξε τον SQL Server. http://www.sqlskills.com/BLOGS/PAUL/post/A-SQL-Server-DBA-myth-a-day-(930)-data-file-shrink-does-not-affect-performance.aspx http://www.sqlskills.com/BLOGS/PAUL/post/Why-you-should-not-shrink-your-data-files.aspx Link to comment Share on other sites More sharing options...
Recommended Posts