首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Oracle频道
中国IT教育
Google
首页 入门基础 安装配置 体系架构 PLSQL 备份恢复 性能调优 开发技术 资讯动态 考试认证 下载 专题 讨论
您现在的位置: 中国IT实验室 >> Oracle >> 性能调优 >> 正文

DBA之路:Logminer实战记录

   1601:   程序员A惊呼:   我写的procedure变成旧版本了!
       1602:   程序员B:   我的也是
       1603:   数据库维护员C   (红着脸跑来):  刚才我把一期的数据库建立文本跑了一遍,想装在本机的,结果没想到直接在开发服务器上运行了....
       1610:   开发经理:   经过检查,程序员的机器没有备份程序   (   what   a   terriable   management   !)
       1618:   开发停止,检查损失:共有9个Package被误编译,从4月7日开发的新版本Package旧版本覆盖
大致损失10个工作日的程序量
       1630:   开发经理和超人X紧急磋商解决方案.期间超人X通过专家Y咨询,得到两套方案
                    解决方案1:   recovery   in   time  
                    解决方案2:   logminer  
       1640:   方案确定:   logminer   .   由于数据库是运行在noarchivelog   模式,并且没有任何备份,recovery   in   time   方案过于复杂,不可实施.

   1645:   超人X开始实施解决方案1

    a.   鉴定当前active的redo   log   .   通过数据字典
            b.   得到此redo   log的log   switch时间点t1.
            c.   和开发经理确认所有的的Package新的编译时间t2.
            d.   t2在t1之后,很幸运,只要通过active   redo   log   就应该能够得到package的编码.
            e.   停止所有程序员的数据库联接
            f.   telnet联上数据库服务器进行操作
            g.   生成数据字典文件,是通过dbms_logmnr_d.build()来完成。
                  (由于utl_file_dir='*',所以设置这个参数的步骤可以省略)  
                  SQL>   BEGIN
                  2           dbms_logmnr_d.build(
                  3               dictionary_filename   =>   'logminer.dat',
                  4               dictionary_location   =>   '/oradata/home'
                  5           );
                  6     END;
                  7   /  
              h.   建立一个日志分析表
                  a、建立日志分析表数据库必须在mount或nomount状态,启动数据库到mount状态。
                  sql>shutdown   immediate
                  sql>starup   mount

                  b、建立日志分析表,使用dbms_logmnr.add_logfile()
                  SQL>   BEGIN
                  2           dbms_logmnr.add_logfile(
                  3               options   =>   dbms_logmnr.new,
                  4               logfilename   =>   '/oradata/home/redo2'     --active的redolog
                  5           );
                  6     END;
                  7   /              
              i.启动LogMiner进行分析。
              SQL>   BEGIN
              2           dbms_logmnr.start_logmnr(
              3               dictfilename   =>   '/u01/arch/logminer_dict.dat',
              4               starttime   =>   to_date('20050408   01:00:00','yyyymmdd   hh24:mi:ss'),   --小于t1  
              5               endtime   =>   to_date('20050413   23:00:30','yyyymmdd   hh24:mi:ss')         --大于t2  
              6           );
              7     END;
              8   /  

              j.查看日志分析的结果,通过查询v$logmnr_contents可以查询到
              set   heading   off
              spool   packagename.txt  
              SELECT   sql_redo
              FROM   V$logmnr_contents
              WHERE   seg_name   =   'PACKAGENAME';
              /
              spool   off
           
              重复j的过程为每个package都生成output文件
              每个文件中最后的package应该为最新的source
           
              k.结束LogMiner的分析。
              SQL>BEGIN
              2           dbms_logmnr.end_logmnr;
              3       end;
              4   /  

   1930:     整个操作结束,所有package得到恢复!整个团队对超人X表示感谢   :)

              结论:   a.source备份的重要性  
                          b.数据库备份的重要性
                          c.logminer的神奇功效

【责编:yuan】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Oracle频道相关导航