12
返回列表 发新帖
楼主: quckros

[讨论] logmnr解析后的archive log内容看不太懂~~

[复制链接]
论坛徽章:
86
2015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11优秀写手
日期:2013-12-18 09:29:11日产
日期:2013-10-17 08:44:39马自达
日期:2013-08-26 16:28:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-23 16:55:51马上有房
日期:2014-02-19 11:55:14
11#
发表于 2010-10-8 09:30 | 只看该作者
实验:

SQL> alter database add supplemental log data;

数据库已更改。

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE    10.2.0.4.0      Production
TNS for Linux IA64: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production

SQL> create table t as select * from dba_objects where 1=0;

表已创建。

SQL> desc t;
名称                                      是否为空? 类型
----------------------------------------- -------- ----------------------------

OWNER                                              VARCHAR2(30)
OBJECT_NAME                                        VARCHAR2(128)
SUBOBJECT_NAME                                     VARCHAR2(30)
OBJECT_ID                                          NUMBER
DATA_OBJECT_ID                                     NUMBER
OBJECT_TYPE                                        VARCHAR2(19)
CREATED                                            DATE
LAST_DDL_TIME                                      DATE
TIMESTAMP                                          VARCHAR2(19)
STATUS                                             VARCHAR2(7)
TEMPORARY                                          VARCHAR2(1)
GENERATED                                          VARCHAR2(1)
SECONDARY                                          VARCHAR2(1)

SQL> insert into t (object_id) values (1);

已创建 1 行。

SQL> commit;

提交完成。

SQL> select dbms_flashback.get_system_change_number from dual;

GET_SYSTEM_CHANGE_NUMBER
------------------------
               905055635

SQL> update t set owner=(select 'a' from dual where 1=0),subobject_name=(select
'a' from dual where 1=0) where object_id = 1;

已更新 1 行。

SQL> update t set owner=(select 'a' from dual where 1=0),subobject_name=(select
'a' from dual where 1=0) where object_id = 1 and subobject_name is null;

已更新 1 行。

SQL> commit;

提交完成。

SQL> begin
  2    sys.dbms_logmnr.start_logmnr(startSCN => 905055635,options => sys.dbms_lo
gmnr.DICT_FROM_ONLINE_CATALOG);
  3  end;
  4  /

PL/SQL 过程已成功完成。

SQL> select sql_redo from v$logmnr_contents where seg_name='T';

SQL_REDO
--------------------------------------------------------------------------------

update "TEST"."T" set "OWNER" = NULL, "SUBOBJECT_NAME" = NULL where "OWNER" IS N

ULL and "SUBOBJECT_NAME" IS NULL and ROWID = 'AAEUq2AAEAACcJNAAB';

update "TEST"."T" set "OWNER" = NULL, "SUBOBJECT_NAME" = NULL where "OWNER" IS N

ULL and "SUBOBJECT_NAME" IS NULL and ROWID = 'AAEUq2AAEAACcJNAAB';


对于update而言,redo中必须记录更新前值(op:5.1)和更新后值(op:11.5),然后logmnr在挖掘的时候根据这两个值来拼接SQL。

[ 本帖最后由 sundog315 于 2010-10-8 12:26 编辑 ]

使用道具 举报

回复
论坛徽章:
1
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25
12#
 楼主| 发表于 2010-10-8 10:03 | 只看该作者
thanks for  your help

[ 本帖最后由 quckros 于 2010-10-8 10:19 编辑 ]

使用道具 举报

回复
论坛徽章:
1
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25
13#
 楼主| 发表于 2010-10-8 10:26 | 只看该作者

回复 #8 sundog315 的帖子

---如果是这两个SQL的话,是可以生成挖掘出来的SQL的

what does '是可以生成挖掘出来的SQL的' mean?
is it  a kind tool or sth ?
and how to do it?
can u make more explaination which i would appreciate it!
thanks

使用道具 举报

回复
论坛徽章:
86
2015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11优秀写手
日期:2013-12-18 09:29:11日产
日期:2013-10-17 08:44:39马自达
日期:2013-08-26 16:28:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-23 16:55:51马上有房
日期:2014-02-19 11:55:14
14#
发表于 2010-10-8 12:31 | 只看该作者
原帖由 quckros 于 2010-10-8 10:26 发表
---如果是这两个SQL的话,是可以生成挖掘出来的SQL的

what does '是可以生成挖掘出来的SQL的' mean?
is it  a kind tool or sth ?
and how to do it?
can u make more explaination which i would appreciate it!
thanks


见11楼

我的意思是,如果你找到的这两个SQL,当子查询没有满足条件的记录时,在logmnr中是会生成你看到的SQL的

进一步,根据你发现的将空更新为N/A后,redo大幅度减少,那么你重点关注一下语句一,有可能是在程序中频繁的执行语句一导致生成了大量的REDO

使用道具 举报

回复
论坛徽章:
1
ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25
15#
 楼主| 发表于 2010-10-8 14:41 | 只看该作者

回复 #14 sundog315 的帖子

确实如你所说,我们的" & var_sysserialno & "是测试部门每天将大量的检测结果通过LOG的形式传过来给我们解析的,突然那几天产生大量异常的" & var_sysserialno & ",它们在子查询中根本找不到导致,我们有改善程式提前将异常数据剔除掉,经验教训啊,非常感谢sundog315~~

使用道具 举报

回复
论坛徽章:
47
蒙奇·D·路飞
日期:2017-03-27 08:04:23马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11一汽
日期:2013-09-01 20:46:27复活蛋
日期:2013-03-13 07:55:232013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
16#
发表于 2010-10-9 00:20 | 只看该作者
sundog315,

Your demo in msg #11 is excellent. Thanks.

> 对于update而言,redo中必须记录更新前值(op:5.1)和更新后值(op:11.5),然后logmnr在挖掘的时候根据这两个值来拼接SQL。

That makes sense. But why does Oracle add
"OWNER" IS NULL
to the where-clause? Adding it to the set-clause makes sense, because that's the same as saying "记录更新前值" (what you would see in sql_undo) and "更新后值" (as sql_redo you showed). Why does it appear in the where-clause then? The where-clause is used to identify the row. Isn't rowid sufficient?

Yong Huang

使用道具 举报

回复
论坛徽章:
86
2015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11优秀写手
日期:2013-12-18 09:29:11日产
日期:2013-10-17 08:44:39马自达
日期:2013-08-26 16:28:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-23 16:55:51马上有房
日期:2014-02-19 11:55:14
17#
发表于 2010-10-9 13:22 | 只看该作者
更新前值会拼接到where-clause,其实,这么做没什么意义,但,不会错。

使用道具 举报

回复
论坛徽章:
10
八级虎吧徽章
日期:2009-02-09 17:58:50ITPUB 11周年纪念徽章
日期:2012-10-09 18:09:19蜘蛛蛋
日期:2012-01-12 13:27:03ITPUB十周年纪念徽章
日期:2011-11-01 16:24:51开发板块每日发贴之星
日期:2011-06-08 01:01:012011新春纪念徽章
日期:2011-02-18 11:43:33ITPUB9周年纪念徽章
日期:2010-10-08 09:28:532010年世界杯参赛球队:西班牙
日期:2010-06-14 22:08:542009日食纪念
日期:2009-07-22 09:30:00一汽
日期:2013-08-08 10:50:32
18#
发表于 2011-5-18 17:53 | 只看该作者
ok

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表