天极Yesky
  • 笔记本电脑
    笔记本
  • 台式电脑
    台式机
  • 手机
    手机
  • 电脑硬件DIY
    DIY硬件
  • CPU
    主板
    音箱
  • 硬盘
    显卡
    键鼠
  • 内存光驱
    显示器
    机箱电源

  • 数码相机DC
    数码相机
  • MP3播放器
    MP3/MP4
  • 数码摄像机DV
    摄像机
  • 电脑外设
    外设
  • 网络
    网络
  • 服务器
    服务器
  • 数字家庭
    数字家庭
  • 群乐
    群乐
  • 产品报价 行情 商家 新闻 评测 | 软件 设计 网页 开发 安全 论坛 E时代 游戏 图片 壁纸 下载 网摘 博客 索尼专区 Vista 科技奥运
    天极网
    判断哪个表刚刚被修改过
    作者: Carol Francum
    出处:
    责任编辑: 丁一凡
    [ 2005-01-13 10:39 ]


    我有一个应用程序,用于向一个表中插入新的记录。我怎么才能知道哪个表被修改了呢?

    你看,你有一个可以成功更新你的数据库的应用程序,但是你却不知道它做了什么。有许多你,或者实际上是数据库管理员,应该做的事情。一般来说,我建议你在审计一个用户或者是一个进程之前,你应该先与数据库管理员讨论一下这个问题,

    首先,你的数据库管理员也许对这个应用程序有一个了解,或者他能打电话给应用程序的“主人”来得到你需要的信息。第二,数据库管理员一般不愿意在数据库中进行审计,因为会有潜在的规模问题和性能影响。

    你可以监测数据库中使用了AUDIT(审计)功能的活动。

    1、你可以审计连接上的数据库,等,当一个特定的用户登录的时候,捕获这个活动。

    2、你可以在对象级别上进行审计,也就是说,在一个特定的表、视图、队列,或者存储程序。你应该使用这个选项,如果你急切的想要知道是谁更新了某个特定的表,或者使用了数据库中的某个特定的视图。

    3、你可以在权限级别上进行审计,访问数据库的应用程序拥有权限,等,它可以进行连接,它可以选择数据等。如果你拥有应用程序的用户名,你可以审计用户的权限。

    4、你可以对特定的语句进行审计。例如,你说应用程序更新了记录。你可以审计“UPDATE TABLE”语句,或者是“INSERT TABLE”语句。请注意,如果你做了这些事情,你也许会遇到大量的数据。根据你的审计内容,以及你审计的时间长度,你可以获得很多GB的数据。

    使审计生效:

    审计必须在数据库的init.ora文件中激活。AUDIT_TRAIL参数必须设置为DB或者OS。AUDIT_TRAIL=NONE是默认的设置,没有审计。

    记录到SYS.AUD$表的记录将会很快地将其填满。如果你使审计生效了,那么你就需要阶段性的归档,然后将这个表截断。

    对登录开启审计,
    Audit session

    如果你知道应用程序使如何登录的(例如,应用程序的用户名是什么):

    Audit INSERT TABLE by user;
    Audit UPDATE VIEW by USER;
    Audit UPDATE TABLE BY user;

    《Oracle 9i数据库管理员手册》第十章,数据库安全和审计。

    如果应用程序没有产生很多的事务,你也可以“捕获”缓冲区中的SQL。任何数据库中的事务都必须被解析。这条语句实际上是与共享池中的执行计划一起存储在了SQL AREA部分的解析表格中。有很多查询可以追踪SQL区中的信息。你可以查看Oracle或其他网站的SQL技巧类文章。


     

    笔名:
    请您注意:

     遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

     天极网拥有管理笔名和留言的一切权利。
    相关内容