使用Oracle10g Flashback database功能恢复用户错误
2017-02-08 00:00
477 查看
Flashback Database是Oracle10g的新增功能,在启动Flashback Database之后,它定期将已发生变化的块写入闪回日志的日志文件中。这些日志不是由传统的Log Writer (LGWR) 过程写入,而是由一种称作Recovery Writer (RVWR)的新过程写入。这是Oracle10g的新增进程。
与常规的重做日志(redo logs)不同,回闪日志既不需要由DBA创建,也不需要由他们维护;它们由Oracle Managed Files(OMF)自动在闪回恢复区域所指定的目录中创建。这些文件不会归档,所以,如果在该目录发生介质故障后就不可能再进行恢复。
1.启用闪回数据库特性
2.闪回日志
Oracle会在闪回区记录日志.
3.模拟用户错误
4.进行闪回操作
5.只读打开,验证数据
6.继续修正恢复
7.resetlogs打开数据库
注意,一旦resetlogs之后,将不能再flashback至resetlogs之前的时间点。
$ ps -ef|grep rvwr|grep -v grep oracle 27231 1 0 17:10:30 ? 0:00 ora_rvwr_javis
与常规的重做日志(redo logs)不同,回闪日志既不需要由DBA创建,也不需要由他们维护;它们由Oracle Managed Files(OMF)自动在闪回恢复区域所指定的目录中创建。这些文件不会归档,所以,如果在该目录发生介质故障后就不可能再进行恢复。
1.启用闪回数据库特性
SYS AS SYSDBA on 2005-03-29 16:42:19 >startup mount; ORACLE instance started. Total System Global Area 314572800 bytes Fixed Size 1301704 bytes Variable Size 261890872 bytes Database Buffers 50331648 bytes Redo Buffers 1048576 bytes Database mounted. SYS AS SYSDBA on 29-MAR-05 >alter database archivelog; Database altered. SYS AS SYSDBA on 29-MAR-05 >alter database flashback on; Database altered. SYS AS SYSDBA on 29-MAR-05 >alter database open; Database altered. SYS AS SYSDBA on 29-MAR-05 >alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; Session altered. SYS AS SYSDBA on 2005-03-29 17:01:42 >SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME 2 FROM V$FLASHBACK_DATABASE_LOG; OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI -------------------- ------------------- 10642627 2005-03-29 17:01:02
2.闪回日志
Oracle会在闪回区记录日志.
$ pwd /data5/flash_recovery_area/JAVIS/flashback $ ls -l total 32064 -rw-r----- 1 oracle dba 8200192 Mar 29 16:49 o1_mf_14l5bclp_.flb -rw-r----- 1 oracle dba 8200192 Mar 29 17:31 o1_mf_14l6w5h4_.flb
3.模拟用户错误
SYS AS SYSDBA on 2005-03-29 17:01:44 >archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 0 Next log sequence to archive 1 Current log sequence 1 SYS AS SYSDBA on 2005-03-29 17:01:55 >select sysdate from dual; SYSDATE ------------------- 2005-03-29 17:02:09 SYS AS SYSDBA on 2005-03-29 17:02:16 >drop table t3; Table dropped. SYS AS SYSDBA on 2005-03-29 17:02:22 >select sysdate from dual; SYSDATE ------------------- 2005-03-29 17:02:28 SYS AS SYSDBA on 2005-03-29 17:02:28 >create table t1 as select * from dba_users; Table created. SYS AS SYSDBA on 2005-03-29 17:02:42 >select sysdate from dual; SYSDATE ------------------- 2005-03-29 17:02:48 SYS AS SYSDBA on 2005-03-29 17:02:48 >create table t2 as select * from dba_tablespaces; Table created. SYS AS SYSDBA on 2005-03-29 17:03:01 >select sysdate from dual; SYSDATE ------------------- 2005-03-29 17:03:06 SYS AS SYSDBA on 2005-03-29 17:03:06 >select sysdate from dual; SYSDATE ------------------- 2005-03-29 17:03:17
4.进行闪回操作
SYS AS SYSDBA on 2005-03-29 17:03:43 >shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SYS AS SYSDBA on 2005-03-29 17:04:04 >startup mount; ORACLE instance started. Total System Global Area 314572800 bytes Fixed Size 1301704 bytes Variable Size 261890872 bytes Database Buffers 50331648 bytes Redo Buffers 1048576 bytes Database mounted. SYS AS SYSDBA on 29-MAR-05 >alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; Session altered. SYS AS SYSDBA on 2005-03-29 17:05:31 >select * from V$FLASHBACK_DATABASE_LOG; OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI RETENTION_TARGET FLASHBACK_SIZE ESTIMATED_FLAS 3ff0 HBACK_SIZE -------------------- ------------------- ---------------- -------------- ------------------------ 10642627 2005-03-29 17:01:02 1440 8192000 0 SYS AS SYSDBA on 2005-03-29 17:06:38 >flashback database to timestamp 2 to_timestamp ('2005-03-29 17:02:28','yyyy-mm-dd hh24:mi:ss'); Flashback complete.
5.只读打开,验证数据
SYS AS SYSDBA on 2005-03-29 17:06:58 >alter database open read only; Database altered. SYS AS SYSDBA on 2005-03-29 17:07:07 >desc t3 ERROR: ORA-04043: object t3 does not exist SYS AS SYSDBA on 2005-03-29 17:07:39 >desc t1 ERROR: ORA-04043: object t1 does not exist
6.继续修正恢复
SYS AS SYSDBA on 2005-03-29 17:07:42 >alter database close; Database altered. SYS AS SYSDBA on 2005-03-29 17:07:49 >flashback database to timestamp 2 to_timestamp ('2005-03-29 17:02:48','yyyy-mm-dd hh24:mi:ss'); Flashback complete. SYS AS SYSDBA on 2005-03-29 17:08:17 >alter database open; alter database open * ERROR at line 1: ORA-16196: database has been previously opened and closed SYS AS SYSDBA on 2005-03-29 17:08:24 >alter database dismount; Database altered. SYS AS SYSDBA on 2005-03-29 17:08:35 >shutdown ORA-01507: database not mounted ORACLE instance shut down. SYS AS SYSDBA on 2005-03-29 17:08:48 >startup mount; ORACLE instance started. Total System Global Area 314572800 bytes Fixed Size 1301704 bytes Variable Size 261890872 bytes Database Buffers 50331648 bytes Redo Buffers 1048576 bytes Database mounted. SYS AS SYSDBA on 29-MAR-05 >alter database open read only; Database altered. SYS AS SYSDBA on 29-MAR-05 >select count(*) from t1; COUNT(*) ---------- 12
7.resetlogs打开数据库
SYS AS SYSDBA on 29-MAR-05 >shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SYS AS SYSDBA on 29-MAR-05 >startup mount ORACLE instance started. Total System Global Area 314572800 bytes Fixed Size 1301704 bytes Variable Size 261890872 bytes Database Buffers 50331648 bytes Redo Buffers 1048576 bytes Database mounted. SYS AS SYSDBA on 29-MAR-05 >alter database open resetlogs; Database altered. SYS AS SYSDBA on 29-MAR-05 >
注意,一旦resetlogs之后,将不能再flashback至resetlogs之前的时间点。
相关文章推荐
- 20.4 使用FLASHBACK DATABASE 恢复数据库到先前状态
- 恢复master数据库时错误“必须以单用户模式使用restore database”
- 使用闪回功能快速恢复用户的误操作
- 20.4 使用FLASHBACK DATABASE 恢复数据库到先前状态
- 今天使用flashback功能小恢复了生产数据一把
- 20.4 使用FLASHBACK DATABASE 恢复数据库到先前状态
- 给您的文字编辑程序添加一剂“后悔药”-使用RichTextBox控件提供用户编辑功能,加入类似word的“撤销”和“恢复”功能
- 使用闪回功能快速恢复用户的误操作
- 使用Oracle9i的新特性Flashback Query恢复误删除数据
- 如何恢复一个非用户sa创建的数据库,且使用原用户创建者进行访问
- IBM F11 一键恢复 功能使用说明
- sys用户使用@连接符提示无效权限的错误ORA-01031: insufficient privileges
- 使用视图取出用户,功能,角色,用户角色,角色功能5张表的关系
- oracle 使用DBMS_FLASHBACK恢复意外删除的数据
- 招商银行证书到期后不同机器恢复导致的问题——“用户密码、证件号码和证书错误#3”
- Microsoft JET Database Engine 错误 '80004005' 操作必须使用一个可更新的查询
- 使用Oracle9i的Flashback Query功能找回误删除的数据
- MS SQL Server 2000 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法
- IIS5.1错误:Microsoft JET Database Engine (0x80004005) 操作必须使用一个可更新的查询
- 使用脚本恢复WindowsXP系统的用户密码