--1. 开启数据库闪回功能
SQL> shutdown immediate
已经卸载数据库。
ORACLE 例程已经关闭。
已经卸载数据库。
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
数据库装载完毕。
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
数据库日志模式 存档模式
自动存档 启用
存档终点 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
--闪回相关备份文件及文件大小
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
--默认支持闪回的时间,单位为分。
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target integer 1440
--默认支持闪回的时间,单位为分。
SQL> select flashback_on from v$database;
FLASHBACK_ON
------------------
YES
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%';
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
------------------ --- ------------ - ------------ ------------- ---------------- -----------
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
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
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
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;
SYSDATE
-------------------
2009-06-04 11:06:12
SQL> truncate table yangxl;
表被截断。
SQL> select * from yangxl;
未选定行
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
数据库已经关闭。
已经卸载数据库。
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
数据库装载完毕。
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;
alter database open
*
第 1 行出现错误:
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
SQL> alter database open resetlogs;
数据库已更改。
数据库已更改。
SQL> select count(*) from yangxl;
COUNT(*)
----------
52511
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
------------------------------ -------------------------------- -------------------------
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
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: 因为未启用行移动功能, 不能闪回表
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. 回收站
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
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string OFF
SQL> alter system set recyclebin = on;
系统已更改。
系统已更改。
--清空回收站
purge user_recyclebin;
SQL> purge user_recyclebin;
回收站已清空。
SQL> purge user_recyclebin;
回收站已清空。
SQL> select * from user_recyclebin;
未选定行
未选定行
purge dba_recyclebin;
SQL> purge dba_recyclebin;
DBA 回收站已清空。
SQL> purge dba_recyclebin;
DBA 回收站已清空。
--清空本用户回收站和所有用户回收站(需SYS权限)
purge table ;
SQL> purge table yangxl;
表已清除。
purge index ;
SQL> purge index ind_yxl;
索引已清除。
SQL> purge index ind_yxl;
索引已清除。
从回收站清除表和索引
注:如果清除的对象在回收站中有同名的,那么会清除在回收站中时间更久的那个对象
注:如果清除的对象在回收站中有同名的,那么会清除在回收站中时间更久的那个对象
purge tablespace ;
清除回收站中指定表空间的所有对象
drop table purge;
直接彻底删除,不会放入回收站
--7. SYS 与闪回
1. 用户 SYS、SYSTEM 不支持闪回
1. 用户 SYS、SYSTEM 不支持闪回
2. 说明缺省SYSTEM表空间删除对象不放入回收站
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7204674/viewspace-605216/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7204674/viewspace-605216/