背景:表A数据误操作,被delete了,恢复。

时间:2021-03-06 21:42:21
SELECT MAX(Scn) FROM Sys.Smon_Scn_Time WHERE Time_Dp < TO_DATE('2015-09-18', 'YYYY/MM/DD')

select
b.file_name 物理文件名,
b.tablespace_name 表空间,
b.bytes/1024/1024 大小M,
(b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M,
substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) 利用率
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_name,b.bytes
order by b.tablespace_name select name from v$tablespace;
select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'UNDOTBS1'; alter database UNDOTBS1 datafile '/home/app/oracle/oradata/HHDEV/datafile/o1_mf_undotbs1_bcgv649d_.dbf' resize 4000M; select * from web_org_sales flashback table web_org_sales to timestamp to_timestamp('2015-09-22 00:00:01','yyyy-mm-dd hh24:mi:ss') --闪回时间
alter table web_org_sales enable row movement; --设置表为行闪回 SELECT MAX(Scn) FROM Sys.Smon_Scn_Time WHERE Time_Dp < TO_DATE('2015-09-19', 'YYYY/MM/DD'); --547577607 SELECT * FROM web_org_sales AS OF SCN '550594210'; alter system set undo_retention =216000; 背景:表A数据误操作,被delete了,恢复。 --1.先备份A表当前数据。 --2.查询某时间点前的SCN号码 SELECT MAX(Scn) FROM Sys.Smon_Scn_Time WHERE Time_Dp < To_Date(某时间点, 'YYYYMMDD hh24:mi:ss'); --3.查看某时间点的A表数据 SELECT * FROM A AS OF SCN '步骤2的SCN号'; --4.如果查看数据是想要的数据,则恢复 SELECT row_movement FROM user_tables WHERE table_name = 'A'; --5.步骤4结果如果为DISABLE ,则执行下面这句话,否则跳过 ALTER TABLE A ENABLE ROW MOVEMENT; --6.执行 FLASHBACK TABLE A TO SCN '步骤2的SCN号'; --7.如果原来为enable则不用执行,否则执行 ALTER TABLE A DISABLE ROW MOVEMENT; --8.如果权限不够,就换个DBA用户进行上述操作 alter table Aenable row movement; --设置表为行闪回
flashback table A to timestamp to_timestamp('2015-03-17 00:00:01','yyyy-mm-dd hh24:mi:ss') --闪回时间 flashback table A to timestamp to_timestamp('2015-09-01 20:40:00','yyyy-mm-dd hh24:mi:ss') alter table A enable row movement; --设置表为行闪回 truncate table A; 使用truncate 表记录无法闪回。