我所从事的项目是多系统集成项目,我只是负责众位系统中的其中之一。情况这样的,我们的系统是固定在凌晨12点〜早上7点执行实施,会有大批量的数据对数据库表进行更新,删除,插入操作。
我所负责的系统中,ORCALE的表大概有二千多个。投入的数据量也很庞大!某天,我们系统的投入数据有问题,导致要精查这一天投入的数据情况。
所以数据库管理员权限,是否可以查询出凌晨12点〜早上7点这个时间段内,有哪些表进行了“增”“删”“改”的操作??
我不想在二千多个表中,一个个用SELECT语句来查询更新时间(已经被删除的数据也不可能用SELECT来查询)

解决方案 »

  1.   

    dbms_logmnr
      

  2.   


    谢谢版主的回复。我所管理的这个项目是某国家银行系统。银行可想而知,数据量很大。仅数据库就分为ORACLE,DB2,MONGO。
    对于ORACLE又分为多个系统的SCHEMA,我们2000多个表是归属于我们系统独立的SCHEMA管理
    我所从事的是JAVA和SHELL,数据库并不是我所管,我们在国外有专门的DBA但对于这次的数据问题,要做出解决计画。
    这个计画要由我们来制订,计画和实行方案都由我们提交给国外的DBA来进行实施。
    所以,第一,我对于ORACEL 的DBA得确能力有限,需要帮助;第二,也想知道有哪些办法可以解决查询到有哪些表被进行过改动
      

  3.   

    不知道你的系统是什么样子,但是银行的系统,应该很庞大,而且会有一些规范,不会轻易让你修改数据库上的一些内容。
    所以,增加触发器的方案,无论是从数据库的稳定性,还是效率上来说,都是不可行的。
    通常来说,像这样项目的数据库,数据是不会直接用DELETE物理删除掉的,是在表里,增加DELETE_FLAG标志位,来实现数据的物理删除的。临时表另当别论,而且临时表的数据,统计起来也没啥意义。
    还会有CREATE_TIME和UPDATE_TIME来记录数据的创建时间和最后更新时间的。
    您可以根据这3个字段,在不修改现有数据库任何内容的情况下,统计出您需要的数据的。
      

  4.   

    SELECT * FROM USER_TAB_MODIFICATIONS;