数据库测试版本:DM Database Server 64 V8 8.4企业版 03134284094-20231214-211963-20067
闪回技术是DM提供的一组独特而丰富的数据恢复解决方案,主要用于对抗人为错误、程序错误或其他未知原因导致的数据丢失问题。通过有选择地、有效地消除错误的影响,闪回技术可以逆转错误操作,恢复数据到某个特定的历史状态。
闪回查询:允许用户查询数据库在过去某个时间点的状态。
闪回回退:可以将某个表恢复到过去的某个时间点的状态。
快速恢复:闪回技术可以在短时间内恢复数据,无需进行完整的数据库备份和恢复操作。
精确恢复:可以恢复到特定的时间点,确保只恢复必要的数据。
简化管理:闪回操作相对简单,易于管理,减轻了数据库管理员的负担。
undo_retention数据保留时间:闪回查询和闪回表依赖于undo_retention,Uundo_retention的保留时间会影响闪回操作的时间范围。
空间限制:闪回操作需要足够的闪回空间来存储恢复所需的数据。
事务一致性:在闪回过程中,需要确保数据的一致性和完整性。
select para_name,para_value,default_value,para_type from
v$dm_ini where para_name like '%FLASHBACK%';
SP_SET_PARA_VALUE (1, 'ENABLE_FLASHBACK', 1);
select para_name,para_value,default_value,para_type from
v$dm_ini where para_name like '%UNDO_RETENTION%';
SP_SET_PARA_DOUBLE_VALUE (1, 'UNDO_RETENTION', 900);
场景一:需要查看数据库中的数据的变化的情况,用于数据审计、问题诊断
场景二:误删除数据和误修改数据,可以闪回到指定时间点
例如:在15:52分左右表t12插入了2条数据并提交,在15:56时表t12又插入了2条数据并提交,这个时候想查看一下表t12在15:53的时候数据的情况
例如:在16:22分左右表t12插入了2条数据并提交,在16:24时表t12删除了1条数据并提交,这个时候想把表t12回退删除数据之前,时间为16:23分
在应用场景章节中,可以看出DM的闪回功能支持DML操作
DM的闪回功能不支持DDL操作,示例如下:
DM的分区表支持闪回功能,示例如下:
查看是否为哈希分区表
删除表数据
闪回查看表数据
环境说明:准备了2台虚拟机,第2台虚拟机是第1台虚拟机的克隆,所有虚拟机的配置都是一样的,内存4G,CPU 2核。一台开启闪回功能,一台不开启闪回功能。
由于2台虚拟机是在个人电脑上搭建的,会受到个人电脑配置的限制,测试结果仅供参考。
测试过程:分别对2台虚拟机进行了插入1千万条简单数据、删除1千万条简单数据、闪回回退1千万条简单数据;插入1亿条简单数据、删除1亿条简单数据、闪回回退1亿条简单数据。
测试过程较长不展示。
测试结果如下:
耗时时间对比
CPU对比
内存对比
Roll表空间用来暂时存储DML操作的数据,主要作用是用于:事务回滚、实例恢复、读一致性、闪回。所以Roll表空间包含闪回所有需要的空间。
现在对开启闪回功能和不开启闪回功能的测试库,分别进行1亿条数据的插入,这里的1亿条数据指的最简单的数据(无索引,无约束),看看对Roll表空间大小的影响。
过程较长不展示。
闪回功能的开启与ROLL表空间大小对比
遇到闪回版本过期,一般是因为回滚的记录已经被清理掉了
修改undo_retention,使其能更长时间保留记录,但是undo_retention扩大,往往会导致roll表空间变大,实际生产环境中,建议先评估undo_retention所需时间和roll表空间能使用的空间大小,尽可能不随意改大undo_retention的值。
在进行闪回回退时,发现roll表空间已经把系统空间写满了,回退不成功。
重启之后,系统表空间依然是满的,数据库并不会启动,并且也启动不了,报错日志显示归档占满了空间。
在开启闪回功能后,对ROLL表空间进行限制,预防ROLL表空间无限制扩大
如果已经出现了操作系统磁盘已占满,删除垃圾文件(谨慎操作)或者增大空间,使数据库服务起来,ROLL表空间一旦增大了是不会自动变小的,但是DM支持手动去缩小ROLL表空间。
一般正式环境的数据库不建议缩小ROLL表空间,如果要缩小ROLL表空间,请在数据库服务刚刚重启之后,因为ROLL表空间会在数据库服务重启中清空数据。
1.闪回技术主要是通过回滚段存储的UNDO记录来完成历史记录的还原。设置ENABLE_FLASHBACK为1后,开启闪回功能。DM会保留回滚段一段时间,回滚段保留的时间代表可以闪回的时间长度。由UNDO_RETENTION参数指定。
2.开启闪回功能后,DM会在内存中记录每个事务的起始时间和提交时间。通过用户指定时刻,查询到该时刻的事务号,结合当前记录和回滚段中的UNDO记录,就可以还原记录。
3.闪回开启的参数是系统级参数,可以被动态修改,不需重启数据库;
4.闪回的时间受undo_retention影响,单位为秒,超过该时间就不能进行闪回;
5.闪回支持DML操作;
6.闪回不支持DDL操作;
7.闪回支持分区表;
8.对于数据库实例,删除的时间大于插入的时间,闪回回退的时间大于删除时间;
9.Roll表空间在数据库初始时,没有设置上限,根据空间的使用情况自动扩展;
10.开启闪回功能,在进行闪回时,使用的是roll表空间;
11.根据当前的性能测试,开启闪回功能跟不开启闪回功能比较,开启闪回功能会对数据库的性能有较小程度的影响;
12.开启闪回功能,影响最大的是ROLL表空间,特别是闪回回退时,对ROLL表空间的需求是最大的。
文章
阅读量
获赞