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?”
SELECT SID,SERIAL#,START_TIME,((SOFAR/TOTALWORK)*100),'%',MESSAGE FROM V$SESSION_LONGOPS where TIME_REMAINING > 0 ORDER BY TIME_REMAINING;
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
posso dizer que dia-a-dia eu aprendo muito mais com o GPO – Obrigado pela vossa colaboração
falta 4% para terminar o backup ufaaa
rsrsrs
Itimura