数据无价,备份先行。本文带你全面掌握达梦DM8数据库的联机备份操作。
在日常生产环境中,数据库备份是DBA最重要的工作之一。无论是地震、火灾等自然灾害,还是人为误操作、硬件故障,都可能导致数据丢失。而数据库备份,就是为数据买的一份“保险”——它是数据库在某个时间点的完整副本,能够在灾难发生时将数据恢复到可用状态。
DM8数据库支持物理备份和逻辑备份两种方式。物理备份是对操作系统物理文件(数据文件、控制文件、日志文件等)的备份;逻辑备份则是对数据库对象(表、索引、视图、存储过程等)的备份。本文重点介绍联机物理备份,即在数据库运行状态下通过SQL语句进行的备份操作。
在进行联机库级备份、表空间备份和归档备份时,必须保证数据库处于归档模式,否则联机备份无法进行。
为什么联机备份必须开启归档?因为联机备份时,大量事务处于活动状态,为确保备份数据的一致性,需要同时备份备份期间产生的REDO日志。REDO日志是循环使用的,写满就会被覆盖;而归档日志正是将写满的REDO日志复制保存下来,避免因覆盖而丢失历史记录。
-- 1)修数据库为 MOUNT 状态
SQL> ALTER DATABASE MOUNT;
-- 2)配置本地归档(指定归档目录、文件大小和空间限制)
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST = /home/dm_arch/arch, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';
-- 3)开启归档模式
SQL> ALTER DATABASE ARCHIVELOG;
-- 4)修改数据库为 OPEN 状态
SQL> ALTER DATABASE OPEN;
如果数据库实例未启动,也可以手动配置归档:
步骤1:在dm.ini所在目录创建dmarch.ini文件,内容如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dm_arch/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 2048
步骤2:编辑dm.ini文件,设置ARCH_INI=1。
步骤3:启动数据库实例,数据库即运行于归档模式。
小贴士:配置完成后,可以通过SELECT ARCH_MODE FROM V$DATABASE;查看归档模式是否已开启。
数据库备份是最完整的备份方式,支持完全备份和增量备份。
最简单的数据库完全备份语句
SQL> BACKUP DATABASE BACKUPSET 'bak_full01';
指定备份集路径、设置备份名、添加描述、限制备份片大小、压缩、并行备份:
SQL> BACKUP DATABASE TO WEEKLY_FULL_BAK
BACKUPSET '/home/dm_bak/db_bak_3_02'
DEVICE TYPE DISK
BACKUPINFO '完整备份'
MAXPIECESIZE 300
COMPRESSED LEVEL 5
PARALLEL 8;
几个关键参数说明:
注意:MOUNT模式下不允许数据库备份。
DM8增量备份分为差异增量备份和累积增量备份两种,缺省为差异增量备份。
差异增量备份的基备份集可以是增量备份集,也可以是全量备份集。累积增量备份的基备份集则只能是全量备份集。
增量备份示例(使用WITH BACKUPDIR指定基备份集搜索目录):
SQL> BACKUP DATABASE INCREMENT
WITH BACKUPDIR '/home/dm_bak'
BACKUPSET '/home/dm_bak/db_increment_bak_02';
如果执行增量备份时遇到错误[-8036]:无基备份或无匹配基备份,说明系统在默认路径或指定路径找不到基备份集,需要使用WITH BACKUPDIR明确指定基备份集的搜索目录。
:
表空间备份允许对特定表空间进行备份,更加灵活高效。
最简单的表空间备份:
SQL> BACKUP TABLESPACE MAIN BACKUPSET 'ts_bak_01';
完全备份(FULL可省略):
SQL> BACKUP TABLESPACE MAIN FULL BACKUPSET '/home/dm_bak/ts_full_bak_01';
增量备份(指定基备份目录):
SQL> BACKUP TABLESPACE MAIN INCREMENT
WITH BACKUPDIR '/home/dm_bak'
BACKUPSET '/home/dm_bak/ts_increment_bak_02';
基于指定基备份集的增量备份
SQL> BACKUP TABLESPACE MAIN INCREMENT
BASE ON BACKUPSET 'ts_full_bak_01'
BACKUPSET 'ts_increment_bak_02';
注意:备机状态、MOUNT状态、MPP和RAC环境均不允许表空间备份。
表备份均为联机完全备份,不需要备份归档日志,也不存在增量备份。
最简单的表备份:
SQL> BACKUP TABLE TAB_01 BACKUPSET 'tab_bak_01';
注意:备机状态、MOUNT状态、MPP和RAC环境均不允许表备份还原。表备份支持联机还原,还原过程中表空间中其他表可以正常操作。
归档备份用于拷贝指定归档目录下的所有归档文件到备份集中。备份归档的前提是服务器已配置归档。
SQL> BACKUP ARCHIVE LOG ALL BACKUPSET 'arch_bak_01';
归档备份的价值在于:归档日志目录有大小限制,超过限制会自动删除最早的归档日志。通过对归档日志进行备份,可以让归档日志不受目录大小限制,保持更长久的时间,从而让数据回溯的时间点更加久远。
对于敏感数据,DM8支持备份加密功能。以下示例为数据库完全备份,使用密码"cdb546"和RC4加密算法:
SQL> BACKUP DATABASE
BACKUPSET '/home/dm_bak/db_bak_for_encrypt_01'
IDENTIFIED BY "cdb546"
WITH ENCRYPTION 2
ENCRYPT WITH RC4;
参数说明:
注意:调用删除备份等函数或查看动态视图时,需要先调用SF_BAKSET_BACKUP_DIR_ADD添加备份目录,否则仅搜索默认备份路径下的备份集。基备份不能删除。
文章
阅读量
获赞
