1

我是一所学校的系统管理员,所以我是一名 IT 通才,多才多艺,一无是处,对吧?我们的学生信息系统运行在 Oracle 11g 之上。想知道如何使用 logminer 至少找出数据库中不应该更改的内容何时更改。

我已经配置了一个测试服务器来玩,所以请放心,我在这里玩的时候我们的生产系统没有风险。

服务器是 Windows。我转到命令提示符,键入 sqlplus / as sysdba。

执行dbms.logmnr.addlogfileblah, blah 多次以添加日志文件。

更改会话设置NLS_DATE_FORMAT = 'mm-dd-yyyy HH24:mi:ss';,以便时间戳告诉我的不仅仅是日期。

然后我转到我的测试服务器上的应用程序并更改学生人口统计记录。我想使用 logminer 找到这个变化。

我做了一个select timestamp,sql_undo from V$LOGMNR_CONTENTS WHERE TIMESTAMP > TO_DATE('04-11-2013 11:59:00'); (我刚刚做了改变,下午 3 点左右)

我没有行。

如果我做同样的事情,但在午夜之后的某个时间,我会得到数千行,因为该应用程序具有在午夜开始执行维护的例程,例如重新计算学生的班级排名。

那么为什么我没有找到我所做的更改记录?我相信我正在查看正确的日志文件,否则我不会在午夜看到活动。

4

1 回答 1

0

尽管您的最新条目已记录,但它不会出现在 V$LOGMNR_CONTENTS 中,直到它记录了足够数量的更新。例如,如果您进行 100 次更新,您可能会获得 80 次。要清除剩余的 20 次,您需要完成更多更新,以便再次看到它们。我们遇到了类似的问题,logminer 尤其没有显示最新更新,尤其是在它们很少的情况下。我们必须创建一个虚拟表来定期创建一些更新,以便 logminer 始终主动显示更新,并且缓冲区中没有存储任何内容。在我们的用例中,创建虚拟表是可以的,我不确定在您的情况下是否可以。

于 2017-02-23T14:02:25.773 回答