恢复误删除的表数据

好久好久没有写过Oracle相关的文章了好像。作为一个DBA着实有些惭愧,人eygle都出书了。 :D 上个周六晚上借着首届杰出数据库工程师评选活动之机,吃了eygle一顿,然后去了eygle新家,说是小坐一会儿,却被大雨挡在了屋子里面,结果后来开始看Mr. Bean,一帮人前仰后合,饶有兴味。准备回家的时候,当晚最大的暴雨出现了,幸好桔子开着一辆...开着一辆...开着一辆啥来着?反正4个轮子的车,先送大师和汪海回酒店,有幸见到了第一次那么清晰的一个区域瓢泼大雨,过了一座立交桥,地面就干的没事儿人一样,诡异。 好吧,我承认又多扯了一堆家常,言归正传。 周日上午酣睡中被电话吵醒,说,客户查不到数据了,一个客户化功能的重新移植将原来已经有很多数据的表drop掉然后重新创建了。 这个drop的操作发生在上周五,也就是接到电话的一天多前,一天多的新业务一定是不能丢掉的,所以不允许直接把数据库恢复到上周五。接到电话以后大略想了一下操作的步骤,后来去公司又做了一些调整,最后的恢复过程大体如下。 1。停产品数据库 (因为允许当库,所以down下来比较保险),将原有数据文件所在的文件系统umount,新做一个文件系统,挂载到原来数据文件所在的目录下。现在就有了一个没有数据文件的Oracle环境。 2。先恢复控制文件,DP的GUI界面连接不上(VNC那边有防火墙),以下均是在RMAN中执行的。 set dbid 1296121177; --dbid在下面的控制文件备份名称中就可以看到 run { allocate channel 'dev_0' type 'sbt_tape' parms 'ENV=(some ob2 parameters)'; restore controlfile from 'c-1296121177-20060806-00'; --因为最新的备份是在删除了表以后,所以要指定控制文件名以恢复倒数第二次的有效备份,否则直接from…

Continue Reading恢复误删除的表数据

探讨实体化视图的刷新机制

今天给客户搭建历史查询服务器,用oracle8i的snapshot实现,也就是9i的实体化视图。 顺手做了一下trace,看了一下刷新时候oracle后台是怎么工作的。 前期准备,使用DBMS_SUPPORT包,这个包默认是没有安装的,需要运行下面的命令来手动安装。 SQL>conn / as sysdba SQL>@?\rdbms\admin\dbmssupp.sql SQL>GRANT execute ON dbms_support TO kamus; SQL>CREATE PUBLIC SYNONYM dbms_support FOR dbms_support; 先看快速刷新,测试表是T1,创建了快照日志,用于刷新的视图是MV_T1,用户是KAMUS 执行trace: SQL>conn kamus SQL>exec dbms_support.start_trace(waits=>TRUE,binds=>TRUE); SQL>exec dbms_mview.refresh(list => 'MV_T1');…

Continue Reading探讨实体化视图的刷新机制

最简单的创建复制环境中只读实体化视图站点的方法

目的:创建一个实体化视图站点,定时刷新,获取主站点中指定表的变化,这个实体化站点可以作为查询服务器使用 步骤: 1。主站点上创建实体化视图日志表 CREATE MATERIALIZED VIEW LOG ON kamus.account2004; 2。实体化视图站点上创建公用数据库链接 conn system/password CREATE PUBLIC DATABASE LINK orcl using 'ORCL'; 3。实体化视图站点上创建刷新组,本例中3分钟刷新一次 conn system/password BEGIN DBMS_REFRESH.MAKE ( name => 'kamus.test_repg', list =>…

Continue Reading最简单的创建复制环境中只读实体化视图站点的方法