sql >> Databáze >  >> RDS >> Oracle

Jak vrátit opravu po neúspěšné fázi přerušení v R12.2

Může nastat situace, kdy selhala fáze přerušení. Je možné se vrátit do předchozího stavu cutover (rollback the patch), pokud je v databázi povolena databáze flashbacků nebo jsme před přerušením provedli plnou zálohu

Vysvětlil bych to s ohledem na Database Flashback pro vrácení záplaty

Předpokládám, že zde máme v databázi povolený Flashback. To můžeme potvrdit příkazem

SQL>select FLASHBACK_ON from v$database;
FLASHBACK_ON
------------
Yes

Více o databázi Flashback se můžete dozvědět v níže uvedených odkazech

Flashback Oracle Database
Jak na Flashback, když máme dataguard

Fáze omezení online záplatování se doporučuje naplánovat na dobu, kdy je málo online transakcí a dávkové zpracování je minimální. Měli byste potvrdit, že kritické souběžné požadavky se během přerušení neprovádějí. Měli byste také zvážit pozastavení plánovaných souběžných požadavků před provedením přerušení, protože jinak fáze přerušení počká na dokončení programu a v případě flashbacku přijdete o data transakce

Podívejme se na problémový případ

Případ 1

Spouštíte cyklus online oprav:

$ adop phase=prepare
$ adop phase=apply patches=99999999
$ adop phase=finalize
$ adop phase=cutover

Přerušení se nezdaří a musíte se vrátit do stavu systému před spuštěním fáze přerušování.

Pokud byste nespustili fázi přerušení, byli byste schopni vrátit proces aplikace opravy spuštěním fáze přerušení adopce. To však není možné, jakmile bylo provedeno přerušení.

Opravu lze vrátit zpět ze dvou hlavních částí:
(1) Obnovení databáze :Databáze Flashback je nejrychlejší způsob, jak vrátit změny databáze a vrátit se do bodu v čase. Můžeme také použít techniku ​​obnovení databáze, ale to je velmi časově náročné

Aktualizace databáze
a). Nejprve vypněte databázi a poté ji spusťte ve stavu připojení:

SQL>shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>startup mount
ORACLE instance started.

b).Obnovte flashback na určený čas.

SQL>flashback database to time to_data(<time before teh cutover>;
Flashback complete.

c).Spusťte databázi v režimu pouze pro čtení:

SQL>alter database open read only;
Database altered.

Check all looks as expected.

d). Vypněte databázi, spusťte ji ve stavu připojení a poté ji otevřete pomocí možnosti resetlogs:

SQL>shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>startup mount
ORACLE instance started.
Database mounted.
SQL>alter database open resetlogs;
Database altered.


2) Obnovení systému souborů :V závislosti na tom, kdy se přerušení nezdařilo, možná budete muset obnovit systémy souborů aplikační vrstvy

Obnovení systému souborů

Zda je nutné provést tento krok, je podmíněno v závislosti na tom, zda se před přepnutím souborových systémů nezdařilo přepnutí. Který z těchto případů platí, můžete zjistit podle protokolů přerušení v $NE_BASE/EBSapps/log/adop//cutover_ / pro vaše aktuální ID relace.

Případ 1 – Pokud zprávy protokolu naznačují, že přepnutí selhalo před přepnutím systémů souborů, proveďte čisté vypnutí všech spuštěných služeb. Poté restartujte všechny služby pomocí normálního spouštěcího skriptu

Případ 2 – Pokud zprávy protokolu naznačují, že přepnutí selhalo po přepnutí systémů souborů, přepněte systémy souborů zpět podle níže uvedeného kroku.

(a) Vypněte služby spuštěné z nového spuštěného souborového systému

1. Zdroj prostředí na novém spuštění souborového systému.
2.Z $ADMIN_SCRIPTS_HOME vypněte všechny služby (pomocí adstpall .sh v systému UNIX).

(b)V prostředí s více uzly opakujte předchozí dva kroky na všech uzlech, přičemž ponechte uzel správce až po všechny podřízené uzly.

(c) Přepnout systémy souborů zpět
Na všech uzlech, kde byly přepnuty systémy souborů, spusťte následující příkaz pro přepnutí souborových systémů zpět:

$ perl $AD_TOP/patch/115/bin/txkADOPCutOverPhaseCtrlScript.pl \
-action=ctxupdate \
-contextfile=<full path to new run context file> \
-patchcontextfile=<full path to new patch file system context file> \
-outdir=<full path to out directory>

(d)Spusťte všechny služby ze starého systému souborů (pomocí adstrtal.sh v systému UNIX).
(e)V prostředí s více uzly opakujte předchozí dva kroky na všech uzlech, počínaje uzlem správce a poté pokračujte k podřízeným uzlům

Závěr

Po dokončení obnovy máte dvě základní možnosti, jak pokračovat:
(a) Přerušit aktuální cyklus oprav, pokud problém, který vyžadoval obnovení, byl způsoben opravami, které jste se pokoušeli aplikovat.

Zde jsou kroky ke zrušení cyklu online oprav

Pokud cyklus oprav selže a problém nelze rychle vyřešit, je možné cyklus opravy přerušit a vrátit se k normálnímu běhu. Vydání opravy bude zrušeno.

Cyklus oprav můžete opustit (bez použití jakýchkoli oprav) spuštěním příkazu:
$ adop phase=abort

Přerušením cyklu oprav dojde k vyřazení edice oprav, ale před zahájením nového cyklu oprav musíte spustit fáze čištění a fs_clone. Vyčištění musí být úplné.

For example:
$ adop phase=prepare
$ adop phase=apply patches=9999999
$ adop phase=abort
$ adop phase=cleanup cleanup_mode=full
$ adop phase=fs_clone

Volitelně můžete zkombinovat příkazy přerušení a vyčištění následovně:

$ adop phase=abort,cleanup cleanup_mode=full

(b) Identifikujte a opravte jakékoli další problémy v aktuálním cyklu oprav a pokračujte v opravování.


  1. Vyhledejte, zda je číslo obsaženo ve výrazu jako:1-3,5,10-15,20

  2. 2 způsoby, jak zřetězit řetězce a čísla v MariaDB

  3. Neo4j - Vytvořte omezení pomocí Cypher

  4. CS50:Operátor LIKE, substituce proměnné s % expanzí