归档配置
DM 数据库可以运行在归档模式或非归档模式下。如果是归档模式,联机日志文件中的 内容保存到硬盘中,形成归档日志文件;如果是非归档模式,则不会形成归档日志。
联机备份数据库必须要配置归档。联机备份时,大量的事务处于活动状态,为确保备份 数据的一致性,需要同时备份一段日志(备份期间产生的 REDO 日志),因此要求数据库必 须配置本地归档且归档必须处于开启状态。
脱机备份数据库可配置归档也可以不配置。正常退出的库的备份不需要考虑本地归档日 志的完整性,可以不配置归档;但对于故障退出的库的备份要求因故障未刷盘的日志也必须 存在于本地归档中,因此必须配置归档,如果本地归档缺失,需要用户先修复归档,然后再备份。
备份表空间属于联机备份,必须配置归档。
备份表虽然是联机完全备份,但不需要配置归档。因为表在还原之后不需要再进行恢复 操作,用不到归档日志。
备份归档日志必须配置归档。
联机配置归档:
可根据需要修改归档日志的位置,和文件大小
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/data/dmdbms/data/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=51200';
ALTER DATABASE OPEN;
手动配置归档:
手动配置归档即在数据库实例未启动的情况下,手动编写 dmarch.ini 文件和设置参 数 ARCH_INI。
本地归档:
1) 手动编辑 dmarch.ini 文件,之后保存在 dm.ini 所在的目录;
dmarch.ini 文件内容如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = d:\dm_arch\arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 2048
ARCH_HANG_FLAG = 1
2)编辑 dm.ini 文件,设置参数 ARCH_INI=1,保存;
3)启动数据库实例,数据库已运行于归档模式。
远程归档:
与本地归档一样,远程归档也是配置在 dmarch.ini 文件中,配置步骤请参考本地归档。
一般建议 DMDSC 集群中的节点,在配置本地归档之外,再交叉配置集群中所有其他节 点的远程归档。 下面以两节点 DMDSC 集群为例,说明如何编辑 dmarch.ini 文件以配置远程归档, DSC0 和 DSC1 是 DMDSC 集群中的两个实例,交叉进行 REMOTE 归档配置:
例 1 DSC0 实例的 dmarch.ini 配置:
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/dameng/arch_dsc0
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_HANG_FLAG = 1
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH =+DMDATA/dameng/arch_dsc1
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
例 2 DSC1 实例的 dmarch.ini 配置:
ARCH_LOCAL_SHARE = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =+DMDATA/dameng/arch_dsc1
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_HANG_FLAG = 1
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH =+DMDATA/dameng/arch_dsc0
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
联机执行 SQL 语句进行备份:
在Disql中执行该命令,备份数据库,默认为完全备份,下面两个sql执行的效果是一样的:
BACKUP DATABASE BACKUPSET 'db_bak_01';
BACKUP DATABASE FULL BACKUPSET 'db_bak_01';
语句执行完后会在默认的备份路径下生成名为“db_bak_01”的备份集目录,默认的备 份路径为 dm.ini 中 BAK_PATH 配置的路径,若未配置,则使用 SYSTEM_PATH 下的 bak 目录。如需指定备份集路径,可使用以下命令:
指定备份集路径为“/home/dm_bak/db_bak_3_01”
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_01';
创建备份集,备份名设置为“WEEKLY_FULL_BAK”
BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/home/dm_bak/db_bak_3_02';
创建备份为备份集添加描述信息为“完全备份”
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_04' BACKUPINFO '完全备份';
创建备份限制备份片大小为 300MB
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_05' MAXPIECESIZE 300;
执行备份压缩,压缩级别设置为 5
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_06' COMPRESSED LEVEL 5;
创建并行备份,指定并行数为 8
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_07' PARALLEL 8;
增量备份:
增量备份指基于指定的库(或者表空间)的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改的数据页。执行增量备份的主要目的是快速备份数据库中的修改, 减少备份时间和避免重复的备份。
DIsql 中输入备份数据库语句,最简单的不设置其他参数的增量备份语句如下:
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET
'/home/dm_bak/db_increment_bak_02';
备份语句中的 INCREMENT 参数不可省略,该参数用来指定执行的备份类型为增量备份。 若要创建累积增量备份,还需要指定 CUMULATIVE 参数,否则缺省为差异增量备份。WITH BACKUPDIR 参数用来指定基备份集的搜索目录,如果基备份集不在默认备份目录或当前备 份目录则该参数不可省略。
表空间备份
BACKUP TABLESPACE MAIN BACKUPSET 'ts_bak_01';
增量备份指定基备份集路径
BASE ON BACKUPSET 参数用于增量备份中,用来指定基备份集路径。如果不指定该 参数,会在备份搜索目录中搜索最近一次的完全备份或增量备份作为这次增量备份的基备份。 若需要在特定的备份集基础上执行增量备份就需要使用该参数。
下面以增量备份用户MAIN 表空间为例,指定 BASE ON BACKUPSET 参数执行增量备份:
BACKUP TABLESPACE MAIN BACKUPSET 'ts_full_bak_01';
BACKUP TABLESPACE MAIN INCREMENT BACKUPSET 'ts_increment_bak_01';
BACKUP TABLESPACE MAIN INCREMENT BASE ON BACKUPSET'ts_full_bak_01' BACKUPSET
'ts_increment_bak_02';
增量备份 ts_increment_bak_02 若不指定备份集 ts_full_bak_01 作为基备份,那么默认会使用最近一次的备份集 ts_increment_bak_01 作为基备份。
表备份
与备份数据库与表空间不同,备份表不需要服务器配置归档,DIsql 中输入以下即可 备份用户表:
BACKUP TABLE TAB_01 BACKUPSET 'tab_bak_01';
备份归档
归档备份拷贝指定归档目录下的所有的归档文件到备份集中,并记录各个归档文件的属 性、文件大小以及 LSN 区间等。归档备份不存在增量备份之说。当需要保存库的归档时, 可以使用归档备份。
例 备份归档日志,通过 LSN BETWEEN ... AND ...来指定起始和截至 LSN。 首先,确定 LSN 范围。
select ARCH_LSN, CLSN, PATH from V$ARCH_FILE;
查询结果如下:
ARCH_LSN CLSN PATH
-------- ------- --------
38758 40301 d:\arch\ARCHIVE_LOCAL1_20230727105417748.log
40302 40303 d:\arch\ARCHIVE_LOCAL1_20230727111411079.log
40304 40305 d:\arch\ARCHIVE_LOCAL1_20230727111513679.log
……
50412 50413 d:\arch\ARCHIVE_LOCAL1_20230727171801098.log
50414 50478 d:\arch\ARCHIVE_LOCAL1_20230727171849712.log
……
//通过查询结果选出备份的起始 LSN 和截至 LSN。比如 50414 50478
其次,备份归档。
BACKUP ARCHIVELOG LSN BETWEEN 50414 AND 50478 BACKUPSET
'/home/dm_bak/arch_bak_time_14-78';