ITPub博客

首页 > 数据库 > Oracle > 闪回数据库

闪回数据库

原创 Oracle 作者:d_ball_apple 时间:2014-08-17 20:46:09 0 删除 编辑
闪回时间查询
SELECT employee_id, salary FROM employees
AS OF TIMESTAMP
WHERE employee_id = 200




 select salary from emp as of timestamp        
 to_timestamp('2014-08-06 14:50:00','yyyy-mm-dd hh24:mi:ss')
 ;




select systimestamp from dual; 查看当前时间timestamp






查看之前版本:


SELECT versions_xid, salary FROM employees
VERSIONS BETWEEN TIMESTAMP and
WHERE employee_id = 200;


select versions_xid,salary from emp versions between timestamp
   to_timestamp('2014-08-06 14:50:00','yyyy-mm-dd hh24:mi:ss')
 and systimestamp;


col 字段名 for a30 设置字段显示宽度






闪回表:
ALTER TABLE employees ENABLE ROW MOVEMENT;首先开启行移动,才支持
FLASHBACK TABLE hr.departments TO TIMESTAMP
TO_TIMESTAMP('2007-04-05?21:00:00',
'YYYY-MM-DD?HH24:MI:SS');
用EM闪回




闪回数据归档


CREATE FLASHBACK ARCHIVE fda1 
   TABLESPACE fda_tbs1 QUOTA 10M RETENTION 1 YEAR; 
创建表空间闪回归档


select * from session_privs查看用户拥有权限
where privilege like。。。。


-- create the Flashback Data Archive
CREATE FLASHBACK ARCHIVE DEFAULT fla1 
  TABLESPACE tbs1 QUOTA 10G RETENTION 5 YEAR; 


-- Specify the default Flashback Data Archive 
ALTER FLASHBACK ARCHIVE fla1 SET DEFAULT; 


-- Enable Flashback Data Archive 
ALTER TABLE inventory FLASHBACK ARCHIVE; 
ALTER TABLE stock_data FLASHBACK ARCHIVE; 


SELECT product_number, product_name, count FROM inventory AS OF TIMESTAMP TO_TIMESTAMP ('2007-01-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS'); 


ALTER FLASHBACK ARCHIVE fla1 
ADD TABLESPACE tbs3 QUOTA 5G;        


ALTER FLASHBACK ARCHIVE fla1 MODIFY RETENTION 2 YEAR;


ALTER FLASHBACK ARCHIVE fla1 PURGE BEFORE TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' day); 


DROP FLASHBACK ARCHIVE fla1;














FLASHBACK TABLE emp TO TIMESTAMP
TO_TIMESTAMP('2014-08-06 15:25:07',
'YYYY-MM-DD HH24:MI:SS');




ORA-30052: invalid lower limit snapshot expression
//这个是我在实验过程中遇到的一个错误,搞了半天老是报这个错误,后来官方文档读了很久才意识到可能是undo_retention出了问题。察看了一下,只有
900,立马改成10800...后先用scn试了一下,可以后把scn转换成timestamp又试了一下,终于可以了...这个东西可真难用啊!!!


SQL>alter system set undo_retention=10800 scope=both;


SQL> show parameter undo_retention;


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_retention                       integer     10800




select * from flashback_transaction_query 闪回事务查询
database add supplemental log data;开启undo_sql记录


闪回事务
基本前提:
alter database add supplemental log data;
alter database add supplemental log data (primary key) columns;
grant execute on dbms_flashback to hr;
grant select any transaction to hr;


PURGE {TABLE |INDEX }


PURGE TABLESPACE [USER ]


PURGE [USER_|DBA_]RECYCLEBIN
DROP TABLE [PURGE] ;


DROP TABLESPACE [INCLUDING CONTENTS] ;
DROP USER [CASCADE] ;


ALTER SYSTEM SET RECYCLEBIN=OFF SCOPE=SPFILE;


SELECT owner, original_name, object_name, 
       type, ts_name, droptime, related, space
FROM dba_recyclebin
WHERE can_undrop = 'YES';


SQL>  SELECT original_name, object_name, ts_name, droptime FROM user_recyclebin WHERE can_undrop = 'YES';


ORIGINAL_NAME OBJECT_NAME             TS_NAM DROPTIME
------------- ----------------------- ------ -------------------
EMPLOYEES2    BIN$NE4Rk64w...gbpQ==$0 USERS  2007-07-02:15:45:13


SQL> SHOW RECYCLEBIN




闪回数据库


SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP MOUNT 
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER SYSTEM SET
 2  DB_FLASHBACK_RETENTION_TARGET=2880 SCOPE=BOTH;
SQL> ALTER DATABASE FLASHBACK ON;
SQL> ALTER DATABASE OPEN;




create restore point rs_test; 创建还原点 


RMAN> FLASHBACK DATABASE TO TIME = 
   2> "TO_DATE('2009-05-27 16:00:00',
   3> 'YYYY-MM-DD HH24:MI:SS')";


RMAN> FLASHBACK DATABASE TO SCN=23565;
RMAN> FLASHBACK DATABASE 
   2> TO SEQUENCE=223 THREAD=1;


SQL> FLASHBACK DATABASE 
  2  TO TIMESTAMP(SYSDATE-1/24); 
SQL> FLASHBACK DATABASE TO SCN 53943;
SQL> FLASHBACK DATABASE TO RESTORE POINT b4_load; 






SQL> SELECT estimated_flashback_size, 
  2         flashback_size  3  FROM   V$FLASHBACK_DATABASE_LOG;


SQL> SELECT oldest_flashback_scn, 
  2  oldest_flashback_time
  3  FROM   V$FLASHBACK_DATABASE_LOG;






SQL> SELECT *
  2  FROM   V$FLASHBACK_DATABASE_STAT;


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28889722/viewspace-1252769/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 管理内存
下一篇: 备份复制数据库
请登录后发表评论 登录
全部评论

注册时间:2013-05-15

  • 博文量
    39
  • 访问量
    84865