Pular para o conteúdo
Visualizando 5 posts - 1 até 5 (de 5 do total)
  • Autor
    Posts
  • #86584
    mpvargas
    Participante

      Caros Amigos,
      Preciso excluir uma tabela mas estou com uma dúvida.
      É possível saber se a mesma está em uso ou quando ela foi acessada pela ultima vez.
      Obrigado.

      #86588
      David Siqueira
      Participante

        Vargas, é possivel sim, você pode usar as seguintes visões para tal :

        V$ACCESS
        V$SQLAREA
        V$SESSION

        Com um join entre elas acredito que você consiga saber quem, quando e onde acessaram essa tabela e se a mesma esta em uso no momento da sua verificação.

        Abcs.

        David

        #86610
        mpvargas
        Participante

          Valeu David,
          Vc tem algum exemplo de query para eu usar?

          #86613
          David Siqueira
          Participante

            Tenho sim , segue abaixo, depois você customiza pra sua melhor utilização :

            SET LINESIZE 255
            SET VERIFY OFF

            COLUMN object FORMAT A30

            SELECT a.object,
            a.type,
            a.sid,
            b.username,
            b.osuser,
            b.program
            FROM v$access a,
            v$session b
            WHERE a.sid = b.sid
            AND a.owner = UPPER('&1')
            ORDER BY a.object;

            Outra:

            accept sid prompt "Sid do usuario ou (Enter)=Todos: "
            set ver off
            col data new_value data noprint
            col hora new_value hora noprint
            set term off pause off
            --select to_char(sysdate,'ddmmyy') data from dual;
            --select to_char(sysdate,'hh24miss') hora from dual;
            set term on pause oFF
            --spool vsqlexec.lst
            break on sid on osuser
            col sid format 999
            col osuser format a10 wra
            col sql_text format a40 wra
            col executions format 9999999999 heading 'EXECUTE'
            col loads format 999999
            col invalidations format 999 heading 'INV.'
            col users_executing format 9999 heading 'USERS|EXEC.'
            col parse_calls format 999999999 heading 'PARSE|CALLS'
            col sorts format 999
            col version_count format 9999 heading 'VERSION|COUNT'
            select s.sid,s.osuser,t.sql_text,t.rows_processed,t.first_load_time,t.users_executing,t.version_count,t.executions,t.loads,t.invalidations,t.parse_calls,t.sorts
            from sys.v_$sqlarea t, sys.v_$session s
            where t.hash_value = s.sql_hash_value
            and t.address = s.sql_address
            --and ('&sid' is null or s.sid in (&sid))
            and ('&sid' is null or s.sid = '&sid')
            order by s.sid;

            Espero que te ajude.

            Abraço.

            David

            #86614
            mpvargas
            Participante

              Valeu camarada.
              Obrigado.

            Visualizando 5 posts - 1 até 5 (de 5 do total)
            • Você deve fazer login para responder a este tópico.