九月 29th, 2009日志分析工具正式更名为LogDigger
经过一段时间时间考虑,日志分析工具改名为LogDigger
Sybase LogDigger是hobbylu为sybase ase产品系列提供的一个非常有用的分析工具,使用该工具可以轻松获得sybase日志(syslogs)的具体内容,特别是,该工具可以分析出所有对数据库操作的DML(insert、update,delete)语句,另外还可分析得到一些必要的回滚SQL语句。该工具特别使用调试、审计或者回退某个特定的事务。
LogDigger分析工具的运行平台为windows平台,它是可视化的图形界面,技术人员可以很快的掌握其功能,操作简单,功能强劲,目前支持sybase15.0版本之前的所有版本,并使用用所有平台。
syslogs表中存放着所有进行数据库操作的数据,其记录了针对数据库结构的每一个变化,也就是对数据库操作的所有DML语句。sybase官方到目前为止尚未推出自己的读取和解析syslogs的工具,对于普通的数据库管理员来讲,有时候非常需要了解syslogs中到底记录了什么,比如针对某张表的操作记录,某个进程的操作记录等等,但是从syslogs中根本就无法读出有效信息,仅仅只是xactid,op即事务号和操作代码。水平较高的数据库管理员可以从使用dbcc log获取其中详细的信息,但是从dbcc log本身极其复杂,想要掌握dbcc log即时在技术的支撑下,也需要花费较大的精力,而且dbcc log输出的结果,普通人也无法很好的理解。而LogDigger的推出,填补了sybase在日志翻译方面的空白。
总的来说,LogDigger工具的主要用途有:
1、跟踪数据库的变化
2、回退数据库的变化:回退特定的变化数据,恢复误删除、误更新数据
3、图形化的了解日志信息
1、要使用LogDigger,请先安装好sybase ase客户端,客户端版本要求为11.9与12.5.4之间。
2、要使用LogDigger,首先可以从www.sybedit.com上下载日志翻译软件LogDigger,目前是绿色版本,直接解压后就可以使用。
下面将详细介绍如何使用LogDigger工具。
1、运行LogDigger
2、运行后出现主界面,选择ConnectDB按钮
3、在登陆对话框上输入用户名/密码/服务名
输好之后,选择OK,退出选择Cancel
4、登陆数据库后,默认登陆数据库为master,选择你需要进行日志分析的数据库
5、点击Setting,进行日志分析的设置
弄好之后补上
6、点击ReadLog,读取日志信息
7、选择TranLog,进行日志的翻译
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年完成的一个软件。
一、sybase adaptive enterprise server数据库恢复服务
(1)系统崩溃只剩下数据文件的情况下的恢复,甚至数据库文件不存在而只有损坏得备份文件情况下得恢复.
(2)误delete数据恢复、误删除表恢复(drop)、truncate表恢复 等.
(3)各种数据库错误的修复.
(4)数据库被标记为可疑,不可用等情况.
(5)数据库中数据文件出现坏块情况下的恢复.
(6)数据库无数据文件但有有日志的情况下的恢复.
(7)数据库只有设备数据文件 没有任何日志的情况下的恢复.
(8) 605错误修复
(9) 3414错误的修复
等等
二、sybase sql anywhere(asa)数据库恢复
各种asa数据库故障恢复
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了。
是挺简单的吧
几年前,在网上搜集资料的时候,突然搜到有关存储过程调试的一些api,名字叫dbgrpc,这个东西我估计很多人都不知道,我也是一不小心发现的,于是就开始研究这方面的东西。刚开始挺难的,一直找不到北,因此也搁置了很长时间,将代码束之高阁。但是有一天,重新打开代码,尝试着修改了程序的运行方式,居然成功了,真是得来全不费工夫。
今天把自己的这个程序也提供出来,放到网站给大家下载,希望为大伙带来一些方便吧。
在前面几个版本中对于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页面。区别就在这里,但是这里确实迷惑了我。有待进一步研究
ASE日志翻译软件软件的功能已经进一步完善,目前界面主要使用英文界面,目的是为了能够让国外sybase使用者能够看懂这个软件,必要的时候,购买这个软件。新版本的软件在界面上整体较为流畅,但是好像在效率上并没有提高,VS2005和VC6差别实在太大,浪费了我不少脑细胞。升级的东西主要有:
1、界面上进行了优化,采用了树形列表框控件
2、对所有的库都放开,不再是限制为master库
3、可以批量的进行日志的翻译(TranLog)
4、提供单一日志翻译结果的查看(主要是目前树形列表框控件目前不支持copy)
功能上的限制有:
1、仅支持固定dbcc log语句
2、dbcc log的输出结果只能有500行记录
