达梦数据库的备份与恢复都需要使用到重做日志文件。在默认的情况下,达梦数据库采用的非归档模式。通过执行下面的语句可以查看当前数据库实例的日志模式。
SQL> select arch_mode from v$database;
#输出的信息如下:
行号 ARCH_MODE
---------- ---------
1 N
# 提示:这里输出的N表示的是非归档模式。
由于在非归档模式下,重做日志文件会发生覆盖的情况,从而造成数据的丢失。因此,达梦数据库强烈建议在生产数据库环境中,将数据库的日志模式配置为归档模式。归档日志是保证数据一致性和完整性的重要保障。配有归档日志的数据库系统在出现故障时丢失数据的可能性更小,这是因为一旦出现介质故障如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点。
一、本地归档与远程归档
1.1 本地归档
重做日志文件Redo的本地归档就是将重做日志写入到本地归档日志文件的过程。配置本地归档情况下,Redo日志刷盘线程将Redo日志写入联机Redo日志文件后,并由专门的归档线程负责写入本地归档日志文件中。归档后的重做日志文件不会被覆盖,会一直保留到用户将其主动删除。如果配置了归档日志空间上限,系统会自动删除最早生成的归档Redo日志文件;当磁盘空间不足时,系统将自动挂起,直到用户主动释放出足够的空间后继续运行。
达梦数据库提供了以下两个函数用于删除归档日志:按指定的时间或指定的lsn删除归档日志的系统函数:
sf_archivelog_delete_before_time:按指定的时间删除归档日志
sf_archivelog_delete_before_lsn:按指定的lsn删除归档日志
1.2 远程归档
重做日志文件Redo的远程归档就是将归档目录配置在远程节点上,远程归档专门用于DMDSC(达梦共享数据库集群)环境中。远程归档采用双向配置的方式,双向配置远程归档就是两个节点将自己的远程归档相互配置在对方机器上。集群中所有的节点,都拥有一套包括所有节点的,完整的归档日志文件。
二、【实战】开启达梦数据的归档模式
由于本地归档和远程归档是异步将重做日志信息写入归档日志文件的。因此,重做日志redo在写入联机日志文件后,再由专门的归档线程负责将日志写入归档日志文件。
提示:这里以设置本地归档日志为例。
视频讲解如下:
https://www.bilibili.com/video/BV1cbwqeiEWv/?aid=113852620479...
通过执行以下SQL命令可以开启达梦数据的归档模式。
(1)查看当前数据库实例的状态。
SQL> select STATUS$ from v$database;
# 输出的信息如下:
行号 STATUS$
---------- -----------
1 4
# 提示:4表示数据库实例处于Open状态。
(2)将数据库切换到mount状态,并查看数据库的状态。
SQL> alter database mount;
SQL> select STATUS$ from v$database;
# 输出的信息如下:
行号 STATUS$
---------- -----------
1 3
# 提示:3表示数据库实例处于Mount状态。
(3)切换数据库的日志模式
SQL> alter database archivelog;
(4)创建归档路径。
mkdir -p /home/dmdba/dmdbms/data/DAMENG/arch
(5)设置数据库的归档路径。
SQL> alter database add archivelog
'type=local,dest=/home/dmdba/dmdbms/data/DAMENG/arch,
file_size=64,space_limit=0';
# 提示:File_size是归档文件的大小64M,space_limit表示没有空间限制。
(6)打开数据库。
SQL> alter database open;
(7)查看数据库的日志模式。
SQL> select arch_mode from v$database;
#输出的信息如下:
行号 ARCH_MODE
---------- ---------
1 Y
(8)查看生成的归档日志文件。
tree /home/dmdba/dmdbms/data/DAMENG/arch
#输出的信息如下:
/home/dmdba/dmdbms/data/DAMENG/arch
└── ARCHIVE_LOCAL1_0x1F8C9F0_EP0_2025-03-11_11-03-11.log
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。