Frage zum Thema Archivelogs und deren Sicherung

Hallo,

da heute mein automatischer Job versagt hat, der alle 12 Stunden die Archivelogs auf eine andere Platte schaufelt (die dann einmal die Woche wieder überschrieben werden, da ja auch 1mal die Woche ein Dump gezogen wird) keimt bei mir mal wieder die Frage auf wie man es besser machen kann.

hintergrund war, das ein Job auf der Datenbank es geschafft hat innerhalb von 7 Stunden 34GB Logs zu produzieren … da war die Platte dann einfach voll.

wie macht man das normalerweise ? ich habe einfach 12 Batchdateien die per Move- Befehl die dateien in 12 verschiedene Ordner wegschiebt. aber ich denke mal das das mal wieder total vorsinflutlich/billig/seltsam/ ist.

Die wichtigste Frage, wie richte ich ein das , was auch immer mir die Archivefiles wegsichert, mein programm erkennt das die Platte wieder mal zu 80-90% voll ist ?

kann man das eigentlich auch über SQL oder so abfragen wieviel Plattenkapazität man noch hat ?

Grüße

Christian

Hallo,

welche Datenbank benutzt du überhaupt?

da heute mein automatischer Job versagt hat, der alle 12
Stunden die Archivelogs auf eine andere Platte schaufelt (die
dann einmal die Woche wieder überschrieben werden, da ja auch
1mal die Woche ein Dump gezogen wird) keimt bei mir mal wieder
die Frage auf wie man es besser machen kann.

Meinst Du mit Dump ein Datenbank-Backup? Oder nur das Sichern der Festplatten?

hintergrund war, das ein Job auf der Datenbank es geschafft
hat innerhalb von 7 Stunden 34GB Logs zu produzieren … da
war die Platte dann einfach voll.

Man kann für manche Jobs das Logging abschalten. Aber: davor und danach sollte man ein Backup machen. Falls was schief geht.

wie macht man das normalerweise ? ich habe einfach 12
Batchdateien die per Move- Befehl die dateien in 12
verschiedene Ordner wegschiebt. aber ich denke mal das das mal
wieder total vorsinflutlich/billig/seltsam/ ist.

Du kannst mit einem Skript ja überprüfen, ob die dateien auch transferiert wurden.

Die wichtigste Frage, wie richte ich ein das , was auch immer
mir die Archivefiles wegsichert, mein programm erkennt das die
Platte wieder mal zu 80-90% voll ist ?

Auch hier würde ich ein Skript laufen lassen, das den Zustand der Platten testet.

kann man das eigentlich auch über SQL oder so abfragen wieviel
Plattenkapazität man noch hat ?

Geht auch, ist aber nicht ganz einfach. Die Datenbank muss halt externe Programmaufrufe unterstützen.

Es gibt professionelle Programme am Markt, die all das für Dich tun. Sind allerdings etwas teuer. Das alles selbst zu machen ist aber gar nicht so schwierig.

Grüße

Christian

Hallo,

welche Datenbank benutzt du überhaupt?

ups, oracle 8.1.7

Meinst Du mit Dump ein Datenbank-Backup? Oder nur das Sichern
der Festplatten?

ich meinte einen export der daten

Du kannst mit einem Skript ja überprüfen, ob die dateien auch
transferiert wurden.

das funktioniert schon, nur das ich halt entweder eine kürzere zeitspanne einbauen müßte oder halt was anderes benutzen… das ist ja hier meine frage ob´s eine schönere lösung gibt

kann man das eigentlich auch über SQL oder so abfragen wieviel
Plattenkapazität man noch hat ?

Geht auch, ist aber nicht ganz einfach. Die Datenbank muss
halt externe Programmaufrufe unterstützen.

Es gibt professionelle Programme am Markt, die all das für
Dich tun. Sind allerdings etwas teuer. Das alles selbst zu
machen ist aber gar nicht so schwierig.

welche programme wären das denn, es kann ja sein das wir die sogar in der firma irgendwo haben, nur weiß ich es nicht…

oder wie kann ich mir so überwachungstools selbst bauen ?

Hallo,

also wenn Du einen Export unter Oracle machst, dann kannst Du Dir das sichern der Logs eh sparen. Die helfen Dir nämlich nichts.

Oracle schreibt alle SQL in ein Log-Dateien. Davon gibt es einige. Nach maximal 2MB werden die Daten auf die Festplatte gesichert und der Bereich in der Log-Datei wieder freigegeben. Das ist einfach schneller, als immer auf die Festplatte warten zu müssen.

Die Online-Logs braucht man natürlich nie zu sichern.

Wenn der Archive-Log-Modus eingeschaltet ist, werden die Logs zusätzlich in eben diesen Archive Logs geschrieben, die auf dem letzten Backup aufsetzen.

Beim Wiederherstellen einer gecrashten Datenbank spielt man zuerst das Backup ein und lässt dann die Archive-Logs laufen.

Ein Export sichert den aktuellenStand der Datenbank. Du kannst sogar einen konsistenten Zustand sichern. Eignet sich sehr gut für Testdatenbanken und zum Upgrade einer Datenbank oder zum Portieren.
Aber ein Backup kann das nicht ersetzen.

Ich hoffe, ich war jetzt nicht zu ausführlich.

Ich muss mal nachschauen, welche Tools es am Markt gibt. Ich muss aber irgendwo auch die Lösung mit den Skripts haben. Das was Du brauchst hast Du aber ganz schnell selbst geschrieben. Das ist im Wesentlichen nur ein Command-Skript, das mit einem Scheduler/cron aufgerufen wird.

Gruß

Peter

Hallo, da scheint mir etwas ganz grundsätzlich durcheinder zu gehen!

Hallo,

da heute mein automatischer Job versagt hat, der alle 12
Stunden die Archivelogs auf eine andere Platte schaufelt (die
dann einmal die Woche wieder überschrieben werden, da ja auch
1mal die Woche ein Dump gezogen wird) keimt bei mir mal wieder
die Frage auf wie man es besser machen kann.

Eine Datenbank zu archivieren macht nur Sinn, wenn Du regelmäßig Backups fährst. Tust Du das nicht, kannst Du den Archivemode abschalten (würde ich allerdings nicht empfehlen. Wenn Du die Datenbank einmal die Woche dumpst, heißt das ohne Backup, Du verlierst im Zweifelsfall 1 Woche Arbeit. Bei einer so agilen Datenbank empfehle ich Dir ein tägliches Hot-Backup und ein Skript, dass die Archive älter als einen Tag löscht - die brauchst Du dann nämlich nicht mehr.
Auch einen dump empfehle ich täglich, das ist nämlich das einzige, dass Dir bei einem logischen Fehler hilft (Table versehentlich gedropt etc.).

hintergrund war, das ein Job auf der Datenbank es geschafft
hat innerhalb von 7 Stunden 34GB Logs zu produzieren … da
war die Platte dann einfach voll.

Archivelogs sollten immer in 2 Zielverzeichnissen laufen, so dass sie nicht bei dem Verlust des einzigen Zielpfades stehen bleibt - wenn Deine DB soviele Logs produziert, musst Du in den sauren Apfel beißen und Plattenplatz kaufen - oder Du definierst die anfälligen Tablespaces mit Inhalten nologging und passt die Skripte an, dass sie an den logs vorbei arbeiten (INSERT /*+ APPEND */), dann musst Du aber wissen, was Du tust und UNBEDINGT danach ein Backup über wenigstens die betroffenen TS fahren, sonst droht wiederum Datenverlust.

wie macht man das normalerweise ? ich habe einfach 12
Batchdateien die per Move- Befehl die dateien in 12
verschiedene Ordner wegschiebt. aber ich denke mal das das mal
wieder total vorsinflutlich/billig/seltsam/ ist.

Du kannst den Enterprise Manager einsetzen, skripten, DB-Jobs aufsetzen - was letztlich alles dasselbe ist, die Methode ist also prinzipiell ok.

Die wichtigste Frage, wie richte ich ein das , was auch immer
mir die Archivefiles wegsichert, mein programm erkennt das die
Platte wieder mal zu 80-90% voll ist ?

Welches Betriebssystem?

kann man das eigentlich auch über SQL oder so abfragen wieviel
Plattenkapazität man noch hat ?

Am problemlosesten geht das über den Enterprise Manager, mit dem Du beliebige Betriebssystemjobs aufsetzen kannst.
Du kannst aber auch mit ‚host cmd‘ Betriebssystemsbefehle absetzen,
also z. B. sqlplus> host dir liefert Dir den Inhalt des aktuellen Verzeichnisses unter sqlplus.
ACHTUNG! Das läuft nicht mit sqlplusw.exe sondern NUR mit sqlplus.exe!

Grüße

Christian

Grüße zurück
Achim