Prima di iniziare
Prima di poter rilevare, proteggere e montare i database Oracle in un ambiente Windows, assicurati di controllare quanto segue:
Controlla le seguenti impostazioni sul server di database:
Il database Oracle e Oracle Listener sono in esecuzione (controlla i servizi Windows).
Verifica che esista una voce tns con il nome SID. Il file tnsnames.ora si trova in
%ORACLE_HOME%\network\admin
Verifica che la voce tns sia valida eseguendo:
%ORACLE_HOME%\bin\tnsping <SID>
Controlla se la modalità di log è impostata su Log archiviato:
sql> archive log list
Se il database è in modalità di log senza archiviazione, ripristina la modalità di log con archiviazione:
sql> shutdown immediate; sql> startup mount; sql> alter database archivelog; sql> alter database open;
Attiva il monitoraggio dei blocchi di modifiche del database. Se la BCT del database è disattivata, il tempo del backup incrementale è interessato. La funzionalità di monitoraggio dei blocchi di modifica è disponibile in Oracle Enterprise Edition. Esegui una query SQL per verificare che il monitoraggio dei blocchi di modifica sia abilitato. Esegui la query:
sqlplus / as sysdba sql> select * from v$block_change_tracking;
Per attivare il monitoraggio dei blocchi di modifica:
sql> alter database enable block change tracking
using file '<Oracle home directory>\orcl.bct';
Esegui il backup di un database Oracle in un ambiente Windows
Per eseguire il backup di un database Oracle in un ambiente Windows:
Imposta i dettagli e le impostazioni dell'applicazione per i database Oracle.
Applica un piano di backup per proteggere il database.
Problema noto
Oracle 19c SQLPlus (sqlplus.exe) a volte si blocca su Windows durante l'esecuzione del comando exit (ID documento 2820655.1). Questo bug è specifico per Windows. Oracle ha confermato che questo problema si verifica nelle versioni 19.10, 19.11 e 19.12 di SQLPlus. Oracle ha fornito le seguenti soluzioni:
- Utilizza SQL*Plus 21.1 o versioni successive (o)
- Applica la patch:31466370. Questa patch è disponibile per 19.11 e 19.13.
Recupera manualmente i database Oracle in un ambiente Windows utilizzando RMAN in un punto di backup pianificato se l'archivelog non è protetto tramite il backup e il RE
Per recuperare un intero database Oracle in un ambiente Windows:
Monta lo snapshot del backup del database da Backup e RE sul server Oracle come descritto in Montare un database Oracle come montaggio standard.
Imposta l'ambiente del database e avvialo in stato di mancata montaggio utilizzando il file di parametri del volume montato di Backup e RE (ad esempio per un volume del database montato su E:):
sqlplus / as sysdba sql> startup nomount pfile='E:\<sid>___backup.ora';
Crea spfile da pfile:
sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora' from pfile='E:\<sid>___backup.ora';
Avvia il database con il file spfile nello stato
nomount
:sql> shutdown immediate; sql> startup nomount;
Ripristina il file di controllo utilizzando RMAN dal volume montato di Backup e RE:
rman target / rman> restore controlfile from 'E:\cf-D_<sid>-id_<id>.ctl';
Monta il database:
rman> alter database mount;
Cataloga il file di dati e la cartella del file di archivio dal volume montato di Backup e RE a RMAN:
rman> run { catalog start with 'E:\datafile' noprompt; catalog start with 'E:\archivelog' noprompt; }
Ripristina e recupera il database:
rman> run { restore database; recover database; }
Apri il database con l'opzione di reimpostazione del log:
rman> alter database open resetlogs;
Recupera manualmente i database Oracle in un ambiente Windows utilizzando RMAN in un punto di backup pianificato con il rollforward dell'archivelog protetto da backup e RE
Monta l'immagine dal server del database di origine per il recupero. Monta di nuovo lo snapshot di backup da Backup e RE sul server Oracle come descritto in Montare un database Oracle come montaggio standard.
Imposta l'ambiente del database e avvialo in stato di mancata montaggio utilizzando il file di parametri del volume montato di Backup e RE. In questo esempio, l'immagine di backup del database è montata su E:\ e il log dell'archivio protetto è montato su Z:.
sqlplus / as sysdba
startup nomount pfile='E:\<sid>___backup.ora';
Crea spfile da pfile:
sql> create spfile='%ORACLE_HOME%\database\spfile<sid>.ora' from pfile='E:\<sid>___backup.ora';
Avvia il database con spfile nello stato nomount:
```sql shutdown immediate; startup nomount; ```
Ripristina il file di controllo utilizzando RMAN dall'immagine del log dell'archivio montata di Backup e RE:
```rman rman target / rman> restore controlfile from 'Z:\cf-D_<sid>-id_<id>.ctl'; ```
Monta il database:
```rman rman> alter database mount; ```
Cataloga la cartella dei file di dati e degli archivi log dall'immagine del database montata di Backup e RE e dall'immagine dell'archivio log in RMAN:
```rman rman> run { catalog start with 'E:\datafile' noprompt; catalog start with 'E:\archivelog' noprompt; catalog start with 'Z:\archivelog' noprompt; } ```
Ripristina e recupera il database:
```rman rman> run { restore database; recover database; } ```
Per un recupero point-in-time specifico, esegui il comando recover come segue:
```rman rman> run { restore database; recover database until time "to_date('<time stamp>','yyyymmddhh24mi')"; } ```
Apri il database con l'opzione di reimpostazione del log:
```rman rman> alter database open resetlogs; ```
Il database è disponibile in lettura e scrittura.
Script di monitoraggio per rilevare il montaggio dei volumi del database
Se crei un montaggio consapevole dell'applicazione, puoi utilizzare uno script di monitoraggio per mostrare i volumi montati da Backup e RE e i processi Oracle in esecuzione. I mount consapevoli dell'applicazione sono descritti in Montare un database Oracle come applicazione virtuale.
Quando esegui un montaggio consapevole dell'applicazione, puoi utilizzare questo script di monitoraggio. La posizione dello script deve essere: C:\Programmi\Backup and RE\scripts. Gli script eseguiti su host Windows devono essere file .bat o .vbs.
```Windows
@echo off
:loop
echo. > watchtemp
echo ------------------ >> watchtemp
echo Oracle Processes >> watchtemp
echo ------------------ >> watchtemp
tasklist /svc | findstr oracle >> watchtemp
echo. >> watchtemp
echo ------------------ >> watchtemp
echo Backup and DR Mounts >> watchtemp
echo ------------------ >> watchtemp
wmic volume get label, name | findstr Backup and DR >> watchtemp
echo. >> watchtemp
cls
type watchtemp
timeout 2 > null
goto loop
```
Il risultato è il seguente:
Oracle Processes
------------------
oracle.exe 1492 OracleServiceORCL
oracle.exe 3768 OracleServiceTestDB
oracle.exe 872 OracleServiceTestDB2
------------------
Backup and DR Mounts
------------------
Backup and DR-Backup-ORCL D:\mount_1