Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak wycofać poprawkę po nieudanej fazie przełączania w R12.2?

Może zaistnieć scenariusz, w którym faza przełączenia nie powiodła się. Możliwe jest cofnięcie się do poprzedniego stanu przełączenia (wycofanie łaty), jeśli baza danych flashback jest albo włączona w bazie danych, albo zrobiliśmy pełną kopię zapasową przed przełączeniem

Wyjaśniłbym to w odniesieniu do Database Flashback, aby wycofać łatkę

Zakładam, że mamy tutaj włączoną funkcję Flashback w bazie danych. Możemy to potwierdzić za pomocą polecenia

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

Możesz dowiedzieć się więcej o bazie danych Flashback w poniższych linkach

Flashback Oracle Database
Jak wykonać flashback, gdy mamy ochronę danych

Zaleca się, aby fazę przełączania łatania online zaplanować na czas, w którym jest niewiele transakcji online, a przetwarzanie wsadowe jest minimalne. Należy upewnić się, że krytyczne współbieżne żądania nie są wykonywane podczas przełączania. Powinieneś także rozważyć wstrzymanie zaplanowanych jednoczesnych żądań przed wykonaniem przełączenia, ponieważ w przeciwnym razie faza przełączenia będzie czekać na zakończenie programu, a ponadto stracisz dane transakcji w przypadku retrospekcji

Przyjrzyjmy się problemowi

Przypadek 1

Prowadzisz cykl aktualizacji online:

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

Przełączanie nie powiodło się i musisz wrócić do stanu systemu przed uruchomieniem fazy przełączania.

Gdybyś nie uruchomił fazy przełączania, byłbyś w stanie cofnąć proces aplikacji łaty, uruchamiając fazę przerwania. Nie jest to jednak możliwe po uruchomieniu przełączenia.

Istnieją dwie główne części do wycofania poprawki:
(1) Przywracanie bazy danych :Baza danych Flashback to najszybsza metoda na cofnięcie zmian w bazie danych i cofnięcie się do punktu w czasie. Możemy również użyć techniki przywracania bazy danych, ale jest to bardzo czasochłonne

Flashowanie bazy danych
a).Najpierw zamknij bazę danych, a następnie uruchom ją w stanie montowania:

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

b). Przywróć retrospekcję do określonego czasu.

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

c). Uruchom bazę danych w trybie tylko do odczytu:

SQL>alter database open read only;
Database altered.

Check all looks as expected.

d).Zamknij bazę danych, uruchom ją w stanie montowania, a następnie otwórz ją opcją 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) Przywracanie systemu plików :W zależności od tego, kiedy przełączenie nie powiodło się, może być konieczne przywrócenie systemów plików warstwy aplikacji

Przywracanie systemów plików

To, czy musisz wykonać ten krok, jest warunkowe, w zależności od tego, czy przełączenie nie powiodło się przed przełączeniem systemów plików. Możesz określić, który z tych przypadków ma zastosowanie, odwołując się do dzienników przełączania w $NE_BASE/EBSapps/log/adop//cutover_ / dla identyfikatora bieżącej sesji.

Przypadek 1 — Jeśli komunikaty dziennika wskazują, że przełączenie nie powiodło się przed przełączeniem systemów plików, wykonaj czyste zamknięcie wszystkich uruchomionych usług. Następnie uruchom ponownie wszystkie usługi, używając normalnego skryptu startowego,

Przypadek 2 – Jeśli komunikaty dziennika wskazują, że przełączenie nie powiodło się po zmianie systemów plików, wykonaj poniższy krok, aby przełączyć systemy plików z powrotem.

(a) Zamknij usługi uruchomione z nowego uruchomionego systemu plików

1.Pobierz środowisko w nowym uruchomionym systemie plików.
2.Z $ADMIN_SCRIPTS_HOME zamknij wszystkie usługi (za pomocą adstpall .sh w systemie UNIX).

(b)W środowisku wielowęzłowym powtórz poprzednie dwa kroki na wszystkich węzłach, pozostawiając węzeł administracyjny na wszystkich węzłach podrzędnych.

(c) Przełącz systemy plików z powrotem
Na wszystkich węzłach, w których systemy plików zostały przełączone, uruchom następujące polecenie, aby przełączyć systemy plików z powrotem:

$ 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)Uruchom wszystkie usługi ze starego uruchomionego systemu plików (używając adsstrtal.sh w systemie UNIX).
(e)W środowisku wielowęzłowym powtórz poprzednie dwa kroki na wszystkich węzłach, zaczynając od węzła administracyjnego a następnie przejście do węzłów podrzędnych

Wniosek

Po zakończeniu przywracania masz dwie podstawowe opcje, aby kontynuować:
(a) Przerwij bieżący cykl aktualizacji, jeśli problem, który wymagał przywrócenia, był spowodowany przez poprawki, które próbowałeś zastosować.

Oto kroki, jak przerwać cykl aktualizacji online

Jeśli cykl poprawek kończy się niepowodzeniem i problemu nie można szybko rozwiązać, możliwe jest przerwanie cyklu instalowania poprawek i powrót do normalnego działania w czasie wykonywania. Wydanie poprawki zostanie usunięte.

Możesz porzucić cykl łatania (bez stosowania łatek) uruchamiając polecenie:
$ adop phase=abort

Przerwanie cyklu łatania spowoduje porzucenie edycji łaty, ale przed rozpoczęciem nowego cyklu łatania musisz uruchomić fazy czyszczenia i fs_clone. Czyszczenie musi być pełne.

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

Opcjonalnie możesz połączyć polecenia przerwania i czyszczenia w następujący sposób:

$ adop phase=abort,cleanup cleanup_mode=full

(b) Zidentyfikuj i napraw wszelkie inne problemy w bieżącym cyklu aktualizacji i kontynuuj instalowanie.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC ResultSet getDate traci precyzję

  2. Transformacja wierszy Oracle do kolumny

  3. Oracle — widok zmaterializowany nadal dostępny po całkowitym odświeżeniu. Jak to działa?

  4. Jak eksportować dane za pomocą Oracle SQL Developer?

  5. Łącz i grupuj wiele wierszy w Oracle