Pular para o conteúdo

Oracle V$SESSION_LONGOPS: Monitoramento de Longas Operações e Tempo Restante de Backups RMAN

V$SESSION_LONGOPS

No Oracle 8.0, a View V$SESSION_LONGOPS foi criada para permitir que certos processos dêem alguma dica sobre quanto tempo irá durar o trabalho que estão fazendo. Os backups em RMAN eram os principais motivos para a criação desta View.

No Oracle 8i, a V$SESSION_LONGOPS foi expandida para incluir:

  • Rman Backup and Restore
  • Parallel Query
  • Recovery
  • Full Table Scans (válido apenas para tabelas com mais de 10.000 blocos formatados)
  • Sorting

Tenha em mente que só aparecem nesta View operações únicas, como um Full Table Scan. SELECTs que utilizam índices, por maiores que sejam, são várias pequenas operações (consulta ao índice, consulta a tabela, consulta o índice de novo, consulta a tabela de novo…), e não irão aparecer nesta View.

Ela tem sido mais útil para mim quando o cliente pergunta “Quanto falta para este backup terminar?”

SQL
SELECT SID,SERIAL#,START_TIME,((SOFAR/TOTALWORK)*100),'%',MESSAGE FROM V$SESSION_LONGOPS where TIME_REMAINING > 0 ORDER BY TIME_REMAINING;

Ricardo Portilho Proni

Ricardo Portilho Proni

Com 20 anos de experiência profissional, Oracle ACE Member – eleito pela Oracle Corporation um dos maiores especialistas do mundo em Oracle Database- Trabalhou em grande parte dos maiores bancos de dados Oracle do Brasil. Certificado em Oracle, SQL Server, DB2, MySQL, Sybase e Websphere. Conselheiro do GPO e do GUOB, palestrante do ENPO, GUOB Tech Day e Oracle Open World, escritor da Revista SQL Magazine e Instrutor na Nerv.

Comentário(s) da Comunidade

  1. Verdade Portilho, eu usei muito , segue minha contribuição em forma de script :

    RAC:
    clear col
    clear computes
    clear breaks
    clear buffer

    SET LINESIZE 200
    COLUMN sid FORMAT 9999
    COLUMN serial# FORMAT 9999999
    COLUMN machine FORMAT A30
    COLUMN progress_pct FORMAT 99999999.00
    column username for a15
    COLUMN elapsed FORMAT A10
    COLUMN remaining FORMAT A10
    COlumn Logon for a15
    col module for a20
    Column status for a10

    SELECT distinct(s.inst_id),
    s.sid,
    s.serial#,
    p.spid,
    s.status,
    to_char(s.logon_time,’dd/mm/yy hh24:mi’) as Logon,
    s.username,
    s.module,
    ROUND(sl.elapsed_seconds/60) || ‘:’ || MOD(sl.elapsed_seconds,60) elapsed,
    ROUND(sl.time_remaining/60) || ‘:’ || MOD(sl.time_remaining,60) remaining,
    ROUND(sl.sofar/sl.totalwork*100, 2) progress_pct
    FROM gv$session s,
    gv$session_longops sl,
    gv$process p
    WHERE s.sid = sl.sid
    AND s.inst_id = sl.inst_id
    AND s.serial# = sl.serial#
    AND p.pid = s.sid
    order by logon desc;

    Single Instance:

    set line 200;
    set pagesize 30;
    set head on;

    col username format a15 heading Usuario;
    col sid format 9999 heading Sid;
    col serial# format a5;
    col username format a7 heading “Usuario”;
    col osuser format a10 heading “Op.User”;
    col terminal format a10 heading “Maquina”;
    col opname format a20 heading “Operação”;
    col %Completo format 99999;
    col message format a50 heading “Mensagen”;
    col Inicio for a10

    break on username on osuser on terminal on Serial on Sid;
    prompt “::::::::::::::::::::::::::::::::::::::::::::::::::::::”
    prompt
    accept a prompt “.. Entre com o Usuario…:”
    accept id prompt “…. Entre com o Id do Usuario..:”
    prompt
    prompt “::::::::::::::::::::::::::::::::::::::::::::::::::::::”

    select a.sid ,
    a.serial# “Serial”,
    a.username,
    a.osuser,
    a.terminal,
    b.opname,
    to_char(b.start_time,’HH24:MI:SS’) “Inicio”,
    (b.sofar/b.totalwork)*100 “%Completo”,
    b.message
    from v$session a,
    v$session_longops b
    where a.serial#=b.serial#
    and a.sid(+)=b.sid
    and a.username like upper(nvl(‘%&a%’,a.USERNAME))
    and a.sid in (nvl(&id,a.sid))
    and (b.sofar/b.totalwork)*100

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Marcações:
plugins premium WordPress