(Les10 数据还原管理)[20180323]
程序员文章站
2022-07-07 23:20:01
目的 说明DML和数据还原的生成 监控和管理数据还原 描述数据还原和重做数据之间的不同 配置还原保留期 保证还原保留期 使用还原指导 还原数据 -原始的,修改之前的数据副本 -针对更改数据的每个事务处理而捕获 -至少保留到事务处理结束 -用于支持 -回退操作 -读取一致性查询 -Oracle 闪回查 ......
目的
说明DML和数据还原的生成
监控和管理数据还原
描述数据还原和重做数据之间的不同
配置还原保留期
保证还原保留期
使用还原指导
还原数据
-原始的,修改之前的数据副本
-针对更改数据的每个事务处理而捕获
-至少保留到事务处理结束
-用于支持
-回退操作
-读取一致性查询
-Oracle 闪回查询,Oracle闪回事务处理和Oracle闪回表
-从失败的事务处理中进行恢复
以下事件会结束事务处理:
-用户还原事务处理(回退事务处理)
-用户结束事务处理(提交事务处理)
-用户执行DDL语句,如CREATE,DROP,RENAME或ALTER语句。如果当前事务处理包含任何DML语句,则数据库首先提交该事务处理,然后在新的事物处理中执行并提交DDL。
-用户会话异常终止(回退事务处理)
-用户会话正常终止并退出(提交事务处理)
保留的还原数据量及其保留时间取决于数据库活动量以及数据库配置
注:Oracle闪回事务处理利用联机重做日志来挖据用于执行的相应还原SQL。如果闪回事务处理调用中未提供事务处理开始时间,则使用人为提供的时间边界,以此确定目标事务处理的重做挖据开始时间。
事务处理和还原数据
事务处理开始到结束,分配一个还原段,原始数据复制到还原段。V$TRANSACTION动态性能视图可以查看哪些事务处理分配到哪些还原段。
还原段是由实例根据需求自动创建的专用段,用于事务处理。段->区->块。还原段可以自动增长和收缩,事务处理的循环存储缓冲区。
事务处理会填充还原段中的所有区。填充完区之后还需要更多的空间,则事务处理将获取段中的下一个区的空间。占用所有区后,事务处理会转回第一个区或请求为还原段分配新区。
SQLPLUS(session1)> begin for i in 1..100000 loop insert into t_date values(sysdate); delete from t_date; end loop; end; / SQLPLUS(session2)> SET PAGESIZE 600 SET LINESIZE 600 COL SQL_TEXT FORMAT A40 SELECT B.SID, B.SERIAL#, S.SQL_TEXT, C.USED_UBLK * 8192 / (1024 * 1024) USED FROM V$SQL S, V$SESSION B, V$TRANSACTION C WHERE S.ADDRESS = B.SQL_ADDRESS AND S.HASH_VALUE = B.SQL_HASH_VALUE AND B.SADDR = C.SES_ADDR; SELECT s.sid, s.username, s.PROGRAM, s.MACHINE, u.name, t.used_ublk FROM v$transaction t, v$rollstat r, v$rollname u, v$session s WHERE s.taddr = t.addr AND t.xidusn = r.usn AND r.usn = u.usn ORDER BY s.username;
存储还原信息
还原信息存储在还原段中,还原段又存储在还原表空间中。
-仅用于还原段
-有特殊的恢复注意事项
-只能与单个实例相关联
-在任意给定时间,一个给定的实例只能有一个表空间是当前可写的还原表空间
在执行大量短事务处理的大容量联机事务处理(OLTP)环境中,会在文件头部上发生争用。存储多个数据文件中的还原表空间可以解决这种潜在的问题。
还原段由SYS自动创建并始终归其所有。由于还原段充当循环缓冲区,每个段最少包含两个区。默认的最大区数取决于数据库块大小,但是此值默认非常大(块大小为8KB时,区数量为32765)
还原表空间是永久的,本地管理的表空间(具有自动区分配)。它们由数据库自动进行管理。
还原表空间恢复只能是在实例处于MOUNT状态时才可恢复。
还原数据与重做数据
管理还原
自动还原管理
-在专用还原表空间中对还原数据和空间进行完全自动的管理
-用于所有会话
-在AUTOEXTEND表空间中进行自动优化,以满足长时间运行的查询需求
-在固定大小的表空间中进行自动优化,以实现最佳的保留期
用来支持闪回操作的DBA任务
-配置还原保留期
-将还原表空间更改为固定大小
-避免空间错误和“快照太旧”错误
配置还原保留时间
UNDO_RETENTION指定已提交的还原信息要保留多长时间(秒)。仅在以下情况才必须设置此参数:
-还原表空间启用了AUTOEXTEND选项
-需要设置LOB的还原保留时间
-需要保证保留时间
对于固定大小的还原表空间,系统会根据还原表空间大小和使用历史记录进行自动优化,尽可能获得最佳还原保留期;除非启用了保留时间保证,否则系统会忽略UNDO_RETENTION。
还原信息分为三类
-未提交的还原信息(活动):用来支持当前运动的事务处理;如果用户要回退事务处理或事物处理失败时,需要用到这类信息。绝对不会覆盖未提交的还原信息。
-提交的还原信息(未过期):不再需要用来支持运行的事务处理,但是为了符合还原保留间隔,仍然要用到这类信息。这也称为“未过期”还原信息。只要不会因缺少空间而导致活动事务处理失败,就会保留提交的还原信息。
-过期的还原信息(过期):不再需要用来支持运行的事务处理。活动事务处理需要空间时会覆盖过期的还原信息。
保证还原保留时间
ALTER TABLESPACE UNDOTBS1 RETENTION GUARANTEE;
將还原表空间改为固定大小
原因
-支持闪回操作
-限制表空间增长
工作流
-运行正常工作量
-自动优化机制确定所需的最小大小
-可以选择使用还原指导,该指导可计算为了满足未来增加而需要的大小。
-可以选择将还原表空间改为固定大小。
需避免两类错误
-DML失败(因为空间不够大,无法存储新事务处理的还原数据)
-“快照过久”错误(因为没有足够的还原数据来实现读取一致性)
小结:
DML和还原数据的生成(存放旧数据)
监视和管理还原数据
描述还原数据和重做数据之间的不同
配置还原保留期
保证还原保留期
使用还原指导