達夢資料庫:誤刪除 undo/redo 日誌怎麼辦

phx6699發表於2022-07-07

誤刪除 undo/redo 日誌怎麼辦

分以下兩種情況:

如果有備份檔案

如果有備份檔案,可以重新初始化一個新的資料庫(初始化引數要和原庫一樣,比如頁大小、大小寫敏感、字符集等,這些可以在 DM 資料庫安裝路徑,../data/DAMENG 目錄下以  dminit+日期時間.log 命名的檔案中查詢),然後將備份檔案和歸檔日誌檔案拷貝到新的環境,然後再進行備份+歸檔的還原操作。

如果沒有備份檔案

如果沒有備份,可以通過修改永久魔術值的方式來恢復,但是這種情況下有可能丟失資料。方法如下:

  • 重新初始化一個新的資料庫,(初始化引數要和原庫一樣,比如頁大小、大小寫敏感、字符集等,這些可以在 DM 資料庫安裝路徑,../data/DAMENG 目錄下以  dminit+日期時間.log 命名的檔案中查詢)。
  • 將步驟 (1) 中重新初始化的資料庫中  DAMENG01.log、DAMENG02.log 檔案拷貝到當前丟失 REDO 日誌的庫目錄下。
  • 使用 dmmdf 工具獲取 SYSTEM.DBF 的 db_magic,並記錄下來。
[root@dmyanshi2 bin]# ./dmmdf /data/DAMENG/SYSTEM.DBF 1

1 db_magic=1394176795
2 next_trxid=34742179
Please input which parameter you want to change(1-2), q to quit: q
  • 使用 dmmdf 工具設定 DAMENG01.log 檔案的 db_magic,設定為步驟 (3) 中記錄的值。
[root@dmyanshi2 bin]# ./dmmdf /data/DAMENG/DAMENG01.log 2

1 sig = DMRLOG
2 ver = 7001
3 chksum = 0
4 dbversion = 0x70008
5 sta = 1
6 n_magic = 7
7 db_magic = 1411700695
8 clsn_fil = 0
9 cur_fil_id = 0
10 next_seq = 0
11 arch_seq = 0
12 len = 67108864
13 free = 4096
14 clsn = 0
15 clsn_off = 4096
16 arch_lsn = 0

You can only reset sta(5) or db_magic (7) or clsn (14).
Please input the num which one you want to change, q to quit: 7
Input the new value: 1394176795
1 sig = DMRLOG
2 ver = 7001
3 chksum = 0
4 dbversion = 0x70008
5 sta = 1
6 n_magic = 7
7 db_magic = 1394176795
8 clsn_fil = 0
9 cur_fil_id = 0
10 next_seq = 0
11 arch_seq = 0
12 len = 67108864
13 free = 4096
14 clsn = 0
15 clsn_off = 4096
16 arch_lsn = 0

Do you want to quit and save the change to file (y/n): y
Save to file success!
  • 重新啟動資料庫即可。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70019793/viewspace-2904777/,如需轉載,請註明出處,否則將追究法律責任。

相關文章