当前所在位置:珠峰网资料 >> 计算机 >> Oracle认证 >> 正文
Oracle日志挖掘操作实验
发布时间:2010/7/12 11:24:32 来源:城市学习网 编辑:ziteng
  学习了几天日志挖掘的基本知识,今天终于决定动手做个实验。实验的过程很简单,就是使用HR用户,创建一个函数,然后删除,然后使用日志挖掘把函数恢复回来。
  下面介绍一下实验过程,整个过程都是基于sql plus的。
  注意,本文本涉及使用logmnr的基本知识,相关知识网上有很多,请自行搜索。
  1.准备工作
  --登录
  conn hr/hr
  --创建函数
  CREATE OR REPLACE function fGetPrice return number
  is
  begin
  return 1;
  end fGetPrice;
  /
  --检验函数执行情况
  select fGetPrice from dual;
  --删除函数,最好能记下时间
  drop function fGetPrice;
  2.日志挖掘
  --使用管理员登录
  conn / as sysdba
  --设置一下sql plus
  set pagesize 50
  set line 200
  alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
  --查找当前日志
  select * from v$log;
  GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
  ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
  2          1        752  104857600          1 YES INACTIVE              88233258 2010-06-09 15:08:16
  3          1        753  104857600          1 NO  CURRENT               88284273 2010-06-10 10:23:11[NextPage]   ----我的是两个日志,默认是三个
  --查看日志成员,注意组号与上文的当前日志号相同。并检查日志切换时间是否在删除函数时间之前
  select member from v$logfile where group#=3;
  MEMBER
  --------------------------------------------------------------------------------------------
  C:\ORACLE\ORADATA\GORACLE\REDO03.LOG
  --添加日志并进行分析
  begin
  dbms_logmnr.add_logfile(options=>dbms_logmnr.new,
  logfilename=>'C:\ORACLE\ORADATA\GORACLE\REDO03.LOG'
  );
  end;
  /
  begin
  dbms_logmnr.start_logmnr(
  dictfilename=>'c:\oracle\oradata\goracle\logmnr.dict',
  starttime=>'2010-06-10 10:23:11',
  endtime=>'2010-06-10 11:08:11');
  end;
  /
  ----注:dictfilename指定的参数,是我事先建好的数据字典的位置。请根据个人情况自己设定
  --查看分析结果
  select sql_redo from v$logmnr_contents where seg_name='FGETPRICE';
  SQL_REDO
  ------------------------------------------------------------------------------------------------
  CREATE OR REPLACE function fGetPrice return number
  is
  begin
  return 1;
  end fGetPrice;;
  ALTER FUNCTION "FGETPRICE" COMPILE DEBUG;
  drop function fgetprice
  ;
  可以看到针对函数FGETPRICE进行的两次操作,一次创建,一次删除。把创建语句重新执行一下就把函数恢复了。
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved