fm98888 发表于 2020-9-30 01:28:14

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]
查看完整版本: 9月29日闪回技术概论+闪回数据库