达梦数据库的几种模式及状态说明

这篇具有很好参考价值的文章主要介绍了达梦数据库的几种模式及状态说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、达梦数据库三种模式

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

1.1 Normal 模式

  • 用户可以正常访问数据库,操作没有限制。

  • 正常生成本地归档,但不发送实时归档(Realtime)、即时归档(Timely)和异步归档(Async)。

将数据库切换为 Normal 模式:

ALTER DATABASE NORMAL;

1.2 Primary 模式

  • 用户可以正常访问数据库,操作有极少限制。

  • 对临时表空间以外的所有的数据库对象的修改操作都强制生成Redo日志。

  • 正常生成本地归档,支持实时归档(Realtime)、即时归档(Timely)和异步归档(Async)。在归档有效时,发送REDO日志到备库;

  • 该模式下部分功能受限,包括:不支持修改表空间文件名、不支持修改arch_ini参数。正常生成本地归档,支持实时归档(Realtime)、即时归档(Timely)和异步归档(Async)。

将数据库切换为Primary模式:

ALTER DATABASE PRIMARY;

1.3 Standby 模式

  • 可以执行数据库备份(不能执行数据库作业备份)、查询等只读数据库操作。

  • 接收主库发送过来的REDO日志并重做。

  • 正常生成本地归档,正常发送异步归档日志;但实时归档(Realtime)、即时归档(Timely)均强制失效。

  • 该模式下时间触发器、事件触发器等都失效。

  • 另外,还支持临时表的Insert/Delete/Update操作。因为临时表数据的修改不会产生Redo日志,所以同样主库对临时表的修改无法同步到备库。

将数据库切换为 Standby 模式:

ALTER DATABASE STANDBY;

需要注意的是:

  • 三种模式只能在MOUNT状态下设置,模式之间可以相互转换。

  • 对于新初始化的库,首次启动不允许使用mount方式,需要先正常启动并正常退出,然后才允许mount方式启动。

  • 一般情况下,数据库为NORMAL模式,如果不指定MOUNT状态启动,则自动启动到OPEN状态。

  • 在需要对数据库配置时(如配置数据守护、数据复制),服务器需要指定MOUNT状态启动。

  • 当数据库模式为非NORMAL模式(PRIMARY、STANDBY模式),无论是否指定启动状态,服务器启动时自动启动到MOUNT状态。

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

二、达梦数据库状态

达梦数据库的状态包括startup、mount、after redo、open、suspend、shutdown这几种状态,但不是所有的状态都能相互转换和人工干预。

2.1 Startup 状态

系统刚启动时设置为Startup状态。

2.2 Mount 状态

数据库在Mount状态下,不能修改数据,不能访问表、视图等数据库对象,但可以执行修改归档配置、控制文件和修改数据库模式等操作,也可以执行一些不修改数据库内容的操作,比如查询动态视图或者一些只读的系统过程。

由于Mount状态不生成PWR 日志,因此数据页可以正常刷盘,也正常推进检查点。系统从Open状态切换为Mount状态时, 会强制回滚所有活动事务,但不会强制清理(Purge)已提交事务,不会强制断开用户连接,也不会强制Buffer中的脏页刷盘。

将数据库修改为mount状态:

ALTER DATABASE MOUNT;

示例:

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间: 5.273(毫秒)
SQL> select status$ from v$instance;
 
行号     STATUS$
---------- -------
1          OPEN
已用时间: 0.407(毫秒). 执行号:5.
SQL> alter database mount;
操作已执行
已用时间: 00:00:01.778. 执行号:0.
SQL> select status$ from v$instance;
 
行号     STATUS$
---------- -------
1          MOUNT

PWR日志:Page Written Record日志,是REDO日志里包含有一种特殊的记录。包括(ts_id, fil_id, page_no, page_lsn)信息。每个数据页刷盘时,都会生成一条对应的PWR日志。

2.3 After Redo 状态

系统启动过程中联机日志重做完成后,回滚活动事务前设置为After Redo状态。非Standby模式的实例在执行alter database open操作前,也会将系统设置为After Redo状态。

2.4 Open 状态

可以访问数据库对象,对外提供正常的数据库服务,不能进行控制文件维护、归档配置等操作。

将数据库修改为Open状态:

(当系统处于Primary/Standby模式时,必须强制加上FORCE子句。)

ALTER DATABASE OPEN [FORCE];

示例:

SQL> select status$ from v$instance;
 
行号     STATUS$
---------- -------
1          MOUNT
 
已用时间: 54.783(毫秒). 执行号:4.
SQL> alter database open;
操作已执行
已用时间: 00:00:09.971. 执行号:0.
SQL> select status$ from v$instance;
 
行号     STATUS$
---------- -------
1          OPEN
 
已用时间: 0.407(毫秒). 执行号:5.

2.5 Suspend 状态

数据库在Suspend状态下,可以访问数据库对象,甚至可以修改数据,但限制Redo日志刷盘, 一旦执行COMMIT等触发Redo日志刷盘的操作时,当前操作将被挂起。

相比Open到Mount的状态切换,Open到Suspend的状态切换更加简单、高效,不会回滚任何活动事务,在状态切换完成后,所有事务可以继续执行。

在DataWatch主备系统中suspend状态的自动切换的使用:

一般在修改归档状态之前将系统切换为Suspend状态,比如备库故障恢复后,在历史数据(归档日志)同步完成后,需要重新启用实时归档功能时:

  • 将系统切换为Suspend状态,限制Redo日志写入联机Redo日志文件;

  • 修改归档状态为Valid;

  • 重新将数据库切换为Open状态,恢复Redo日志写入功能;

  • 备库与主库重新进入实时同步状态。

实时归档失败时(比如网络故障导致),Primary实例将试图切换成Suspend状态,防止后续的日志写入。因为一旦写入,主备切换时有可能备库没有收到最后那次的RLOG_PKG,导致主库上多一段日志,很容易造成主备数据不一致。当实例成功切换为SUSPEND状态时,可直接退出,强制丢弃多余的日志,避免主备数据不一致。

将数据库修改为Suspend状态:

ALTER DATABASE SUSPEND;

注意:修改DMDSC库的状态为SUSPEND时,库内所有实例都不能处于MOUNT状态,只需要在一个节点上执行ALTER DATABASE SUSPEND语句即可。

示例:

Session 1:
SQL> alter database suspend;
操作已执行
已用时间: 100.968(毫秒). 执行号:0.
SQL> select status$ from v$instance;
 
行号     STATUS$
---------- -------
1          SUSPEND
 
Session 2:
SQL> select count(*) from test;   ---查询正常
 
行号     COUNT(*)            
---------- --------------------
1          3
 
已用时间: 2.639(毫秒). 执行号:8.
 
SQL> insert into test values(1,'a',10000);    ---插入正常
影响行数 1
 
已用时间: 0.882(毫秒). 执行号:11.
SQL> commit;                    ---但是提交会挂起
 
 
Session 3:
SQL> create table t(id int);  ---设计会一直挂起
 
Session 1:
修改为open状态:
SQL> alter database open; 
操作已执行
已用时间: 0.644(毫秒). 执行号:0.
 
Session 2:创建成功
SQL> create table t(id int);   
操作已执行
已用时间: 00:05:41.432. 执行号:7.
 
Session 3:  提交成功
SQL> insert into test values(1,'a',10000);
影响行数 1
 
已用时间: 0.882(毫秒). 执行号:11.
SQL> commit;
操作已执行
已用时间: 00:01:44.580. 执行号:12.
SQL>

2.6 Shutdown 状态

实例正常退出时设置为Shutdown状态。

数据库状态之间的切换

  • Open状态与Mount状态可以相互切换;

  • Open状态与Suspend状态可以相互切换;

  • Mount和Suspend状态不能直接转换;

  • 其他状态为系统内部状态,用户不能主动干预。

另外, 可以通过参数ALTER_MODE_STATUS来控制是否允许手工修改服务器的模式、状态和OGUID,1:允许;0:不允许。默认为1。此参数可以动态修改。

示例:

  • Open状态与Mount状态的相互切换

SQL> select status$ from v$instance;
 
行号     STATUS$
---------- -------
1          OPEN
 
已用时间: 0.287(毫秒). 执行号:13.
SQL> alter database mount;
操作已执行
已用时间: 00:00:01.760. 执行号:0.
SQL> select status$ from v$instance;
 
行号     STATUS$
---------- -------
1          MOUNT
 
已用时间: 0.677(毫秒). 执行号:14.
SQL> alter database open;
操作已执行
已用时间: 00:00:01.741. 执行号:0.
SQL> select status$ from v$instance;
 
行号     STATUS$
---------- -------
1          OPEN
 
已用时间: 0.280(毫秒). 执行号:15.
  • Open状态与Suspend状态的相互切换

SQL> select status$ from v$instance;
 
行号     STATUS$
---------- -------
1          OPEN
 
已用时间: 0.280(毫秒). 执行号:15.
SQL> alter database suspend;
操作已执行
已用时间: 100.965(毫秒). 执行号:0.
SQL> select status$ from v$instance;
 
行号     STATUS$
---------- -------
1          SUSPEND
 
已用时间: 0.700(毫秒). 执行号:16.
SQL> alter database open;
操作已执行
已用时间: 0.517(毫秒). 执行号:0.
SQL> select status$ from v$instance;
 
行号     STATUS$
---------- -------
1          OPEN
 
已用时间: 0.291(毫秒). 执行号:17.
  • Mount状态与Suspend状态不能直接切换

mount状态切换suspend状态:

SQL> select status$ from v$instance;
 
行号     STATUS$
---------- -------
1          MOUNT
 
已用时间: 0.673(毫秒). 执行号:18.
SQL> alter database suspend;
alter database suspend;
第1 行附近出现错误[-510]:系统处于MOUNT状态.
已用时间: 0.523(毫秒). 执行号:0.

suspend状态切换mount状态:文章来源地址https://www.toymoban.com/news/detail-453946.html

SQL> select status$ from v$instance;
 
行号     STATUS$
---------- -------
1          SUSPEND
 
已用时间: 0.665(毫秒). 执行号:19.
SQL> alter database mount;
alter database mount;
第1 行附近出现错误[-515]:系统处于SUSPEND状态.
已用时间: 0.337(毫秒). 执行号:0.
SQL>

到了这里,关于达梦数据库的几种模式及状态说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从mysql 数据库表导入数据到elasticSearch的几种方式

            从MySQL数据库导入数据到Elasticsearch有几种方式,主要包括以下几种:         1. 使用Logstash:         Logstash是一个开源的数据收集引擎,可以用来从不同的数据源导入数据到Elasticsearch。它具有强大的数据处理能力和插件生态系统,可以方便地实现数据的解

    2024年04月12日
    浏览(36)
  • idea连接数据库失败的几种解决方案

    1、先进入名字为mysql的数据库 2、找到user表 3、修改root的host为% [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pWeP9cRh-1677664942027)(https://img2023.cnblogs.com/blog/3103012/202302/3103012-20230227175245772-1975389509.jpg)] 方法一和方法二,都是开放root的权限为所有人可

    2024年02月04日
    浏览(34)
  • 清理 SQL Server 数据库日志的几种方法

    在 SQL Server 数据库中,日志文件起着记录数据库操作和事务日志的重要作用。然而,随着时间的推移,日志文件可能会变得非常庞大,占用大量磁盘空间。为了解决这个问题,本文将介绍几种清理 SQL Server 数据库日志的方法。 方法一:备份日志并截断 备份数据库日志是清理

    2024年02月05日
    浏览(34)
  • Spring Boot中操作数据库的几种并发事务方式

    当有多个 并发 事务时,会发生丢失更新异常。来自一个或多个 事务 的更新可能会丢失,因为其他事务会用其结果覆盖它。 让我们通过一个例子来检验一下。考虑以下执行事务的方法。 public void withdraw(Long accountId, double amount) { Account account = accountRepository.findById(accountId).orEl

    2024年01月22日
    浏览(38)
  • Mysql数据库--修改root密码的几种方法(忘记密码&知道密码)

    🍁 通过 alter user root identified by \\\'新密码\\\'; 🍁 通过 set password for 用户名@\\\'用户地址\\\' = \\\'新密码\\\'; 2.1.1 🎈 停止mysql服务 2.1.2 🎈 创建mysql-init-file.txt文件 2.1.3 🎈 init-file的权限(最好赋权一下) 2.1.3 🎈 使用–init-file选项启动mysql服务 2.1.4 🎈 新密码连接测试(密码:Zyl@123321)

    2024年02月08日
    浏览(49)
  • <达梦>《达梦数据库备份归档》

    方式 备份 DIsql 工具 用于执行联机的数据备份与数据还原,包括数据库备份、归档备份、表空间备份与还原、表备份与还原; DMRMAN 工具 用于执行脱机的数据备份、还原与恢复,包括脱机的数据库备份、还原与恢复,脱机还原表空间,归档的备份、还原与修复; 客户端工具

    2024年02月05日
    浏览(56)
  • 达梦数据库创建及数据库实例管理

    数据库配置助手创建数据库调用 dbca.sh 图形化界面创建数据库: [dmdba@DCA02 tool]$ ./dbca.sh 2021-01-11 11:43:45 [com.dameng.dbca.Startup] [INFO] 启动 DBCA 指定数据库名称、实例名称(单机情况下数据库和实例名称可以相同),指定端口号: 簇大小、页大小、字符集、 字符串 大小写敏感、

    2023年04月08日
    浏览(40)
  • 达梦数据库 优化

    优化不能仅从数据库方面考虑,比如,在存储达到数据库极限、应用涉及人员设计的代码稀巴烂的情况下,进行调优就是杯水车薪的效果。 涉及到优化人员: 数据库管理员 应用程序架构师 应用程序设计人员 系统管理员 存储管理员 涉及到的优化内容: 应用程序:(与开发人员

    2024年04月09日
    浏览(34)
  • 达梦数据库权限管理

    在对数据库权限进行分配时,对于某些人员只能给部分的访问和操作权限。那么在DM数据库中我们该如何去配置相应的权限呢? 我们下面来进行详细解析。 我们的测试环境是 DM8 。 1、我们首先来建立一个测试用户test; SQLcreate user test identified by test123456; 2、接下来看一下TEST用

    2024年02月09日
    浏览(71)
  • 达梦数据库导入导出

    说明(默认值) USERID 用户名/口令 FILE 导出文件 (dexp.dmp) DIRECTORY 导出文件所在目录 FULL 整库导出 (N) OWNER 以用户方式导出 格

    2024年02月14日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包