最近先后幫客戶(hù)做了兩套從虛擬化環(huán)境到物理機(jī)的數(shù)據(jù)庫(kù)遷移,都是Linux系統(tǒng),Oracle 11.2.0.4的RAC,最終選定ADG方案實(shí)現(xiàn)遷移,簡(jiǎn)單高效。 問(wèn)題1:備庫(kù)Redo的一個(gè)member路徑有誤按流程做完發(fā)現(xiàn)備庫(kù)在open后,Redo的一個(gè)member路徑有誤,都是+FRA磁盤(pán)組: SQL> select member from v$logfile;MEMBER ----------------------------------------------------------- +DATA/jingyus/onlinelog/group_1.383.1050758359 +FRA +DATA/jingyus/onlinelog/group_2.384.1050758359 +FRA +DATA/jingyus/onlinelog/group_3.385.1050758359 +FRA +DATA/jingyus/onlinelog/group_4.386.1050758359 +FRA +DATA/jingyus/onlinelog/group_5.397.1050758359 +FRA +DATA/jingyus/onlinelog/group_6.398.1050758361 MEMBER ----------------------------------------------------------- +FRA +DATA/jingyus/onlinelog/group_7.399.1050758361 +FRA +DATA/jingyus/onlinelog/group_8.400.1050758361 +FRA +DATA/jingyus/standbylog/standby_group_101.log +DATA/jingyus/standbylog/standby_group_102.log +DATA/jingyus/standbylog/standby_group_103.log +DATA/jingyus/standbylog/standby_group_104.log +DATA/jingyus/standbylog/standby_group_105.log +DATA/jingyus/standbylog/standby_group_201.log MEMBER ---------------------------------------------------------- +DATA/jingyus/standbylog/standby_group_202.log +DATA/jingyus/standbylog/standby_group_203.log +DATA/jingyus/standbylog/standby_group_204.log +DATA/jingyus/standbylog/standby_group_205.log 26 rows selected. 這樣的路徑不全,也無(wú)法使用常規(guī)命令刪除掉。 --convert:SQL> show parameter convertNAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_file_name_convert string jingyu, jingyus log_file_name_convert string +fra/jingyu, +arch/jingyus, jingyu, jingyus 確認(rèn)符合實(shí)際要求,沒(méi)有問(wèn)題。 檢查db_recovery相關(guān)參數(shù): SQL> show parameter db_recoveryNAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string +FRA db_recovery_file_dest_size big integer 90G 果然是這里有問(wèn)題,新環(huán)境應(yīng)該是+ARCH磁盤(pán)組,而且客戶(hù)這里的新規(guī)范是不配置此參數(shù),這里將參數(shù)去掉,重啟實(shí)例生效: SQL> alter system reset db_recovery_file_dest_size;System altered.SQL> alter system reset db_recovery_file_dest;System altered.SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down.SQL> startup mount;ORACLE instance started. Total System Global Area 7.4826E+10 bytes Fixed Size 2261048 bytes Variable Size 1.3959E+10 bytes Database Buffers 6.0666E+10 bytes Redo Buffers 199049216 bytes Database mounted.SQL> show parameter db_recoverNAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string db_recovery_file_dest_size big integer 0SQL> 問(wèn)題2:switch database to copy報(bào)錯(cuò)RMAN-6571上面改完之后,已經(jīng)有問(wèn)題的member并不會(huì)自己修復(fù),需要去主庫(kù)生成適用于備庫(kù)的控制文件,在備庫(kù)進(jìn)行恢復(fù): --standby controlfile primary:RMAN> backup current controlfile for standby format '/tmp/std_ctl.bak';scp to standby. standby: shutdown immediate startup nomountRMAN> restore standby controlfile from '/tmp/std_ctl.bak';alter database mount; 此時(shí)數(shù)據(jù)文件的名字因?yàn)镺MF并不一樣,convert轉(zhuǎn)換的只有jingyu->jingyus,下面是示例: selct name from v$datafile; select member from v$Logfile; NAME -------------------------------------------------------------------------------- +DATA/jingyu/datafile/dmb_ts.381.1046616217 +DATA/jingyu/datafile/dmb_ts.383.1047808801 +DATA/jingyu/datafile/dmo_ts.384.1048122001 +DATA/jingyu/datafile/dmb_ts.385.1048755601 +DATA/jingyu/datafile/dmb_ts.386.1049724001 +DATA/jingyu/datafile/rpm.387.1049986803 116 rows selected. --由于配置了db_file_name_convert 參數(shù): NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_file_name_convert string jingyu, jingyus --會(huì)按上面設(shè)置的規(guī)則轉(zhuǎn)換: NAME -------------------------------------------------------------------------------- +DATA/jingyus/datafile/dmb_ts.381.1046616217 +DATA/jingyus/datafile/dmb_ts.383.1047808801 +DATA/jingyus/datafile/dmo_ts.384.1048122001 +DATA/jingyus/datafile/dmb_ts.385.1048755601 +DATA/jingyus/datafile/dmb_ts.386.1049724001 +DATA/jingyus/datafile/rpm.387.1049986803 116 rows selected. 但實(shí)際上我們同步過(guò)來(lái)的數(shù)據(jù)文件是這樣: +DATA/jingyus/datafile/dmb_ts.342.1050704211 +DATA/jingyus/datafile/dmb_ts.363.1050706625 +DATA/jingyus/datafile/dmo_ts.364.1050706641 +DATA/jingyus/datafile/dmb_ts.365.1050706649 +DATA/jingyus/datafile/dmb_ts.366.1050706655 +DATA/jingyus/datafile/rpm.367.1050706663 116 rows selected. 最直接的方式是通過(guò)數(shù)據(jù)庫(kù)的rename file 命令進(jìn)行一一更正,但是比較麻煩,有一個(gè)通用的技巧就是將這些真實(shí)的文件catalog到rman中,將以copy的方式識(shí)別,然后直接switch到copy,就實(shí)現(xiàn)了更名的目的,且不容易出錯(cuò): catalog start with '+DATA/jingyus/datafile'; switch database to copy; 結(jié)果10號(hào)文件報(bào)錯(cuò)RMAN-6571,跳過(guò)10號(hào)文件,也是其他文件接連報(bào)錯(cuò),看oerr的解釋?zhuān)?/p> $ oerr rman 65716571, 1, "datafile %d does not have recoverable copy" // *Cause: The SWITCH command with the option TO COPY was specified but // the datafile has no valid copy to switch to. // *Action: Verify whether the datafile has a valid datafile copy. 順手還去查了MOS文檔
也沒(méi)找到有效的解決方案。后來(lái)走了些彎路,又嘗試做了一次備庫(kù)控制文件的創(chuàng)建,效果依舊。 SQL> select file#, name, checkpoint_change# from v$datafile_header; FILE# NAME CHECKPOINT_CHANGE# ------------------------------ ------------------------------------------------------------------ ------------------------------ 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 +DATA/jingyus/datafile/dmb_ts01.dbf 98520735063 11 +DATA/jingyus/datafile/dmb_ts02.dbf 98520735063 FILE# NAME CHECKPOINT_CHANGE# ------------------------------ ------------------------------------------------------------------ ------------------------------ 12 +DATA/jingyus/datafile/dmb_ts03.dbf 98520735063 13 +DATA/jingyus/datafile/dmb_ts04.dbf 98520735063 14 +DATA/jingyus/datafile/dmo_ts01.dbf 98520735063 15 +DATA/jingyus/datafile/dmo_ts02.dbf 98520735063 16 +DATA/jingyus/datafile/dmo_ts03.dbf 98520735063 17 +DATA/jingyus/datafile/etl_ts01.dbf 98520735063 18 +DATA/jingyus/datafile/rpm01.dbf 98520735063 19 +DATA/jingyus/datafile/use01.dbf 98520735063 20 +DATA/jingyus/datafile/dms_ts01.dbf 98520735063 21 0 22 0 ...省略后面無(wú)問(wèn)題的顯示。 再次驗(yàn)證下問(wèn)題文件數(shù),就是有這11個(gè): SQL> select checkpoint_change#, count(*) from v$datafile_Header group by checkpoint_change#; CHECKPOINT_CHANGE# COUNT(*) ------------------------------ ------------------------------ 0 105 98520757598 11 確認(rèn)后,就只需要將需要switch的文件列出來(lái): switch datafile 1,2,3,4,5,6,7,8,9,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101 to copy; 再次查詢(xún): SQL> set num 30SQL> select checkpoint_change#, count(*) from v$datafile_Header group by checkpoint_change#; CHECKPOINT_CHANGE# COUNT(*) ------------------------------ ------------------------------ 98520757598 116 此時(shí)開(kāi)庫(kù),名字也都是OK: SQL> alter database open;Database altered.SQL> select member from v$logfile;MEMBER --------------------------------------------------------- +DATA/jingyus/onlinelog/group_1.257.950284165 +ARCH/jingyus/onlinelog/group_1.257.950284167 +DATA/jingyus/onlinelog/group_2.258.950284167 +ARCH/jingyus/onlinelog/group_2.258.950284169 +DATA/jingyus/onlinelog/group_3.265.950286045 +ARCH/jingyus/onlinelog/group_3.259.950286047 +DATA/jingyus/onlinelog/group_4.266.950286047 +ARCH/jingyus/onlinelog/group_4.260.950286049 +DATA/jingyus/onlinelog/group_5.286.959014699 +ARCH/jingyus/onlinelog/group_5.266.959014703 +DATA/jingyus/onlinelog/group_6.287.959014717 MEMBER --------------------------------------------------------- +ARCH/jingyus/onlinelog/group_6.273.959014719 +DATA/jingyus/onlinelog/group_7.288.959014729 +ARCH/jingyus/onlinelog/group_7.277.959014731 +DATA/jingyus/onlinelog/group_8.289.959014753 +ARCH/jingyus/onlinelog/group_8.269.959014755 +DATA/jingyus/standbylog/standby_group_101.log +DATA/jingyus/standbylog/standby_group_102.log +DATA/jingyus/standbylog/standby_group_103.log +DATA/jingyus/standbylog/standby_group_104.log +DATA/jingyus/standbylog/standby_group_105.log +DATA/jingyus/standbylog/standby_group_201.log +DATA/jingyus/standbylog/standby_group_202.log +DATA/jingyus/standbylog/standby_group_203.log +DATA/jingyus/standbylog/standby_group_204.log +DATA/jingyus/standbylog/standby_group_205.log 26 rows selected. 然后啟動(dòng)備庫(kù)的mrp時(shí),會(huì)自動(dòng)刪除+ARCH 下的路徑,這個(gè)應(yīng)該就是因?yàn)槲覀兦懊嫒サ袅薲b_recover的相關(guān)設(shè)置: --recover ,+ARCH auto deleted..SQL> select member from v$logfile;MEMBER -------------------------------------------------------- +DATA/jingyus/onlinelog/group_1.397.1050759359 +DATA/jingyus/onlinelog/group_2.398.1050759359 +DATA/jingyus/onlinelog/group_3.399.1050759359 +DATA/jingyus/onlinelog/group_4.400.1050759361 +DATA/jingyus/onlinelog/group_5.401.1050759361 +DATA/jingyus/onlinelog/group_6.402.1050759361 +DATA/jingyus/onlinelog/group_7.403.1050759361 +DATA/jingyus/onlinelog/group_8.404.1050759363 +DATA/jingyus/standbylog/standby_group_101.log +DATA/jingyus/standbylog/standby_group_102.log +DATA/jingyus/standbylog/standby_group_103.log +DATA/jingyus/standbylog/standby_group_104.log +DATA/jingyus/standbylog/standby_group_105.log +DATA/jingyus/standbylog/standby_group_201.log +DATA/jingyus/standbylog/standby_group_202.log +DATA/jingyus/standbylog/standby_group_203.log +DATA/jingyus/standbylog/standby_group_204.log +DATA/jingyus/standbylog/standby_group_205.log 18 rows selected. 至此,遇到的問(wèn)題就都解決了。松一口氣,等待晚上配合切換即可。 |
|
來(lái)自: 昵稱(chēng)Tk6Ob > 《待分類(lèi)》