暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

达梦8数据库REDO日志日常管理方法

原创 始于脚下 2021-12-26
2170

达梦8数据库的REDO日志主要用于记录被修改数据的新值,包括事物对数据文件和回滚段的修改。达梦数据库每个实例都有一个相关联的REDO日志,通过重做日志可以保证数据库的完整性和一致性,REDO日志在数据库物理恢复中是非常重要的。

达梦数据库默认包含2个扩展名为.log的联机日志文件,用来保存REDO日志,这2个REDO日志文件是循环使用的,达梦8数据库目前仅支持对REDO日志文件进行增加和扩展操作,不支持对日志文件进行删除或缩容操作,以下我们以实际操作来演示日常工作中对达梦8数据库REDO日志的管理内容。

1、检查数据库REDO日志信息

达梦数据库中与REDO日志相关的视图主要有:

V$RLOG视图:用来查询日志的总体信息。包括当前日志的检查点LSN、文件LSN等。

SQL> select * from v$rlog;

 

行号       CKPT_LSN             FILE_LSN             FLUSH_LSN            CUR_LSN              NEXT_SEQ

---------- -------------------- -------------------- -------------------- -------------------- --------------------

           N_MAGIC     DB_MAGIC             FLUSH_PAGES FLUSHING_PAGES CUR_FILE    CUR_OFFSET           CKPT_FILE

           ----------- -------------------- ----------- -------------- ----------- -------------------- -----------

           CKPT_OFFSET          FREE_SPACE           TOTAL_SPACE

           -------------------- -------------------- --------------------

           SUSPEND_TIME

           ----------------------------------------------------------------------------------------------------

           UPD_CTL_LSN          N_RESERVE_WAIT TOTAL_FLUSH_PAGES    TOTAL_FLUSH_TIMES    TOTAL_ECPR_FLUSH_PAGES

           -------------------- -------------- -------------------- -------------------- ----------------------

           GLOBAL_NEXT_SEQ      N_PRIMAY_EP PRIMARY_DB_MAGIC     CKPT_N_PRIMAY_EP CKPT_PRIMARY_DB_MAGIC MIN_EXEC_VER

           -------------------- ----------- -------------------- ---------------- --------------------- ------------

           MIN_DCT_VER

           -----------

1          1117231              1117232              1117232              1117232              6524

           7           1619068376           0           0              0           124192256            0

           124191744            805293568            805294080

           NULL

           0                    0              1431                 4                    0

           6524                 0           0                    0                0                     V8.1.1.1

           4

 

 

已用时间: 12.737(毫秒). 执行号:11.

SQL>


V$RLOGFILE视图:用来查询日志文件的具体信息。包括当前数据库的日志文件路径、大小、创建时间等信息。

SQL> select * from v$rlogfile;

 

行号       GROUP_ID    FILE_ID     PATH                               CLIENT_PATH

---------- ----------- ----------- ---------------------------------- ------------

           CREATE_TIME

           ----------------------------------------------------------------------------------------------------

           RLOG_SIZE            MIN_EXEC_VER MIN_DCT_VER

           -------------------- ------------ -----------

1          2           0           E:\dmdbms\data\DAMENG\DAMENG01.log DAMENG01.log

           2020-03-31 10:12:06.000000

           268435456            V8.1.1.1     4

 

 

行号       GROUP_ID    FILE_ID     PATH                               CLIENT_PATH

---------- ----------- ----------- ---------------------------------- ------------

           CREATE_TIME

           ----------------------------------------------------------------------------------------------------

           RLOG_SIZE            MIN_EXEC_VER MIN_DCT_VER

           -------------------- ------------ -----------

2          2           1           E:\dmdbms\data\DAMENG\DAMENG02.log DAMENG02.log

           2020-03-31 10:12:06.000000

           268435456            V8.1.1.1     4

 

 

行号       GROUP_ID    FILE_ID     PATH                               CLIENT_PATH

---------- ----------- ----------- ---------------------------------- ------------

           CREATE_TIME

           ----------------------------------------------------------------------------------------------------

           RLOG_SIZE            MIN_EXEC_VER MIN_DCT_VER

           -------------------- ------------ -----------

3          2           2           E:\dmdbms\data\DAMENG\DAMENG03.log DAMENG03.log

           2020-04-13 16:33:03.000000

           268435456            V8.1.1.1     4

 

 

已用时间: 1.544(毫秒). 执行号:12.

SQL>


2、添加REDO日志文件

达梦数据库的REDO日志文件是有最小大小限制的,最小大小为4096X页大小,当前数据库的页大小可以通过如下语句查看:

SQL> select para_name,para_value from v$dm_ini where para_name = 'GLOBAL_PAGE_SIZE';

 

行号       PARA_NAME        PARA_VALUE

---------- ---------------- ----------

1          GLOBAL_PAGE_SIZE 8192

 

已用时间: 11.085(毫秒). 执行号:13.

SQL>


所以当前数据库能够添加的REDO日志文件最小大小为4096X8192=32MB,我们可以通过alert database add logfile的方式添加REDO日志文件,如下所示:

SQL> select file_id,path,rlog_size/1024/1024 from v$rlogfile;

 

行号       FILE_ID     PATH                               RLOG_SIZE/1024/1024

---------- ----------- ---------------------------------- --------------------

1          0           E:\dmdbms\data\DAMENG\DAMENG01.log 256

2          1           E:\dmdbms\data\DAMENG\DAMENG02.log 256

3          2           E:\dmdbms\data\DAMENG\DAMENG03.log 256

 

已用时间: 2.754(毫秒). 执行号:14.

SQL> alter database add logfile 'E:\dmdbms\data\DAMENG\DAMENG04.log' size 31;

alter database add logfile 'E:\dmdbms\data\DAMENG\DAMENG04.log' size 31;

第1 行附近出现错误[-2410]:数据文件[E:\dmdbms\data\DAMENG\DAMENG04.log]大小无效.

已用时间: 4.883(毫秒). 执行号:0.

SQL> alter database add logfile 'E:\dmdbms\data\DAMENG\DAMENG04.log' size 32;

操作已执行

已用时间: 54.674(毫秒). 执行号:15.

SQL> select file_id,path,rlog_size/1024/1024 from v$rlogfile;

 

行号       FILE_ID     PATH                               RLOG_SIZE/1024/1024

---------- ----------- ---------------------------------- --------------------

1          0           E:\dmdbms\data\DAMENG\DAMENG01.log 256

2          1           E:\dmdbms\data\DAMENG\DAMENG02.log 256

3          2           E:\dmdbms\data\DAMENG\DAMENG03.log 256

4          3           E:\dmdbms\data\DAMENG\DAMENG04.log 32

 

已用时间: 2.257(毫秒). 执行号:16.

SQL>


以上过程我们可以看到,当日志文件大小小于32MB时,会提示“出现错误[-2410]:数据文件[E:\dmdbms\data\DAMENG\DAMENG04.log]大小无效.”。

3、修改现有REDO日志文件大小

达梦8数据库目前只能对日志文件进行向上(扩大)RESIZE操作,不能进行向下(缩容)RESIZE操作,可以通过alter database resize to语句实现,我们现在将上面添加的日志文件由32MB扩大到64MB,再尝试缩容到32MB,过程如下:

SQL> select file_id,path,rlog_size/1024/1024 from v$rlogfile;

 

行号       FILE_ID     PATH                               RLOG_SIZE/1024/1024

---------- ----------- ---------------------------------- --------------------

1          0           E:\dmdbms\data\DAMENG\DAMENG01.log 256

2          1           E:\dmdbms\data\DAMENG\DAMENG02.log 256

3          2           E:\dmdbms\data\DAMENG\DAMENG03.log 256

4          3           E:\dmdbms\data\DAMENG\DAMENG04.log 32

 

已用时间: 0.392(毫秒). 执行号:17.

SQL> alter database resize logfile 'E:\dmdbms\data\DAMENG\DAMENG04.log' to 64;

操作已执行

已用时间: 134.417(毫秒). 执行号:18.

SQL> alter database resize logfile 'E:\dmdbms\data\DAMENG\DAMENG04.log' to 32;

alter database resize logfile 'E:\dmdbms\data\DAMENG\DAMENG04.log' to 32;

[-2410]:数据文件[E:\dmdbms\data\DAMENG\DAMENG04.log]大小无效.

已用时间: 4.402(毫秒). 执行号:0.

SQL> select file_id,path,rlog_size/1024/1024 from v$rlogfile;

 

行号       FILE_ID     PATH                               RLOG_SIZE/1024/1024

---------- ----------- ---------------------------------- --------------------

1          0           E:\dmdbms\data\DAMENG\DAMENG01.log 256

2          1           E:\dmdbms\data\DAMENG\DAMENG02.log 256

3          2           E:\dmdbms\data\DAMENG\DAMENG03.log 256

4          3           E:\dmdbms\data\DAMENG\DAMENG04.log 64

 

已用时间: 0.388(毫秒). 执行号:20.

SQL>


可以看到,FILE_ID为3的日志文件可以正常从32MB扩容到64MB,但是不能向下(缩容)从64MB缩容到32MB。

4、修改REDO日志文件名

达梦数据库REDO日志文件重命名必须在MOUNT状态下进行,通过alter database rename to语句实现,现在我们将文件id为3的日志文件由DAMENG04.log改为DAMENG05.log,过程如下:

SQL> select status$ from v$instance;

 

行号       STATUS$

---------- -------

1          OPEN

 

已用时间: 1.439(毫秒). 执行号:23.

SQL> alter database rename logfile 'E:\dmdbms\data\DAMENG\DAMENG04.log' to 'E:\dmdbms\data\DAMENG\DAMENG05.log';

alter database rename logfile 'E:\dmdbms\data\DAMENG\DAMENG04.log' to 'E:\dmdbms\data\DAMENG\DAMENG05.log';

第1 行附近出现错误[-530]:只允许在MOUNT状态NORMAL模式下执行.

已用时间: 0.427(毫秒). 执行号:0.

SQL>

SQL> alter database mount;

操作已执行

已用时间: 00:00:01.853. 执行号:0.

SQL> select status$ from v$instance;

 

行号       STATUS$

---------- -------

1          MOUNT

 

已用时间: 0.875(毫秒). 执行号:24.

SQL> alter database rename logfile 'E:\dmdbms\data\DAMENG\DAMENG04.log' to 'E:\dmdbms\data\DAMENG\DAMENG05.log';

操作已执行

已用时间: 359.865(毫秒). 执行号:25.

SQL> select file_id,path,rlog_size/1024/1024 from v$rlogfile;

 

行号       FILE_ID     PATH                               RLOG_SIZE/1024/1024

---------- ----------- ---------------------------------- --------------------

1          0           E:\dmdbms\data\DAMENG\DAMENG01.log 256

2          1           E:\dmdbms\data\DAMENG\DAMENG02.log 256

3          2           E:\dmdbms\data\DAMENG\DAMENG03.log 256

4          3           E:\dmdbms\data\DAMENG\DAMENG05.log 64

 

已用时间: 0.788(毫秒). 执行号:26.

SQL>


在实际操作过程中,我们可以看到,在OPEN状态下执行REDO日志重命名操作,是不被允许的,会提示“错误[-530]:只允许在MOUNT状态NORMAL模式下执行”错误。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论