SELECT A.OWNER,   
         A.OBJECT_NAME,   
         B.XIDUSN,   
         B.XIDSLOT,   
         B.XIDSQN,   
         B.SESSION_ID,   
         B.ORACLE_USERNAME,   
         B.OS_USER_NAME,   
         B.PROCESS,   
         B.LOCKED_MODE,   
         C.MACHINE,   
         C.STATUS,   
         C.SERVER,   
         C.SID,   
         C.SERIAL#,   
         C.PROGRAM  
    FROM ALL_OBJECTS A,   
         V$LOCKED_OBJECT B,   
         SYS.GV_$SESSION C 
   WHERE ( A.OBJECT_ID = B.OBJECT_ID ) 
     AND (B.PROCESS = C.PROCESS )
   ORDER BY 1,2

解决方案 »

  1.   

    结合v$locked_objects和v$session视图即可
      

  2.   

    什么意思,是不是想查看某个表示属于哪个用户的?
    如果是这样子:
    察看用户xia所有的表
    select table_name from dba_tables where owner='xia';察看表xia的拥有者
    select owner from dba_tables where table_name='xia';
      

  3.   

    当然当前用户没有足够权限,也不能显示此视图
    v$access与v$locked_object
      

  4.   

    在DBA STUDIO用户里查看用户的状态,如果一直处于NOACTIVE状态说明是锁定了
      

  5.   

    你得把注释去掉  //时注释符号,sqlplus的--你如果使用pb的话,配置一个system用户的profile就可以直接使用
    // SELECT-SQL2
    // 功能:检查被加锁的对象以及加锁的会话信息
    //   如果需要手工解除锁,请对照要解锁的对象,记下SESSION_ID,SERIAL#项,然后运行下面的ALTER-SQL1
    //select LOCK_INFO.OWNER||'.'||LOCK_INFO.OBJ_NAME as OBJ_NAME, // 对象名称(已经被锁住)
    //  LOCK_INFO.SUBOBJ_NAME as SUBOBJ_NAME, // 子对象名称(已经被锁住)
    //  SESS_INFO.MACHINE as MACHINE, // 机器名称
    //  LOCK_INFO.SESSION_ID as SESSION_ID, // 会话SESSION_ID
    //  SESS_INFO.SERIAL# as SERIAL#, // 会话SERIAL#
    //  LOCK_INFO.ORA_USERNAME as ORA_USERNAME, // ORACLE系统用户名称
    //  LOCK_INFO.OS_USERNAME as OS_USERNAME, // 操作系统用户名称
    //  LOCK_INFO.PROCESS as PROCESS, // 进程编号
    //  LOCK_INFO.OBJ_ID as OBJ_ID, // 对象ID
    //  LOCK_INFO.OBJ_TYPE as OBJ_TYPE, // 对象类型
    //  SESS_INFO.LOGON_TIME as LOGON_TIME, // 登录时间
    //  SESS_INFO.PROGRAM  as PROGRAM, // 程序名称
    //  SESS_INFO.STATUS as STATUS, // 会话状态
    //  SESS_INFO.LOCKWAIT as LOCKWAIT, // 等待锁
    //  SESS_INFO.ACTION as ACTION, // 动作
    //  SESS_INFO.CLIENT_INFO as CLIENT_INFO // 客户信息
    //
    //from 
    // (
    // select obj.OWNER as OWNER,
    //  obj.OBJECT_NAME as OBJ_NAME,
    //  obj.SUBOBJECT_NAME as SUBOBJ_NAME,
    //  obj.OBJECT_ID as OBJ_ID,
    //  obj.OBJECT_TYPE as OBJ_TYPE,
    //  lock_obj.SESSION_ID as SESSION_ID,
    //  lock_obj.ORACLE_USERNAME as ORA_USERNAME,
    //  lock_obj.OS_USER_NAME as OS_USERNAME,
    //  lock_obj.PROCESS as PROCESS
    // from
    // ( select * from all_objects where object_id in (select object_id from v$locked_object)) obj, 
    // v$locked_object lock_obj
    // where obj.object_id=lock_obj.object_id
    // )  LOCK_INFO,
    // (
    // select SID,
    //  SERIAL#,
    //  LOCKWAIT,
    //  STATUS,
    //  PROGRAM,
    //  ACTION,
    //  CLIENT_INFO,
    //  LOGON_TIME,
    //  MACHINE
    // from v$session
    // ) SESS_INFO
    //where LOCK_INFO.SESSION_ID=SESS_INFO.SID ;// ALTER-SQL1
    // 功能:杀死会话(SESSION_ID,SERIAL#),可以手工解除锁
    //   请手工修改SESSION_ID,SERIAL#为相应值
    // 注意:本功能慎重使用,有一定的破坏性,该SQL可以断开客户机和服务器的连接//ALTER SYSTEM KILL SESSION 'SESSION_ID,SERIAL#';
      

  6.   

    select s.sid,s.machine,o.object_name,l.oracle_username,l.locked_mode,S.osuser,
    'ALTER SYSTEM KILL SESSION '''||s.sid||', '||s.serial#||''';' Command
    from v$locked_object l,v$session s,all_objects o
    where l.session_id=s.sid and l.object_id=o.object_id