欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

達夢數據庫文件故障的恢復方法

 更新時間:2024年12月03日 11:40:07   作者:欲速不達8820  
本文介紹了達夢數據庫文件損壞或誤刪除后的恢復方法,這里的數據庫文件包括,表空間數據文件、重做日志文件、UNDO文件、TEMP文件、控制文件等,介紹了兩種恢復場景,感興趣的小伙伴跟著小編一起來看看吧

1、概述

1.1 概述

本文介紹了達夢數據庫文件損壞或誤刪除后的恢復方法。這里的數據庫文件包括,表空間數據文件、重做日志文件、UNDO文件、TEMP文件、控制文件等。介紹了兩種恢復場景,第一種場景是使用備份集恢復,第二種場景是在沒有備份集的情況下嘗試恢復。

1.2 環(huán)境介紹

數據庫版本:DM Database 64 V8 03134284094-20231108-207962-20067

操作系統(tǒng)版本:Linux version 4.19.90-24.4.v2101.ky10.x86_64

2、使用備份集的恢復方法

本章模擬了幾種故障場景及還原、恢復方法,不介紹備份還原理論,學習備份還原理論知識可以參考官方文檔《DM8備份與還原》。

2.1 實驗準備

聯機備份

SQL> backup database backupset '/dm8/backup/fullbak_20241126_002' compressed level 1;

2.2 誤刪除“用戶表空間數據文件”

1) 制造故障

表空間數據文件損壞:

rm /dm8/data/DAMENG/MAIN.DBF

2)還原方法

數據文件誤刪除,如果數據庫沒有關閉,應該優(yōu)先考慮從操作系統(tǒng)找回,優(yōu)點是不需要關閉數據庫,相關方法我們在第3章介紹。這里介紹的是用備份集還原的方法。

dmrman
RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/dm8/backup/fullbak_20241126_002';
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' TABLESPACE MAIN;
 

2.3 誤刪除SYSTEM.DBF

系統(tǒng)表空間數據文件故障,不能使用2.2節(jié)還原表空間的方法,需要全庫還原。

全庫還原有兩種方法,方法1是重新初始化一個新庫,在這個新庫上做還原;方法2是將備份集還原到指定目錄。

1)制造故障,刪除SYSTEM.DBF

rm /dm8/data/DAMENG/SYSTEM.DBF

2)恢復SYSTEM.DBF

如果磁盤空間充足,可以考慮將數據庫目錄備份出來

mv /dm8/data/DAMENG /dm8/data/DAMENG_BAK

方法1:重新初始化一個新庫,在這個新庫上做還原

dminit path=/dm8/data/
RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET   '/dm8/backup/fullbak_20241126_002';  
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET   '/dm8/backup/fullbak_20241126_002';
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini'  UPDATE DB_MAGIC;
 

方法2:數據庫還原到指定目錄

RESTORE DATABASE TO '/dm8/data/DAMENG/' OVERWRITE FROM BACKUPSET   '/dm8/backup/fullbak_20241126_002';  
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET   '/dm8/backup/fullbak_20241126_002';
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini'  UPDATE DB_MAGIC;

2.4 誤刪除ROLL.DBF

1)制造故障,刪除ROLL.DBF

rm /dm8/data/DAMENG/ROLL.DBF

2)使用備份集還原

dmrman
RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' TABLESPACE ROLL FROM BACKUPSET '/dm8/backup/fullbak_20241126_002';
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' TABLESPACE ROLL;

2.5 誤刪除REDO日志文件

REDO文件損壞,需要使用備份集全庫還原,可以參考2.3節(jié)SYSTEM.DBF恢復方法。

3、無備份集的恢復方法

3.1 誤刪除“表空間數據文件”

LINUX 系統(tǒng)中被刪除的文件,只要其句柄沒有被關閉,可以在/proc/<pid>/fd 中找到其對應的文件副本。其中<pid>指打開該文件的進程 id。

利用該方法,結合 OS 命令,DM 提供失效文件的恢復方案如下:

1、 調用系統(tǒng)過程 SP_TABLESPACE_PREPARE_RECOVER(表空間名稱)準備進行恢復;

2、 如果使用過程中 DM 報錯表空間數據文件被刪除,通過操作系統(tǒng)的 ps 命令找到當前 dmserver 的 PID:ps -ef|grep dmserver;

3、 使用操作系統(tǒng) ll 命令查看被刪除文件對應的副本:ll /proc/<PID>/fd,會發(fā)現被刪除的文件后有(deleted)字樣;

4、 使用操作系統(tǒng)的 cp 命令將文件復制到原位置:cp 源路徑 目的路徑;

5、 復制成功后,調用系統(tǒng)過程 SP_TABLESPACE_RECOVER(表空間名稱)完成表空間失效文件的恢復。注意,要保證數據文件正確修復,需要保證在 SP_TABLESPACE_PREPARE_RECOVER后進行數據文件的復制。

故障模擬:

一、制造故障

1、查看表空間對應的數據文件

select t.name,d.path from SYS.V$TABLESPACE t
	left join SYS.V$DATAFILE d on(d.GROUP_ID=T.ID);

2、模擬誤刪除數據文件

rm /dm8/data/DAMENG/DMHR.DBF

二、恢復方法

1、 表空間失效文件恢復準備

SP_TABLESPACE_PREPARE_RECOVER('DMHR');

2、 查找dmserver 進程號

ps -ef|grep dmserver
 
dmdba       1798       1  0 09:14 ?        00:00:05 /dm8/dmdbms/bin/dmserver path=/dm8/data/DAMENG/dm.ini -noconsole

3、 查看進程目錄下的文件

ll /proc/1798/fd

4、 還原文件

cp -p /proc/1798/fd/17 /dm8/data/DAMENG/DMHR.DBF

5、 修復表空間文件

SP_TABLESPACE_RECOVER('DMHR');

6、驗證

SELECT count(*) FROM DMHR.EMPLOYEE;

恢復成功!

3.2 誤刪除控制文件

控制文件恢復方法:

到ctl_bak目錄,找到時間最近的備份,名稱改為dm.ctl即可。

3.3 誤刪除ROLL.DBF

1)制造故障,刪除ROLL.DBF

rm /dm8/data/DAMENG/ROLL.DBF

2)使用其他數據庫的ROLL文件冒充誤刪除的文件

使用其他數據庫的ROLL文件冒充誤刪除的文件。

修改 dm.ini 參數 PSEG_RECV 為 0,可以選擇跳過 ROLL.DBF 啟動數據庫臨時啟動數據庫(危險操作,可能破壞事務的原子性)。

PSEG_RECV 參數釋意: 系統(tǒng)故障重啟時,對活動事務和已提交事務的處理方式。 0:跳過回滾活動事務和 PURGE 已經提交事務的步驟。 1:回滾活動事務并 PURGE 已經提交事務; 2:延遲 PURGE 已提交事務,延遲回滾活動事務; 3:回滾活動事務,延遲 PURGE 已提交事務。

vi dm.ini
 
PSEG_RECV =0

拷貝其他數據庫ROLL.DBF冒充誤刪除的文件

cp /dm8/data/PROD/ROLL.DBF /dm8/data/DAMENG/ #拷貝其他庫的ROLL.DBF

啟動數據庫

dmserver ./dm.ini

數據庫啟動,恢復成功!

3.4 誤刪除REDO日志文件

重做日志文件損壞,推薦使用備份集恢復。

在沒有備份的情況下,可以嘗試使用沒損壞的redo文件或使用新建相同配置數據庫的redo文件冒充損壞的redo文件。通常要用dmmdf工具修改db_magic、pemnt_magic。不過這么做是有問題的,首先如果成功了,存在數據不一致的風險;其次,不一定能成功,至少在本文涉及的版本上,博主沒有恢復成功。

3.5 誤刪除TEMP.DBF

1)制造故障,刪除TEMP.DBF

rm /dm8/data/DAMENG/TEMP.DBF

2)臨時表空間數據文件誤刪除后不用還原,重啟數據庫后會重新生成TEMP.DBF文件

數據庫啟動后重新創(chuàng)建了TEMP.DBF。

以上就是達夢數據庫文件故障的恢復方法的詳細內容,更多關于達夢數據庫文件故障的資料請關注腳本之家其它相關文章!

相關文章

  • openGauss數據庫共享存儲特性概述

    openGauss數據庫共享存儲特性概述

    這篇文章主要介紹了openGauss數據庫共享存儲特性簡介,本特性提供主備機共享一份存儲的能力,實現基于磁陣設備的主備共享存儲HA部署形態(tài),可選通過OCK RDMA提升備機實時一致性讀能力,需要的朋友可以參考下
    2023-02-02
  • 一次因表變量導致SQL執(zhí)行效率變慢的實戰(zhàn)記錄

    一次因表變量導致SQL執(zhí)行效率變慢的實戰(zhàn)記錄

    這篇文章主要給大家介紹了一次因表變量導致SQL執(zhí)行效率變慢的實戰(zhàn)記錄,本文通過圖文以及示例代碼介紹的非常詳細,對大家學習或者了解sql具有一定的參考學習價值,需要的朋友可以參考下
    2021-11-11
  • 從Bak文件中恢復SQL數據庫的三種方法

    從Bak文件中恢復SQL數據庫的三種方法

    在數據庫管理和維護過程中,數據的安全性和完整性至關重要,備份文件(.bak 文件)是 SQL Server 中常用的數據庫備份格式,本文將介紹從 .bak 文件恢復 SQL 數據庫的基本步驟和最佳實踐,需要的朋友可以參考下
    2024-09-09
  • 數據庫基本概念面試必問

    數據庫基本概念面試必問

    這篇文章主要介紹了數據庫基本概念面試必問的相關資料,需要的朋友可以參考下
    2016-03-03
  • MyISAM與InnoDB索引實現對比詳解

    MyISAM與InnoDB索引實現對比詳解

    這篇文章主要給大家介紹了關于MyISAM與InnoDB索引實現對比的相關資料,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • SQL數據庫的所有命令(函數、運算符)匯總大全

    SQL數據庫的所有命令(函數、運算符)匯總大全

    結構化查詢語言(Structured?Query?Language)簡稱SQL,結構化查詢語言是一種數據庫查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統(tǒng)。sql語句就是對數據庫進行操作的一種語言。
    2023-01-01
  • StarRocks數據庫詳解(什么是StarRocks)

    StarRocks數據庫詳解(什么是StarRocks)

    StarRocks是一個高性能的全場景MPP數據庫,支持多種數據導入導出方式,包括Spark、Flink、Hadoop等,它采用分布式架構,支持多副本和彈性容錯,本文介紹StarRocks詳解,感興趣的朋友一起看看吧
    2025-03-03
  • dbeaver導入導出數據庫圖文教程(sql文件形式)

    dbeaver導入導出數據庫圖文教程(sql文件形式)

    這篇文章主要介紹了如何使用DBeaver復制數據庫,在導出和導入數據庫時,需要注意編碼一致性,以避免導入錯誤,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-02-02
  • 推薦Sql server一些常見性能問題的解決方法

    推薦Sql server一些常見性能問題的解決方法

    具體的SQL語句在很多情況下需要結合實際的應用情況來寫,這里不作敘述。
    2008-08-08
  • Navicat添加外鍵詳細操作步驟

    Navicat添加外鍵詳細操作步驟

    這篇文章主要介紹了Navicat添加外鍵詳細操作步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11

最新評論