目录
- 一、归档概述
- 二、开启归档
- 2.1 开启归档步骤
- 2.2 注意事项
- 三、查看归档配置
- 四、修改归档配置
- 注意事项
- 五、关闭归档
- 5.1 关闭归档步骤
- 5.2 验证关闭结果
- 5.3 注意事项
- 六、归档文件的删除
- 6.1 查看归档删除函数
- 6.2 删除归档文件的函数
- 6.3 删除指定时间前的归档文件示例
- 6.4 注意事项
一、归档概述
数据库归档是一种重要的数据保护机制,它可以记录数据库的所有变更操作,以便在数据库出现故障时进行恢复。达梦数据库支持多种归档方式,其中本地归档是最常用的一种。通过开启归档,数据库会将重做日志信息保存到指定的归档文件中,这些文件可以用于数据库的全量恢复、增量恢复以及时间点恢复等操作。
二、开启归档
2.1 开启归档步骤
在达梦数据库中,开启归档需要按照特定的步骤进行,主要包括挂载数据库、添加归档配置、开启归档模式以及打开数据库等操作。以下是详细的 SQL 语句示例:
-- 1. 挂载数据库
-- 此操作会将数据库置于挂载状态,使得可以对数据库的配置进行修改而不影响数据的读写操作。
alter database mount;-- 2. 添加归档配置
-- 这里设置了本地归档方式,归档文件存储在 /dm8/arch 目录下,每个归档文件的初始大小为 128MB,归档空间的总上限为 10240MB。
alter database add archivelog 'type=local, dest=/dm8/arch,file_size=128,space_limit=10240';-- 3. 开启归档模式
-- 执行此语句后,数据库会开始将重做日志信息写入到指定的归档文件中。
alter database archivelog;-- 4. 打开数据库
-- 使数据库恢复到正常的读写状态,此时归档功能已经生效。
alter database open;
2.2 注意事项
- 在执行
alter database mount;
之前,确保数据库已经正常关闭,否则可能会导致挂载失败。 - 归档文件存储目录
/dm8/arch
必须提前创建,并且数据库用户对该目录具有读写权限,否则会出现文件创建失败的问题。 file_size
和space_limit
参数可以根据实际的业务需求和磁盘空间进行调整。
三、查看归档配置
开启归档后,可以通过以下 SQL 语句查看数据库的归档模式以及归档配置信息:
-- 查看数据库的归档模式,结果为 'ARCHIVELOG' 表示已开启归档,'NOARCHIVELOG' 表示未开启。
select arch_mode from v$database;-- 查看详细的归档配置信息,包括归档类型、归档路径、文件大小、空间限制等。
select * from v$dm_arch_ini;
四、修改归档配置
在实际使用过程中,可能需要根据业务需求调整归档配置,例如修改归档空间的上限。以下是修改归档配置的 SQL 语句示例:
-- 修改归档配置,将归档空间上限调整为 20480MB。
alter database modify archivelog 'type=local, dest=/dm8/arch, SPACE_LIMIT=20480';
注意事项
- 修改归档配置时,
type
和dest
参数需要与之前添加归档配置时保持一致,否则可能会导致配置冲突。 - 修改配置后,需要重新查看归档配置信息,确保修改生效。
五、关闭归档
5.1 关闭归档步骤
当不需要归档功能时,可以按照以下步骤关闭归档:
-- 1. 挂载数据库
alter database mount;-- 2. 关闭归档模式
alter database noarchivelog;-- 3. 删除归档配置
alter database delete archivelog 'type=local,dest=/dm8/arch';alter database delete archivelog 'type=local,dest=/opt/dm8/data/DMDB/bak';-- 4. 打开数据库
alter database open;
5.2 验证关闭结果
关闭归档后,可以通过以下 SQL 语句验证归档是否已成功关闭:
-- 查看数据库的归档模式,确认是否为 'NOARCHIVELOG'。
select arch_mode from v$database;-- 查看归档配置信息,确认归档配置已被删除。
select * from v$dm_arch_ini;
无法删除哈
5.3 注意事项
- 关闭归档后,数据库将不再生成归档文件,因此在关闭归档之前,需要确保已经备份了所有重要的归档文件,以免数据丢失。
- 删除归档配置时,要确保归档路径和类型与添加时一致,否则可能无法正确删除配置。
六、归档文件的删除
随着时间的推移,归档文件会占用大量的磁盘空间,因此需要定期清理过期的归档文件。达梦数据库提供了两个函数用于删除归档文件:
6.1 查看归档删除函数
-- 查看所有以 'SF_ARCHIVELOG_' 开头的函数,这些函数通常用于归档文件的删除操作。
select * from v$ifun t where name like 'SF_ARCHIVELOG_%';
6.2 删除归档文件的函数
SF_ARCHIVELOG_DELETE_BEFORE_LSN
:根据日志序列号(LSN)删除指定 LSN 之前的归档文件。使用该函数时,需要提供一个有效的 LSN 值。SF_ARCHIVELOG_DELETE_BEFORE_TIME
:根据时间删除指定时间之前的归档文件。
6.3 删除指定时间前的归档文件示例
-- 删除 10 天前的归档日志,sysdate 表示当前系统时间,sysdate - 10 表示 10 天前的时间。
Select SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate-10);
6.4 注意事项
- 在删除归档文件之前,需要确保这些文件已经不再需要用于数据库恢复,否则可能会导致数据无法恢复到指定的时间点。
- 删除归档文件时,要谨慎操作,避免误删重要的归档文件。可以先进行测试删除,确认删除范围符合预期后再进行正式删除。