1rman
2RMAN> connect target
1rman target /
With a recovery catalog:
1rman target sys/<pwd>@orcl catalog repo/<pwd>@rmancat
1RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; -- enables restoring the CONTROLFILE.
2RMAN> SHOW ALL; -- the whole RMAN configuration.
1RMAN> BACKUP DATABASE; -- full backup.
2RMAN> BACKUP DATABASE PLUS ARCHIVELOG; -- full + archived logs.
3RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE; -- level 0 = baseline.
4RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE; -- level 1 = incremental.
5RMAN> BACKUP CUMULATIVE INCREMENTAL LEVEL 1 DATABASE; -- cumulative increments.
6RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE; -- compressed full backup.
7RMAN> BACKUP ARCHIVELOG UNTIL TIME 'sysdate - 1/24' ALL DELETE INPUT;
Run a script:
1rman cmdfile rman_backup_orcl_arc_20200330.rcv
A full-backup run {} block:
1run {
2 ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT '/mnt/rman-backup/%d-FULL-%T-%U';
3 BACKUP INCREMENTAL LEVEL 0 DATABASE INCLUDE CURRENT CONTROLFILE PLUS ARCHIVELOG TAG 'FULL-0-ORCL';
4 BACKUP SPFILE TAG 'SPFILE-ORCL';
5 CROSSCHECK BACKUP;
6 RELEASE CHANNEL CH1;
7}
1RMAN> LIST BACKUP;
2RMAN> CROSSCHECK BACKUP; -- are the backups where they should be?
3RMAN> DELETE EXPIRED BACKUP; -- delete backups whose media went missing.
4RMAN> BACKUP VALIDATE DATABASE; -- simulate a backup.
5RMAN> RESTORE VALIDATE DATABASE; -- simulate a restore.
1RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
2RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;
3RMAN> REPORT OBSOLETE;
4RMAN> DELETE NOPROMPT OBSOLETE;
1-- all archived logs older than 7 days
2RMAN> DELETE NOPROMPT BACKUP COMPLETED BEFORE 'sysdate-7';
3
4RMAN> RUN {
5 CROSSCHECK ARCHIVELOG ALL;
6 CROSSCHECK BACKUP;
7 DELETE NOPROMPT OBSOLETE;
8 DELETE NOPROMPT EXPIRED ARCHIVELOG ALL;
9 DELETE NOPROMPT EXPIRED BACKUP;
10}
Re-catalog files that RMAN no longer detects:
1RMAN> CATALOG START WITH '+FRA/MYDB';
1RUN {
2 SHUTDOWN IMMEDIATE;
3 STARTUP MOUNT;
4 SET UNTIL SCN 527478; -- the SCN just before the action to undo.
5 RESTORE DATABASE;
6 RECOVER DATABASE;
7}
1RUN {
2 SHUTDOWN IMMEDIATE;
3 STARTUP MOUNT;
4 SET UNTIL TIME "TO_DATE('28-07-2020:14:00:04','DD-MM-YYYY:hh24:mi:ss')";
5 RESTORE DATABASE;
6 RECOVER DATABASE;
7}
8ALTER DATABASE OPEN RESETLOGS;
1RMAN> RESTORE DATAFILE 1;
2RMAN> RECOVER DATAFILE 1;
3RMAN> ALTER DATABASE OPEN;
4
5RMAN> RESTORE DATABASE;
6RMAN> RECOVER DATABASE;
7RMAN> ALTER DATABASE OPEN;
The recommended 3-step flow (order matters):
1RMAN> LIST FAILURE;
2RMAN> ADVISE FAILURE;
3RMAN> REPAIR FAILURE;
Run several commands together:
1RMAN> RUN {
2 RESTORE DATABASE;
3 RECOVER DATABASE;
4 ALTER DATABASE OPEN;
5}
1RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
2RMAN> ALTER DATABASE OPEN RESETLOGS; -- new incarnation.
3RMAN> BACKUP DATABASE;
4RMAN> CATALOG START WITH '/backup/';
1RMAN> RUN {
2 ALLOCATE CHANNEL d1 DEVICE TYPE DISK;
3 ALLOCATE CHANNEL d2 DEVICE TYPE DISK;
4 RESTORE TABLESPACE 'SYSTEM_TBS';
5 RECOVER TABLESPACE 'SYSTEM_TBS';
6}
1RMAN> RUN {
2 ALLOCATE CHANNEL d1 DEVICE TYPE DISK;
3 ALLOCATE CHANNEL d2 DEVICE TYPE DISK;
4 DUPLICATE TARGET DATABASE TO mydb_clone;
5}
1RMAN> REPORT SCHEMA;
Report of database schema for database with db_unique_name ORCL
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
1 30108 SYSTEM YES +DATA/orcl/datafile/system.260.923225363
2 9048 SYSAUX NO +DATA/orcl/datafile/sysaux.261.923225365
...
1grep -i "ORA-" $ORACLE_BASE/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log
2-- ORA-19815: WARNING: db_recovery_file_dest_size of ... bytes is 100.00% used
Recover space:
1sqlplus / as sysdba
2startup mount;
3rman target /
4RMAN> DELETE OBSOLETE;
5-- hardcore:
6RMAN> DELETE NOPROMPT ARCHIVELOG ALL;
7alter database open;
If +FRA is exhausted and a redo can’t be archived (ORA-16038):
1shutdown immediate;
2startup mount;
3alter database noarchivelog;
4alter database clear logfile group 4;
5alter database open;
6
7shutdown immediate;
8startup mount;
9alter database archivelog;
10alter database open;
1sqlplus / as sysdba
2startup nomount
3alter database mount;
4alter database clear unarchived logfile group 1;
5alter database clear unarchived logfile group 2;
6alter database clear unarchived logfile group 3;
7shutdown immediate
8startup
Then check:
1SELECT instance_name, status, database_status FROM v$instance;