对10g里归档方式及闪回功能进行介绍
Oracle10g的闪回特性及归档方式的建立与oracle9i的相应功能都有了很大的提高,下面分两部分分别介绍这两部分内容。
归档方式
Oracle9i起用归档方式时必须要设置相关参数值,这些参数包括:log_archive_dest_n,log_archive_start;同时在起动数据库到装载状态后alter database archivelog;但在oracle10g里已不需要设置上述参数的值,只需要”alter database archivelog”,请看下面的实验。
SQL> shutdown immediate数据库已经关闭。已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount ORACLE 例程已经启动。
Total System Global Area 289406976 bytes Fixed Size 1248600 bytes Variable Size 125829800 bytes Database Buffers 159383552 bytes Redo Buffers 2945024 bytes 数据库装载完毕。 SQL> alter database archivelog; 数据库已更改。
SQL> alter database open; 数据库已更改。
SQL> archive log list数据库日志模式 存档模式自动存档 启用存档终点 USE_DB_RECOVERY_FILE_DEST最早的联机日志序列 16下一个存档日志序列 18当前日志序列 18 | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
闪回特性
在介绍闪回特性之前有一点要说明,起用闪回特性时数据库必须已处于归档方式,否则会报。错。请见下例:
SQL> shutdown immediate数据库已经关闭。已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount ORACLE 例程已经启动。
Total System Global Area 289406976 bytes Fixed Size 1248600 bytes Variable Size 121635496 bytes Database Buffers 163577856 bytes Redo Buffers 2945024 bytes 数据库装载完毕。 SQL> alter database flashback on; alter database flashback on *第 1 行出现错误: ORA-38706: 无法启用 FLASHBACK DATABASE 事件记录。 ORA-38707: 尚未启用介质恢复。 | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
与闪回相关的数据库参数分别有:db_recovery_file_dest,db_recovery_file_dest_size,db_flashback_retention_target
SQL> show parameter db_recovery_file_dest
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string D:oracleproduct10.2.0/flash _recovery_area db_recovery_file_dest_size big integer 2G SQL> show parameter db_flashback_retention_target
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_flashback_retention_target integer 1440 | |
|
|
|
|
|
|
|
|
|
|
|
如果你发现某些参数的值过小,可通过ALTER SYSTEM 语句进行修改。确定四个参数的值合适后,就可以起用数据库的闪回查询功能。
SQL> shutdown immediate数据库已经关闭。已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup mount ORACLE 例程已经启动。
Total System Global Area 289406976 bytes Fixed Size 1248600 bytes Variable Size 125829800 bytes Database Buffers 159383552 bytes Redo Buffers 2945024 bytes 数据库装载完毕。 SQL> alter database flashback on; 数据库已更改。
SQL> alter database open; 数据库已更改。 | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
闪回功能一:恢复被删数据
如果用户数据被误删除,可以通过闪回功能进行恢复,具体功能见下例:
SQL> conn wyj/wyj@oracledb已连接。 SQL> select * from b;
ID NAME ---------- ---------- 1 wyj
SQL> delete from b; 已删除 1 行。
SQL> commit; 提交完成。
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER ------------------------ 1015318
SQL> select * from b as of scn 1015307;
ID NAME ---------- ---------- 1 wyj
SQL> flashback table b to scn 1015307; 闪回完成。
SQL> select * from b;
ID NAME ---------- ---------- 1 wyj | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
闪回功能二:表被删除
如果表被DROP被,这种情况在10g里也可以将其恢复。具体使用法请见下例。
SQL> select count(*) from tjcvs;
COUNT(*) ---------- 49811
SQL> drop table tjcvs; 表已删除。
SQL> select count(*) from tjcvs; select count(*) from tjcvs *第 1 行出现错误: ORA-00942: 表或视图不存在
SQL> show recyclebin ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------------------ ------------ ------------------- TJCVS BIN$Ut8LXOW4R86USSK6HHQCBA==$0 TABLE 2007-06-20:15:29:52 SQL> flashback table tjcvs to before drop; 闪回完成。
SQL> select count(*) from tjcvs;
COUNT(*) ---------- 49811 | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
闪回功能数据字典
与闪回功能相关的静态数据字典有:USER_RECYCLEBIN,DBA_RECYCLEBIN
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/526592/viewspace-236719/
,如需转载,请注明出处,否则将追究法律责任。