Oracle培训公司内部培训要点解析.pptVIP

  • 9
  • 0
  • 约1.59万字
  • 约 39页
  • 2016-05-10 发布于湖北
  • 举报
* * * * * * * * * * * * * 总结:数据库故障处理中,如果发现是定位到的SQL语句执行计划有问题,大表需要重新采样的,要冷静,考虑避免在生产中立即进行分析,也不可考虑改代码加HINT,可以考虑用dbms_stats.SET_table_stats临时骗过ORACLE的方法来灵活的解决,然后在业务低峰期再考虑用分析表的方法彻底解决问题。 * * 更新并提交后的数据也能找回 描述 很多人认为,对表记录进行DML操作后,如delete+commit后,不能再rollback回来了,数据也就丢了,其实并非如此。如果数据库在正确的备份恢复策略下,可以通过恢复数据库到误删除时间点的方式来恢复,不过这个较麻烦,不到万不得以不考虑这样操作,ORACLE有了一个很好很实用的机制,就是闪回机制,可以将数据闪回到你误操作前的时间点,让你找回你的数据。。 点击打开---实验文档 创建测试表 SQL create table wqq_test (id int); 闪回数据 insert into wqq_test select * from wqq_test as of timestamp to_timestamp17:09:00,yyyymmdd hh24:mi:ss); 实验 更新并提交后的数据也能找回(续) 总结 不过现实中要考虑的问题是很多的,你是否有考虑过可以恢复多久以前的数据?比如我今天删除了一些记录,过好几天后才发现,可以闪回吗?比如我把表drop了,可以闪回吗?truncate了,可以闪回吗? 这里不多讨论了,简单说一下,9i中闪回的功能比较弱,?drop和truncate无能为力了,如果是10g的话,表drop了,可以通过垃圾站回收,truncate则是通过闪回整个数据库来找回,至于过好几天才发现能否闪回,取决于回滚段中的记录是否被重写,可以了解参数undo_retention,单位为秒,表示记录被保护多长时间不被重写,设置大点,能闪回历史数据就更多些。 SQL show parameter undo_retention NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_retention integer 900 drop表能恢复 描述 上一幻灯片我介绍了找回删除提交后数据的方法,介绍了闪回功能,大家一定记得我还说了10g可以从回收站找回被drop的表。这是10g新特性,只有数据库开启回收站的功能,drop的表就有可能会恢复,下面一起进行恢复实验操作。 点击打开---实验文档 创建测试表 SQL create table wqq_test_drop as select * from dba_objects; 恢复drop的表 FLASHBACK TABLE wqq_test_testdrop TO BEFORE DROP; 实验 总结 这回收站的功能有点有像windows下的回收站,我觉得ORACLE在人性化方面还是做的不错!误删并提交了记录能帮你找回,误删了整个表在10g中还有回收站助你一臂之力。 小心DDL提交事务 描述 大家都知道DDL语句,比如create index create table alter table drop table alter index 等等,但是大家是否能很强烈的意识到,做这个动作时,同时就在当前session做了commit的动作,而且即便这个DDL操作失败了,比如create table语法错,drop 的table不存在,这个commit动作也已完成! 点击打开---实验文档 创建测试表 SQL create table wqq_test as select * from dba_objects; 实验 总结 至此大家应该明白,DDL语句执行的第一步就是COMMIT,然后才是执行DDL本身,命令本身能否执行不管,只要DDL关键字出现,系统就提交!很多人喜欢在过程里用DDL语句,要是对这点没有强烈的意识,就很容易出错,比如你是执行一些列更新语句,但是要在一个事务里,就是一起成功或失败。如果语句中间任何一个地方出现了DDL,那这个事务的原子性就被破坏了,而你却毫不知情! sequence中的cache 描述 sequence的cache是把后面要用的序列先保存到cache 中缓存起来,以便下一次从内存中读出来,加快速度!例如cache 20就是缓存20个序号 在开发

文档评论(0)

1亿VIP精品文档

相关文档