select fname,to_char(completion_time,'DD-Mon-YYYY HH:MI:SS') "completion_time" from v$backup_files where completion_time is not null and fname like '%dbf%' order by completion_time desc;
-----------------------------------------------------------------------------------------------
The increment backup in RMAN is done if you specify a LEVEL <n> option, where n can by either 0 or 1
A LEVEL 0 incremental backup means complete backup just like Full backup
A LEVEL 1 incremental backup copies all blocks changed since last LEVEL 0 or LEVEL 1 backup.
A LEVEL 1 COMULATIVE backup copies all blocks changed since last LEVEL 0 backup.
In incremental backup strategy you will first need to take complete backup i.e. LEVEL 0 backup
++++++++++++++++++++++++++++++++++++++++++++++++++++++
Point in time recovery in Oracle using RMAN (recovery manager) allows you to recover your database to a specific point in time, i.e. any time you would like to make the database available present in database backup.
step 1:- Connect to the RMAN
echo $ORACLE_SID
rman target /
or
rman target sys/passwd@database_netservice
step 2:- restore the control file to the location desired
RMAN >
run {
allocate channel ch1 type disk;
restore controlfile to '/path/to/new/controlfile.ctl';
}
step 3:- Mount the database since backup/restore can only perform in mount mode
run {
allocate channel ch1 type disk;
sql 'alter database mount';
}
step 4:- Specify the point in time i.e. mention the time
run {
set until time 'to_date('yyyy-mm-dd hh24:mi:ss','yyyy-mm-dd hh24:mi:ss')';
}
step 5:- Do Incomplete Recovery to open database with reset logs option since we don't want to use old redo logs.
run {
allocate channel ch1 type disk;
recover database;
}
step 6:- Open the database with reset logs option.
run {
sql 'alter database open resetlogs';
}
step 7:- Complete the recovery now
run {
allocate channel ch1 type disk;
backup database format '/path/to/backup/%d_%t.dbf';
}
+++++++++++RMAN DETAIL SCRIPT ++++++++++++++++++++
RMAN BACKUP STATUS DETAILS SCRIPTS
######## RMAN Backup logs details will show which are files completed #############
cd logs/voyager/backups
voyager:/home/oracle/ $ cd logs/voyager/backups
voyager:logs/voyager/backups/ $ ls -lrth
total 3218
-rw-r----- 1 oracle dba 54K Feb 21 08:17 DB_Full_Backup_202202210158.log
-rw-r----- 1 oracle dba 54K Feb 21 08:18 DB_Full_Backup_202202210155.log
-rw-r----- 1 oracle dba 103K Feb 21 23:27 DB_Full_Backup_202202212300.log
-rw-r----- 1 oracle dba 155K Feb 23 01:09 DB_Full_Backup_202202222300.log
-rw-r----- 1 oracle dba 132K Feb 24 01:13 DB_Full_Backup_202202232300.log
-rw-r----- 1 oracle dba 29K Feb 25 00:25 DB_Full_Backup_202202242300.log
voyager:logs/voyager/backups/ $ more DB_Full_Backup_202202242300.log
---------------------------------------------------------------------
SQL> col STATUS format a9
SQL> col hrs format 999.99
SQL> select SESSION_KEY, INPUT_TYPE, STATUS,
to_char(START_TIME,'mm/dd/yy hh24:mi') start_time,
to_char(END_TIME,'mm/dd/yy hh24:mi') end_time,
elapsed_seconds/3600 hrs from V$RMAN_BACKUP_JOB_DETAILS
order by session_key;
SQL> /
SESSION_KEY INPUT_TYPE STATUS START_TIME END_TIME HRS
----------- ------------- --------- -------------- -------------- -------
29 DB FULL RUNNING 01/07/14 10:28 01/07/14 10:28 .00
SQL> /
SESSION_KEY INPUT_TYPE STATUS START_TIME END_TIME HRS
----------- ------------- --------- -------------- -------------- -------
29 DB FULL RUNNING 01/07/14 10:28 01/07/14 10:28 .01
SQL> /
SESSION_KEY INPUT_TYPE STATUS START_TIME END_TIME HRS
----------- ------------- --------- -------------- -------------- -------
29 DB FULL COMPLETED 01/07/14 10:28 01/07/14 10:29 .03
============================================================
next script
---------------------------------------------------------------------------
SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
ROUND (SOFAR/TOTALWORK*100, 2) "% COMPLETE"
FROM V$SESSION_LONGOPS
WHERE OPNAME LIKE 'RMAN%' AND OPNAME NOT LIKE '%aggregate%'
AND TOTALWORK! = 0 AND SOFAR <> TOTALWORK;
SID SERIAL# CONTEXT SOFAR TOTALWORK %COMPLETE
---------- ---------- ---------- ---------- ---------- ----------
18 29 1 9115569 19258880 47.33
===========================================================================
next script
----------------------------------------------------------------------------------
You can also check historical backup status with the help of following script:
set linesize 500 pagesize 2000
col Hours format 9999.99
col STATUS format a10
select SESSION_KEY, INPUT_TYPE, STATUS,
to_char(START_TIME,'mm-dd-yyyy hh24:mi:ss') as RMAN_Bkup_start_time,
to_char(END_TIME,'mm-dd-yyyy hh24:mi:ss') as RMAN_Bkup_end_time,
elapsed_seconds/3600 Hours from V$RMAN_BACKUP_JOB_DETAILS
order by session_key;
SESSION_KEY INPUT_TYPE STATUS RMAN_BKUP_START_TIM RMAN_BKUP_END_TIME HOURS
----------- ------------- ---------- ------------------- ------------------- --------
137764 DB FULL COMPLETED 06-06-2017 02:00:32 06-06-2017 04:12:13 2.19
137770 ARCHIVELOG COMPLETED 06-06-2017 04:00:29 06-06-2017 04:01:05 .01
137778 ARCHIVELOG COMPLETED 06-06-2017 06:00:27 06-06-2017 06:00:35 .00
137782 ARCHIVELOG COMPLETED 06-06-2017 08:00:32 06-06-2017 08:03:36 .05
137786 ARCHIVELOG COMPLETED 06-06-2017 10:00:30 06-06-2017 10:02:03 .03
137790 ARCHIVELOG COMPLETED 06-06-2017 12:00:30 06-06-2017 12:02:34 .03
137794 ARCHIVELOG COMPLETED 06-06-2017 14:00:30 06-06-2017 14:02:58 .04
=======================================================
next script
-----------------------------------------------------------
select OUTPUT from V$RMAN_OUTPUT;
=======================================================
RMAN COMMANDS:---
=======================
To show all configuration details :- RMAN > show all;
To show backups details:- RMAN > list backup;
To show archivelog details:- RMAN > list archivelog until time 'sysdate - 12';
To show backup summary:- RMAN > list backup summary;
To delete expired backups:- RMAN > delete noprompt expired backup;
To crosscheck backups:- RMAN > crosscheck backup;
To delete obsolute backups:- RMAN > delete noprompt obsolute;
To list backups for sysdate:- RMAN > list backup completed before 'sysdate-7';
To delete backup after time:- RMAN > list backup completed after 'sysdate-8';
To delete backup between time:-
RMAN > list backup completed between 'sysdate-7' and 'sysdate-3';
To delete backup before time:- RMAN > delete backup completed before 'sysdate-7';
To delete backup after time:- RMAN > delete backup completed after 'sysdate-8';
To delete backup between time:-
RMAN > delete backup completed between 'sysdate-7' and 'sysdate-3';
+++++++ RMAN BKUP Location command ++++++++++++++++++
echo $(echo "select fname from v\$backup_files where file_type='PIECE' order by completion_time desc fetch first 1 rows only;" | sqlplus \/ as sysdba | dirname $(grep -e "^/[[:graph:]]*"))
another best script that will work on standalone DB :-
cd $(echo "select name from v\$recovery_file_dest;" | sqlplus \/ as sysdba | grep -E "^/[[:graph:]]*")
another best script that will work on RAC DB :-
echo $(echo "select name from v\$recovery_file_dest;" | sqlplus \/ as sysdba | grep -e "^+")
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
[oracle@pm latestFolder]$ cat example.sh
#!/bin/sh
# below command will extract timing of latest rman backup
timing=$(echo "select to_char(newest_backup_time,'YYYY-MM-DD HH:MI:SS') "latest_backup_time" from v\$backup_set_summary order by newest_backup_time desc;" | sqlplus \/ as sysdba | grep -v "[[:alpha:]]" | grep -E "^[[:digit:]]{4}+-+[[:digit:]]{0,2}+-[[:digit:]]{0,2}+[[:space:]]+[[:digit:]]{0,2}+:+[[:digit:]]{0,2}+:+[[:digit:]]{0,2}")
# below command will extract backup location
backup_location=$(echo "select name from v\$recovery_file_dest;" | sqlplus \/ as sysdba | grep -E "^/[[:graph:]]*")
# below command will fine files
find ${backup_location}-maxdepth 1 -type f -not -newermt "${timing}"
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
or we can find backups older than today
find . -type f -not -newermt "$(date -d '0 days ago' +'%Y-%m-%d %H:%M:%S')"
--------------------
du -b *2023_12_30_dbf_* | awk '{x+=$1};END{print x/(1024*1024*1024),"GB"}'
--------------------
How to kill ORACLE RMAN backup job:-
---------------------------------------------------------------------------------------------------------------------
SQL>
select b.sid, b.serial#, a.spid, b.client_info from gv$process a, gv$session b
where a.addr=b.paddr and client_info like 'rman%';