Modifica della modalità di log archiviato Oracle, percorso di archiviazione e dimensione dello spazio

È necessario abilitare l’archiviazione dei log quando Oracle crea un database? Il database Oracle può funzionare in due modalità: modalità archivio (archivelog) e modalità non archivio (noarchivelog). La modalità archivio migliora la ripristinabilità del database Oracle. Tutti i database di produzione devono funzionare in questa modalità, che deve essere abbinata a un’appropriata strategia di backup. Utilizzare esclusivamente la modalità archivio senza una corrispondente strategia di backup genererà soltanto problemi…

Download gratuito
per VM, sistema operativo, database, file, NAS, ecc.
giovanni

Updated by Giovanni on 2026/06/25

È necessario abilitare l’archiviazione dei log quando ORACLE crea un database?

Il database Oracle può essere eseguito in due modalità: modalità archivio (archivelog) e modalità non archivio (noarchivelog).

La modalità archivio può migliorare la ripristinabilità del database Oracle.

Tutti i database di produzione dovrebbero essere eseguiti in questa modalità e la modalità archivio dovrebbe essere abbinata alla corrispondente strategia di backup. Utilizzare esclusivamente la modalità archivio senza una strategia di backup adeguata genererà soltanto problemi.

Per impostazione predefinita, il database Oracle viene creato in modalità file di log senza registrazione,

Nella modalità di log non archiviato, il log redo verrà riscritto direttamente al momento del passaggio del log. Se in questo momento il file dati viene danneggiato a causa di un guasto hardware, i dati riscritti andranno persi durante il ripristino del database;

In modalità log archiviati, il database può utilizzare tutti i file di log archiviati generati dal backup più recente del database per garantire che non venga perso alcun dato; la maggior parte dei database produttivi funziona in modalità archivelog.

Dopo che il database Oracle ha attivato la modalità di log archiviato, avvierà automaticamente un nuovo processo: l’archiviatore ARCn. Per impostazione predefinita vengono avviati 4 processi. Nelle applicazioni reali è possibile avviare fino a 30 processi archiviatori.

[oracle@dbserver1 archivelog]$ ps -ef | grep -i ora_oracle   26567     1  0 08:48 ?        00:00:00 ora_arc0_orcloracle   26573     1  0 08:48 ?        00:00:00 ora_arc1_orcloracle   26575     1  0 08:48 ?        00:00:00 ora_arc2_orcloracle   26577     1  0 08:48 ?        00:00:00 ora_arc3_orcl

Il log di archiviazione è una copia di backup di un redo log inattivo. Utilizzando i log di archiviazione, è possibile conservare tutti i record storici dei redo. Quando il database è in modalità ARCHIVELOG e si verifica un cambio di log,

Il processo in background ARCH salverà il contenuto del log di redo nel log di archiviazione. In caso di guasto hardware del database, è possibile utilizzare il backup dei file dati, il log di archiviazione e il log di redo per ripristinare completamente il database.

#########################

Passaggio dalla modalità non archivio alla modalità archivio

Prima della modifica:

Confermare l’ambiente. Controllare il database per verificare se l’archiviazione è abilitata: --- Le informazioni riportate di seguito si riferiscono al caso in cui, durante l’installazione del database, non è stata selezionata l’opzione per abilitare il flashback né quella per abilitare l’archiviazione.

Modifica archivio Oracle – 1
SQL> archive log list
Modalità di log del database: No Archive Mode
Archiviazione automatica: Disabilitata
Destinazione dell’archivio: /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Sequenza del log online più vecchio: 4
Sequenza corrente del log: 6

SQL> SELECT name, log_mode FROM v$database;
NAME      LOG_MODE
–------- ------------
ORCL      NOARCHIVELOG

SQL>  show parameter db_recovery
NOME                     TIPO     VALORE
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest             stringa
db_recovery_file_dest_size         intero grande 0

Modifica archivio Oracle - 1

#########  I seguenti test verificano l’operazione di passaggio del database dalla modalità non-archivio a quella archivio, quando il flashback non è abilitato ############

Modifica archivio Oracle - 1
SQL> shutdown immediato   Database chiusa.

SQL> startup mount
Istanza ORACLE avviata.

SQL> alter database archivelog;
Database modificato.

SQL> alter database open;
Database modificato.

SQL> archive log list
Modalità del log del database           Modalità archiviazione
Archiviazione automatica           Abilitata
Destinazione dell’archivio           /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Sequenza più vecchia di log online     4
Sequenza successiva da archiviare   6
Sequenza corrente del log           6

SQL> SELECT name FROM v$archived_log;
nessuna riga selezionata

SQL> alter system archive log current;
Sistema modificato.

SQL> SELECT name FROM v$archived_log;
NAME
–------------------------------------------------------------------------------
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_6_947091054.dbf

SQL>  show parameter recover;
NOME                       TIPO     VALORE
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest             stringa
db_recovery_file_dest_size       intero grande 0
db_unrecoverable_scn_tracking   booleano     TRUE
recovery_parallelism             intero     0

SQL> select * da V$FLASH_RECOVERY_AREA_USAGE;
nessuna riga selezionata

Modifica dell’archivio Oracle – 1

Quando log_archive_log è impostato sul valore predefinito, la directory di archiviazione diventerà ?/dbs/arch.

Modifica archivio Oracle – 1
SQL> alter system set log_archive_dest_1='';
Sistema modificato.

SQL> archive log list
Modalità del log del database: Modalità di archiviazione
Archiviazione automatica: Abilitata
Destinazione dell’archivio: ?/dbs/arch
Sequenza più vecchia del log online: 5
Sequenza successiva da archiviare: 7
Sequenza corrente del log: 7

SQL> shutdown immediate
Database chiuso.
Database smontato.
Istanza ORACLE arrestata.

SQL> startup mount
Istanza ORACLE avviata.

Modifica archivio Oracle - 1

Dopo il riavvio del database in modalità mount, la directory di archiviazione torna alla directory predefinita originale.

Modifica archivio Oracle - 1
SQL> archive log list
Modalità di registrazione del database: Modalità di archiviazione
Archiviazione automatica: Abilitata
Destinazione di archiviazione: /home/oracle/u01/app/oracle/product/11.2.2.0/dbhome_1/dbs/archOldest sequenza del log online più vecchio     5
Sequenza del prossimo log da archiviare   7
Sequenza corrente del log           7
--- Impostare il numero massimo di processi aperti per l’archiviazione
SQL> alter system set log_archive_max_processes = 5;
System altered.--- Modifica il formato di archiviazione dei log SQL> alter system set log_archive_format = "archive_%t_%s_%r.log" scope=spfile; Sistema modificato.

SQL> startup
Istanza ORACLE avviata.

SQL> shutdown immediato
Database smontato.

Area globale totale del sistema: 939495424 byte
Dimensione fissa: 2258840 byte
Dimensione variabile: 637536360 byte
Buffer del database: 293601280 byte
Buffer redo: 6098944 byte
Database montato.
Database aperto.

SQL> archive log list
Modalità del database           Modalità archiviazione
Archiviazione automatica           Abilitata
Destinazione archiviazione           /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Sequenza più vecchia di redo log online     5
Prossima sequenza di redo log da archiviare   7
Sequenza corrente di redo log           7

SQL>  show parameter db_recovery
NOME                     TIPO     VALORE
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest             stringa
db_recovery_file_dest_size         intero grande 0

SQL> SELECT name FROM v$archived_log;
NAME
–------------------------------------------------------------------------------
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_6_947091054.dbf

SQL> alter system switch logfile;
Sistema modificato.

SQL> SELECT recid, name, first_time DA v$archived_log;

NOME
–------------------------------------------------------------------------------
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch1_6_947091054.dbf
/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/archarchive_1_7_94709105
4.log

SQL> SELECT NAME, SPACE_LIMIT/1024/1024/1024, SPACE_USED/1024/1024/1024, NUMBER_OF_FILES DA V$RECOVERY_FILE_DEST;

Nessuna riga selezionata

SQL> SELECT flashback_on FROM v$database;
FLASHBACK_ON
–----------------
NO

Modifica archivio Oracle - 1

#############################

Attiva il flashback del database. Imposta il percorso e la dimensione dell’area di recupero flash per eseguire il test. Disattiva innanzitutto la modalità archiviazione, quindi attiva il percorso predefinito: dopo l’archiviazione, tale percorso diventa il percorso di flashback del database.

Controlla il database per verificare se attivare la funzione di flashback

Nota: se si attiva la funzione di flashback, è necessario essere in modalità archivio, altrimenti il flashback non ha alcun senso! ! ! !

Tuttavia, se apri l’archivio, non è necessario attivare necessariamente la funzione di flashback! ! !

Se il flashback è attivato e successivamente viene attivata la modalità di archiviazione, nel caso in cui il log di archiviazione non specifichi un nuovo percorso, quest’ultimo verrà salvato per impostazione predefinita nell’area di flashback del database e visualizzato come: USE_DB_RECOVERY_FILE_DEST, che in realtà corrisponde al percorso del flashback.

Inoltre, è possibile impostare manualmente la posizione e le dimensioni dell’area di riproduzione e del percorso dell’archivio.

Modifica archivio Oracle - 1
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
NO
SQL> shutdown immediate
SQL> startup mount

SQL> alter database flashback on;   Durante l’installazione del database non avevo scelto di abilitare la funzione flashback e si è verificato il seguente errore

ALTER DATABASE FLASHBACK ON
*
ERRORE alla riga 1:
ORA-38706: Impossibile abilitare la registrazione FLASHBACK DATABASE.
ORA-38709: L'area di ripristino non è abilitata.

Modifica archivio Oracle - 1

Configurare l’area di ripristino flash:

Imposta la dimensione dell'area di recupero flash: l'area di recupero flash predefinita di Oracle è 2 GB

SQL>  alter system set db_recovery_file_dest_size=5g scope=spfile;

Visualizza la dimensione dello spazio del percorso specificato nell’area di flashback:

SQL> show parameter db_recovery_file_dest_size

NOME                       TIPO     VALORE
–---------------------------------- ----------- ------------------------------
db_recovery_file_dest_size         intero grande 30G

Imposta la posizione dell'area di flashback:

SQL> alter system set db_recovery_file_dest='/home/oracle/u01/app/oracle/account_flashback_area' scope=spfile;

Impostare la durata del flashback su 5 giorni, espressa in minuti (il valore predefinito di Oracle è 1440 minuti, pari a un giorno)

SQL> alter system set db_flashback_retention_target=7200 scope=spfile;

Creare le directory relative al flashback a livello di sistema operativo:

Modifica dell’archivio Oracle – 1
[oracle@dbserver oracle]$ mkdir -p /home/oracle/u01/app/oracle/account_flashback_area

SQL> ALTER DATABASE FLASHBACK ON;
Database modificata.
SQL> ALTER DATABASE OPEN;
Database modificata.

SQL> SELECT flashback_on FROM v$database;
FLASHBACK_ON
–----------------
SÌ

SQL> archive log list
Modalità del log del database           Modalità archiviazione
Archiviazione automatica           Abilitata
Destinazione dell’archivio           USE_DB_RECOVERY_FILE_DEST
Sequenza più vecchia del log online     6
Sequenza successiva da archiviare   8
Sequenza corrente del log           8

Modifica archivio Oracle – 1

Conclusione: se la funzionalità Flashback è abilitata e la modalità archiviazione è nuovamente attivata, ma non viene specificato un nuovo percorso per i log di archiviazione, questi ultimi vengono salvati per impostazione predefinita nell’area di flashback del database e visualizzati come: USE_DB_RECOVERY_FILE_DEST, che corrisponde in effetti al percorso dell’area di flashback.

Al momento, eseguiremo un test per disattivare il flashback e riavviare il database al fine di visualizzare il percorso dei log di archiviazione.

Modifica archivio Oracle - 1
SQL> select open_mode da v$database;OPEN_MODE--------------------READ WRITE

SQL> shutdown immediate
Database chiusa.

SQL> startup mount
Istanza ORACLE avviata.

Modifica archivio Oracle - 1

Chiudi la modalità archivio — ricorda che il database è in esecuzione in modalità archivio. Quando il flashback è abilitato, la modalità archivio non può essere disattivata direttamente.

SQL> alter database noarchivelog;alter database noarchivelog*ERRORE alla riga 1:ORA-38774: impossibile disabilitare il ripristino multimediale - il flashback del database è abilitato

Successivamente disabilitiamo prima il flashback

Modifica archivio Oracle - 1
SQL> alter database flashback off;
Database modificata.

SQL> alter database noarchivelog;
Database modificata.

SQL> alter database open;
Database modificato.

SQL> archive log list
Modalità di log del database           Modalità senza archiviazione
Archiviazione automatica           Disabilitata
Destinazione dell’archivio           USE_DB_RECOVERY_FILE_DEST
Sequenza più vecchia del log online     6
Sequenza corrente del log           8

SQL> SELECT flashback_on FROM v$database;
FLASHBACK_ON
–----------------
NO

Modifica archivio Oracle - 1

Riavvia, apri la vista degli archivi e visualizza il percorso dell’archivio

Modifica archivio Oracle - 1
SQL> shutdown immediato
Database chiusa.
SQL> startup mount
Instanza ORACLE avviata.
SQL> alter database archivelog;
Database modificata.
SQL> alter database open;
Database modificata.

SQL> archive log list
Modalità di log del database           Modalità Archivio
Archiviazione automatica           Abilitata
Destinazione archiviazione           USE_DB_RECOVERY_FILE_DEST
Sequenza più vecchia di log online     6
Sequenza successiva di log da archiviare   8
Sequenza corrente di log           8

SQL> SELECT flashback_on, open_mode FROM v$database;
FLASHBACK_ON       OPEN_MODE
–---------------- --------------------
NO           LETTURA/SCRITTURA

Modifica archivio Oracle - 1

Conclusione: Se apri l’archivio, non è necessario attivare la funzione di riproduzione in retrospettiva; non devi attivare la riproduzione in retrospettiva!!!

Test 3: Modificare il percorso predefinito degli archivi

Modifica archivio Oracle - 1
SQL> shutdown immediato
SQL> startup mount
Istanza ORACLE avviata.

SQL> archive log list
Modalità del log del database: Modalità archiviazione
Archiviazione automatica: Abilitata
Destinazione degli archivi: USE_DB_RECOVERY_FILE_DEST
Sequenza del log online più vecchio: 6
Sequenza del prossimo log da archiviare: 8
Sequenza corrente del log: 8

SQL> alter system set log_archive_dest_1='location=/home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch';
Sistema modificato.

SQL> archive log list
Modalità di log del database           Modalità archiviazione
Archiviazione automatica           Abilitata
Destinazione dell’archivio           /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Sequenza più vecchia di log online     6
Prossima sequenza di log da archiviare   8
Sequenza corrente di log           8

SQL> SELECT flashback_on, open_mode FROM v$database;

RIPRODUZIONE GUIDATA       MODALITÀ DI APERTURA
–---------------- --------------------
NO           MONTATO

Test 4: Chiudiamo l’archivio; innanzitutto attiviamo il flashback, quindi attiviamo l’archivio, avviamo il database, verifichiamo il percorso dell’archivio e controlliamo se corrisponde al percorso personalizzato; in caso negativo, lo modifichiamo impostandolo sul percorso predefinito del flashback.

 SQL> alter database noarchivelog;Database modificato.

SQL> archive log list
Modalità di log del database           Modalità senza archiviazione
Archiviazione automatica           Disabilitata
Destinazione dell’archivio           /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Sequenza più vecchia dei log online     6
Sequenza corrente dei log           8

SQL> alter database flashback on;   –– Il flashback non può essere abilitato in modalità non archiviazione

ALTER DATABASE FLASHBACK ON
*
ERRORE alla riga 1:
ORA-38706: Impossibile abilitare la registrazione FLASHBACK DATABASE.
ORA-38707: Il ripristino multimediale non è abilitato.

Conclusione: la funzione Flashback non può essere attivata in modalità non archivio

################################################

SQL> alter database archivelog;
Database modificata.

SQL> archive log list
Modalità di log del database: Modalità di archiviazione
Archiviazione automatica: Abilitata
Destinazione dell’archivio: /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Sequenza del log online più vecchio: 6
Sequenza del log successivo da archiviare: 8
Sequenza del log corrente: 8
SQL>
SQL> alter database flashback on;
Database modificato.

SQL> archive log list
Modalità del log del database           Modalità archiviazione
Archiviazione automatica           Abilitata
Destinazione dell’archivio           /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Sequenza più vecchia del log online     6
Sequenza successiva da archiviare   8
Sequenza corrente del log           8

Conclusione: se viene specificato un percorso di archiviazione per il log degli archivi, allora, se il flashback è abilitato, il percorso di archiviazione del log degli archivi rimane quello originariamente specificato dall’utente
#############################
Procedere:
Modificare il log degli archivi in modo che utilizzi il percorso di archiviazione predefinito del database. Ripetere l’operazione precedente per verificare se il percorso del log degli archivi corrisponde a quello dell’area di flashback

SQL> shutdown immediate
Database chiusa.
SQL> startup mount
Istanza ORACLE avviata.

SQL> archive log list
Modalità di log del database: Modalità archiviazione
Archiviazione automatica: Abilitata
Destinazione di archiviazione: /home/oracle/u01/app/oracle/product/11.2.0/dbhome_1/dbs/arch
Sequenza del log online più vecchio: 6
Sequenza del prossimo log da archiviare: 8
Sequenza corrente del log: 8

SQL> alter system set log_archive_dest_1=’’;  –-Modifica il log degli archivi come percorso di archiviazione predefinito del database

Sistema modificato.

SQL> archive log list
Modalità del log del database           Modalità archiviazione
Archiviazione automatica           Abilitata
Destinazione dell’archivio           ?/dbs/arch
Sequenza più vecchia del log online     6
Prossima sequenza di log da archiviare   8
Sequenza corrente del log           8

SQL> alter database open;
Database modificato.

SQL> archive log list
Modalità del log del database           Modalità archiviazione
Archiviazione automatica           Abilitata
Destinazione dell’archivio           ?/dbs/arch
Sequenza più vecchia del log online     6
Prossima sequenza di log da archiviare   8
Sequenza corrente del log           8

SQL> SELECT flashback_on, open_mode FROM v$database;
FLASHBACK_ON       OPEN_MODE
–---------------- --------------------
YES           READ WRITE

SQL> shutdown immediate
Database chiuso.

SQL> startup
Istanza ORACLE avviata.

SQL> archive log list
Modalità del log del database           Modalità archiviazione
Archiviazione automatica           Abilitata
Destinazione dell’archivio           USE_DB_RECOVERY_FILE_DEST
Sequenza più vecchia del log online     6
Sequenza successiva da archiviare   8
Sequenza corrente del log           8

Conclusione: il log degli archivi è il percorso di archiviazione predefinito del database. Quando la funzione di ripristino temporale è abilitata, passare alla modalità di archiviazione. Il percorso del log degli archivi corrisponde per impostazione predefinita al percorso dell’area di ripristino temporale.

Condividi su:

Categories: Database Tips