Cuando trabajamos con backups muy grandes y estamos en medio de un RESTORE de la Base de Datos, algunas veces parece no terminar o pareciera que no sucede nada.
Es cuando comenzamos a ponernos ansiosos por que sabemos que ante la miníma falla, el RESTORE se detendrá y es tiempo que muchas veces no tenemos.
Por ello investigando un poco en la documentación encontre una query muy buena que nos dice que Porcentaje fue restoreado ( hecho al momento de la query ) y que porcentaje es necesario para la culminación de la pieza.
SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK, ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE" FROM V$SESSION_LONGOPS WHERE OPNAME LIKE 'RMAN%' AND OPNAME NOT LIKE '%aggregate%' AND TOTALWORK != 0 AND SOFAR <> TOTALWORK ;
Recordemos que si tenemos varias piezas de backup , este indicador , nos mostrará dichos porcentajes, por pieza que se este ejecutando.
Si tenemos varias piezas de backup, por ejemplo tres, podremos observar los porcentajes de la pieza uno y cuando finalice y lo veamos en el alert.log , al mismo tiempo nos muestra 100% terminado y nos devuelve «no rows selected», pero si seguimos ejecutando el query podemo observar que el contador comienza de nuevo con la pieza numero dos.
No olvidemos cuando alocamos varios CHANNELS ( Es la manera en cual lo utilizo en mi cluster ), la Query nos retornara , la cantidad de piezas por THREADS abiertos.
Les dejo un ejemplo de la ejecución de la query en un modo de recuperación que aloca varios THREADS.
SQL> SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK, ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE" FROM V$SES 2 SION_LONGOPS WHERE OPNAME LIKE 'RMAN%' AND OPNAME NOT LIKE '%aggregate%' AND TOTALWORK != 0 AND SOFA 3 4 5 6 7 R <> TOTALWORK ; 8 SID SERIAL# CONTEXT SOFAR TOTALWORK %_COMPLETE ---------- ---------- ---------- ---------- ---------- ---------- 647 19 1 10219264 13965312 73.18 651 77 1 7689923 8774144 87.64 646 5 1 7707102 8784064 87.74 645 1 1 8079297 9577984 84.35 SQL> SQL> r 1 SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK, 2 ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE" 3 FROM V$SESSION_LONGOPS 4 WHERE OPNAME LIKE 'RMAN%' 5 AND OPNAME NOT LIKE '%aggregate%' 6 AND TOTALWORK != 0 7 AND SOFAR <> TOTALWORK 8* SID SERIAL# CONTEXT SOFAR TOTALWORK %_COMPLETE ---------- ---------- ---------- ---------- ---------- ---------- 647 19 1 10825656 13965312 77.52 651 77 1 7919040 8774144 90.25 646 5 1 7843550 8784064 89.29 645 1 1 8296382 9577984 86.62 SQL> r 1 SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK, 2 ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE" 3 FROM V$SESSION_LONGOPS 4 WHERE OPNAME LIKE 'RMAN%' 5 AND OPNAME NOT LIKE '%aggregate%' 6 AND TOTALWORK != 0 7 AND SOFAR <> TOTALWORK 8* SID SERIAL# CONTEXT SOFAR TOTALWORK %_COMPLETE ---------- ---------- ---------- ---------- ---------- ---------- 647 19 1 11815479 13965312 84.61 646 5 1 8652033 8784064 98.5 645 1 1 9221032 9577984 96.27 SQL> r 1 SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK, 2 ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE" 3 FROM V$SESSION_LONGOPS 4 WHERE OPNAME LIKE 'RMAN%' 5 AND OPNAME NOT LIKE '%aggregate%' 6 AND TOTALWORK != 0 7 AND SOFAR <> TOTALWORK 8* SID SERIAL# CONTEXT SOFAR TOTALWORK %_COMPLETE ---------- ---------- ---------- ---------- ---------- ---------- 647 19 1 11887671 13965312 85.12 646 5 1 8764534 8784064 99.78 645 1 1 9292071 9577984 97.01 SQL> r 1 SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK, 2 ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE" 3 FROM V$SESSION_LONGOPS 4 WHERE OPNAME LIKE 'RMAN%' 5 AND OPNAME NOT LIKE '%aggregate%' 6 AND TOTALWORK != 0 7 AND SOFAR <> TOTALWORK 8* SID SERIAL# CONTEXT SOFAR TOTALWORK %_COMPLETE ---------- ---------- ---------- ---------- ---------- ---------- 647 19 1 12198711 13965312 87.35 645 1 1 9572148 9577984 99.94 SQL> r 1 SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK, 2 ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE" 3 FROM V$SESSION_LONGOPS 4 WHERE OPNAME LIKE 'RMAN%' 5 AND OPNAME NOT LIKE '%aggregate%' 6 AND TOTALWORK != 0 7 AND SOFAR <> TOTALWORK 8* SID SERIAL# CONTEXT SOFAR TOTALWORK %_COMPLETE ---------- ---------- ---------- ---------- ---------- ---------- 647 19 1 13956331 13965312 99.94 SQL> r 1 SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK, 2 ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE" 3 FROM V$SESSION_LONGOPS 4 WHERE OPNAME LIKE 'RMAN%' 5 AND OPNAME NOT LIKE '%aggregate%' 6 AND TOTALWORK != 0 7 AND SOFAR <> TOTALWORK 8*no rows selected
Espero le sea de utilidad como lo fue para mi.
Good ! thanks
Me gustaMe gusta