达梦数据库的模式和状态

1数据库模式

DM 支持 3 种数据库模式:Normal 模式、Primary 模式和 Standby 模式。

(1)Normal 模式

提供正常的数据库服务,操作没有限制。正常生成本地归档,但不发送实时归档(Realtime)、即时归档(Timely)和异步归档(Async)。

(2)Primary 模式

提供正常的数据库服务,操作有极少限制。该模式下部分功能受限,包括:不支持修改
表空间文件名、不支持修改 arch_ini 参数。正常生成本地归档,支持实时归档
(Realtime)、即时归档(Timely)和异步归档(Async)。Primary 模式下,对临时表空间以外的所有的数据库对象的修改操作都强制生成 Redo 日志。

(3)Standby 模式

可以执行数据库备份、查询等只读数据库操作。正常生成本地归档,正常发送异步归档Redo 日志;但实时归档(Realtime)、即时归档(Timely)均强制失效。该模式下时间触发器、事件触发器等都失效。
可以通过 SQL 语句切换数据库模式,模式切换必须在 Mount 状态下执行。切换模式
SQL 语句如下:

将数据库切换为 Primary 模式:
ALTER DATABASE PRIMARY;
将数据库切换为 Standby 模式:
ALTER DATABASE STANDBY;
将数据库切换为 Normal 模式:
ALTER DATABASE NORMAL;

修改 DMDSC 库的模式必须在 DMDSC 库所有实例都处于 MOUNT 状态下才能进行,只需要在一个节点上执行以上语句即可。

2 数据库状态

DM 的数据库状态包括:
Startup 状态
系统刚启动时设置为 Startup 状态。
After Redo 状态
系统启动过程中联机日志重做完成后,回滚活动事务前设置为 After Redo 状态。非Standby 模式的实例在执行 alter database open 操作前,也会将系统设置为 After Redo 状态。
Open 状态
数据库处于正常提供服务的状态,但不能进行归档配置等操作。
Mount 状态
数据库在 Mount 状态下,不能修改数据,不能访问表、视图等数据库对象,但可以执行修改归档配置、控制文件和修改数据库模式等操作,也可以执行一些不修改数据库内容的
操作,比如查询动态视图或者一些只读的系统过程。由于 Mount 状态不生成 PWR 日志,因此数据页可以正常刷盘,也正常推进检查点。
系统从 Open 状态切换为 Mount 状态时,会强制回滚所有活动事务,但不会强制清理(Purge)已提交事务,不会强制断开用户连接,也不会强制 Buffer 中的脏页刷盘。
Suspend 状态
数据库在 Suspend 状态下,可以访问数据库对象,甚至可以修改数据,但限制 Redo日志刷盘,一旦执行 COMMIT 等触发 Redo 日志刷盘的操作时,当前操作将被挂起。
相比 Open 到 Mount 的状态切换,Open 到 Suspend 的状态切换更加简单、高效,不会回滚任何活动事务,在状态切换完成后,所有事务可以继续执行。
一般在修改归档状态之前将系统切换为 Suspend 状态,比如备库故障恢复后,在历史数据(归档日志)同步完成后,需要重新启用实时归档功能时:

  1. 将系统切换为 Suspend 状态,限制 Redo 日志写入联机 Redo 日志文件;
  2. 修改归档状态为 Valid;
  3. 重新将数据库切换为 Open 状态,恢复 Redo 日志写入功能;
  4. 备库与主库重新进入实时同步状态。
    另外,实时归档失败时(比如网络故障导致),Primary 实例将试图切换成 Suspend状态,防止后续的日志写入。因为一旦写入,主备切换时有可能备库没有收到最后那次的RLOG_PKG,导致主库上多一段日志,很容易造成主备数据不一致。当实例成功切换为SUSPEND 状态时,可直接退出,强制丢弃多余的日志,避免主备数据不一致。
    修改 DMDSC 库的状态为 SUSPEND 时,库内所有实例都不能处于 MOUNT 状态,
    行 只需要在一个节点上执行 ALTER DATABASE SUSPEND 语句即可。
    Shutdown 状态
    实例正常退出时设置为 Shutdown 状态。

用户可以通过 SQL 语句进行数据库状态切换:1. Open 状态与 Mount 状态可以相互切换;2. Open 状态与 Suspend 状态可
以相互切换;3. Mount 和 Suspend 状态不能直接转换;4. 其他状态为系统内部状态,用户不能主动干预。
对 DMDSC 集群,除了修改 Suspend 是同步操作,只需要在一个节点执行外,其他状态修改都需要在每个节点上各自单独执行。
切换数据库状态的 SQL 如下:

1. 将数据库修改为 Open 状态。当系统处于 Primary/Standby 模式时,必须强制
加上 FORCE 子句。
ALTER DATABASE OPEN [FORCE];
2. 将数据库修改为 Mount 状态。
ALTER DATABASE MOUNT;
3. 将数据库修改为 Suspend 状态。
ALTER DATABASE SUSPEND;

在 配 置 达梦数 据 守 护集群 过 程 中 , 修 改 dm.ini 参 数
ALTER_MODE_STATUS 为 为 0 ,限制用户过 直接通过 SQL 语句修改数据库状态、模式及 以及 OGUID ,避免 dmwatcher 做出错误的决策。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库中,模式和表空间是两个不同的概念。模式数据库对象的集合,包括表、视图、索引等。而表空间是用来存储数据库对象的物理空间。 在数据库中,可以通过创建表空间来为数据库对象提供存储空间。表空间可以分为普通表空间和混合表空间。普通表空间只能存储普通表(非HUGE表),而混合表空间既可以存储普通表又可以存储HUGE表。\[1\] 创建表空间可以使用CREATE TABLESPACE语句,可以指定表空间的数据文件路径、大小以及自动扩展的设置。例如,可以使用以下语句创建一个表空间并设置自动扩展,每次扩展1M,最大为100M: CREATE TABLESPACE TS2 DATAFILE '/mds6800/damengdb/db/DAMENG/TS2.dbf' SIZE 128 AUTOEXTEND ON NEXT 1 MAXSIZE 100;\[3\] 需要注意的是,表空间的创建、修改和删除等操作都是在数据库管理员权限下进行的。\[2\] #### 引用[.reference_title] - *1* *2* [模式对象—表空间、用户、角色、权限](https://blog.csdn.net/Nelson_S/article/details/124375902)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [数据库创建表空间,用户,模式](https://blog.csdn.net/qq_24011271/article/details/120101644)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值