Re: Backup na Oraclu (dlouhé)

Vladimír Náprstek vladimir.naprstek na scplyn.cz
Pátek Prosinec 14 07:43:49 CET 2001


zdravím,
k přenosu db můžete přistoupit různě, podle toho, je-li zdrojová a cílová DB stejná nebo ne (stejná znamená stejná verze a stejný OS). Pokud není stejná, nezbývá Vám než export a import:
- pokud můžete zdrojovou DB odstavit, přepněte ji do restriktivního módu (přihlásit se mohou jen ti, kteří mají na to právo a ještě jen pro čtení)
  [ALTER SYSTEM ENABLE RESTRICTED SESSION]
- udělejte plný export
  [exp system/heslo FILE=soubor_exportu LOG=logovaci_soubor FULL=Y COMPRESS=Y DIRECT=Y]
  Ale připravte se na to, že to potrvá a že výsledný soubor bude dost velký (podle Vaší zdrojové DB)
- zdrojovou DB přepněte zpět do "normálního režimu" 
  [ALTER SYSTEM DIABLE RESTRICTED SESSION]

Pozn. Pokud databázi nemůžete odstavit, nepřepínejte ji do restriktivního režimu a do parametrů exp přidejte ještě CONSISTENT=Y, ale pokud uživatele mění a přidávají data, pak Vám dost naroste zatížení rollback segmentů.

Na cílové databázi budete muset ručně vytvořit příslušné tablespaces (nejsem si jist, ale myslím, že imp Vám chybějící tablespace ani nevytvoří ani nenatáhne). Takže na zdrojové databázi si zjistěte jaké tablespace máte a jak jsou veliké (např. v pohledu v$tablespace apod.) a na cílové db si vytvořte potřebné prostory => můžete mít jinou strukturu adresářů a souborů. Přerušený export (elektrika, místo na disku,...) Vám nijak neuškodí, jen musíte začít znovu.

Pak cílovou databázi spusťte v nearchivním režimu např. takto:
        shutdown immediate
        startup nomount
        alter database mount exclusive;
        alter database noarchivelog;
        alter database open;

a pak jen spustíte import:
imp system/heslo FULL=Y FILE=ten_soubor_z_exportu LOG=log_o_importu

Po úspěšném importu zazálohujte a nastavte databázi do archivního režimu:
        shutdown immediate
        startup nomount
        alter database mount exclusive;
        alter database archivelog;
        alter database open;
Neúspěšný import znamená začít od začátku s importem, nelze pokračovat...

Varianta druhá - máte stejné databáze:
1) přihlašte se k zdrojové databázi a zazálohujte si control file:
  [ALTER DATABASE BACKUP CONTROLFILE TO TRACE]
  to Vám ve skutečnosti neudělá zálohu, ale vyrobí skript na jeho vytvoření. ten skript najdetete v adresáři UDUMP (viz init<sid>.ora. Ten skript si odeditujte - na začátku umažte plky o db a nechte tam jen ty příkazy od řádku "startup nomount". Můžete změnit cesty souborů, parametry db, jméno databáze (pak musíte připsat slůvko SET - viz manuál ORACLE) a zřejmě musíte i změnit parametr NORESETLOGS na RESETLOGS.
Výsledek si přeneste na nový stroj. Pak musíte na odstavit zdrojovou databázi [SHUTDOWN IMMEDIATE] a zkopírujete datové soubory databáze (jsou vyjmenovány v tom skriptu...) a pak DB můžete nahodit, ale budete mít změny, které nepřenesete. [ALTER DATABASE OPEN;]

Na cílovém stroji zkopírované datové soubory umístěte tak, aby odpovídaly cestám ve skriptu. spusťte ten skript (doporučuji po kouskách, nejprve vytvoření controlfiles a po úspěšném dokončení postupně zbytek).
Pokud vše projde, vyhrál jste... Opět zazálohovat!

A co uděláte se zdrojovou db záleží jen na vás...

Síla nechť Tě provází

--------------------------------------------------------------------------------------------
Ing. Vladimír Náprstek, mail-to:vladimir.naprstek na scplyn.cz



Další informace o konferenci Test