已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Oracle10G 闪回技术实验手册Oracle的闪回特性,Oracle从9i到10g不停的演进着一个强大的功能,这个功能就是闪回(flashback),这一重要功能已经简化了无数DBA的工作,本章从使用到原理上深入的介绍了Oracle的这一强大特性。在利用闪回功能前需要确认:1. 用户有对dbms_flashback包有执行权限!2. 进行闪回查询必须设置自动回滚段管理,在init.ora设置参数UNDO_MANAGEMENT=AUTO,参数UNDO_RETENTION=n,决定了能往前闪回的最大时间,值越大就需要越多Undo空间。第一章 闪回查询Oracle10g对于闪回查询进行了增强,支持更简单的SQL操作,允许对误删除、误更新等DML操作进行闪回。 1. 原表记录:$ sqlplus eygle/eygleSQL select count(*) from t1;COUNT(*)-93182.误删除所有记录,并且提交更改。SQL delete from t1;9318 rows deleted.SQLcommit;Commit complete.SQL select count(*) from t1;COUNT(*)-03.获得当前SCN如果能够确切知道删除之前SCN最好,如果不知道,可以进行闪回查询尝试:SQLselect dbms_flashback.get_system_change_number scn from dual;SCN-10671006SQL select count(*) from t1 as of scn 10671000;COUNT(*)-0SQL select count(*) from t1 as of scn 10670000;COUNT(*)-9318我们看到在SCN=10670000时,数据都在。4. 恢复数据.SQL insert into t1 select * from t1 as of scn 10670000;9318 rows created.SQL commit;Commit complete.SQL select count(*) from t1;COUNT(*)-9318类似的,我们也可以使用as of timestamp语句执行闪回查询:SQL select * from test as of timestamp sysdate - 5/1440; 查询5分钟前的test表的情况。5. Oracle10g中SCN与TimeStamp的相互转换作为对于闪回操作(flashback)的一个增强,Oracle10g提供了函数对于SCN和时间戳进行相互转换。首先通过dbms_flashback.get_system_change_number 可以获得系统当前的SCN值:SQL col scn for 9999999999999SQL select dbms_flashback.get_system_change_number scn from dual;SCN-8908390522972通过scn_to_timestamp函数可以将SCN转换为时间戳:SQL select scn_to_timestamp(8908390522972) scn from dual;SCN-05-JAN-07 10.56.30.000000000 AM再通过timestamp_to_scn可以将时间戳转换为SCN:SQL select timestamp_to_scn(scn_to_timestamp(8908390522972) scn from dual; SCN-8908390522972通过这两个函数,最终Oracle将SCN和时间的关系建立起来,在Oracle10g之前,是没有办法通过函数转换得到SCN和时间的对应关系的,一般可以通过logmnr分析日志获得。但是这种转换要依赖于数据库内部的数据记录,对于久远的SCN则不能转换,请看以下举例:SQL select min(FIRST_CHANGE#) scn,max(FIRST_CHANGE#) scn from v$archived_log;SCN SCN- -8907349093953 8908393582271SQL select scn_to_timestamp(8907349093953) scn from dual;select scn_to_timestamp(8907349093953) scn from dual*ERROR at line 1:ORA-08181: specified number is not a valid system change numberORA-06512: at SYS.SCN_TO_TIMESTAMP, line 1ORA-06512: at line 1SQL select scn_to_timestamp(8908393582271) scn from dual;SCN-05-JAN-07 11.45.50.000000000 AM第2章 闪回表Oracle Flashback Table特性允许利用Flashback Table语句,确保闪回到表的前一个时间点。与Oracle 9i中的Flashback Query相似,利用回滚段信息来恢复一个或一些表到以前的一个时间点(一个快照)。要注意的是,Flashback Table不等于Flashback Query,Flashback Query仅仅是查询以前的一个快照点而已,并不改变当前表的状态,而Flashback Table将改变当前表及附属对象一起回到以前的时间点。语法: alter table table_name enable row movement;flashback table tablename to timestamp xxx 或flashback table tablename to scn xxx注意:如果需要闪回一个表,需要以下条件:1. 需要有flashback any table的系统权限或者是该表的flashback对象权限;2. 需要有该表的select,insert,delete,alter权限;3. 必须保证该表row movement。例:执行将test表闪回到2005年5月7日下午3点。SQLflashback table test to timestamp to_timestamp(2005-05-07 15:00:00,yyyy-mm-dd hh24:mi:ss);一个完整的Flashback Table例子SQL select * from test; ID- 2 1获得当前的SCN号:SQL select dbms_flashback.get_system_change_number from dual;GET_SYSTEM_CHANGE_NUMBER-8178419执行一个DML操作:SQL delete from test where id=1;1 row deletedSQL select * from test;ID-2设定test表行迁移(row movement)SQL alter table test enable row movement;Table alteredSQL flashback table test to scn 8178419;DoneSQL select * from test;ID-21第3章 闪回删除Oracle Flashback Drop特性提供一个类似回收站的功能,用来恢复不小心被删除的表。当删除表时,Oracle 10g并不立刻释放被删除的表所占用的空间,而是将这个被删除的表进行自动重命名(为了避免同类对象名称的重复)并放进回收站中。所谓的回收站类似于Windows系统中的回收站,是一个虚拟的容器,用于存放所有被删除的对象,在回收站中被删除的对象将占用创建时的同样的空间。如果这个被删除的表需要进行恢复,就可利用Flashback Drop功能。例:进行一个删除表后恢复的简单测试。1. 显示回收站信息(不要以Sysdba用户查询,否则会出错)SQLshow recyclebin; 可以看到,回收站中是没有任何结果的,表示没有任何表在回收站中。2. 创建一个表,并删除,再次显示回收站信息SQLcreate table test_drop(name varchar2(10);SQLdrop table test_drop;SQLshow recyclebin;ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIMETEST_DROP BIN$b+XkkO1RS5K10uKo9BfmuA=$0 TABLE 2005-05-07:14:30:47 3. 对被删除的表进行恢复SQLflashback table test_drop to before drop;或SQLflashback table BIN$b+XkkO1RS5K10uKo9BfmuA=$0 to before drop; 4. 管理回收站清除回收站中的单个表:SQL purge table test_drop清除整个回收站:SQL purge recyclebin清除不同的对象回收站:SQL purge user_recyclebinSQL purge dba_recyclebin注意:需要注意的是sysdba的drop操作不会被记录,Oracle也从不推荐用户使用sysdba身份创建用户对象。5. 确认删除一个表SQLdrop table test_drop purge; 如果删除一个表且不放到回收站中不能进行恢复,在drop语句中可以利用purge选项。6. 可以通过参数禁用或启用recyclebin这个特性在Oracle 10gR1中,通过修改一个隐含_recyclebin为False可以禁用这个特性,在Oracle 10gR2中,recyclebin变成了一个常规参数,可以在session/system级动态修改:SQL show parameter recyclebinNAME TYPE VALUE- - -recyclebin string onSQL alter session set recyclebin=off;会话已更改。SQL alter session set recyclebin=on;会话已更改。SQL alter system set recyclebin=off;系统已更改。SQL alter system set recyclebin=on;系统已更改。 第四章 闪回数据库闪回数据库可以迅速的时数据库回到误操作或人为错误的前一个时间点,如实际中的“撤消”操作,将可以不利用备份就快速的实现时间点的恢复(有后悔药可以吃了)。实际上,Oracle为了实现这一个功能,创建了另外一组日志,就是Flashback Logs(前滚日志),记录数据库的前滚操作。如果希望能闪回数据库,需要设置如下参数: DB_RECOVER_FILE_DEST DB_RECOVER_FILE_DEST_SIZE这两个参数来确定Flashback日志的存放地点与该恢复区的大小。在创建数据库的时候,Oracle将自动创建恢复区(需要注意,该恢复区可不仅仅是为了flashback log,还可以用来归档,备份与恢复),但是默认是关闭Flashback database功能。如果想要利用这一功能,DBA就必须正确的配置该日志区的大小,如一个数据库的数据库,每天有10%的块发生改变,那么一天(24小时)的Flash Recovery Area就是1/10个数据库大小。DBA也可以动态的改变其大小以满足不同的需求。另外一个参数DB_FLASHBACK_RETENTION_TARGET参数允许您设定闪回数据的保存时间,单位是分。默认是一天(24*60)。如果想启动FLASHBACK DATABASE的功能,您必须在MOUNT模式下,执行:alter database flashback on或者是:alter tablespace tsname flashback on数据库将采集flashback log,如果需要关系该功能,则修改On为OFF。如果想执行flashback database命令,你可以在两种方式下执行:RMAN与SQLPLUS。SQL flashback database to time to_date(xxx); SQL flashback database to time TO_TIMESTAMP (xxx); SQL flashback database to scn xxx SQL flashback database to sequence xxx thread 1 SQLflashback database to timestamp(sysdate-1/24)我们下面看看具体的例子说明 SQL startup mount ORACLE instance started. Total System Global Area 113246208 bytes Fixed Size 787708 bytes Variable Size 87030532 bytes Database Buffers 25165824 bytes Redo Buffers 262144 bytes Database mounted. SQL alter database flashback on; alter database flashback on * ERROR at line 1: ORA-38706: Cannot turn on FLASHBACK DATABASE logging. ORA-38707: Media recovery is not enabled. 可以看到,flashback还必须要归档的保证SQL alter database archivelog; Database altered. SQL alter database flashback on; Database altered. SQL alter database open; Database altered. SQL archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 13 Next log sequence to archive 15 Current log sequence 15 经过以上步骤,我们确保了flashback database的功能。我们还可以发现,10g的自动归档是不需要手工干预的,只要开启了归档,就是自动归档了,归档区也在DB_RECOVERY_FILE_DEST参数指定的地点。通过如下的查询SQL alter session set nls_date_format=yyyy-mm-dd hh24:mi:ss;Session altered.SQL SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME 2 FROM V$FLASHBACK_DATABASE_LOG; OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI- - 1135440 2004-04-06 15:20:57我们可以知道,可以前滚恢复到的最早的SCN与时间点是多少,如果没有确保flashback database,该视图将没有查询结果。我们创建三个一样的表SQL create table t1 as select * from dba_objects;Table created.SQL create table t2 as select * from t1;Table created.SQL create table t3 as select * from t1;Table created.SQL set time on;SQL select sysdate from dual;SYSDATE - 2004-04-06 15:29:33我们确定了一个时间点,现在,我们分别truncate一个表与drop一个表,模拟误操作。15:30:10 SQL truncate table t2;Table truncated.15:30:43 SQL drop table t3;Table dropped.没有备份,我们利用flashback来恢复数据库到2004-04-06 15:29:33时间点。15:39:02 SQL shutdown immediate;Database closed. Database dismounted. ORACLE instance shut down.1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州二建市政试题及答案
- 长春师范大学《草坪学》2025-2026学年期末试卷
- 赣东学院《资本论选读》2025-2026学年期末试卷
- 棉胶液制备工安全管理水平考核试卷含答案
- 糖汁蒸发工安全培训效果知识考核试卷含答案
- 物业管理公司工作总结报告
- 硬质合金钝化涂层工安全操作测试考核试卷含答案
- 木刻水印雕刻版印刷员岗前基础管理考核试卷含答案
- 除尘工安全知识宣贯模拟考核试卷含答案
- 蔬菜种苗工安全意识知识考核试卷含答案
- 水库调度规程
- AQ/T 1119-2023 煤矿井下人员定位系统通 用技术条件(正式版)
- MOOC 物理与艺术-南京航空航天大学 中国大学慕课答案
- 哥尼斯堡七桥问题与一笔画课件
- 景观照明设施养护投标方案(技术方案)
- 全国计算机等级考试一级教程-计算机系统
- 企业经营战略 第6章-稳定型战略和紧缩型战略
- 海南大学硕士研究生入学考试复试政治审查表
- 酒店英语面试问题及回答
- 天津高考英语词汇3500
- 历史专业英语词汇
评论
0/150
提交评论