▷▶介质管理层(MML)
DM8根据自身实现自定义了一套API接口SBT来负责备份数据在存储介质上的实际读写操作。
整个存储介质上的读写操作,由MML调用SBT完成。
目前 DM8 备份还原支持磁盘(DISK)和磁带(TAPE)两种存储介质。
磁盘介质SBT接口实现为dmsbt( WINDOWS 上为 dmsbt.dll,非 WINDOWS 上为 dmsbt.so)
磁带介质实现为dmsbtex(WINDOWS上命名为dmsbtex.dll, Linux上命名为dmsbtex.so)
其他第三方磁带存储实现,仅需将库文件名命名为 dmsbtex.dll(WINDOWS)或dmsbtex.so(非 WINDOWS),并替换掉DM8的相应dmsbtex库文件即可。
2.4、 应用场景分析
2.4.1 选择备份、还原方式
▷▶库级
理论上无论出现哪种损坏都可以采用库级备份还原修复,建议物理损坏情况下使用;
逻辑损坏导致库数据丢失比较严重或者表空间已经被删除,也可采用库级备份还原;
要求还原的目标库脱机且正常退出。需借助DMRMAN工具完成。
▷▶表空间级
若逻辑损坏导致某个表空间中多个表数据丢失时,可以考虑采用表空间级备份还原。
DM8支持从库级备份中还原表空间。
▷▶归档
归档还原仅能恢复归档文件。
很多时候可以利用归档文件修复数据,若条件允许,最好保留尽量多的归档文件。
▷▶表级
因逻辑损坏导致个别表数据丢失, 可以采用表级备份还原。建议对数据库中频繁操作的重要表进行表级备份。
将指定表数据从一个表迁移到另外一个表中,也可使用表级备份还原。
表级备份还原过程中,其他表可以正常工作。
▷▶完全,还是增量
当库或表空间的基础数据量很大而数据修改操作不太频繁时,强烈建议使用增量备份(前提是至少有一个完全备份)
建议当进行一定次数的增量备份后,应重新做一个完全备份。
2.4.2 选择恢复方式
▷▶表空间还原后的恢复操作由DM8自动执行;表还原后已经是一致性状态,不需要进行恢复操作。
▷▶提供三种库级恢复方式:
若还原时指定备份集为脱机库备份集(LEVEL=1)或者联机库备份集(LEVEL=0), 但过程中无日志(START_LSN = END_LSN+1),且仅需将库恢复到备份时状态,建议选择更新DB_MAGIC恢复方式;
若还原时指定的备份集为联机备份集(LEVEL=0)且备份了日志(备份时不指定 WITHOUT LOG 参数),且仅需要库恢复到备份时状态,可以选择从备份集恢复;
除以上情况外,均可以采用从本地归档恢复。可指定想要恢复到的 LSN(大于备份结束END_LSN)和时间点(大于备份时间BACKUP_TIME)。不指定则恢复到最新状态。
二、应用
1、DM8的备份还原方法
Disql 工具:联机数据备份与还原,包括库备份、表空间备份与还原、表备份与还原;
DMRMAN 工具:脱机数据库备份还原与恢复;
客户端工具 MANAGER和CONSOLE:对应命令行工具DIsql和DMRMAN的功能,分别用于联机和脱机备份还原数据。
1.1 冷备
不需要开启归档,针对整库做备份需要开启dmap服务,需要关闭数据库实例
1.1.1 console工具备份
[dmdba@localhostbin]$./DmServiceDMSERVER stop
[dmdba@localhostbin]$./DmAPService status
DmAPService(pid13623) is running.
1.1.2 用dmrman工作备份,只支持冷备
cd /dm8/bin/
./dmrman
RMAN>backup database '/dm8/data/DAMENG/dm.ini' backupset '/dm8/backup'
1.2 热备
需要开启归档,数据库需要联机
可以备份数据库、表空间、表、归档日志文件
查看数据库归档模式:
SQL>select name,arch_mode from v$database;
1.2.1 归档配置
1、使用SQL 进行归档配置
首先使用disql登陆进数据库
进入\dmdbms\bin目录,输入如下命令:
./disql SYSDBA/SYSDBA@localhost:5236 —-第一个SYSDBA指角色,第二个指密码
1)修改数据库为mount状态,SQL如下:
alter database mount;
2)配置本地文档
alter database add archivelog 'dest=/home/dmdba/dm_arch,type=local,file_size=1024,space_limit=2048';
3)开启归档模式
alter database archivelog;
4)修改数据库为open状态
alter database open;
也可手动配置归档文件
转到/home/dmdba/dmdbms/data/DAMENG路径下,编辑dmarch.ini文件,之后保存到该目录,dmarch.ini内容如下
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dmdba/dm_arch/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 2048
编辑 dm.ini 文件,设置arch_ini=1,保存
启动数据库服务。
1.2.2 联机执行SQL语句进行备份还原
最简单的数据库备份语句:
backup database backupset 'db_bak_01';
指定备份集路径、设置备份名、指定介质类型、添加备份描述、限制备份片大小、备份压缩、并行备份:
backup database to weekly_full_bak backupset '/home/dmdba/dm_bak/db_bak_3_02' device type tape backupinfo '完全备份' maxpiecesize 300 compressed level 5 parallel 8;
注:指定的备份名、加密密码、加密算法名长度限制为128字节;
MOUNT模式下不允许数据库备份。
完全备份语句:
full参数可以省略,默认为完全备份
backup database full backupset '/home/dmdba/dm_bak/db_full_bak_01';
完全备份中,可指定DDL_CLONE(数据库克隆)参数,只备份定义不备份数据。该参数只用于数据库级完全备份中。
增量备份语句:
backup database increment with backupdir '/home/dmdba/dm_bak/' backupset '/home/dmdba/dm_bak/db_increment_bak_02';
表空间备份:
表空间备份只能联机,还原只能脱机
表备份:
backup table "TEST"."TEST_EMP" to "TAB_TEST_TEST_EMP_2020_09_23_15_43_53" backupset 'TAB_TEST_TEST_EMP_2020_09_23_15_43_53';
归档备份:
backup archivelog all to "ARCH_2020_09_23_15_53_34" backupset '/dm8/backup/ARCH_2020_09_23_15_53_34';
1.3 物理还原
检查备份集是否有效
RMAN>check backupset '/dm8/backup';
整库还原:
dmrman还原:
RMAN>restore database '/dm8/data/DAMENG/dm.ini' from backupset'/dm8/backup';
数据库恢复:
RMAN>recover database '/dm8/data/DAMENG/dm.ini' with archivedir'/dm8/arch';
更新数据库魔数
RMAN>recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
表空间还原:
RMAN>restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup' tablespace DMHR;
表空间恢复:
RMAN>recover database '/dm8/data/DAMENG/dm.ini' tablespace dmhr;
Original: https://www.cnblogs.com/Songhn9/p/13793675.html
Author: 她脚踝银铃响了
Title: DM8数据库备份还原的原理及应用
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/598997/
转载文章受原作者版权保护。转载请注明原作者出处!