對rman命令行為的操作簡單分析
2024-07-21 02:34:09
供稿:網友
rman 對dbms_backup.restore 的一些特定調用完梢醞üebug 分析出來。 通過設置debug 模式,我們可以跟蹤到大量的Log,從而為分析提供一定的說明。假定我們提交如下的命令: rman target / debug trace=d:/rman_trace.log 通過查看日志我們得之,rman 首先確定數據庫狀態: DBGSQL: EXEC SQL AT TARGET select decode(status,'OPEN',1,0) into :b1 from v$instance DBGSQL: sqlcode=0 DBGSQL: :b1 = 1 判定數據庫是否是在open 狀態下。然后,要去獲取數據庫的compatible參數值。 接下來調用dbms_backup_restore確定rman 可用的版本信息。對應的一些參數如下: PRotocol_version_number_min NUMBER := 8; protocol_release_number_min NUMBER := 0; protocol_update_number_min NUMBER := 4; protocol_version_number_max NUMBER := 9; protocol_release_number_max NUMBER := 2; protocol_update_number_max NUMBER := 0; 804-920 ,這個范圍內可用,804 ? 920 ? 是不是很熟悉? 下面調用dbms_rcvman的getPackageVersion 函數 ($Oracle_HOME/rdbms/admin/recover.bsq創建dbms_rcvman ,并可以獲得相關注釋)獲取package 的版本可用信息。 08.00.04到09.02.00 接下來rman 會查詢V$database ,從中獲取name ,resetlogs_time ,resetlogs_change# ,dbid 等信息。 下面這個比較重要, x$kcccp( Kernel Cache Checkpoint Progress)中獲取檢查點記錄: 類似如下的SQL: select nvl(max(cpmid),0) from x$kcccp where cpsta=2 這些操作完成后,rman 從v$option 中獲取相關信息,包括:'Parallel backup and recovery','Incremental backup and recovery','Duplexed backups','Block Media Recovery','Point-in-time tablespace recovery',通過這些來判定數據庫是否具有這些 功能。 然后Log中顯示連接到目標數據庫。 分析過程并不復雜,不過在涉及到深入的命令的時候會產生大量的Log,要有一定的耐心才能繼續下去。在rman 出現故障的時候, 設置Debug模式進行分析是一種非常有效的辦法。假如可能得話,以后的文章中我會舉幾個例子來說明。