深入解析達夢數據庫:模式分類、狀態管理與實操指南

達夢數據庫(DM Database)作為國產數據庫的核心代表,其模式與狀態機制是保障數據高可用、實現主備同步的關鍵基礎。無論是日常運維中的數據庫配置,還是故障場景下的主備切換,都需要深入理解模式與狀態的特性及交互邏輯。

一、達夢數據庫的三種核心模式

達夢數據庫的模式定義了數據庫的核心功能邊界,尤其是在數據同步(主備、歸檔)和用戶訪問權限上的差異。三種模式分別為 Normal 模式Primary 模式Standby 模式,僅能在 MOUNT 狀態下切換,且模式間可相互轉換。

1.1 Normal 模式:獨立運行的默認模式

Normal 模式是數據庫初始化后的默認模式,適用于無需主備同步的獨立部署場景,也是最靈活的運行模式。

核心特性
  • 訪問權限:用戶可無限制執行所有操作(增刪改查、表結構修改、備份恢復等)。
  • 歸檔機制:僅生成本地歸檔日志,不支持實時歸檔(Realtime)、即時歸檔(Timely)和異步歸檔(Async),即不向其他節點發送 REDO 日志。
  • 適用場景:單節點部署的業務系統,無需數據冗余或異地備份的場景。
模式切換命令
-- 需在 MOUNT 狀態下執行
ALTER DATABASE NORMAL;

1.2 Primary 模式:主備架構中的主庫模式

Primary 模式專為 主備同步(DataWatch) 設計,作為主庫節點運行,負責接收業務寫入并同步日志到備庫。

核心特性
  • 訪問權限:用戶可正常訪問數據庫,但存在極少限制(如不支持修改表空間文件名、不支持修改 arch_ini 歸檔配置參數)。
  • REDO 日志強制生成:對臨時表空間以外的所有數據庫對象修改,均強制生成 REDO 日志(保障備庫可完整重做)。
  • 歸檔機制:生成本地歸檔的同時,支持實時、即時、異步三種歸檔方式,可將 REDO 日志實時發送到備庫。
  • 適用場景:主備架構中的主庫節點,需對外提供寫入服務并保障數據同步到備庫。
模式切換命令
-- 需在 MOUNT 狀態下執行
ALTER DATABASE PRIMARY;

1.3 Standby 模式:主備架構中的備庫模式

Standby 模式作為主備架構的備庫節點,主要功能是接收主庫的 REDO 日志并重做,保障數據與主庫一致,僅提供只讀服務。

核心特性
  • 訪問權限:僅支持只讀操作(查詢、備份),不允許寫入;可執行臨時表的 INSERT/DELETE/UPDATE(臨時表修改不生成 REDO 日志,主備臨時表數據獨立)。
  • 日志處理:接收主庫發送的 REDO 日志并自動重做,保持與主庫數據一致;僅生成本地歸檔和異步歸檔,實時、即時歸檔強制失效。
  • 功能限制:時間觸發器、事件觸發器等自動執行功能失效;不支持數據庫作業備份(僅支持常規備份)。
  • 適用場景:主備架構中的備庫節點,用于讀寫分離(承擔查詢壓力)或故障切換(主庫故障后可切換為新主庫)。
模式切換命令
-- 需在 MOUNT 狀態下執行
ALTER DATABASE STANDBY;

模式切換的關鍵注意事項

  1. 切換前提:所有模式切換必須在 MOUNT 狀態下執行,Open 或 Suspend 狀態無法直接修改模式。
  2. 新初始化數據庫:首次啟動需以 Open 狀態正常啟動并退出,后續才能以 MOUNT 狀態啟動并修改模式。
  3. DMDSC 集群(共享存儲集群):修改模式需所有實例處于 MOUNT 狀態,且僅需在一個節點執行命令即可同步到所有節點。
  4. 啟動狀態關聯:非 Normal 模式(Primary/Standby)的數據庫,啟動時會自動進入 MOUNT 狀態,需手動切換為 Open 狀態后才能對外提供服務。

二、達夢數據庫的六種運行狀態

達夢數據庫的狀態描述了數據庫當前的服務能力(如是否允許訪問、是否允許日志寫入),分為 用戶可干預狀態(Mount、Open、Suspend)和 系統內部狀態(Startup、After Redo、Shutdown),狀態間切換有明確的規則限制。

2.1 系統內部狀態:用戶無法主動干預

此類狀態由數據庫自動管理,用于標識啟動、恢復等過程中的中間狀態,用戶無需手動操作。

狀態名稱觸發場景核心作用
Startup 狀態數據庫實例剛啟動時初始化內存結構、加載配置文件(如 dm.ini),為后續狀態切換做準備
After Redo 狀態啟動過程中聯機日志重做完成后、回滾活動事務前;非 Standby 模式執行 OPEN確保數據一致性(重做已提交事務日志),為進入 Open 狀態做最終準備
Shutdown 狀態數據庫實例正常退出時(執行 SHUTDOWN 命令或正常關閉進程)標識實例已停止服務,釋放內存、文件句柄等資源

2.2 用戶可干預狀態:運維核心操作對象

用戶可通過 SQL 命令切換這三種狀態,分別對應“配置模式”“提供服務”“限制日志寫入”三種核心場景。

2.2.1 Mount 狀態:配置與維護專用狀態

Mount 狀態是“中間態”,不對外提供業務訪問,但支持模式修改、歸檔配置、控制文件維護等核心運維操作。

核心特性
  • 訪問限制:不能修改數據,不能訪問表、視圖等業務對象;可查詢動態視圖(如 v$instance)、執行只讀系統過程。
  • 日志與刷盤:不生成 PWR 日志(Page Written Record,記錄數據頁刷盤信息),但數據頁可正常刷盤,檢查點正常推進。
  • 狀態切換影響:從 Open 切換到 Mount 時,會強制回滾所有未提交的活動事務,但不清理已提交事務、不強制斷開用戶連接、不刷盤 Buffer 中的臟頁。
狀態切換命令
-- 從 Open/Suspend 狀態切換到 Mount 狀態
ALTER DATABASE MOUNT;
實操示例
-- 1. 查看當前狀態(Open 狀態)
SQL> select status$ from v$instance;
行號     STATUS$
---------- -------
1          OPEN
已用時間: 0.407(毫秒). 執行號:5.-- 2. 切換到 Mount 狀態
SQL> alter database mount;
操作已執行
已用時間: 00:00:01.778. 執行號:0.-- 3. 驗證狀態
SQL> select status$ from v$instance;
行號     STATUS$
---------- -------
1          MOUNT
已用時間: 0.352(毫秒). 執行號:6.
2.2.2 Open 狀態:對外提供服務的正常狀態

Open 狀態是數據庫的“業務態”,可對外提供完整的讀寫服務(Normal 模式下)或只讀服務(Standby 模式下),是業務運行的核心狀態。

核心特性
  • 訪問權限:支持所有符合模式權限的操作(如 Primary 模式可寫入,Standby 模式僅只讀)。
  • 功能限制:不能執行控制文件維護、歸檔配置修改、模式切換等操作(需先切換到 Mount 狀態)。
  • 特殊注意:若數據庫為 Primary/Standby 模式,從 Mount 切換到 Open 時必須加 FORCE 子句(強制打開,保障主備同步正常)。
狀態切換命令
-- Normal 模式:直接切換
ALTER DATABASE OPEN;-- Primary/Standby 模式:必須加 FORCE 子句
ALTER DATABASE OPEN FORCE;
實操示例(Primary 模式切換 Open)
-- 1. 查看當前狀態(Mount 狀態)
SQL> select status$ from v$instance;
行號     STATUS$
---------- -------
1          MOUNT
已用時間: 54.783(毫秒). 執行號:4.-- 2. Primary 模式下切換 Open(加 FORCE)
SQL> alter database open force;
操作已執行
已用時間: 00:00:09.971. 執行號:0.-- 3. 驗證狀態
SQL> select status$ from v$instance;
行號     STATUS$
---------- -------
1          OPEN
已用時間: 0.407(毫秒). 執行號:5.
2.2.3 Suspend 狀態:限制日志寫入的臨時狀態

Suspend 狀態是“過渡態”,主要用于主備同步異常時的臨時維護,限制 REDO 日志刷盤,避免主備數據不一致。

核心特性
  • 訪問權限:可正常查詢、修改數據,但執行 COMMIT(觸發日志刷盤)或 CREATE TABLE(需寫入元數據日志)時會掛起。
  • 狀態切換優勢:從 Open 切換到 Suspend 時,不回滾活動事務、不斷開用戶連接,切換效率遠高于 Open 到 Mount。
  • 典型場景:備庫故障恢復后,重新啟用實時歸檔前;主庫實時歸檔失敗時,數據庫自動切換為 Suspend 狀態,防止多余日志寫入導致主備不一致。
狀態切換命令
-- 從 Open 狀態切換到 Suspend 狀態
ALTER DATABASE SUSPEND;-- 從 Suspend 狀態恢復到 Open 狀態
ALTER DATABASE OPEN;
實操示例(Suspend 狀態下的事務行為)
-- Session 1:切換到 Suspend 狀態
SQL> alter database suspend;
操作已執行
已用時間: 100.968(毫秒). 執行號:0.
SQL> select status$ from v$instance;
行號     STATUS$
---------- -------
1          SUSPEND-- Session 2:插入數據正常,提交掛起
SQL> insert into test values(1,'a',10000);  -- 插入成功
影響行數 1
已用時間: 0.882(毫秒). 執行號:11.
SQL> commit;  -- 提交掛起,等待狀態恢復-- Session 1:恢復到 Open 狀態
SQL> alter database open;
操作已執行
已用時間: 0.644(毫秒). 執行號:0.-- Session 2:提交成功
SQL> commit;
操作已執行
已用時間: 00:01:44.580. 執行號:12.

2.3 狀態切換的核心規則

達夢數據庫的狀態切換并非完全自由,存在明確的限制,核心規則如下:

  1. 允許直接切換的組合
    • Open ? Mount(相互切換)
    • Open ? Suspend(相互切換)
  2. 禁止直接切換的組合
    • Mount 與 Suspend 不能直接切換(需先通過 Open 狀態過渡)
  3. 系統內部狀態:Startup、After Redo、Shutdown 由數據庫自動管理,用戶無法主動切換。

此外,可通過參數 ALTER_MODE_STATUS 控制是否允許手工修改模式/狀態:

  • ALTER SYSTEM SET ALTER_MODE_STATUS = 1;(默認值,允許手工修改)
  • ALTER SYSTEM SET ALTER_MODE_STATUS = 0;(禁止手工修改,用于高安全場景)

三、模式與狀態的協同關系

模式與狀態是達夢數據庫運維的兩大核心維度,二者相互依賴、協同工作,具體體現在以下場景:

運維場景模式選擇狀態切換流程核心目的
單節點業務部署Normal 模式Startup → After Redo → Open快速對外提供完整讀寫服務
主備架構主庫配置Primary 模式Startup → After Redo → Mount(改模式)→ Open配置主庫模式,對外提供寫入并同步日志
主備架構備庫配置Standby 模式Startup → After Redo → Mount(改模式)→ Open配置備庫模式,接收主庫日志并提供只讀服務
主備歸檔異常維護Primary 模式Open → Suspend(維護)→ Open臨時限制日志刷盤,避免主備數據不一致
修改歸檔配置任意模式Open → Mount(改配置)→ Open保障配置修改時數據一致性

四、總結

達夢數據庫的模式與狀態機制是其高可用架構的基礎,理解二者的特性與交互邏輯,是運維人員保障業務穩定運行的關鍵:

  • 模式決定“數據庫能做什么”(如是否支持主備同步、是否允許寫入),核心服務于數據冗余與高可用;
  • 狀態決定“數據庫當前的服務能力”(如是否對外提供訪問、是否允許日志刷盤),核心服務于運維操作與故障處理。

在實際運維中,需根據業務場景(單節點/主備)選擇合適的模式,結合狀態切換完成配置修改、故障恢復等操作,同時嚴格遵循模式(需 MOUNT 狀態)與狀態(禁止 Mount?Suspend 直接切換)的切換規則,確保數據庫運行穩定、數據一致。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/97020.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/97020.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/97020.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何選擇適合自己的PHP微服務框架?

在開始選擇之前,我們首先要明白:為什么需要微服務框架?傳統的單體應用(Monolithic Application)雖然開發簡單,但隨著業務復雜度的增加,會變得臃腫且難以維護。而微服務架構通過將應用拆分為一組…

ESP32使用場景及大規模物聯網IoT

最近用ESP32搭建了一個網絡,想知道搭建的網絡拓撲對不對。一、物聯網無線通信v.s通訊網絡無線通信我第一個好奇的問題就是,物聯網用ESP32的話,路由器用什么?物聯網也可以組WLAN,通訊網也可以組WLAN。把自己的Tenda AC1200路由器拆…

NSSCTF 4th WP

第一次打比賽AK了,雖然題比較簡單沒啥好說的,但還是想記錄一下 WEB ez_signin 源碼: from flask import Flask, request, render_template, jsonify from pymongo import MongoClient import reapp Flask(__name__)client MongoClient…

Paimon——官網閱讀:主鍵表

主鍵表(Table with PK)PK 是 Primary Key(主鍵)的縮寫。在數據庫中,主鍵是一個或多個列的組合,其值在表中是唯一的,并且不能為 NULL。主鍵的作用是確保每一行記錄的唯一性,便于數據的查找、管理和維護&…

【配置 PyCharm 連接遠程服務器進行開發和調試的完整流程】

前提條件: 1.PyCharm Professional(社區版不支持遠程解釋器) 2.代碼在本地目錄里面,可以同步上傳遠程服務器 3.宿主機上安裝了conda 環境 操作方法: 1、在本地使用PyCharm打開工程代碼; 2、然后Add New_in…

在壓力測試中如何確定合適的并發用戶數?

確定壓力測試中的合適并發用戶數 在進行壓力測試時,確定合適的并發用戶數是評估系統性能的關鍵步驟。并發用戶數是指同時向系統發送請求的用戶數量,它直接影響系統的負載水平和性能表現。以下是幾種常用的方法和考慮因素,用于確定合適的并發…

微算法科技(NASDAQ:MLGO)突破性FPGA仿真算法技術助力Grover搜索,顯著提升量子計算仿真效率

在量子計算迅猛發展的今天,量子算法尤其是在搜索和加密領域的應用,正逐步揭開了其顛覆性潛力。然而,量子計算機的實際實現仍是一項復雜且充滿挑戰的任務,因此,如何在經典計算平臺上高效建模和仿真量子算法成為了當前的…

TencentOS Server 4.4 下創建mysql容器無法正常運行的問題

環境 騰訊的 TencentOS Server 4.4 服務器系統 Linux app 6.6.92-34.1.tl4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jun 25 14:33:47 CST 2025 x86_64 x86_64 x86_64 GNU/Linux docker使用的是yum安裝的版本 [rootapp ~]# docker version Client:Version: 28.0.1-202…

稀土:從“稀有”到“命脈”的科技核心

稀土,這個聽起來有些陌生的詞匯,其實早已悄然滲透進我們生活的方方面面。它并非真的“稀有”,而是指17種金屬元素的統稱,包括鑭、鈰、釹、銪等。這些元素在地殼中并不稀少,但因其獨特的物理和化學性質,使其…

開發手札:UnrealEngine編輯器開發

以前在unity框架中開發了非常多實用且高頻使用的編輯器工具,現在準備把目前用得上工具移植到ue4中。下面說明一下ue4開發編輯器工具的流程。1.創建編輯器工具控件2.在控件中創建一個Button和一個EditableText,用于測試3.新建一個繼承UEditorUtilityWidge…

EXCEL開發之路(一)公式解析—仙盟創夢IDE

Excel 數據校驗:基于自定義格式的深度解析與開發實現引言在數據處理和管理領域,Excel 是一款廣泛應用的工具。確保 Excel 中數據的準確性和完整性至關重要,而數據校驗是達成這一目標的關鍵手段。本文將借助特定的代碼示例,深入探討…

Day14——JavaScript 核心知識全解析:變量、類型與操作符深度探秘

接續上文:《前端小白進階 Day13:JavaScript 基礎語法 交互技巧 知識圖譜,零基礎也能懂》-CSDN博客 點關注不迷路喲。你的點贊、收藏,一鍵三連,是我持續更新的動力喲!!! 主頁:一位…

anaconda本身有一個python環境(base),想用別的環境就是用anaconda命令行往anaconda里創建虛擬環境

差不多是這個意思,但需要稍微澄清一下:Anaconda 可以管理任意版本的 Python你安裝了 Anaconda 后,默認有一個 base 環境自帶的 Python。如果你想用其他版本,比如 Python 3.9、3.10,可以用 conda create -n py39 python…

畢業項目推薦:28-基于yolov8/yolov5/yolo11的電塔危險物品檢測識別系統(Python+卷積神經網絡)

文章目錄 項目介紹大全(可點擊查看,不定時更新中)概要一、整體資源介紹技術要點功能展示:功能1 支持單張圖片識別功能2 支持遍歷文件夾識別功能3 支持識別視頻文件功能4 支持攝像頭識別功能5 支持結果文件導出(xls格式…

字庫原理 GB2312-80

這篇文章介紹的是 在嵌入式開發中 常常會遇見的 中文字體點陣字庫(如漢字庫) 的核心編碼原理:區位碼 偏移計算 內存映射。我們將會介紹 GB2312-80 字庫的工作機制。 📘什么是 GB2312-80? GB2312-80 是中國國家標準定…

【Golang】 項目啟動方法

Go 項目啟動方法 1. 常見啟動方式 使用 go run 命令 # 運行主程序文件 go run main.go# 運行多個文件 go run *.go# 運行整個模塊(Go 1.11) go run .# 運行指定包 go run github.com/yourusername/yourproject先構建再執行 # 構建可執行文件 go build# 運…

3459. 最長 V 形對角線段的長度

Problem: 3459. 最長 V 形對角線段的長度 文章目錄思路解題過程復雜度Code思路 深度優先搜索 記憶數組 解題過程 主函數和先遍歷從每一個1開始搜索,并枚舉每一個方向進入dfs,dfs先檢查是否遍歷過,然后枚舉下一個可以走的方向,最后…

Unity 串口通信

可以通過計算機管理->設備管理器,查看端口串口通訊,通常是指的通過計算機或其他設備上的串行端口實現數據傳輸的過程。 定義與特點:串口通訊是按位(bit)發送和接收字節的通信方式,它將數據一位一位地順序…

ArcGIS JSAPI 高級教程 - 創建漸變色材質的自定義幾何體

ArcGIS JSAPI 高級教程 - 創建漸變色材質的自定義幾何體核心代碼完整代碼在線示例工作中遇到一個比較復雜的功能,其中用到漸變色,于是研究了一下,發現雖然 JS API 不直接支持漸變色,但是也可以自定義創建漸變色,通過 M…

不增加 GPU,首 Token 延遲下降 50%|LLM 服務負載均衡的新實踐

作者:鈺誠 簡介 傳統的負載均衡算法主要設計用于通用的 Web 服務或微服務架構中,其目標是通過最小化響應時間、最大化吞吐量或保持服務器負載平衡來提高系統的整體效率,常見的負載均衡算法有輪詢、隨機、最小請求數、一致性哈希等。然而&am…