Oracle日志分析 之事务级精准恢复
一、挖出需要解决的问题
专业数据灾备软件中,对Oracle数据库的恢复,都需要以时间为基准来选择数据恢复点,用户希望数据能恢复到自己指定的时间上,更高级的用户则要求恢复到指定SCN。所以,目前在对Oracle数据备份后提供的恢复点有以下几种:
-
恢复到数据备份的时间点。
-
恢复到用户指定时间点。
-
恢复到用户指定的SCN(System Change Number)等。
恢复到数据备份的时间点,这是最为基本的恢复点定位,要想在时间维度上提升恢复精准度,则是支持恢复到用户的指定时间点,再进一步的精准恢复就是指定SCN了。
但在实际生产环境所需的灾备场景中,提供的这些恢复精准度是不是真正达到用户期望值?让我们来分析以下场景:
-
指定时间点恢复。时间点是以秒为单位,也就是说可以选择恢复到备份数据中的任意一秒上,恢复数据中包括了指定这一秒的事务,如果数据库事务请求密度不大,大于或等于1秒才有一个事务处理时,那么以秒为单位的恢复,的确已经做到精准恢复。但实际生产环境中,往往是1秒钟有成千上万,乃至百万个数据事务并发请求,或者会出现1个事务在多秒中处理完成。那么,采用恢复到某一秒时间,恢复后的数据不够精准。
-
指定SCN恢复。SCN作为Oracle数据库中很重要的基础内容,是系统中维持数据的一致性和顺序恢复的重要标志,每个事务的每个操作都有一个唯一的SCN,要想数据恢复精准,就需要选择正确的SCN,但往往多数灾备系统中只提供了SCN号,没有提供SCN中关联的操作内容。要选择准确的SCN,经验丰富的DBA可以在数据库中执行指令来分析Oracle日志,从而得到恢复所需指定的SCN,但对于普通的维护人员,这却是比较难的操作。所以,如果要选择SCN做精准数据恢复,必须要具备专业的DBA知识,因此不利于通过指定SCN来恢复数据的普及使用。
通过以上场景分析,我们得知并未达到客户的预期值。所以,要想精准地恢复Oracle数据,最好的途径就是要选择正确的SCN,那么就要求能简易并清晰地了解每个SCN中的具体操作内容。但SCN信息在二进制日志文件中,直接解读的可能性几乎为零。这也就是提升恢复精准度的难点所在了。
二、鼎甲灾备产品推出日志解析
鼎甲的灾备产品在新一轮的产品提升中,正确解读出了Oracle数据库的日志文件,并在系统中提供直观展现。我们看看在鼎甲DBackup中,是如何解读和使用这些日志数据的。
-
直观展现日志信息
鼎甲DBackup中采用列表方式直观展现日志文件的内容,即使是对于一个Oracle DBA高手来说,在进行数据恢复处理时也能提供有效的帮助。
-
完整解析事务日志
要明了执行的事务,就需要完整解析出事务执行的内容,包括:谁做了操作,做了什么操作,关系到哪些表,具体SQL语句是什么,关联的SCN是什么,需要恢复到哪个SCN之前。只有完整地解析出这些信息,才能准确定位恢复的SCN。
鼎甲DBackup针对Oracle的重做日志和归档日志进行解析,获取出执行用户、操作类型、涉及表、执行SQL、SCN等信息,让用户完整了解事务执行内容。
-
任意选择时间段
无需任何脚本指令的操作,只需在鼎甲DBackup界面上选择时间范围,系统将根据用户选定的时间段来自动提取日志数据分析,操作简单便利。
这非常适合于多数生产维护场景中,因为维护人员往往只是知道某时间段做了某些事情,更希望能从指定时间段来缩小范围,快速查找正确的SCN。
三、解决问题
-
不难看出,鼎甲灾备产品的这次提升,又把Oracle数据库的恢复精准度向前推进了一大步,完美解决了文章开篇时描述的问题。
-
在系统的界面上,点击几下鼠标,就可以把二进制日志文件简单易懂的呈现在您面前。
-
不用再为选择哪个SCN点恢复而头痛了,因为您可以清楚地了解每个事务执行了哪些操作,每个操作对应的SCN是什么。
-
同时,在审计上也起到显著作用,当数据库发生逻辑错误时,可以审计出是什么用户在什么时间造成的。