各位大哥,大姐,我现在打算做一个监听程序,监视oracle中一个数据库文件的变化,例如文件大小,最后一次修改时间的变化,通过这种变化,确定是否对数据库进行了更改,例如更改数据库记录等(首先,我要说的是这么做是有原因的,别人不允许在他的数据库中更改任何东西,如添加触发器等等,因此只能通过监视文件的方式来处理问题),我采用了C#中的fileSystemwatcher对文件进行监视,但是很遗憾,我发现在oracle中,你更改了数据库中的一条记录,他的DBF文件大小并没有受到影响,而且他的最后一次修改时间也没发生任何变动(注:我更改数据时,是采用PLSQL更改的,oracle是10G的),因此小弟在此请教各位朋友,有没有什么好的办法,或者是我监视的文件根本没有对?请高人指点!还有请问在plsql中修改了一条记录后,oracle中哪些文件要发生变化?大小没发生变化可以理解,好像其大小是按百分比来算的,可是修改时间为什么不变呢?我应如何处理这种问题呢?

解决方案 »

  1.   

    在oracle中通过监测文件的变化记录数据的变化是没有意义。数据文件的大小是在创建表空间时已经确定了,文件大小的变化与表空间设置参数有关。可以通过数据库级的触发器监测数据库的修改,或者进行权限控制。具体的可以参照PL\SQL关于触发器的资料。
    如果要监测文件大小及空间利用情况,可以数据库一些视图获取,好久不做了,视图具体名称我记不清楚了,在网上找找。
      

  2.   

    oracle中哪些文件要发生变化?
    =========================
    至少数据文件的大小不会在每次有数据插入、删除时发生变化。数据文件在表空间的存储空间不足时向操作系统申请空间,取得空间再由数据库管理系统在需要时每次一个extent分配给数据库对象(表、索引等)