====== [DOC] RMAN Basic queries ======
===== Very basics commands =====
==== Connect user OS auth ====
* ''rman target /''
==== Logging commands ====
This will display NO OUTPUT:
* ''rman LOG /tmp/rman.log''
So the best way is use tee:
* ''rman | tee /tmp/rman.log''
==== Using a script ====
Like SQL*:
* ''rman TARGET / @scriptfile''
==== Checking Syntax ====
When checking syntax, nothing is executed (test/debug/dry mode)
* ''rman CHECKSYNTAX''
===== Listar =====
==== Configuration ====
* ''SHOW ALL ;''
* ''SHOW RETENTION POLICY ;''
* ''SHOW DEFAULT DEVICE TYPE ;''
==== Backups ====
list backup ;
O un poco más resumido:
list backup summary ;
==== backupsets ====
by tag
LIST BACKUPSET TAG 'BAVELPRO_20140426-2143' ;
by date
list backupset completed after 'SYSDATE-1' ;
==== Backups Obsoletos ====
list expired backup ;
o
list expired backup summary ;
==== Archivers ====
LIST ARCHIVELOG ALL;
==== Backup de Archivers ====
LIST BACKUP OF ARCHIVELOG ALL;
Summary;
LIST BACKUP OF ARCHIVELOG ALL SUMMARY;
http://docs.oracle.com/cd/B28359_01/server.111/b28320/dynviews_1035.htm#REFRN30362
col filesize_display format a20
SELECT BTYPE,
BTYPE_KEY,
SESSION_KEY,
SESSION_RECID,
SESSION_STAMP ,
ID1 ,
ID2 ,
THREAD#,
SEQUENCE#,
RESETLOGS_CHANGE#,
RESETLOGS_TIME ,
FIRST_CHANGE# ,
FIRST_TIME ,
NEXT_CHANGE# ,
NEXT_TIME ,
FILESIZE ,
COMPRESSION_RATIO ,
FILESIZE_DISPLAY
FROM V$BACKUP_ARCHIVELOG_DETAILS
ORDER BY sequence#
;
==== Fichero de backup de Archiver ====
LIST COPY OF DATABASE ARCHIVELOG ALL;
==== Backup de datafile ====
LIST BACKUP OF DATAFILE 1;
==== Backup por fichero ====
LIST BACKUP BY FILE;
==== Datafilecopy ====
list datafilecopy all;
==== BBDD Incarnation ====
LIST INCARNATION;
==== Fallos ====
LIST FAILURE;
Detalles:
LIST FAILURE 641231 detail;
===== CROSSCHECK =====
Crosscheck actualiza la bbdd de backups respecto a lo que realmente hay o explicado por oracle:
//The CROSSCHECK command synchronizes the logical records of RMAN backups and copies with the files on storage media. If a backup is on disk, then CROSSCHECK determines whether the header of the file is valid. If a backup is on tape, then RMAN queries the RMAN repository for the names and locations of the backup pieces. It is a good idea to crosscheck backups and copies before deleting them.//
==== Backup ====
CROSSCHECK BACKUP;
CROSSCHECK backup of database;
CROSSCHECK backup of controlfile;
==== Copy ====
CROSSCHECK COPY;
==== Archivelog ====
CROSSCHECK archivelog all;
===== Report =====
REPORT analiza qué ha cambiado e indica de qué ha de hacerse backup:
^ Comando ^ Descripción ^
| ''REPORT NEED BACKUP DATABASE'' | Shows which files need backing up under current retention policy. Use optional REDUNDANCY and RECOVERY WINDOW parameters to specify different criteria. |
| ''REPORT OBSOLETE'' | Lists backups that are obsolete under the configured backup retention policy. Use the optional REDUNDANCY and RECOVERY WINDOW parameters to override the default. |
| ''REPORT SCHEMA'' | Reports the tablespaces and data files in the database at the current time (default) or a different time. |
| ''REPORT UNRECOVERABLE'' | Lists all data files for which an unrecoverable operation has been performed against an object in the data file since the last backup of the data file. |
===== Borrado =====
==== Forzar el borrado de backups antiguos ====
delete force noprompt backup completed before 'SYSDATE-1';
==== Borrar TODOS los archivers de la FRA ====
CUIDADO CON ESTE COMANDO!!!!
DELETE ARCHIVELOG ALL ;
==== Borrar TODOS los archivers de la FRA a sysdate-1 ====
CUIDADO CON ESTE COMANDO!!!!
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'TRUNC(SYSDATE-1)';
==== Borrar backups obsoletos ====
Después del crosscheck...
delete force noprompt expired backup ;
==== Borrar backup por tag ====
Después del crosscheck...
DELETE BACKUP TAG 'TEST01';
==== Borrar datafilecopy ====
Todo:
DELETE datafilecopy all;
By key:
DELETE datafilecopy ;
by name:
DELETE datafilecopy 'datafile_name' ;
===== Examples =====
==== Restoring spfile from backup ====
* Connect:
$ rman
CONNECT TARGET /
* If your database is not up and you don't use recovery catalog then use:
SET DBID 3386862614
* Start the instance with dummy parameter file:
STARTUP FORCE NOMOUNT
* Restore server parameter file to restore in default location:
RESTORE SPFILE FROM AUTOBACKUP;
* or restore in another location:
RESTORE SPFILE TO 'new_location' FROM AUTOBACKUP;
* If you want to restore to a pfile then use:
RESTORE SPFILE TO PFILE '/tmp/initTEMP.ora';
* Start the instance:
STARTUP;
===== Validar =====
[[http://docs.oracle.com/cd/E11882_01/backup.112/e10642/rcmvalid.htm|Documentacion oficial]]
==== la bbdd completa ====
VALIDATE DATABASE;
==== backupset ====
VALIDATE BACKUPSET 264287 ;
==== Datafile ====
VALIDATE DATAFILE 1 BLOCK 10;
====== SQL* ======
===== Status of the backups inside oracle =====
Clean (only backup ops):
SET LINESIZE 280
COL OUTPUT_DEVICE_TYPE FORMAT A30
COL COMMAND_ID FORMAT A20
COL STATUS FORMAT A30
COL OPERATION FORMAT A60
SELECT
RECID,
STAMP,
PARENT_RECID,
PARENT_STAMP,
SESSION_RECID,
SESSION_STAMP,
-- COMMAND_ID,
OPERATION,
STATUS,
MBYTES_PROCESSED,
START_TIME,
END_TIME,
OPTIMIZED,
OBJECT_TYPE,
OUTPUT_DEVICE_TYPE
FROM V$RMAN_STATUS
WHERE NOT OPERATION IN ('CROSSCHECK', 'DELETE')
order by start_time
;
All:
SET LINESIZE 280
COL OUTPUT_DEVICE_TYPE FORMAT A30
COL COMMAND_ID FORMAT A20
COL STATUS FORMAT A30
COL OPERATION FORMAT A60
SELECT
RECID,
STAMP,
PARENT_RECID,
PARENT_STAMP,
SESSION_RECID,
SESSION_STAMP,
-- COMMAND_ID,
OPERATION,
STATUS,
MBYTES_PROCESSED,
START_TIME,
END_TIME,
OPTIMIZED,
OBJECT_TYPE,
OUTPUT_DEVICE_TYPE
FROM V$RMAN_STATUS
order by start_time
;
===== Destination of backups =====
COLUMN NAME FORMAT A30;
col space_limit format 999999999999999999
col SPACE_USED format 999999999999999999
col SPACE_RECLAIMABLE format 999999999999999999
select * from v$recovery_file_dest;
===== Query FRA backup by type of file =====
select file_type,
space_used*percent_space_used/100/1024/1024 used,
space_reclaimable*percent_space_reclaimable/100/1024/1024 reclaimable,
frau.number_of_files
from v$recovery_file_dest rfd, v$flash_recovery_area_usage frau;
===== Kill RMAN session =====
select 'ALTER SYSTEM KILL SESSION ''' || b.sid || ',' || b.serial# || ''' IMMEDIATE ;'
from
v$process a, v$session b
where
a.addr=b.paddr and client_info
like
'rman%';
====== Flashback ======
https://docs.oracle.com/cd/E11882_01/backup.112/e10642/flashdb.htm
===== List restore points =====
LIST RESTORE POINT ALL;
====== Create RMAN Catalog ======
To create an external catalog (in another database), Oracle recommends using the GridControl Database.
Steps to do that, inside the Grid Database:
* Create the tablespace for the RMAN catalog:
CREATE TABLESPACE "RMAN" DATAFILE '+DATA' size 2000M AUTOEXTEND OFF;
* Create the user for the catalog
CREATE USER rman IDENTIFIED BY yourpassword
TEMPORARY TABLESPACE temp
DEFAULT TABLESPACE RMAN
QUOTA UNLIMITED ON RMAN;
* Grant it:
GRANT RECOVERY_CATALOG_OWNER TO rman;
* Connect to the catalog (in the same host of the DB)
rman CATALOG rman/yourpassword@RMANDB
* Create the catalog itself
CREATE CATALOG
* Now on the DB host, connect to the catalog:
rman TARGET / CATALOG rman/yourpassword@RMANDB
* and register the database
REGISTER DATABASE;
* Done! Begin using the catalog
====== DEBUG of common errors ======
===== ORA-01547+ORA-01152+RMAN-06054 =====
Something like:
unable to find archived log
archived log thread=2 sequence=10583
Oracle Error:
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '+DG_DATA_01/DBNAMEGDN/DATAFILE/system.540.958515399'
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 10/27/2017 22:20:49
RMAN-05501: aborting duplication of target database
RMAN-03015: error occurred in stored script Memory Script
RMAN-06054: media recovery requesting unknown archived log for thread 2 with sequence 10583 and starting SCN of 39396106955
Reference:
* How to resolve ORA-01547 warning: RECOVER succeeded but OPEN RESETLOGS would get error below (Doc ID 1684437.1)
* How to quickly check that Database is consistent after incomplete recovery (Point in Time Recovery) before OPEN RESETLOGS (Doc ID 1354256.1)
* Incomplete recovery gives ORA-01152 (Doc ID 278856.1)
Summary:
Use ''v$datafile_header'' to see datafile information about datafiles and see ''CHECKPOINT_CHANGE#''
I've seen in the destination datafiles with a ''CHECKPOINT_CHANGE#'' from about 1 year ago of current SCN (impossible-> ORACLE BUG).
In the source database I'm seeing correct ''CHECKPOINT_CHANGE#'' for all the datafiles.
In the backup everything is OK.
So I just simply restore the datafiles:
RUN{
SET NEWNAME FOR DATAFILE 43 TO '+DG_RECO_01';
SET NEWNAME FOR DATAFILE 44 TO '+DG_RECO_01';
SET NEWNAME FOR DATAFILE 45 TO '+DG_RECO_01';
RESTORE DATAFILE 43;
RESTORE DATAFILE 44;
RESTORE DATAFILE 45;
SWITCH DATAFILE 43;
SWITCH DATAFILE 44;
SWITCH DATAFILE 45;
}