9月29日闪回技术概论+闪回数据库
-、闪回技术概念1、定义:闪回并不是某个固定的操作,而是基本闪回技术获取之前的原数据操作;通过 DDL或DML语句误操作,导致数据改变,可以通过闪问技术恢复数据; DDL语句:truncate/drop DML语句:updata/insert/delete2、应用场景 --依赖对像和对像级别的不同,采用不同的闪回技术; 截断表--闪回日志--闪回库,闪回表 --影响数据删除表--回收站 --影响数据updata--闪回查询--重新做插入 --影响数据版本比对--闪回版本查询 --不影响数据3、误删除三种操作 delete误删除 -->未提交-->rollbakc进行事务回滚--> 需要undo功能 -->已提交-->闪回查询 -->需要undo 功能 drop误删除 -->重命名-->闪回表操作 -->回收站 -->不会回收高水位线-->数据还在数据块里 truncate误删除1、DDL操作--> 不记录undo -->不需要undo功能2、会回收高水位线 --> 释放数据段点用的数据块; 注:高水位线是用于标记数据块的使用位置,数据增加时高水位线会上升,删除数据时它不会下降,因此不能释放空间3、开启闪回功能--闪回数据库必须要回闪回功能1)查询闪回状态SQL>SELECT FLASHBACK_ON FROM V$DATABASE;2)开启/关闭闪回SQL>ATER DATABASE FLASHBACK_ON 二、实验1、闪回数据库 使用前提条件--建立闪回区并开始归档1)开启归档功能查看归档状态archive log list设置归档路径alter system set log_archive_dest_1='location=/home/oracle/orcl_arch' scope=spfile;!mkdirlocation=/home/oracle/orcl_archshutdown immediate;startup mountalter database archivelog;-->必须在mount状态才能开启alter database open;archive log list2)设置闪回区大小和闪回日志存放路径a) 闪回日志必须保存在闪回区中;b) 闪回区除了可以保存闪回日志,还可以保存:控制文件 归档文件 备份文件当闪回功能开启时 一份控制文件和数据文件在一起一份控制文件在闪回区中 查看闪回设置 show parameter recover db_recovery_file_dest_size--> 设置闪回区大小 db_recovery_file_dest --> 设置闪回区文件路径 先设置闪回区大小再设置闪回区路径 (有先后顺序) 流程: select FLASHBACK_ON from v$database;--查看FLASHBACK_ON状态 alter database set db_recovery_file_dest_size= 大小; alter database set db_recovery_file_dest =’路径’; alter database FLASHBACK ON; 开启闪回功能; 建好闪回区会自动生产SID/flashback目录,并生成闪回日志文件 /u01/app/oracle/fast_recovery_area/ORCL1/flashback 建好闪回,其中一个控制文件会存放在闪回区 /u01/app/oracle/fast_recovery_area/orcl1/control02.ctl 模拟闪回数据库操作1、建表test1create table test1 as select * from hr.EMPLOYEES;2、记录时间点--闪回到的时间 SQL>! date +"%F %T";3、建表test2create table test2 as select * from hr.EMPLOYEES;4、truncate删除test1 truncate table test1; 5、闪回数据 flashback database to timestamp to_timestamp('2020-09-26 09:36:15','yyyy-mm-dd hh24:mi:ss'); 报错 --数据不一致,因此必须关库,回到mount状态 ERROR at line 1:ORA-38757: Database must be mounted and not open to FLASHBACK. SQL> shutdown immediate; 关库 SQL> startup mount 开库到mount状态flashback database to timestamp to_timestamp('2020-09-26 09:36:15','yyyy-mm-dd hh24:mi:ss'); --再次执行闪回 SQL> alter database open;检查数据文件和控制文件一致性;ERROR at line 1:ORA-01589: must use RESETLOGS or NORESETLOGS option for database open --必须要加上选项才可以执行 SQL> alter database open RSSETLOGS;6、查询结果SELECT COUNT(*) FROM TEST1;--数据回来了;SELECT COUNT(*) FROM TEST2;--数据消失了;注: 使用resetlogs选择,相当于初始化了,当前准备变成UNUSEDSQL> select GROUP#,SEQUENCE#,STATUS from v$log; GROUP#SEQUENCE# STATUS---------- ---------- ---------------- 1 1 CURRENT 2 0 UNUSED 3 0 UNUSED
页:
[1]