求助,一套生产管理系统,在使用过程中表莫明其妙的被清空了,经查明确认是由bat文件调用了"运行drop表"的SQL脚本,现在只知道运行脚本的时间段,请问应如何查出是哪架机器运行这个SQL脚本?
急,分不够可以再开号加~~!!

解决方案 »

  1.   

    SELECT * FROM V$SESSION
    里面有个MACHINE是记录的机器名
    看看能不能帮到你
      

  2.   

    试一下Logminer看看能不能找出点蛛丝马痕吧,不过好像只能读到执行事务的username,要找到哪台机器好像不容易。预防这种事情,主要还是权限控制。除了DBA,不要给其他人drop对象的权利
      

  3.   

    sxykje(我爱老婆) ( ) 信誉:100  2006-08-02 19:22:00  得分: 0  
     
     
       SELECT * FROM V$SESSION
    里面有个MACHINE是记录的机器名
    看看能不能帮到你
      
     
    ------------
    v$session里的信息是动态的,如果session已经断开,里面就查不到该session的信息了。根据楼主的情况,bat文件执行的,估计一执行完就断开连接了
      

  4.   

    怎样确认审计有没有开启?还有,如何使用logminer?
      

  5.   

    很久前写的一篇记录Logminer使用
    环境:os:windows advanced server 2000,db:oracle 9.2.0.1
    1、要安装LogMiner工具,必须首先要运行下面这样两个脚本,这两个脚本必须均以SYS用户身份运行
    运行脚本:
    A:$ORACLE_HOME/rdbms/admin/dbmslm.sql ,用来创建DBMS_LOGMNR包
    SQL> @dbmslm.sql程序包已创建。
    授权成功。
     
    B:$ORACLE_HOME/rdbms/admin/dbmslmd.sql. 用来创建数据字典文件。SQL> @dbmslmd.sql过程已创建。没有错误。授权成功。
    PL/SQL 过程已成功完成。
    程序包已创建。2、修改初始化参数文件, 增加一行,用于LogMiner分析的数据文件存放的位置UTL_FILE_DIR=d:\oracle\logs
    重新启动数据库
    3、以sys用户运行脚本,创建数据字典文件
    SQL> execute dbms_logmnr_d.build(dictionary_filename =>'sqltrace.ora',dictionary
    _location =>'d:\oracle\logs');
    PL/SQL 过程已成功完成。4、建立日志分析表,使用dbms_logmnr.add_logfile()
    SQL> execute dbms_logmnr.add_logfile(options =>dbms_logmnr.new,logfilename =>'d:
    \oracle\ora92\rdbms\ARC00039.001');PL/SQL 过程已成功完成。
    5、添加用于分析的日志文件
    SQL> execute dbms_logmnr.add_logfile(options =>dbms_logmnr.addfile,logfilename =
    >'d:\oracle\ora92\rdbms\ARC00040.001');PL/SQL 过程已成功完成。SQL> execute dbms_logmnr.add_logfile(options =>dbms_logmnr.addfile,logfilename =
    >'d:\oracle\ora92\rdbms\ARC00038.001');PL/SQL 过程已成功完成。6、可以把这个文件从日志分析表中移除,从而不进行分析。SQL> execute dbms_logmnr.add_logfile(options =>dbms_logmnr.removefile,logfilenam
    e =>'d:\oracle\ora92\rdbms\ARC00038.001');PL/SQL 过程已成功完成。7、启动LogMiner进行分析。SQL> execute dbms_logmnr.start_logmnr(dictfilename =>'d:\oracle\logs\sqltrace.or
    a',starttime =>to_date('20040625 09:00:00','yyyymmdd hh24:mi:ss'),endtime =>to_d
    ate('20040625 22:00:00','yyyymmdd hh24:mi:ss'));PL/SQL 过程已成功完成。
    8、查看日志分析的结果,通过查询v$logmnr_contents可以查询到
    select operation,sql_redo,sql_undo from v$logmnr_contents;OPERATION                        SQL_REDO                                                                         SQL_UNDO
    INSERT                           insert into "QUEST"."QUEST_IX_BKG_EVENT_SNAP"("INSTANCE_ID","SNAPSHOT_TIME","TOT delete from "QUEST"."QUEST_IX_BKG_EVENT_SNAP" where "INSTANCE_ID" = '121' and "S
    INSERT                           insert into "QUEST"."QUEST_IX_BKG_EVENT_SNAP"("INSTANCE_ID","SNAPSHOT_TIME","TOT delete from "QUEST"."QUEST_IX_BKG_EVENT_SNAP" where "INSTANCE_ID" = '121' and "S通过手工执行SQL_UNDO,恢复所作的操作
    9、结束LogMiner的分析。SQL> execute dbms_logmnr.end_logmnr;PL/SQL 过程已成功完成。
    最后,使用过程DBMS_LOGMNR.END_LOGMNR终止日志分析事务,此时PGA内存区域被清除,分析结果也随之不再存在。视图v$logmnr_contents中的分析结果仅在我们运行过程'dbms_logmrn.start_logmnr'这个会话的生命期中存在。因为所有的LogMiner存储都在PGA内存中,其他的进程是看不到它的,随着进程的结束,分析结果也随之消失。
      

  6.   

    审计我用的不多,也没有记什么笔记,建议看oracle concept文档。在tahiti.oracle.com可以找到oracle的所有官方文档