DM7使用DMRAMN執行更新DB_MAGIC恢復
使用DMRAMN執行更新DB_MAGIC恢復
使用RECOVER命令完成資料庫恢復工作,可以是基於備份集的恢復工作,也可以是使用本地歸檔日誌的恢復工作。如果還原後,資料已經處於一致性狀態了,則可以使用更新DB_MAGIC方式恢復,前提是不需要重做日誌。語法如下:
RECOVER DATABASE '' [] [USE DB_MAGIC ] [UNTIL TIME '< 時間串>'] [UNTIL LSN ]; | RECOVER DATABASE '' FROM BACKUPSET '< 備份集目錄>'[DEVICE TYPE DISK|TAPE[PARMS '< 介質引數>']] [IDENTIFIED BY < 密碼> [ENCRYPT WITH < 加密演算法>]] ; | RECOVER DATABASE '' UPDATE DB_MAGIC; ::= WITH ARCHIVEDIR '< 歸檔日誌目錄>'{,'< 歸檔日誌目錄>'}
DATABASE:指定還原庫目標的dm.ini檔案路徑。
USE DB_MAGIC:指定本地歸檔日誌對應資料庫的DB_MAGIC,若不指定,則預設使用目標恢復資料庫的DB_MAGIC。
UNTIL TIME:恢復資料庫到指定的時間點。
UNTIL LSN:恢復資料庫到指定的LSN。
BACKUPSET:指定用於還原目標資料庫的備份集目錄。
DEVICE TYPE:指儲存備份集的介質型別,支援DISK和TAPE,預設為DISK。DISK表示儲存備份集到磁碟,TAPE表示儲存到磁帶。
PARMS:介質引數,供第三方儲存介質(TAPE型別)管理使用。
IDENTIFIED BY:指定備份時使用的加密密碼,供還原過程解密使用。
ENCRYPT WITH:指定備份時使用的加密演算法,供還原過程解密使用,若未指定,則使用預設演算法。
WITH ARCHIVEDIR:本地歸檔日誌搜尋目錄,若未指定,則僅使用目標庫配置本地歸檔目錄,RAC環境還會取REMOTE歸檔目錄。
資料庫恢復有三種方式:更新DB_MAGIC恢復、從備份集恢復和從歸檔恢復,
更新DB_MAGIC恢復
當備份集為離線備份即備份過程中無日誌生成,那麼此時還原後的資料庫中資料與備份時資料狀態一致。在不需要重做歸檔日誌恢復資料的情況下,可以直接更新DB_MAGIC完成資料庫恢復。完整的示例如下:
1) 啟動RMAN備份資料庫,保證伺服器處於離線狀態。
RMAN> backup database '/dm_home/dmdba/dmdbms/data/jydm/dm.ini' full backupset '/dm_home/dmdba/dmdbms/data/jydm/bak/db_full_bak_recover_dbmagic'; backup database '/dm_home/dmdba/dmdbms/data/jydm/dm.ini' full backupset '/dm_home/dmdba/dmdbms/data/jydm/bak/db_full_bak_recover_dbmagic'; file dm.key not found, use default license! checking if the database under system path [/dm_home/dmdba/dmdbms/data/jydm] is running...[4]. checking if the database under system path [/dm_home/dmdba/dmdbms/data/jydm] is running...[3]. checking if the database under system path [/dm_home/dmdba/dmdbms/data/jydm] is running...[2]. checking if the database under system path [/dm_home/dmdba/dmdbms/data/jydm] is running...[1]. checking if the database under system path [/dm_home/dmdba/dmdbms/data/jydm] is running...[0]. checking if the database under system path [/dm_home/dmdba/dmdbms/data/jydm] is running, write dmrman info. EP[0] max_lsn: 19945240 BACKUP DATABASE [jydm], execute...... CMD CHECK LSN...... BACKUP DATABASE [jydm], collect dbf...... CMD CHECK ...... DBF BACKUP SUBS...... total 1 packages processed... total 7 packages processed... total 13 packages processed... total 14 packages processed... total 15 packages processed... total 16 packages processed... total 21 packages processed... total 22 packages processed... DBF BACKUP MAIN...... BACKUPSET [/dm_home/dmdba/dmdbms/data/jydm/bak/db_full_bak_recover_dbmagic] END, CODE [0]...... META GENERATING...... total 26 packages processed... total 26 packages processed! CMD END.CODE:[0] backup successfully! time used: 15113.537(ms) RMAN> show backupset '/dm_home/dmdba/dmdbms/data/jydm/bak/db_full_bak_recover_dbmagic'; show backupset '/dm_home/dmdba/dmdbms/data/jydm/bak/db_full_bak_recover_dbmagic'; system path: /dm_home/dmdba/dmdbms/data/jydm db magic: 708657636 permanent magic: 1250320462 rac node: 1 page check: 0 rlog encrypt: 0 external cipher[id/name]: 0/ external hash[id/name]: 0/ length in char: 0 use new hash: 1 page size: 8 KB extent size: 16 case sensitive: 1 log page size: 512 B unicode_flag/charset: 0 data version: 0x7000A sys version: V7.1.6.46-Build(2018.02.08-89107)ENT enable policy: 0 archive flag: 1 blank_pad_mode: 0 crc_check: TRUE backupset sig: BA backupset version: 4009 database name: jydm backup name: DB_FULL_jydm_20200617_192816_000091 backupset description: backupset ID : -1041017958 parent backupset ID: -1 META file size : 86528 compressed level: 0 encrypt type: 0 parallel num: 1 backup range: database mpp_timestamp: 1592393290 ddl_clone: FALSE mpp_flag: FALSE backup level: offline backup type: full without log: FALSE START_LSN: 19945241 START_SEQ: 7798402 END_LSN: 19945240 END_SEQ: 7798401 base START_LSN: -1 base END_LSN: -1 base name: base backupset: backup time: 2020-06-17 19:28:25 min trx start lsn: 19945241 min exec ver: 0x0701060C pkg size: 0x02000000 backupset directory: /dm_home/dmdba/dmdbms/data/jydm/bak/db_full_bak_recover_dbmagic backupset name: db_full_bak_recover_dbmagic backup data file num: 8 backup piece num: 1 $file_seq |$size(KB) |$pos_desc |$content_type 0 |205431 |db_full_bak_recover_dbmagic.bak |DATA $file_seq |$group_id |$group_name |$file_id |$file_path |$mirror_path |$file_len 1 |0 |SYSTEM |0 |/dm_home/dmdba/dmdbms/data/jydm/SYSTEM.DBF| |24117248 2 |1 |ROLL |0 |/dm_home/dmdba/dmdbms/data/jydm/ROLL.DBF| |208666624 3 |4 |MAIN |0 |/dm_home/dmdba/dmdbms/data/jydm/MAIN.DBF| |197132288 4 |5 |BOOKSHOP |0 |/dm_home/dmdba/dmdbms/data/jydm/BOOKSHOP.DBF| |157286400 5 |6 |DMHR |0 |/dm_home/dmdba/dmdbms/data/jydm/DMHR.DBF| |134217728 6 |7 |USERS |0 |/dm_home/dmdba/dmdbms/data/jydm/users01.dbf| |52428800 7 |9 |SYSAUX |0 |/dm_home/dmdba/dmdbms/data/jydm/SYSAWR.DBF| |176160768 8 |10 |FG_PERSON |0 |/dm_home/dmdba/dmdbms/data/jydm/FG_PERSON.DBF| |134217728 $file_seq |$file_path |$file_len |$begin_lsn |$begin_seqno |$begin_rpag_off |$end_lsn |$end_seqno |$create_time |$close_time show backupsets successfully. time used: 3.792(ms)
將源庫的資料庫備份集傳輸到目標主機上
[dmdba@shard1 bak]$ scp -r db_full_bak_recover_dbmagic/ dmdba@10.13.13.187:/dm_home/dmdbms/backup/ dmdba@10.13.13.187's password: db_full_bak_recover_dbmagic.bak 100% 201MB 100.3MB/s 00:02 db_full_bak_recover_dbmagic.meta 100% 85KB 84.5KB/s 00:00 [dmdba@shard1 bak]$
2) 準備目標庫,可以使用備份庫,也可以重新生成庫。這裡是在別一臺伺服器上建立新庫,重新生成庫操作如下:
./dminit path=/opt/dmdbms/data db_name=DAMENG_FOR_RESTORE auto_overwrite=1
但我這裡目標庫就是源庫
3) 校驗備份。
RMAN> check backupset '/dm_home/dmdbms/backup/db_full_bak_recover_dbmagic'; check backupset '/dm_home/dmdbms/backup/db_full_bak_recover_dbmagic'; CMD END.CODE:[0] check backupset successfully. time used: 6.093(ms)
4) 還原資料庫。
RMAN> restore database '/dm_home/dmdbms/data/dameng_for_recover/dm.ini' from backupset '/dm_home/dmdbms/backup/db_full_bak_recover_dbmagic'; restore database '/dm_home/dmdbms/data/dameng_for_recover/dm.ini' from backupset '/dm_home/dmdbms/backup/db_full_bak_recover_dbmagic'; file dm.key not found, use default license! checking if the database under system path [/dm_home/dmdbms/data/dameng_for_recover] is running...[4]. checking if the database under system path [/dm_home/dmdbms/data/dameng_for_recover] is running...[3]. checking if the database under system path [/dm_home/dmdbms/data/dameng_for_recover] is running...[2]. checking if the database under system path [/dm_home/dmdbms/data/dameng_for_recover] is running...[1]. checking if the database under system path [/dm_home/dmdbms/data/dameng_for_recover] is running...[0]. checking if the database under system path [/dm_home/dmdbms/data/dameng_for_recover] is running, write dmrman info. RESTORE DATABASE CHECK...... RESTORE DATABASE , dbf collect...... RESTORE DATABASE , dbf refresh ...... RESTORE BACKUPSET [/dm_home/dmdbms/backup/db_full_bak_recover_dbmagic] START...... total 22 packages processed... RESTORE DATABASE , UPDATE ctl file...... RESTORE DATABASE , REBUILD key file...... RESTORE DATABASE , CHECK db info...... RESTORE DATABASE , UPDATE db info...... total 24 packages processed! CMD END.CODE:[0] restore successfully. time used: 49968.844(ms)
5) 恢復資料庫。
RMAN> recover database '/dm_home/dmdbms/data/dameng_for_recover/dm.ini' update db_magic; recover database '/dm_home/dmdbms/data/dameng_for_recover/dm.ini' update db_magic; checking if the database under system path [/dm_home/dmdbms/data/dameng_for_recover] is running...[4]. checking if the database under system path [/dm_home/dmdbms/data/dameng_for_recover] is running...[3]. checking if the database under system path [/dm_home/dmdbms/data/dameng_for_recover] is running...[2]. checking if the database under system path [/dm_home/dmdbms/data/dameng_for_recover] is running...[1]. checking if the database under system path [/dm_home/dmdbms/data/dameng_for_recover] is running...[0]. checking if the database under system path [/dm_home/dmdbms/data/dameng_for_recover] is running, write dmrman info. EP[0] max_lsn: 19945240 recover successfully! time used: 7041.721(ms)
6)檢查db_magic值,可以確定在沒有指定update db_magic選項時其實也是更新了db_maigc值。db_maigc值從708657636變成了-616506144
[root@dmks init.d]# service DmServicedmrc start Starting DmServicedmrc: [ OK ] [dmdba@dmks ~]$ disql SYSDBA/xxzx7817600@localhost:5336 Server[localhost:5336]:mode is normal, state is open login used time: 11.667(ms) disql V7.1.6.46-Build(2018.02.08-89107)ENT Connected to: DM 7.1.6.46 SQL> select permanent_magic; LINEID PERMANENT_MAGIC ---------- --------------- 1 1250320462 used time: 0.305(ms). Execute id is 5. SQL> select db_magic from v$rlog; LINEID DB_MAGIC ---------- ----------- 1 -616506144 used time: 1.948(ms). Execute id is 6.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2731765/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DM7使用DMRAMN執行歸檔恢復
- DM7使用DMRAMN執行備份集恢復
- DM7使用DMRAMN對多次故障恢復後使用不同資料庫的歸檔進行恢復資料庫
- DM7使用DMRMAN執行RAC資料庫恢復資料庫
- DM7使用DMRMAN執行資料庫還原和恢復資料庫
- DM7使用DMRMAN執行歸檔修復
- DM7使用Disql執行表還原SQL
- 使用 “恢復模式” 或 “DFU 模式” 來更新和恢復 iOS 韌體模式iOS
- DM7使用DMRMAN執行歸檔備份
- DM7使用DMRMAN執行歸檔還原
- DM7使用DMRMAN恢復資料庫到指定時間點/LSN資料庫
- (Les16 執行資料庫恢復)-表空間恢復資料庫
- blog將恢復更新
- DM7使用Disql執行表空間還原SQL
- DM7使用DMRMAN執行表空間還原
- DM7使用dmrestore執行並行對映檔案還原REST並行
- 【手摸手玩轉 OceanBase 175】如何執行執行全量恢復
- DM7使用Disql執行表還原的複雜用法SQL
- DM7使用聯機執行SQL語句進行備份還原SQL
- DM7使用離線工具DMRMAN執行資料庫備份資料庫
- DM7使用dmrestore執行指定時間點或LSN還原REST
- DM7使用dmrestore工具利用不同資料庫的歸檔恢復資料庫REST資料庫
- DM7 RAC資料庫恢復成單機資料庫資料庫
- ManualResetEvent實現執行緒的暫停與恢復執行緒
- 【北亞資料恢復】oracle資料庫執行truncate table命令怎麼恢復資料?資料恢復Oracle資料庫
- 如何優雅地恢復執行中的容器應用
- DM7使用DMRMAN工具執行備份集對映檔案匯出
- 【伺服器資料恢復】linux下執行FSCK後無法掛載的資料恢復案例伺服器資料恢復Linux
- DM7使用DMRMAN工具執行加密備份與設定跟蹤日誌加密
- DM7使用DMRMAN對資料庫執行指定對映檔案還原資料庫
- DM7聯機執行SQL語句進行表備份SQL
- 使用 Bash 自動執行復雜任務
- 行動硬碟資料恢復硬碟資料恢復
- DM7聯機執行SQL語句進行歸檔備份SQL
- 【伺服器資料恢復】多次異常斷電後儲存執行中突然崩潰的資料恢復伺服器資料恢復
- 生產資料update沒加where條件(從執行到恢復)
- 使用myloader恢復資料教程
- DM7聯機執行SQL語句進行表空間備份SQL