La solución más obvia para reducir la contención de disco es reducir las entradas I/O. esto se logra distribuyendo las I/O sobre las diferentes unidades de disco lógicas que tiene el servidor. Para distribuir las entradas de I/O será necesario mover los Datafiles que estén saturados en lectura y escritura. Lo que se debe hacer primero es identificar dichos Datafiles mediante las vistas dinámicas V$FILESTAT y V$DATAFILE.
Nota: V$FILESTAT y V$DATAFILE no funcionan para Tablespaces temporales. Para monitorear tablespaces temporales se debe usar V$TEMPFILE y V$TEMPSTATS.
SQL> col name format a25
SQL> SELECT name, phyrds, phywrts, readtim, writetim 2
FROM v$filestat a, v$datafile b 3 WHERE a.file#=b.file#;
Mediante esta consulta es posible identificar los Datafiles que tienen la mayor cantidad de lecturas y escrituras. Una vez identificados los Datafiles procedemos a mover los tablespaces a otra unidad/partición para equilibrar I/O: Para esto tenemos que seguir los siguientes pasos:
- Tomamos el tablespace correspondiente al datafile que tiene la mayor cantidad de I/O y lo ponemos en estado Offline
SQL> ALTER TABLESPACE USERS OFFLINE;
- Copiamos el Datafile a la nueva ubicación (En otra partición/disco)
- Renombramos el Datafile apuntándolo a la nueva ubicación
SQL> ALTER DATABASE USERS RENAME DATAFILE
2 'D:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP10G\USERS01.dbf' to
3 'H:\ORACLE\PRODUCT\10.1.0\ORADATA\OCP10G\USERS01.dbf';
- Volvemos a poner el tablespace en estado Online
SQL> ALTER TABLESPACE USERS OFFLINE;
- Verificamos si el Control File actualizó la base de datos mediante la vista dinámica V$DATAFILE
SQL> col name format a50
SQL> select file#, name from v$datafile;
0 comentarios:
Publicar un comentario