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。
在 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 参数,否则缺省为差异增量备份。WITHBACKUPDIR 参数用来指定基备份集的搜索目录,如果基备份集不在默认备份目录或当前备份目录则该参数不可省略。
表空间备份
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';
表还原之后不需要恢复操作。DIsql 中输入以下简单的 RESTORE 语句就可还原表:
RESTORE TABLE TAB_01 FROM BACKUPSET 'tab_bak_01';
执行表还原,数据库必须处于 OPEN 状态,MOUNT 和 SUSPEND 状态下不允许执行表还原。表还原不需要配置归档,因为表还原是联机完全备份还原,所以不需要借助本地归档日志进行恢复。完整的表备份还原步骤如下:
DMRMAN 工具支持控制台输入命令、命令行设置参数两种操作方式。下面分别对这两种操作方式进行介绍。
当 DMRMAN 客户端已经启动且可以输入命令时会显示命令提示符。如下所示:
RMAN>
例如,输入以下用于执行的 DMRMAN 命令:
RMAN> HELP
RMAN> BACKUP DATABASE'/opt/dmdbms/data/DAMENG/dm.ini';
DMRMAN 控制台还可以执行脚本。如首先创建一个名为 cmd_file.txt 的文件,文件 中包含“BACKUP DATABASE'/opt/dmdbms/data/DAMENG/dm.ini'”命令,保存到 /home/dm_cmd目录下,则该文件的执行方式如下:
RMAN> `/home/dm_cmd/cmd_file.txt
DMRMAN 是按行解析命令,如果输入一行不完整的命令执行会报错,如一条完整的命令分三行输入会导致报错,例如:
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';
命令行指定脚本执行,要求我们先创建一个包含 DMRMAN 命令的文件,然后设置 CTLFILE参数,参数后面指定文件的路径。例如,创建一个名为cmd_rman.txt 的文件, 保存/home/dm_cmd 目录下,文件中包含一行如下所示的 DMRMAN 命令:
BACKUP DATABASE'/opt/dmdbms/data/DAMENG/dm.ini';
设置 CTLFILE 参数启动 DMRMAN 工具,指定脚本文件中的命令将被执行:
./dmrman CTLFILE=/home/dm_cmd/cmd_rman.txt
命令执行完后 DMRMAN 工具会自动退出。
命令行执行语句执行,是 DMRMAN 工具设置 CTLSTMT 参数,参数后面执行需要执行的DMRMAN 命令,使用方法如下所示:
./dmrman CTLSTMT="BACKUP DATABASE'/opt/dmdbms/data/DAMENG/dm.ini';
RMAN> BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL BACKUPSET '/home/dm_bak/db_full_bak_01';
备份成功后会在或者默认备份目录下生成备份集。备份集中包括一个 备份元数据文件,后缀.meta,以及一个或多个备份片文件,后缀.bak。
在执行脱机数据库备份过程中,如果报错归档不完整,则需要检查库是不是异常退 出。如果库是异常退出,则需要先进行归档修复。
RMAN> BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/db_increment_bak_02';
使用 RESTORE 命令完成脱机还原操作,在还原语句中指定库级备份集,可以是脱机库级备份集,也可以是联机库级备份集。
数据库备份集分为联机和脱机两种类型。通常情况下,用户会在联机状态下备份数据库,因此下面以联机数据库备份为例说明使用 DMRMAN 如何执行数据库还原操作。
使用 RECOVER 命令完成数据库恢复工作,可以是基于备份集的恢复工作,也可以是使 用本地归档日志的恢复工作。如果还原后,数据已经处于一致性状态了,则可以使用更新DB_MAGIC 方式恢复,前提是不需要重做日志。
从备份集恢复
文章
阅读量
获赞