分享
分销 收藏 举报 申诉 / 27
播放页_导航下方通栏广告

类型Oracle10g闪回功能实例讲解.doc

  • 上传人:xrp****65
  • 文档编号:7692813
  • 上传时间:2025-01-12
  • 格式:DOC
  • 页数:27
  • 大小:192KB
  • 下载积分:10 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Oracle10g 功能 实例 讲解
    资源描述:
    Oracle 闪回特性(FLASHBACK DATABASE) -- Oracle 闪回特性(FLASHBACK DATABASE) --=====================================   闪回技术通常用于快速简单恢复数据库中出现的认为误操作等逻辑错误,从闪回的方式可以分为基于数据库级别闪回、表级别闪回、事务 级别闪回,根据闪回对数据的影响程度又可以分为闪回恢复,闪回查询。闪回恢复将修改数据,闪回点之后的数据将全部丢失。而闪回查询则可 以查询数据被DML的不同版本,也可以在此基础之上确定是否进行恢复等。本文主要描述flashback database的使用。 一、flashback database特性 flashback data1base闪回到过去的某一时刻 闪回点之后的工作全部丢失 使用resetlogs创建新的场景并打开数据库(一旦resetlogs之后,将不能再flashback至resetlogs之前的时间点) 常用的场景:truncate table、多表发生意外错误等 使用闪回日志来实现数据库闪回,闪回点之后的数据将丢失 二、flashback database的组成 闪回缓冲区:当启用flashback database,则sga中会开辟一块新区域作为闪回缓冲区,大小由系统分配 启用新的rvwr进程:rvwr进程将闪回缓冲区的内容写入到闪回日志中,注意闪回日志不同于联机重做日志,闪回日志在联机重做日志基础之 上生成,是完整数据块映像的日志。联机日志则是变化的日志。闪回日志不能复用,也不能归档。闪回日志使用循环写方式。 三、flashback database的配置 flashback database要求数据库必须处于归档模式,且闪回之后必须使用resetlogs打开数据库 a.查看数据库的归档模式及闪回是否启用 SQL> select log_mode,open_mode,flashback_on from v$database;   LOG_MODE OPEN_MODE FLASHBACK_ON ------------ ---------- ------------------ ARCHIVELOG READ WRITE NO --FLASHBACK_ON为NO,则表示闪回特性尚未启用 b.查看及设置闪回目录、闪回目录空间大小等 --下面查看恢复目录及恢复目路分配的大小 --可以使用alter system set db_recovery_file_dest 来设置新路径 --可以使用alter system set db_recovery_file_dest_size来设定新的大小 SQL> show parameter db_recovery   NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /u01/app/oracle/flash_recovery _area db_recovery_file_dest_size big integer 2G c.设置闪回保留目标生存期 SQL> show parameter db_flashback --缺省为分钟,即小时   NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_flashback_retention_target integer 1440 SQL> alter system set db_flashback_retention_target=30; --设定保留时间为半小时 d.在mount状态下来启用flashback,如在open状态下则出现下列错误提示 SQL> alter database flashback on; alter database flashback on * ERROR at line 1: ORA-38759: Database must be mounted by only one instance and not open. --一致性关闭数据库后,在mount状态下设置flashback SQL>startup mount exclusive; SQL> select status from v$instance;   STATUS ------------ MOUNTED   SQL> alter database flashback on; --开启闪回数据库功能   SQL> ho ps -ef | grep rvw --可以看到新增了后台进程rvwr oracle 3563 1 0 12:12 ? 00:00:00 ora_rvwr_orcl   --下面查看闪回区分配的大小为大约M,闪回分钟以内的数据则需要M左右的空间 --注意列oldest_flashback_time说明了允许返回的最早的时间点 SQL> select oldest_flashback_scn old_flhbck_scn,oldest_flashback_time old_flhbck_tim, 2 retention_target rete_trgt,flashback_size/1024/1024 flhbck_siz, 3 estimated_flashback_size/1024/1024 est_flhbck_size 4 from v$flashback_database_log;   OLD_FLHBCK_SCN OLD_FLHBC RETE_TRGT FLHBCK_SIZ EST_FLHBCK_SIZE -------------- --------- ---------- ---------- --------------- 915137 24-OCT-10 30 7.8125 11.2519531   SQL> select * from v$flashback_database_stat; --查看闪回   BEGIN_TIM END_TIME FLASHBACK_DATA DB_DATA REDO_DATA ESTIMATED_FLASHBACK_SIZE --------- --------- -------------- ---------- ---------- ------------------------ 24-OCT-10 24-OCT-10 7905280 86802432 96329728 0   SQL> select * from v$sgastat where name like 'flashback%'; --查看sga中分配的闪回空间大小   POOL NAME BYTES ------------ -------------------------- ---------- shared pool flashback generation buff 3981204 shared pool flashback_marker_cache_si 9196 SQL> ho ls -hlt $ORACLE_BASE/flash_recovery_area/ORCL/flashback --查看生成的闪回日志 total 7.9M -rw-r----- 1 oracle oinstall 7.9M Oct 24 12:37 o1_mf_6d7dkogw_.flb 四、使用flashback database闪回数据库 步骤(前提归档日志可用) 关闭数据库 启动数据库到mount状态(exclusive模式) 闪回至某个时间点,SCN或log sequence number 使用resetlogs打开数据库 1.使用sqlplus实现闪回 可以接受一个时间标记或一个系统改变号实参 sqlplus几种常用的闪回数据库方法 FLASHBACK [STANDBY] DATABASE [<database_name>] TO [BEFORE] SCN <system_change_number> --基于SCN闪回 FLASHBACK [STANDBY] DATABASE [<database_name>] TO [BEFORE] TIMESTMP <system_timestamp_value>--基于时间戳闪回 FLASHBACK [STANDBY] DATABASE [<database_name>] TO [BEFORE] RESTORE POINT <restore_point_name>--基于时点闪回 如下面的示例: SQL> flashback database to timestamp('2010-10-24 13:04:30','yyyy-mm-dd hh24:mi:ss'); SQL> flashback database to scn 918987; SQL> flashback database ro restore point b1_load; a.基于时间戳闪回 SQL> select count(1) from usr1.tb1; --查询用户usr1下表tb1中的记录数   COUNT(1) ---------- 404944 SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') tm from dual; --获得系统当前的时间   TM ------------------- 2010-10-24 13:04:30   SQL> drop user usr1 cascade; --删除帐户usr1,同时帐户usr1下的所有对象将被删除   SQL> conn scott/tiger; --使用scott 帐户登陆   SQL> create table tb_emp as select * from emp; --新创建表tb_emp   SQL> shutdown immediate; --关系系统   SQL> startup mount ; --重新到mount状态   SQL> flashback database to timestamp --实施闪回 2 to_timestamp('2010-10-24 13:04:30','yyyy-mm-dd hh24:mi:ss') ; SQL> alter database open resetlogs; SQL> select count(1) from usr1.tb1; --帐户usr1及其对象tb1被成功闪回   COUNT(1) ---------- 404944   SQL> select count(1) from scott.tb_emp; --闪回成功后,在闪回点之后修改的数据全部丢失 select count(1) from scott.tb_emp * ERROR at line 1: ORA-00942: table or view does not exist b.基于SCN号闪回 SQL> select current_scn from v$database; --获得当前的SCN号   CURRENT_SCN ----------- 918987   SQL> drop table usr1.tb1; --删除用户usr1下的表tb1 SQL> alter system checkpoint; --手动执行检查点   SQL> select file#,checkpoint_change# from v$datafile;   FILE# CHECKPOINT_CHANGE# ---------- ------------------ 5 921478   SQL> shutdown abort; SQL> startup mount;   SQL> flashback database to scn 918987;   SQL> select count(1) from usr1.tb1;   COUNT(1) ---------- 404944   c.基于时点闪回 SQL> create table t(id int,col varchar2(20)); --创建表t   SQL> insert into t values(1,'ABC');   SQL> insert into t values(2,'DEF');   SQL> commit;   SQL> create restore point bef_damage; --创建闪回点   SQL> insert into t values(3,'GHI');   SQL> select ora_rowscn,id,col from t; --查看表t的记录   ORA_ROWSCN ID COL ---------- ---------- -------------------- 1874406 1 ABC 1874406 2 DEF 1874406 3 GHI SQL> shutdown immediate; SQL> startup mount exclusive; SQL> flashback database to restore point bef_damage; --实施时点闪回 SQL> alter database open resetlogs; SQL> select * from t; --闪回成功后,闪回点之后的数据丢失   ID COL ---------- -------------------- 1 ABC 2 DEF 2.使用RMAN进行flashback database 使用RMAN进行闪回数据库的几种常用办法 RMAN> flashback database to scn=918987; RMAN> flashback database to sequence=85 thread=1; SQL> create table scott.tb_emp as select * from scott.emp;   SQL> select count(1) from scott.tb_emp;   COUNT(1) ---------- 14   SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') tm from dual;   TM ------------------- 2010-10-24 13:59:38   SQL> drop table scott.tb_emp;   SQL> shutdown abort; SQL> startup mount;   RMAN> flashback database 2> to time="to_date('2010-10-24 13:59:00','yyyy-mm-dd hh24:mi:ss')";   SQL> select count(1) from scott.tb_emp;   COUNT(1) ---------- 14   查询视图:v$recovery_file_dest将显示闪回区的使用情况 SQL> select name,space_limit/1024/1024 sp_limt 2 ,space_used/1024/1024 sp_usd,space_reclaimable/1024/1024 sp_recl, 3 number_of_files num_fils from v$recovery_file_dest;   NAME SP_LIMT SP_USD SP_RECL NUM_FILS --------------------------------------------- ---------- ---------- ---------- ---------- /u01/app/oracle/flash_recovery_area 2048 472.070313 380.671875 18   可以将某些表空间排除在闪回之外   SQL> alter tablespace users flashback off;   SQL> select name,flashback_on from v$tablespace where ts#=4;   NAME FLA --------------- --- USERS NO   如果需要对上述表空间启用闪回功能,则需要在mount模式下对该表空间进行开启该功能。   五、总结 闪回策略是针对Oracle撤销功能的增强,为快速恢复数据库提供了更多的便利。数据库的闪回恢复的速度要快于RMAN以及基于用户管理的备份与恢复,其主要原因是因为数据库闪回使用的是闪回日志,而闪回日志中保存的是数据块的完整镜像。其次闪回能够恢复的程度取决于闪回空间的大小以及闪回的保留策略,闪回空间大小会被循环使用,而闪回的保留策略则决定了闪回日志保留的时间长度。总之,合理的平衡恢复速度与可用空间依赖于具体服务要求. Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN) -- Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN) --==============================================   FLASHBACK DROP 特性允许在不丢失任何数据库的情况下将指定的表恢复至其被删除的时间点,并保持数据库为当前状态。闪回删除并不是 真正的删除表,而是把该表重命名并放入回收站,类似于Windows的回收站一样。当某个活动对象需要使用该表所占用的空间时,该表才会被真 正删除。只要空间未被复用,该表即可恢复。本文主要讲述了FLASHBACK DROP特性以及闪回特性中回收站(RECYCLEBIN)的管理。   一、FLASHBACK DROP 的功能 将先前删除的表恢复到删除之前的状态 恢复该表的索引以及触发器,授权 恢复该表的约束,包括唯一约束、主键约束、非空约束。外键约束不可恢复 可以实现基于系统和基于会话的flash drop操作 alter system set recyclebin = on | off; alter session set recyclebin = on | off; drop table(oracle 10g)命令并不真正删除表,在内部被映射为rename命令,即是将其重命名之后放入回收站。   二、理解表重名的过程 scott@ORCL> create table tb_emp as select * from emp; --基于emp表来创建表tb_emp   scott@ORCL> alter table tb_emp add constraint empno_pk --添加主键约束,将产生主键索引 2 primary key(empno); scott@ORCL> alter table tb_emp add constraint ename_uk --添加唯一约束,将产生唯一索引 2 unique(ename); scott@ORCL> alter table tb_emp add constraint sal_ck check(sal>0); --添加check约束   scott@ORCL> alter table tb_emp modify job constraint job_nn not null; --添加非空约束   scott@ORCL> alter table tb_emp add constraint dept_fk --添加外键约束 2 foreign key(deptno) references dept(deptno) on delete cascade;   scott@ORCL> select constraint_name,constraint_type --查看tb_emp表上的所有约束 2 from user_constraints where table_name='TB_EMP';   CONSTRAINT_NAME C --------------- - EMPNO_PK P ENAME_UK U SAL_CK C JOB_NN C DEPT_FK R --下面查看表tb_emp所在文件的id,块的起始id,大小,以及该对象的对象id等 sys@ORCL> select file_id,block_id,bytes from dba_extents where segment_name='TB_EMP';   FILE_ID BLOCK_ID BYTES ---------- ---------- ---------- 4 393 65536 sys@ORCL> select object_name,object_id from dba_objects --查看表tb_emp的对象ID 2 where object_name = 'TB_EMP';   OBJECT_NAME OBJECT_ID -------------------- ---------- TB_EMP 54493 --对表进行重命名 scott@ORCL> alter table tb_emp rename to tb_employees;   sys@ORCL> select file_id,block_id,bytes from dba_extents --重命名后所在文件的id,块的起始id,大小没有发生变化 2 where segment_name='TB_EMPLOYEES';   FILE_ID BLOCK_ID BYTES ---------- ---------- ---------- 4 393 65536 sys@ORCL> select object_name,object_id from dba_objects --重命名后对象ID没有发生变化 2 where object_name = 'TB_EMPLOYEES';   OBJECT_NAME OBJECT_ID -------------------- ---------- TB_EMPLOYEES 54493   scott@ORCL> select index_name,index_type --重命名后索引和约束也没有发生变化 2 from user_indexes where table_name='TB_EMPLOYEES' 3 union all 4 select constraint_name,constraint_type 5 from user_constraints where table_name='TB_EMPLOYEES';   INDEX_NAME INDEX_TYPE ------------------------------ --------------------------- EMPNO_PK NORMAL ENAME_UK NORMAL EMPNO_PK P ENAME_UK U SAL_CK C JOB_NN C DEPT_FK R 从上面的演示可以看出对于表的重命名仅仅是修改了表名,而对于表对象的ID,以及表存放的位置,块的起始,大小等并未发生实质性的变化 三、删除表并实施闪回 1.删除表tb_employees并查看回收站的信息 scott@ORCL> drop table tb_employees;   scott@ORCL> select object_name,original_name,can_undrop, 2 base_object from user_recyclebin;   OBJECT_NAME ORIGINAL_NAME CAN BASE_OBJECT ------------------------------ -------------------------------- --- ----------- BIN$k1zC3yEiwZvgQAB/AQBRVw==$0 TB_EMPLOYEES YES 54493 BIN$k1zC3yEhwZvgQAB/AQBRVw==$0 ENAME_UK NO 54493 BIN$k1zC3yEgwZvgQAB/AQBRVw==$0 EMPNO_PK NO 54493   scott@ORCL> select count(1) from "BIN$k1zC3yEiwZvgQAB/AQBRVw==$0"; --可以使用回收站名来访问对象,但要对对象加双引号   COUNT(1) ---------- 13 2.实施闪回并查看闪回后的情况 scott@ORCL> flashback table tb_employees to before drop; --进行闪回   Flashback complete.   scott@ORCL> select count(1) from tb_employees; --闪回后表存在并且可以访问   COUNT(1) ---------- 13   scott@ORCL> select index_name,index_type --查看闪回后索引,约束的情况,发现其名称仍然为BIN$名称 2 from user_indexes where table_name='TB_EMPLOYEES' 3 union all 4 select constraint_name,constraint_type 5 from user_constraints where table_name='TB_EMPLOYEES';   INDEX_NAME INDEX_TYPE ------------------------------ --------------------------- BIN$k1zC3yEgwZvgQAB/AQBRVw==$0 NORMAL BIN$k1zC3yEhwZvgQAB/AQBRVw==$0 NORMAL BIN$k1zC3yEcwZvgQAB/AQBRVw==$0 P BIN$k1zC3yEdwZvgQAB/AQBRVw==$0 U BIN$k1zC3yEewZvgQAB/AQBRVw==$0 C BIN$k1zC3yEfwZvgQAB/AQBRVw==$0 C 从上面的查询可以看出闪回之后索引约束的名字还是使用了以BIN开头,由系统生成的名字,可以将其改回,但外键约束已经不存在了。 3.尝试对表DML操作 scott@ORCL> insert into tb_employees(empno,ename,job,sal,deptno) 2 select 9999,'Robinson','DBA',3000,50 from dual;   1 row created. --可以成功插入,deptno列的外键约束已经被删除,故deptno为号成功插入   scott@ORCL> alter index "BIN$k1zC3yEgwZvgQAB/AQBRVw==$0" rename to EMPNO_PK;   Index altered. --将BIN开头的索引改回原来的名字,其余的约束名修改在此省略 4.下面演示表空间不足时无法闪回表删除的问题 sys@ORCL> select tablespace_name,sum(bytes/1024/1024) ||' M' 2 from dba_free_space where tablespace_name='TBS1' 3 group by tablespace_name; --表空间tbs1的可用空间为M   TABLESPACE_NAME SUM(BYTES/1024/1024)||'M' ------------------------------ --------------------------------- TBS1 .9375 M   flasher@ORCL> create table tb1 tablespace tbs1 as select * from dba_objects 2 where rownum < 6000;   sys@ORCL> select tablespace_name,sum(bytes/1024/1024) ||' M' 2 from dba_free_space where tablespace_name='TBS1' 3 group by tablespace_name; --在该表空间创建表tb1之后,可用空间为.25M   TABLESPACE_NAME SUM(BYTES/1024/1024)||'M' ------------------------------ --------------------------------- TBS1 .25 M flasher@ORCL> drop table tb1; --将表tb1删除   flasher@ORCL> show recyclebin; --删除后的对象位于回收站中 ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME ---------------- ------------------
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:Oracle10g闪回功能实例讲解.doc
    链接地址:https://www.zixin.com.cn/doc/7692813.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork