特别提醒:backup命令的参数是有先后顺序的
1.数据库归档配置
联机备份数据库必须要配置归档
在线修改数据库为归档方式:
--修改数据库为MOUNT状态
ALTER DATABASE MOUNT;
--配置本地归档
ALTER DATABASE ADD ARCHIVELOG 'DEST = /dm8/data/arch, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';
--开启归档模式
ALTER DATABASE ARCHIVELOG;
--修改数据库为OPEN状态
ALTER DATABASE OPEN;
--查看归档日志配置状态
select PARA_VALUE from v$dm_ini
where para_name = 'ARCH_INI'
select * from v$arch_status
离线修改数据库为归档方式:
手动编辑 dmarch.ini 文件,之后保存在 dm.ini 所在的目录;
dmarch.ini 文件内容如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/data/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 2048
编辑 dm.ini 文件,设置参数 ARCH_INI=1,保存;
启动数据库实例,数据库已运行于归档模式。
2.在线备份数据库示例
默认备份路径:
select PARA_VALUE from v$dm_ini
where para_name = 'BAK_PATH';
使用disql登录到数据库进行简单备份
在备份路径下面生成backup_001的备份目录
2.在线备份数据库完整语法
BACKUP DATABASE [[[FULL] [DDL_CLONE]]| INCREMENT [CUMULATIVE][WITH BACKUPDIR ''{,''}]|[BASE ON BACKUPSET '']][TO ][BACKUPSET '']
[DEVICE TYPE [PARMS '']]
[BACKUPINFO ''] [MAXPIECESIZE ]
[IDENTIFIED BY |"" [WITH ENCRYPTION ][ENCRYPT WITH ]]
[COMPRESSED [LEVEL ]] [WITHOUT LOG]
[TRACE FILE ''] [TRACE LEVEL ]
[TASK THREAD ][PARALLEL [] [READ SIZE ]];
FULL:备份类型。FULL 表示完全备份,可不指定,默认为完全备份。
DDL_CLONE:数据库克隆。该参数只能用于完全备份中,表示仅拷贝所有的元数据不拷贝数据。如对于数据库中的表来说,只备份表的定义不备份表中数据。表空间和表备份不支持该参数。数据库克隆必须备份日志。
INCREMENT:备份类型。INCREMENT 表示增量备份,若要执行增量备份必须指定该参数。
CUMULATIVE:用于增量备份中,指明为累积增量备份类型,若不指定则缺省为差异增量备份类型。
WITH BACKUPDIR:用于增量备份中,指定基备份的搜索目录,最大长度为 256 个字节。若不指定,自动在默认备份目录和当前备份目录下搜索基备份。如果基备份不在默认的备份目录或当前备份目录下,增量备份必须指定该参数。
BASE ON BACKUPSET:用于增量备份中,指定基备份集路径。
TO:指定生成备份名称。若未指定,系统随机生成,默认备份名格式为:DB_库名_备份类型_备份时间。其中,备份时间为开始备份时的系统时间。
BACKUPSET:指定当前备份集生成路径。若指定为相对路径,则在默认备份路径中生成备份集。若不指定,则在默认备份路径中按约定规则,生成默认备份集目录。库级备份默认备份集目录名生成规则:DB_库名_备份类型_备份时间,如 DB_DAMENG_FULL_20180518_143057_123456。表明该备份集为 2018 年 5 月 18 日 14 时 30 分 57 秒 123456 毫秒时生成的库名为 DAMENG 的数据库完全备份集。若库名超长使备份集目录完整名称长度大于 128 个字节将直接报错路径过长。
DEVICE TYPE:指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK。
PARMS:只对介质类型为 TAPE 时有效。
BACKUPINFO:备份的描述信息。最大不超过 256 个字节。
MAXPIECESIZE:最大备份片文件大小上限,以 M 为单位,最小 32M,32 位系统最大 2G,64 位系统最大 128G。
IDENTIFIED BY:指定备份时的加密密码。密码可以用双引号括起来,这样可以避免一些特殊字符通不过语法检测。密码的设置规则遵行 ini 参数 pwd_policy 指定的口令策略。
WITH ENCRYPTION:指定加密类型,0 表示不加密,不对备份文件进行加密处理;1 表示简单加密,对备份文件设置口令,但文件内容仍以明文方式存储;2 表示完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储。当不指定 WITH ENCRYPTION 子句时,采用简单加密。
ENCRYPT WITH:指定加密算法。当不指定 ENCRYPT WITH 子句时,使用 AES256_CFB 加密算法。
COMPRESSED:是否对备份数据进行压缩处理。LEVEL 表示压缩等级,取值范围 0~9:0 表示不压缩;1 表示 1 级压缩;9 表示 9 级压缩。压缩级别越高,压缩速度越慢,但压缩比越高。若指定 COMPRESSED,但未指定 LEVEL,则压缩等级默认 1;若未指定 COMPRESSED,则默认不进行压缩处理。
WITHOUT LOG:联机数据库备份是否备份日志。如果使用,则表示不备份,否则表示备份。如果使用了 WITHOUT LOG 参数,则使用 DMRMAN 工具还原时,必须指定 WITH ARCHIVEDIR 参数。
TRACE FILE:指定生成的 TRACE 文件。启用 TRACE,但不指定 TRACE FILE 时,默认在 DM 数据库系统的 log 目录下生成 DM_SBTTRACE_年月.log 文件;若使用相对路径,则生成在执行码同级目录下;若用户指定 TRACE FILE,则指定的文件不能为已经存在的文件,否则报错。TRACE FILE 不可以为 ASM 文件。
TRACE LEVEL:是否启用 TRACE。有效值 1、2,默认为 1 表示不启用 TRACE,此时若指定了 TRACE FILE,会生成 TRACE 文件,但不写入 TRACE 信息;为 2 启用 TRACE 并在 TRACE 文件中写入 TRACE 相关内容。
TASK THREAD:备份过程中数据处理过程线程的个数,取值范围 0~64,默认为 4。若指定为 0,则调整为 1;若指定超过当前系统主机核数,则调整为主机核数。线程数(TASK THREAD)*并行数(PARALLEL)不得超过 512。
PARALLEL:指定并行备份的并行数和拆分块大小。并行数取值范围 0~128。若不指定并行数,则默认为 4,若指定为 0 或者 1 均认为非并行备份。若未指定关键字 PARALLEL,则认为非并行备份。并行备份不支持存在介质为 TAPE 的备份。线程数(TASK THREAD)*并行数(PARALLEL)不得超过 512。READ SIZE 指定并行备份大数据量的数据文件时的拆分块大小,默认为 1GB,最小为 512MB,当指定的拆分块大小小于 512MB 时,系统会自动调整为 512MB。若指定并行备份,但未指定拆分块大小,则直接使用默认拆分块大小进行拆分。当数据文件的大小小于拆分块大小时,不执行拆分;当数据文件的大小大于拆分块大小时,执行拆分。并行数不能大于拆分之后的总块数。
3.备份操作示例
指定备份文件绝对路径:
BACKUP DATABASE BACKUPSET '/dm8/data/backup_002';
设置备份名为fullbak:
BACKUP DATABASE TO fullbak BACKUPSET '/dm8/data/backup_003';
增量备份表空间:
BACKUP TABLESPACE MAIN BACKUPSET 'ts_main_back001';
BACKUP TABLESPACE MAIN INCREMENT BACKUPSET 'ts_main_increment_001';
BACKUP TABLESPACE MAIN INCREMENT BASE ON BACKUPSET 'ts_main_back001' BACKUPSET 'ts_main_increment_002';
添加描述,设置备份集大小
BACKUP DATABASE TO fullbak BACKUPSET '/dm8/data/backup_004' BACKUPINFO '完全备份' MAXPIECESIZE 32;
设置压缩
BACKUP DATABASE BACKUPSET '/dm8/data/DB_PROD_FULL_2022_09_15_17_50_15' BACKUPINFO '完全备份' MAXPIECESIZE 32 COMPRESSED LEVEL 5;
并行备份
BACKUP DATABASE BACKUPSET '/dm8/data/backup_006' BACKUPINFO '完全备份' MAXPIECESIZE 32 COMPRESSED LEVEL 5 PARALLEL 4;
指定全备
BACKUP DATABASE FULL BACKUPSET '/dm8/data/backup_008' BACKUPINFO '完全备份' MAXPIECESIZE 32 COMPRESSED LEVEL 5 PARALLEL 4;
以上面全备为基础做增量
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dm8/data/backup_008' BACKUPSET '/dm8/data/backup_008_incr';
以上面全备为基础做增量
BACKUP DATABASE INCREMENT CUMULATIVE WITH BACKUPDIR '/dm8/data/backup_008' BACKUPSET '/dm8/data/backup_009_incr';
全量还原测试:
还原是在数据库关闭的情况下进行,需要用dmrman
关闭数据库
systemctl stop DmServiceTEST.service
移走或删除数据文件,不要删除dm.ini和控制文件
以下操作在dmrman下进行:
检查备份文件集的有效性
CHECK BACKUPSET '/dm8/data/DB_PROD_FULL_2022_09_15_17_50_15';
还原数据库,还原归档日志,恢复数据库:
RESTORE DATABASE '/dm8/data/PROD/dm.ini' FROM BACKUPSET '/dm8/data/DB_PROD_FULL_2022_09_15_17_50_15';
RESTORE ARCHIVELOG FROM BACKUPSET '/dm8/data/backup_arch_002' ALL TO ARCHIVEDIR '/dm8/data/arch';
RECOVER DATABASE '/dm8/data/PROD/dm.ini' WITH ARCHIVEDIR'/dm8/data/arch';
RECOVER DATABASE '/dm8/data/PROD/dm.ini' UPDATE DB_MAGIC;
4.表空间备份
表空间备份方式及参数与数据库备份基本相同,此处略过
5.表备份
表备份不需要开启归档方式
语法如下:
BACKUP TABLE
[TO ] [BACKUPSET ''] [DEVICE TYPE [PARMS '']]
[BACKUPINFO '']
[MAXPIECESIZE ]
[IDENTIFIED BY |"" [WITH ENCRYPTION ][ENCRYPT WITH ]]
[COMPRESSED [LEVEL ]]
[TRACE FILE ''] [TRACE LEVEL ];
备份示例:
backup table test.departments backupset '/dm8/data/backup_table_001';
还原示例:表被drop,好像不能被还原;STRUCT参数可以还原索引约束等信息,不能还原删除的表
truncate table test.departments;
RESTORE TABLE test.departments STRUCT FROM BACKUPSET '/dm8/data/backup_table_001';
RESTORE TABLE test.departments FROM BACKUPSET '/dm8/data/backup_table_001'
;
表备份限制:
仅支持对用户的非分区的行存储表和堆表进行备份,不支持对分区表的备份。在非分区表中,也不支持对临时表、物化视图表、物化视图附属表、日志表和特定模式(DBG_PKG/INFORMATION_SCHEMA/INFO_SCHEM/SYSREP/SYSGEO/SYSJOB/SYSCPT/SYS)下的表进行表备份。
表的列类型为对象类型的表不支持表备份。
表备份不备份表上的注释以及 default 表达式中的函数定义,因此还原时需用户自行确认。
不支持在加密库上进行表备份与还原。
当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名后加文件编号。
表备份时,其所属表空间必须处于联机状态。
目前表备份不支持备份到 TAPE 介质上。
6.备份归档日志
语法如下:
BACKUP
[ALL | [FROM LSN ]| [UNTIL LSN ]|[LSN BETWEEN AND ] | [FROM TIME '']|[UNTIL TIME '']|[TIME BETWEEN''> AND '' ]][][DELETE INPUT] [TO ][];
::=BACKUPSET [''][DEVICE TYPE [PARMS '']]
[BACKUPINFO '']
[MAXPIECESIZE ]
[IDENTIFIED BY |"" [WITH ENCRYPTION ][ENCRYPT WITH ]]
[COMPRESSED [LEVEL ]]
[WITHOUT LOG]
[TRACE FILE ''] [TRACE LEVEL ]
[TASK THREAD ][PARALLEL [][READ SIZE ]]
::=NOT BACKED UP [ TIMES]|[SINCE TIME '']
查看归档文件,可以根据LSN号进行备份:
select ARCH_LSN, CLSN, PATH from V$ARCH_FILE;
BACKUP ARCHIVELOG LSN BETWEEN 61444 AND 61445 BACKUPSET '/dm8/data/backup_arch_001';
备份完成后删除已经备份的归档日志
BACKUP ARCHIVELOG LSN BETWEEN 61444 AND 61445 DELETE INPUT BACKUPSET '/dm8/data/backup_arch_002';
7.备份文件管理
备份管理相关动态视图总结如下:需要将备份目录添加到备份搜索路径,否则备份文件查不到
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK', '/dm8/data');
V$BACKUPSET:显示备份集基本信息。
V$BACKUPSET_DBINFO:显示备份集的数据库相关信息。
V$BACKUPSET_DBF:显示备份集中数据文件的相关信息。
V$BACKUPSET_ARCH:显示备份集的归档信息。
V$BACKUPSET_BKP:显示备份集的备份片信息。
V$BACKUPSET_SEARCH_DIRS:显示备份集搜索目录。
V$BACKUPSET_TABLE:显示表备份集中备份表信息。
V$BACKUPSET_SUBS:显示并行备份中生成的子备份集信息。
V$BACKUP_MONITOR:显示当前备份任务实时监控信息。
V$BACKUP_HISTORY:显示最近 100 条备份监控信息。
V$BACKUP_FILES:显示当前备份任务待备份数据文件列表。
备份管理相关系统过程与函数总结如下:
SF_BAKSET_BACKUP_DIR_ADD:添加备份目录。
SF_BAKSET_BACKUP_DIR_REMOVE:删除内存中指定的备份目录。
SF_BAKSET_BACKUP_DIR_REMOVE_ALL:删除内存中全部的备份目录。
SF_BAKSET_CHECK:对备份集进行校验。
SF_BAKSET_REMOVE:删除指定设备类型和指定备份集目录的备份集。
SF_BAKSET_REMOVE_BATCH:批量删除满足指定条件的所有备份集。
SP_DB_BAKSET_REMOVE_BATCH:批量删除指定时间之前的数据库备份集。
SP_TS_BAKSET_REMOVE_BATCH:批量删除指定表空间对象及指定时间之前的表空间备份集。
SP_TAB_BAKSET_REMOVE_BATCH:批量删除指定表对象及指定时间之前的表备份集。
SP_ARCH_BAKSET_REMOVE_BATCH:批量删除指定条件的归档备份集。
参考文件:备份还原简介 | 达梦技术文档