经过一段时间时间考虑,日志分析工具改名为LogDigger

 

理解和使用sybase 日志分析工具-LogDigger

 

Sybase LogDigger是hobbylu为sybase ase产品系列提供的一个非常有用的分析工具,使用该工具可以轻松获得sybase日志(syslogs)的具体内容,特别是,该工具可以分析出所有对数据库操作的DML(insert、update,delete)语句,另外还可分析得到一些必要的回滚SQL语句。该工具特别使用调试、审计或者回退某个特定的事务。

LogDigger分析工具的运行平台为windows平台,它是可视化的图形界面,技术人员可以很快的掌握其功能,操作简单,功能强劲,目前支持sybase15.0版本之前的所有版本,并使用用所有平台。

 

一、LogDigger的用途

       syslogs表中存放着所有进行数据库操作的数据,其记录了针对数据库结构的每一个变化,也就是对数据库操作的所有DML语句。sybase官方到目前为止尚未推出自己的读取和解析syslogs的工具,对于普通的数据库管理员来讲,有时候非常需要了解syslogs中到底记录了什么,比如针对某张表的操作记录,某个进程的操作记录等等,但是从syslogs中根本就无法读出有效信息,仅仅只是xactid,op即事务号和操作代码。水平较高的数据库管理员可以从使用dbcc log获取其中详细的信息,但是从dbcc log本身极其复杂,想要掌握dbcc log即时在技术的支撑下,也需要花费较大的精力,而且dbcc log输出的结果,普通人也无法很好的理解。而LogDigger的推出,填补了sybase在日志翻译方面的空白。

总的来说,LogDigger工具的主要用途有:

1、跟踪数据库的变化

2、回退数据库的变化:回退特定的变化数据,恢复误删除、误更新数据

3、图形化的了解日志信息

 

二、安装LogDigger

       1、要使用LogDigger,请先安装好sybase ase客户端,客户端版本要求为11.9与12.5.4之间。

       2、要使用LogDigger,首先可以从www.sybedit.com上下载日志翻译软件LogDigger,目前是绿色版本,直接解压后就可以使用。

 

三、使用LogDigger工具

 

下面将详细介绍如何使用LogDigger工具。

 

1、运行LogDigger

2、运行后出现主界面,选择ConnectDB按钮

 

3、在登陆对话框上输入用户名/密码/服务名

 

输好之后,选择OK,退出选择Cancel

4、登陆数据库后,默认登陆数据库为master,选择你需要进行日志分析的数据库

 

5、点击Setting,进行日志分析的设置

弄好之后补上

6、点击ReadLog,读取日志信息

 

7、选择TranLog,进行日志的翻译

 

 

四、LogDigger的展望

       LogDigger目前是利用dbcc log的功能基础上进行开发的,在以后考虑是否可以变成复制,类似Ase Replicator,replication server,当然它肯定达不到它们的高度,顶多是一个设想,实现部分功能,比如监控日志,并将一段时间之内的数据变化,存为文本文件。

       LogDigger目前的功能还是比较单一,希望其能丰富一点,并对各种版本的支持能够更好一点。

 

五、作者介绍

       Hobbylu,1999年毕业于一个不知名的二类院校,在上海某国有企业工作,经过多年的学习和研究,成为了sybase的超级粉丝,逐步掌握了ase、asa的内部数据结构,对于ase研究相对较深。于2002年通过sybase administrator assicoate认证之后,就没有再参加过更高一级的认证。在sybase技术支持一块,经验丰富,可以处理sybase的绝大部分问题,其接触过的平台和版本也较多,跟着sybase从11.0一直学习到15,在性能调优、数据备份、数据管理、复制服务器方面均有相当丰富的经验和精湛的技术,为一些客户提供了技术支持。

       Hobbylu在研发方面,也有一定建树,其重要研发了Procdebug,powersybedit,LogDigger等工具。其中数据库恢复工具 powersybedit,可以提供在线和离线的数据恢复,是其拳头产品,主要用于ase以及asa。早期还研发了存储过程调试工具procdebug, (利用sybase的内置函数功能,实现了存储过程的调试)。LogDigger是其在2009年完成的一个软件。

九月 25th, 2009sybase数据库恢复服务

一、sybase adaptive enterprise server数据库恢复服务

(1)系统崩溃只剩下数据文件的情况下的恢复,甚至数据库文件不存在而只有损坏得备份文件情况下得恢复.

(2)误delete数据恢复、误删除表恢复(drop)、truncate表恢复 等.

 (3)各种数据库错误的修复.

 (4)数据库被标记为可疑,不可用等情况.

(5)数据库中数据文件出现坏块情况下的恢复.

(6)数据库无数据文件但有有日志的情况下的恢复.

 (7)数据库只有设备数据文件 没有任何日志的情况下的恢复.

(8) 605错误修复

(9) 3414错误的修复

等等

二、sybase sql anywhere(asa)数据库恢复

 各种asa数据库故障恢复

九月 25th, 2009本站已经做好ICP备案

ICP备案已经通过

九月 25th, 2009一个外国友人的建议

I guess it would be a nice tool, however there is still a long way to
go:
1. You better name your tool something, like ASE logminer, Oracle
logminer is part of its RDBMS.
2. Get certified for different platforms
3. Find a lawyer, what will happen if your tool cause damage to
client’s database?
4. Docs
5. …..

I guess it would be a nice tool, however there is still a long way to
go:
1. You better name your tool something, like ASE logminer, Oracle
logminer is part of its RDBMS.
2. Get certified for different platforms
3. Find a lawyer, what will happen if your tool cause damage to
client's database?
4. Docs
5. .....

由于技术人员的疏忽,master数据库状态有时候在不经意之间被修改为-32768,并重新启动了数据库。如果没有重新启动数据库,我们当然可以用命令重新修改回来。重新启动之后,master库就进入了bypass模式,这样从系统功能方面已经无法对master数据库进行增删改操作,也就无法让master库恢复正常。

怎么办?

着急了吧?

等着老板K你了吧?

等着老板炒你鱿鱼、扣薪水、挨批评!

别着急,下面我就对此类问题帮你进行深刻的分析,顺便让大家学点东西。本来我想直接使用我的工具powersybedit进行修改操作,但这样,你需要得到我的powersybedit,而我的ps目前暂不提供给外部服务。本着让大家明明白白的宗旨,我就开始讲了。

1、确定你的数据库版本

2、确定你的数据库页的大小

3、下载16进制编辑工具(ultraedit,winhex)

4、备份好目前的master设备,如果是裸设备,可以使用dd命令导出变成文件形式。

5、用16进制工具打开,本人使用ultraedit。

6、接下来使用笨办法,也就是搜索ascii码”master”,根据经验判断在这个master附近出现model,tempdb,sybsystemprocs值的,基本上可以判定这个就是sysdatabases中的master记录信息。

7、接下来我们从master这个位置开始,往前找,在第31字节处,我们可以发现其中有80 01 16进制值。

8、找到这个值之后,在此修改,将80 01修改为00 00

9、保存

10、替换原来的master设备,并启动数据库,ok,你的master库已经不再是bypass了。

是挺简单的吧

八月 11th, 2009存储过程调试工具

几年前,在网上搜集资料的时候,突然搜到有关存储过程调试的一些api,名字叫dbgrpc,这个东西我估计很多人都不知道,我也是一不小心发现的,于是就开始研究这方面的东西。刚开始挺难的,一直找不到北,因此也搁置了很长时间,将代码束之高阁。但是有一天,重新打开代码,尝试着修改了程序的运行方式,居然成功了,真是得来全不费工夫。

今天把自己的这个程序也提供出来,放到网站给大家下载,希望为大伙带来一些方便吧。

http://www.sybedit.com/software/procdebug.rar

八月 3rd, 20098月3日软件更新

在前面几个版本中对于DOL表的cheap update没有吃透,认为类型是DOL_MODIFY,事实上是DOL_UPDATE,算法中已经更新。下面罗列DOL_UPDATE和MODIFY中的数据差别

DOL_UPDATE               (58184,6)      sessionid=58184,5
        attcnt=1 rno=6 op=65 padlen=2 sessionid=58184,5 len=68
        odc_stat=0×0000 (0×0000)
        loh_status: 0×0 (0×00000000)
        objectid=1634101831 pageno=1161 rowno=0 cid=0 erl=0
        status (xstat)=0×1000 (0×1000 (XSTAT_DOL_EXROW))
        status2 (xstat2)=0×00 (0×0000)
        old ts=0×0000 0×0000f8e2 new ts=0×0000 0×0000f901
        xfirstoff=17, xoldvlen=1,xnewvlen=1
        xoldstatus=0×00:(0×0000)
        xnewstatus=0×0c:(0×0008 (DOL_ROW_UPDATED), 0×0004 (DOL_ROW_POSSUNCMT))
        old image:
21BBD2CC (     0):  31                                   1
        new image:
21BBD2CD (     0):  30                                   0

再看看这个

MODIFY                   (58184,3)      sessionid=58182,17
        attcnt=1 rno=3 op=9 padlen=0 sessionid=58182,17 len=60
        odc_stat=0×0000 (0×0000)
        loh_status: 0×0 (0×00000000)
        objid=1634101831 pageno=1160 offset=28 status=0×1000 (0×1000
(XSTAT_DOL_EXROW))
        cid=0 indid=0
        old ts=0×0000 0×0000f8f5  new ts=0×0000 0×0000f8fe
        xvallen=2
        oldval:
21BBD22C (     0):  0c80                                 ..
        newval:
21BBD22E (     0):  0c81                                 ..

再看看这个

MODIFY                   (58182,15)     sessionid=58182,14
        attcnt=1 rno=15 op=9 padlen=2 sessionid=58182,14 len=60
        odc_stat=0×0000 (0×0000)
        loh_status: 0×0 (0×00000000)
        objid=1634101831 pageno=1113 offset=45 status=0×800 (0×0800 (XSTAT_EXPAG
E))
        cid=0 indid=0
        old ts=0×0000 0×0000f3ac  new ts=0×0000 0×0000f8dd
        xvallen=1
        oldval:
21BD8CE4 (     0):  30                                   0
        newval:
21BD8CE5 (     0):  31                                   1

有点让我迷糊了,第一个DOL_UPDATE和第一个MODIFY,大家看看,都有这个状态XSTAT_DOL_EXROW,但是两者有什么区别呢?让我感到非常的迷惑。于是分别调出两个原始页面,

PAGE HEADER:
Page header for page 0×218B0000
pageno=1160 nextpg=1160 prevpg=1160 objid=1634101831 timestamp=0000 0000f8fe
oampgcount=1 attrcount=15 indid=0 totalentries_lo=1 entrycount=1
page status bits: 0×810c (0×8000 (PG_OAMPG), 0×0100 (PG_DOLINK), 0×0008
(PG_OAMATTRIB), 0×0004 (PG_OAMSORT))

这个页面是OAM页,难道这是OAM页的MODIFY?(确实迷惑)

而1161页面就是一个正常的DOL页面。区别就在这里,但是这里确实迷惑了我。有待进一步研究

七月 31st, 2009ASE日志翻译软件升级

ASE日志翻译软件软件的功能已经进一步完善,目前界面主要使用英文界面,目的是为了能够让国外sybase使用者能够看懂这个软件,必要的时候,购买这个软件。新版本的软件在界面上整体较为流畅,但是好像在效率上并没有提高,VS2005和VC6差别实在太大,浪费了我不少脑细胞。升级的东西主要有:

1、界面上进行了优化,采用了树形列表框控件

2、对所有的库都放开,不再是限制为master库

3、可以批量的进行日志的翻译(TranLog)

4、提供单一日志翻译结果的查看(主要是目前树形列表框控件目前不支持copy)

功能上的限制有:

1、仅支持固定dbcc log语句

2、dbcc log的输出结果只能有500行记录

LogTran


© 2007 sybase数据库恢复 | iKon Wordpress Theme by Windows Vista Administration | Powered by Wordpress