在Oracle資料庫中,如果我們使用用戶管理備份與恢復(User-Managed Backup and Recovery)方式去備份還原資料庫的話,如何獲取用戶管理備份與恢復的記錄信息呢?例如,我要查看某個資料庫實例做用戶管理備份的記錄。一般使用下麵腳本。似乎用戶管理備份比較“簡單”,目前我查了相關 ...
在Oracle資料庫中,如果我們使用用戶管理備份與恢復(User-Managed Backup and Recovery)方式去備份還原資料庫的話,如何獲取用戶管理備份與恢復的記錄信息呢?例如,我要查看某個資料庫實例做用戶管理備份的記錄。一般使用下麵腳本。似乎用戶管理備份比較“簡單”,目前我查了相關資料,只看到v$backup記錄了相關信息。而且這個系統試圖只能查看最後一次用戶管理備份的記錄信息。看不到相關歷史記錄信息。可能是這種備份與還原方式較少使用的緣故。遠遠沒有RMAN備份方式的記錄信息多。
alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
set linesize 640;
set pagesize 60;
col change# for 999999999999999999;
select * from v$backup;
在測試環境中,我使用用戶管理備份與恢復這種方式還原恢復了整個資料庫,然後我查看用戶管理備份的還原記錄信息如下所示:
SQL> COL resetlogs_change# FOR 999999999999999;
SQL> SELECT incarnation#
2 ,resetlogs_change#
3 ,TO_CHAR(resetlogs_time, 'yyyy-mm-dd hh24:mi:ss') db_restored_time
4 ,resetlogs_change#
5 --,scn_to_timestamp(resetlogs_change#) db_recovery_till_time
6 FROM v$database_incarnation
7 WHERE resetlogs_change# !=
8 (SELECT MIN(resetlogs_change#) FROM v$database_incarnation
9 );
INCARNATION# RESETLOGS_CHANGE# DB_RESTORED_TIME RESETLOGS_CHANGE#
------------ ----------------- ------------------- -----------------
2 1018536 2022-03-24 14:17:37 1018536
3 15765877865306 2023-04-07 08:59:51 15765877865306
SQL> SELECT incarnation#
2 ,resetlogs_change#
3 ,TO_CHAR(resetlogs_time, 'yyyy-mm-dd hh24:mi:ss') db_restored_time
4 ,scn_to_timestamp(resetlogs_change#) db_recovery_till_time
5 FROM v$database_incarnation
6 WHERE resetlogs_change# !=
7 (SELECT MIN(resetlogs_change#) FROM v$database_incarnation
8 );
,scn_to_timestamp(resetlogs_change#) db_recovery_till_time
*
ERROR at line 4:
ORA-08181: specified number is not a valid system change number
ORA-06512: at "SYS.SCN_TO_TIMESTAMP", line 1
SQL>
如上所示,雖然可以看到用戶管理備份與恢復的操作的時間點,但是查看還原恢復那個時間點是報ORA-08181錯誤(當然這個要看環境,有些情況下是不會報這個錯誤的)。我是使用下麵腳本恢復的。
recover database using backup controlfile until time '2023-03-29 15:59:05';
其實我們可以用下麵腳本查詢用戶管理備份/還原的記錄,如下所示:
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SQL> set linesize 640;
SQL> set pagesize 60;
SQL> col units for a30;
SQL> col item for a24;
SQL> col type for a16;
SQL> col units for a12;
SQL> col comments for a16;
SQL> col con_id for 999999;
SQL> select * from v$recovery_progress;
START_TIME TYPE ITEM UNITS SOFAR TOTAL TIMESTAMP COMMENTS CON_ID
------------------- ---------------- ------------------------ ------------ ---------- ---------- ------------------- ---------------- -------
2023-04-07 08:56:39 Media Recovery Log Files Files 9 9 0
2023-04-07 08:56:39 Media Recovery Active Apply Rate KB/sec 3196 3196 0
2023-04-07 08:56:39 Media Recovery Average Apply Rate KB/sec 3582 3582 0
2023-04-07 08:56:39 Media Recovery Maximum Apply Rate KB/sec 4531 4531 0
2023-04-07 08:56:39 Media Recovery Redo Applied Megabytes 664 664 0
2023-04-07 08:56:39 Media Recovery Recovery ID RCVID 0 0 RCVID: 0
2023-04-07 08:56:39 Media Recovery Last Applied Redo SCN+Time 0 0 2023-03-29 15:59:05 SCN: 15765877865 0
305
2023-04-07 08:56:39 Media Recovery Active Time Seconds 186 186 0
2023-04-07 08:56:39 Media Recovery Apply Time per Log Seconds 12 12 0
2023-04-07 08:56:39 Media Recovery Checkpoint Time per Log Seconds 8 8 0
2023-04-07 08:56:39 Media Recovery Elapsed Time Seconds 190 190 0
11 rows selected.
SQL>