闪回表-DM8:达梦数据库闪回
2023-12-18 22:52:58
DM8:达梦数据库闪回表
环境介绍
-
当系统 INI 参数 ENABLE_FLASHBACK 置为 1 时,闪回功能开启,可以使用闪回表或进行闪回查询。DM MPP 环境暂不支持闪回功能。
-
闪回表
-
闪回表是在数据库联机时,通过只回退对指定表及其相关对象所做的更改,将表里的数据回退到历史的某个时间点,而不需要执行传统的时间点恢复操作。比如回退到用户误删除数据之前的时间点,从而将误删除的数据恢复回来,在这个操作过程中,数据库仍然可用而且不需要额外的空间。
-
闪回表利用的是 UNDO 表空间里所记录的数据被改变前的值。因此,如果因保留时间超过了初始化参数 UNDO_RETENTION 所指定的值,从而导致闪回表时所需要的 UNDO 数据被其他事务覆盖的话,那么就不能将表中数据恢复到指定的时间了。与介质恢复相比,闪回表在易用性、可用性和还原时间方面有明显的优势。
-
使用说明
1. 使用闪回功能需要打开 dm.ini 中的 ENABLE_FLASHBACK 参数;
2. 当前闪回表功能支持:批量闪回多个表、触发器的禁用与启用、DMDPC 环境(除使用 LOCAL 登录外)、DMDSC 环境;
3. 当前闪回表功能不支持在 DM MPP 环境下使用;
4. 闪回表利用的是 UNDO 表空间里记录的数据被改变前的值,只能闪回到UNDO_RETENTION 指定值范围内的时间点;
5. 用户必须具有 FLASHBACK ANY TABLE 系统权限或 FLASHBACK 对象权限;
6. 闪回表语句是作为单个事务处理来执行。同时闪回多个表时,必须成功闪回所有表,否则会回退整个事务。闪回作为 DDL 语句,开启自动提交时,闪回成功后会自动提交;
7. 必须对要执行闪回操作的表启动行移动(分区表具有MOVEMENT功能的不能关闭,否则闪回可能会报错);
8. 不会闪回受影响对象的统计信息;
9. 闪回会保留所有现有的索引;
10. 闪回中会正常检查约束条件,如果在闪回执行期间违反了任何约束条件,则会回滚闪回操作;
11. 闪回不能跨越修改了表结构的 DDL。比如,在闪回数据之前,做过删除一个字段的操作,那么是无法闪回的;
12. 不能对系统表、临时表、HUGE 表、内部辅助表、动态表等执行闪回表操作;
13. DMDPC 环境下由于各节点 SCN/LSN 不同,只支持闪回到时间点 TIMESTAMP;
14. 限制重复闪回。闪回作为 DDL,对于同一个表,不允许再次闪回到上一次闪回之前的 LSN/TIMESTAMP。
- 版本支持起始于 2023年第二季度版本 dm8.1-3-26
1 开启闪回功能
ALTER SYSTEM SET 'ENABLE_FLASHBACK'=1;
2 创建测试示例
2.1 闪回表到指定时间点
--开启闪回功能
ALTER SYSTEM SET 'ENABLE_FLASHBACK'=1;
--创建测试表
DROP TABLE T;
CREATE TABLE T(C1 INT);
INSERT INTO T SELECT LEVEL CONNECT BY LEVEL < 4;
COMMIT;
SELECT * FROM T;
-- 记录修改前时间
SELECT SYSDATE();
--2023-12-15 17:28:32
--删除新增数据
DELETE FROM T WHERE C1=3;
INSERT INTO T VALUES(4);
COMMIT;
SELECT * FROM T;
--记录修改后的时间点
SELECT SYSDATE();
--2023-12-15 17:28:51
--DMDPC 只支持 TO TIMESTAMP
--闪回表到指定时间点(受混滚段保留时间限制)
FLASHBACK TABLE T TO TIMESTAMP '2023-12-15 17:28:32';
2.2 闪回表到指定的LSN
--开启闪回功能
ALTER SYSTEM SET 'ENABLE_FLASHBACK'=1;
--创建测试表
DROP TABLE T;
CREATE TABLE T(C1 INT);
INSERT INTO T SELECT LEVEL CONNECT BY LEVEL < 4;
COMMIT;
SELECT * FROM T;
-- 记录 LSN
SELECT CUR_LSN FROM V$RLOG;
--8619883
--删除新增数据
DELETE FROM T WHERE C1=3;
INSERT INTO T VALUES(4);
COMMIT;
SELECT * FROM T;
-- 记录 LSN
SELECT CUR_LSN FROM V$RLOG;
--8620363
--闪回表到指定LSN(受混滚段保留时间限制)
FLASHBACK TABLE T TO LSN 8619883;
SELECT * FROM T;
文章来源:https://blog.csdn.net/qq_37358909/article/details/135066536
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!