1)达梦数据库可以运行在归档状态或者非归档状态下。
2)归档模式下运行:联机日志文件中的内容将被保存至硬盘,形成归档日志文件;
3)非归档模式运行:则不会形成归档日志。
4)采用归档模式会对系统的性能造成些许的影响,但是数据库运行在归档模式下,数据会更加安全。
5)当出现故障的时候,数据丢失的可能性会更小,因为一旦出现介质故障(如:磁盘损坏)时,可以利用归档日志,将数据库恢复到发生故障的前一刻,也可以指定时间点还原;而如果没有开启归档,则只能利用备份文件的数据进行还原。
6)开启归档后可以支持数据库的备份热备、集群搭建以及归档挖掘等功能
达梦数据库开启数据库本地归档通常通过以下两种方式配置:
方式一:通过 SQL 命令方式开启归档(数据库实例启动)
方式二:通过修改数据库配置文件方式开启归档(数据库实例未启动)
方式三:通过达梦客户端工具开启归档(数据库实例启动)
不管是手动配置还是SQL命令方式都是在干两个事,在dm.ini中开启dmarch_ini参数+新增dmarch.ini文件。
[root@AAAA ~]# mkdir /data/dmserver/dmarch
[root@AAAA ~]# chown dmdba.dinstall /data/dmserver/dmarch/
[root@AAAA ~]# chmod -R 755 /data/dmserver/dmarch/
SQL> select name,arch_mode from v$database;
行号 name arch_mode
---------- ------ ---------
1 DAMENG N
已用时间: 9.130(毫秒). 执行号:601.
N是未开启
Y是已开启
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/data/dmserver/dmarch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=2048';
ALTER DATABASE OPEN;
上面三条语句是:有100G归档专用磁盘,告警阈值为80%,归档上线设置为80G。
ps: sql语句执行以后会在数据库的实例目录下生成dmarch.ini文件。
SQL> select arch_name,arch_type,arch_dest,arch_file_size,arch_space_limit from v$dm_arch_ini;
行号 arch_name arch_type arch_dest arch_file_size
---------- -------------- --------- --------------------- --------------
arch_space_limit
----------------
1 ARCHIVE_LOCAL1 LOCAL /data/dmserver/dmarch 1024
2048
已用时间: 0.623(毫秒). 执行号:1101.
[root@AAAA ~]# ps -ef|grep dms
dmdba 3356 1 4 16:55 ? 00:00:01 /data/dmserver/app/bin/dmserver path=/data/dmserver/data/DAMENG/dm.ini -noconsole
root 8233 8133 0 16:56 pts/0 00:00:00 grep dms
[root@AAAA DAMENG]# cat /data/dmserver/data/DAMENG/dm.ini | grep 'ARCH_INI'
ARCH_INI = 1 #dmarch.ini
[root@AAAA DAMENG]# cat dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL # Redo日志归档类型 / LOCAL本地归档
ARCH_DEST = /data/dmserver/dmarch # Redo日志归档目标 / Local归档文件存放路径
ARCH_FILE_SIZE = 1024 # Redo日志归档文件 单个文件大小 / 取值范围 64M - 2048M / 默认 1024M
ARCH_SPACE_LIMIT = 2048 # Redo日志归档空间限制 当本地归档文件达到限制时,系统自动删除最老的归档文件 / 0 无空间限制 / 取值范围 1024M - 4294967294
ARCH_FLUSH_BUF_SIZE = 2
ARCH_HANG_FLAG = 1
SQL> select name,arch_mode from v$database;
行号 name arch_mode
---------- ------ ---------
1 DAMENG Y
已用时间: 1.827(毫秒). 执行号:501.
# ARCH_MODE=N 表示归档未开启
alter database archivelog current;
alter system archive log current;
alter system switch logfile;
ALTER DATABASE MOUNT;
ALTER DATABASE NOARCHIVELOG;
ALTER DATABASE OPEN;
-- 删除 7 天前的归档日志
select SF_ARCHIVELOG_DELETE_BEFORE_TIME(sysdate-7);
-- 删除某个 lsn 之前的归档
select SF_ARCHIVELOG_DELETE_BEFORE_LSN(43502);
-- 显示当前实例的所有归档日志文件信息。
V$ARCHIVED_LOG
-- 用来存放归档路径等相关归档参数信息。
V$DM_ARCH_INI
-- 查询本地归档日志信息。对DMDSC集群,除了显示本地归档外,也显示远程归档信息。
V$ARCH_FILE
-- 显示当前归档任务队列信息。
V$ARCH_QUEUE
-- 用于在主库上查询各备库的日志发送统计信息。
V$ARCH_SEND_INFO
-- 查询归档状态信息,归档状态是由主库记录和维护的,此视图只在主库上查询有效,备库上的查询结果没有实际意义。
V$ARCH_STATUS
-- 显示备份集的归档信息。
V$BACKUPSET_ARCH
-- 查询 V$BACKUPSET_SEARCH_DIRS 显示当前会话已添加的备份目录,即备份集搜索目录。若用户没有添加备份目录,那么仅显示默认的备份目录。
V$BACKUPSET_SEARCH_DIRS