数据库闪回测试(flashback test)

--1. 开启数据库闪回功能
SQL> shutdown immediate
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             146803588 bytes
Database Buffers          457179136 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
SQL> alter database archivelog;
数据库已更改。
SQL> alter database flashback on ;
数据库已更改。
SQL> alter database open;
数据库已更改。
 
--2. 查看闪回模式下相关参数
 
SQL> archive log list
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     773
下一个存档日志序列   775
当前日志序列           775
SQL> show parameter db_recover
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      C:\oracle\product\10.2.0/flash_recovery_area
db_recovery_file_dest_size           big integer 2G
--闪回相关备份文件及文件大小
 
 
SQL> show parameter flashback
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target        integer     1440
--默认支持闪回的时间,单位为分。
 
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
YES
 
--开启闪回功能后,启动RVWR(recover writer)进程。
SQL> col program format a18
SQL> col pid format 99
SQL> select program,pid,spid,background,pga_used_mem,pga_alloc_mem,pga_freeable_mem,pga_max_mem
  2  from v$process where program like '%RVWR%';
 
PROGRAM            PID SPID         B PGA_USED_MEM PGA_ALLOC_MEM PGA_FREEABLE_MEM PGA_MAX_MEM
------------------ --- ------------ - ------------ ------------- ---------------- -----------
ORACLE.EXE (RVWR)   16 2924         1       206881        623853                0      623853
 
SQL> select * from v$sgastat where name like '%flashback%';
POOL         NAME                            BYTES
------------ -------------------------- ----------
shared pool  flashback generation buff     3981204      
 
SQL> select * from v$sysstat where name like '%flashback log%';
STATISTIC# NAME                                                                  CLASS      VALUE    STAT_ID
---------- ---------------------------------------------------------------- ---------- ---------- ----------
       168 flashback log writes                                                      2         11 3123176560       
      
--3. 闪回数据库测试
SQL> create table yangxl as select * from dba_objects;
表已创建。
 
SQL> select count(1) from yangxl;
  COUNT(1)
----------
     52511
 
SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
会话已更改。
 
SQL> select sysdate from dual;
SYSDATE
-------------------
2009-06-04 11:06:12
  
SQL> truncate table yangxl;
表被截断。
SQL> select * from yangxl;
 
未选定行 
 
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
 
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area  612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             150997892 bytes
Database Buffers          452984832 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
 
SQL> flashback database to timestamp to_timestamp('2009-06-04 11:06:12','yyyy-mm-dd hh24:mi:ss');
闪回完成。
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
 
SQL> alter database open resetlogs;
数据库已更改。
 
SQL> select count(*) from yangxl;
  COUNT(*)
----------
     52511
 

--4. 闪回表测试

SQL> select object_name,original_name,type from user_recyclebin;
未选定行
 
SQL> drop table yangxl;
表已删除。
 
SQL> select object_name,original_name,type from user_recyclebin where original_name = 'YANGXL';
 
OBJECT_NAME                    ORIGINAL_NAME                    TYPE
------------------------------ -------------------------------- -------------------------
BIN$93EgIpKgQb2UYDLGbvb7tQ==$0 YANGXL                           TABLE
BIN$9Bl7UGOgT36SmT9+7g7ijQ==$0 YANGXL                           TABLE
BIN$QlDzOZx8TWmM+YuaXYWIrA==$0 YANGXL                           TABLE
BIN$gr27sKM4T5imRUIE4Lu1eQ==$0 YANGXL                           TABLE
BIN$wSaMD+dxQxqEqR1RG/bJKA==$0 YANGXL                           TABLE
 
SQL> flashback table yangxl to before drop;
闪回完成。
 
SQL> select count(1) from yangxl;
  COUNT(1)
----------
         9
 
--5. 闪回表数据测试

--闪回表都可以,闪回数据肯定是没有问题的了。
SQL> select count(1) from yangxl;
  COUNT(1)
----------
         9
SQL> delete from yangxl where rownum = 1;
已删除 1 行。
 
SQL> commit;
提交完成。
 
SQL> flashback table yangxl to timestamp to_timestamp('2009-06-04 13:07:01','yyyy-mm-dd hh24:mi:ss');
flashback table yangxl to timestamp to_timestamp('2009-06-04 13:07:01','yyyy-mm-dd hh24:mi:ss')              *
第 1 行出现错误:
ORA-08189: 因为未启用行移动功能, 不能闪回表
 
SQL> alter table yangxl enable row movement;
表已更改。
 
SQL> flashback table yangxl to timestamp to_timestamp('2009-06-04 13:07:01','yyyy-mm-dd hh24:mi:ss');
闪回完成。
 
SQL> select count(1) from yangxl;
  COUNT(1)
----------
         9
        
--6. 回收站

SQL> show parameter recyclebin
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
recyclebin                           string      on       
 
SQL> alter system set recyclebin = off;
系统已更改。
 
SQL> show parameter recyclebin
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
recyclebin                           string      OFF
 
SQL> alter system set recyclebin = on;
系统已更改。
 
--清空回收站
purge user_recyclebin;
SQL> purge user_recyclebin;
回收站已清空。
 
SQL> select * from user_recyclebin;
未选定行
 
purge dba_recyclebin;
SQL> purge dba_recyclebin;
DBA 回收站已清空。

--清空本用户回收站和所有用户回收站(需SYS权限)
purge table ;
SQL> purge table yangxl;
表已清除。
 
purge index ;
SQL> purge index ind_yxl;
索引已清除。
 
从回收站清除表和索引
注:如果清除的对象在回收站中有同名的,那么会清除在回收站中时间更久的那个对象
 
purge tablespace ;
 
清除回收站中指定表空间的所有对象
 
drop table purge;
 
直接彻底删除,不会放入回收站
 
--7. SYS 与闪回

1. 用户 SYS、SYSTEM 不支持闪回
2. 说明缺省SYSTEM表空间删除对象不放入回收站

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

转载于:http://blog.itpub.net/7204674/viewspace-605216/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值