Toad for Oracle, Mysql, Sql server

Το καλύτερο εργαλείο για την διαχείριση των βάσεων. Πλέον κάτω από την ομπρέλα της Dell.

Ανοίξτε λογαριασμό στο site υποστήριξης της ORACLE(MOS-Metalink).

Η Oracle προσφέρει support και χρήσιμες πληροφορίες σε προβλήματα και bugs μέσω του συγκεκριμένου site.

Μπορείτε από το eDelivery της Oracle να κατεβάσετε Μysql και Oracle λογισμικό

Mysql μια open source βάση με support πλέον επι πληρωμή, από την Oracle.

Το support της microsoft για όλα τα προιόντα της

Χρήσιμες πληροφορίες-guides που αφορούν τόσο προβλήματα όσο και τρόπους εγκατάστασης του database λογισμικού.

Oracle Documentation

Εδώ υπάρχει το επίσημο documentation της Oracle.

Εμφάνιση αναρτήσεων με ετικέτα Archives. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα Archives. Εμφάνιση όλων των αναρτήσεων

Δευτέρα 8 Φεβρουαρίου 2016

Archivelog mode - Ενεργοποιηση/Απενεργοποιηση


Στο άρθρο αυτό θα μιλήσουμε για το πως ενεργοποιείται και απενεργοποιείται το archive log mode σε μια βάση δεδομένων Oracle. Όταν ζητηθεί η χρειαστεί μια βάση να μπει σε ARCHIVELOG mode τότε πρέπει αρχικά και πριν από όλα να δούμε αν έχει ενεργοποιηθεί η επιλογή για flash back queries, δηλαδή η επιλογή του flash recovery area. Αυτό μπορούμε πολύ εύκολα να το διαπιστώσουμε με την παρακάτω εντολή.

SQL>SELECT * FROM v$recovery_file_dest ;

Αν η εντολή αυτή δεν επιστρέψει τίποτα τότε δεν έχει ενεργοποιηθεί το flash recovery area και μπορούμε να προχωρήσουμε στην διαδικασία που περιγράφεται πιο κάτω για την ενεργοποίηση της βάσης σε ARCHIVELOG mode. Αν είναι ενεργοποιημένο πάμε απευθείας στην εντολή που σηματοδοτείται με (*).

Κάθε βάση δεδομένων που περιέχει σημαντικά (παραγωγικά) δεδομένα θα πρέπει να τρέχει σε ARCHIVELOG mode. Το να τρέχει σε ARCHIVELOG mode δίνει την δυνατότητα να παίρνουμε hot backups και να εκτελούμε επαναφορά της βάσης σε συγκεκριμένη χρονική στιγμή (πχ επαναφορά βάσης πριν από corruption δίσκου).

Για να βάλουμε μια βάση σε ARCHIVELOG mode εκτελούμε με την σειρά τα παρακάτω:

SQL>alter system set log_archive_dest_1='location=/u01/oradata/MYSID/archive/ mandatory' scope=spfile;

SQL>alter system set log_archive_format='redo<ORACLESID>_%r_%T_%S.arc' scope=spfile;
SQL>shutdown immediate; (*)
SQL>startup mount;
SQL>archive log start;


(ΠΡΟΣΟΧΗ Η παραπάνω εντολή δεν πρέπει να τρέξει σε εκδόσεις 11G,12c )

SQL>alter database archivelog; (**)
SQL>alter database open;
SQL>alter system switch logfile;


Σε όλες τις παραπάνω εντολές πρέπει να καθοριστούν τα μονοπάτια και το SID της βάσης (που φαίνονται με bold) να ταιριάζουν στο περιβάλλον μας. 

Υπάρχουν φορές που το να είναι η βάση σε ARCHIVELOG mode δεν είναι απαραίτητο, για παράδειγμα σε ένα περιβάλλον ανάπτυξης. Όταν λοιπόν απαιτηθεί μια βάση να μπει σε NOARCHIVELOG mode πρέπει να είμαστε ιδιαίτερα προσεκτικοί γιατί όταν εμφανιστεί μια αποτυχία στον δίσκο ενώ η βάση είναι σε NOARCHIVELOG mode, το μόνο που μπορεί να γίνει είναι restore της βάσης δεδομένων στο σημείο εκείνο για το οποίο έχουμε το πιο πρόσφατο full database backup. Για να κάνουμε εναλλαγή μεταξύ ARCHIVELOG και NOARCHIVELOG mode, επαναλαμβάνουμε τα παραπάνω βήματα ορίζοντας στην κατάλληλη εντολή (που σηματοδοτείται με (**)) όπου ARCHIVELOG ,NOARCHIVELOG: 

SQL>alter database noarchivelog;

Αφού τελειώσει η διαδικασία και για να ελέγξουμε ότι όλα πήγαν καλά μπορούμε να εκτελέσουμε την παρακάτω εντολή η οποία μας δείχνει σε τι Mode τρέχει η βάση!!

SQL>select log_mode from v$database;

Πολύ σημαντική σημείωση:

Δυναμική Μεταβλητή ARCHIVE_LAG_TARGET ( Ορίζεις σε πόση ώρα θα βγάζει archives η βάση, είτε γεμίσει είτε όχι το redo log, η τιμή της ορίζεται σε δευτερόλεπτα βάζουμε συνήθως 15 λεπτά => 900)

SQL>alter system set archive_lag_target=900 scope=both;



Τετάρτη 18 Νοεμβρίου 2015

Oracle Database - Cold Backup - Restore - Recovery




Στο άρθρο αυτό θα περιγράψουμε το Cold Backup-Restore, όπου απαιτείται για να είναι σωστό το backup η βάση να κατέβει (να γίνει δηλαδή shutdown). Αφού η βάση κατέβει είμαστε πλέον σε θέση να αντιγράψουμε όλο τον φάκελο με τα dbfiles της βάσης σε οποιοδήποτε μέσο επιθυμούμε. Αυτό το είδος του backup έχει down time ανάλογο με το μέγεθος της βάσης, αφού όσο διαρκεί το backup η βάση θα πρέπει να παραμείνει ανενεργή. Ενώ το cold backup είναι μια πολύ εύκολη διαδικασία το restore μπορεί να εξελιχθεί σε μια πιο περίπλοκη υπόθεση. Αν θέλουμε να επαναφέρουμε το backup στο ίδιο το μηχάνημα και στην ίδια τοποθεσία από όπου το πήραμε τα πράγματα είναι πολύ απλά, κάνουμε restore-copy από το backup τα dbfiles στην αρχική τοποθεσία. (πριν από αυτό σβήνουμε τα παλιά αρχεία). Τα πράγματα γίνονται πιο περίπλοκα αν θέλουμε να επαναφέρουμε την βάση σε συγκεκριμένη χρονική στιγμή, πριν ας πούμε από ένα corruption. Για να είναι δυνατόν αυτό η βάση πρέπει να είναι σε archive log mode και να γίνει χρήση τόσο του cold backup των datafiles όσο και των archives. 

Η διαδικασία είναι να κάνουμε πρώτα restore τόσο το τελευταίο cold backup της βάσης όσο και τα archives που έχουν παραχθεί μετά από αυτό. Θα πρέπει να γίνουν restore τα controlfiles, τα datafiles και τα archives στους αντίστοιχους φακέλους. Τα redo logs files θα πρέπει να σβηστούνε επειδή θα ξανά δημιουργηθούν με την εκτέλεση της εντολής resetlogs μετά την εφαρμογή των αλλαγών (archives) πάνω στην βάση. Επομένως μετά τις παραπάνω ενέργειες εκτελούμε με την σειρά τα παρακάτω:
         
Συνδεόμαστε στην βάση με sysdba λογαριασμό

CMD>sqlplus ‘sys/<password> as sysdba’
       
Ανεβάζουμε την βάση σε mount κατάσταση.

SQL> startup mount;

Εφαρμόζουμε όλες τις αλλαγές που βρίσκονται στα archives που έχουμε στον default Archive Destination (στο τέλος γράφουμε cancel για να τερματιστεί η συγκεκριμένη διαδικασία). Η παρακάτω εντολή θα εφαρμόσει όλες τις αλλαγές από όλα τα archives που υπάρχουν στο default archive destination.

SQL> recover automatic database using backup controlfile until cancel;

Σε περίπτωση που θέλουμε να εφαρμόσουμε αλλαγές μέχρι κάποια συγκεκριμένη χρονική στιγμή τρέχουμε αντίστοιχα την παρακάτω εντολή και όχι την προηγούμενη.

SQL> recover automatic database using backup controlfile until time 01-JAN;

ή

SQL> recover automatic database using backup controlfile until time '2009-10-21:06:00:00';

Ελέγχουμε την κατάσταση των datafiles και επιβεβαιώνουμε ότι βρίσκονται στην
επιθυμητή χρονική στιγμή

SQL>select status, checkpoint_change#,to_char(checkpoint_time, 'dd-mm-yyyy  hh24:mi:ss') as checkpoint_time,count(*) from v$datafile_header
group by status, checkpoint_change#, checkpoint_time
order by status, checkpoint_change#, checkpoint_time;

Ελέγχουμε αν υπάρχουν ασαφή-fuzzy αρχεία με το παρακάτω query. Αν επιστρέψει
κάτι ανάμεσα στο 0 και 8192 τότε είμαστε οκ.

SQL>select fhthr  thread, fhrba_seq sequence,fhscn scn, fhsta status,
count(*)from x$kcvfh
group by fhthr,fhrba_seq,fhscn,fhsta;

Τέλος είμαστε έτοιμοι να ανοίξουμε την βάση κάνοντας reset τα logs(η αρίθμησή τους ξεκινάει από την αρχή).

SQL>alter database open resetlogs;

Καλό είναι στην συνέχεια η βάση να κατέβει και να παρθεί ξανά backup.