Comunidad Oracle Hispana

Hola amigos,

Quería que me orienten en lo sgte.

Hay una particion que se llena al mes o  menos.  Pero veo que la redo y redo2 estan casi libres.

Como puedo decirle al sistema que quiero que cuando se llene esa particion "/osp/sesmf" comienze a escribir en "/osp/sesmf/db/redo" y luego cuando se llene esta escriba en "/osp/sesmf/db/redo2".

Se desea poder guardar 3 meses de datos, por ello se quiere usar esos directorios con poco uso.

 

Tengo la sgte secuencia pero no estoy seguro..por ello requiero ayuda

1)      sql>select file#, name from v$datafile;

         obtengo el datafile que se esta quedando sin espacio, digamos /osp/sesmf.dbf 

2)      sql>shutdown immediate;

3)      sql>alter database add datafile '/osp/sesmf/db/redo.dbf" to "/osp/sesmf/db/redo2.dbf" ?????

 

lis102 linus> df -k

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/cciss/c0d0p3 7754160 1871564 5482348 26% /

/dev/cciss/c0d0p7 11627168 238140 10788864 3% /tmp

/dev/cciss/c0d0p6 11627168 383368 10643636 4% /var

/dev/cciss/c0d0p2 75679908 9574404 62199108 14% /osp

/dev/cciss/c0d0p1 972168 34548 887440 4% /boot

tmpfs 8153920 0 8153920 0% /dev/shm

/dev/mapper/vg--sesmf-lvol--sesmf

281632596 195372608 71953892 74% /osp/sesmf <-----cada 30 dias o menos se llena

/dev/mapper/vg--redo-lvol--redo

287405472 605620 272200480 1% /osp/sesmf/db/redo <--al 1%, Se desea utilizar

/dev/mapper/vg--redo2-lvol--redo2

287405472 605620 272200480 1% /osp/sesmf/db/redo2 <--al 1% Se desea utilizar

/dev/mapper/vg--archive-lvol--archive

281632596 191580 267134920 1% /osp/sesmf/db/archive

 

Uno de los errores visto es asi :

Oracle error "Oracle ERROR:-1688" stopped pegging after having resized the tablespace "NXTSTE_TS0082".

sqlca.sqlerrm.sqlerrmc=ORA-01688: unable to extend table NXTSTE.TICKET_P partition ECD_190920

TABLESPACE_NAME  FILE_ID TOTAL_BYTES BYTES_USED BYTES_FREE  PCT_USED STATUS

---------------------- ---------- ----------- ---------- ---------- ---------- -------

FILE_NAME

------------------------------------------------------------

NXTSTE_TS0082 173  1073741824 1064370176 9371648  99.13 ONLINE

/osp/sesmf/db/data/nxtste/hb113_ticket_nxtste_TS0082_0163.dbf

NXTSTE_TS0082 174  747634688   720437248  27197440  96.36 ONLINE

/osp/sesmf/db/data/nxtste/hb113_ticket_nxtste_TS0082_0164.dbf

 

TableSpace Name  MB Allocated  MB Used  MB Free Pct Used   Pct Free

NXTSTE_TS0001       1737           700          37          97.88         2.12

NXTSTE_TS0002      2048           1700        348           83.01          16.99

NXTSTE_TS0003       2048     1699     349    82.97     17.03

NXTSTE_TS0004   1737     1700    37    97.88     2.12

NXTSTE_TS0005   1737    1701    36      97.93     2.07

NXTSTE_TS0006   1737     1704    33   98.11        1.89

NXTSTE_TS0007  1737     1700       37   97.88           2.12

NXTSTE_TS0082   2048     1995       53   97.42        2.58

NXTSTE_TS0083      2737     2646    91  96.68             3.32

NXTSTE_TS0084  2648     2580       68    97.44        2.56

NXTSTE_TS0085  3072       3021   51   98.35    1.65

NXTSTE_TS0086  3072        2956    116   96.23           3.77

NXTSTE_TS0087  3072     2939    133   95.68   4.32

 

Cualquier ayuda será bienvenida

Gracias

Alv

Visitas: 135

Responde a esto

Respuestas a esta discusión

Buenas Tardes amigo.

El error nos muestra claramente que el tablespaces (NXTSTE_TS0082) se ha quedado sin espacio.

Lo primero que debes validar es si tienes espacio suficiente en disco para ampliar el tablespaces afectado. En caso de que tengas espacio suficiente en disco, debes agregar nuevos datafiles de la siguiente manera:

Por ejemplo, para agregar un nuevo datafile de 1GB:

ALTER TABLESPACE NXTSTE_TS0082 ADD DATAFILE '/osp/sesmf/db/redo2.dbf ' SIZE 1024M AUTOEXTEND OFF;

Por otra parte, como ya tienes identificado el datafile que se quedó sin espacio, te recomiendo ubicar los objetos que contiene dicho datafile con la siguiente consulta:

SELECT distinct segment_type, owner, segment_name
FROM dba_extents
WHERE file_id = (select file_id from dba_data_files where file_name='/osp/sesmf/db/redo.dbf')

En este sentido, si la mayoría son tablas particionadas puedes depurar las particiones mas viejas o aquellas que ya no necesites. De esta manera también liberas espacio.

Saludos Cordiales.

Hola Erick,

Habia contruido la sgte sentencias antes de recibir tu ayuda, la cual agradesco desde ya.

Podrías darle un vistazo e indicar los errores q puedas ver?

Gracias

 

1)To Generate the tablespace report:

SQL>select a.tablespace_name,

round(a.bytes_alloc / 1024 / 1024, 0) total_mb,

round((a.bytes_alloc-b.bytes_free)/1024/1024,0) mb_used,

round(nvl(b.bytes_free, 0) / 1024 / 1024, 0) mb_free,

round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100,2) Pct_Free

from ( select f.tablespace_name,

sum(f.bytes) bytes_alloc,

sum(decode(f.autoextensible, 'YES',f.maxbytes,'NO', f.bytes)) maxbytes

from dba_data_files f

group by tablespace_name) a,

( select f.tablespace_name,

sum(f.bytes) bytes_free

from dba_free_space f

group by tablespace_name) b

where a.tablespace_name = b.tablespace_name (+)

order by pct_free ;

 

Identify the datafile in tablespace output generate by above sentence, lets say is this as example :

            /osp/sesmf/db/data/nxtste/

2)SQL> alter tablespace ‘osp/sesmf/db/nxtste’ add datafile ‘/osp/sesmf/db/redo.dbf’ autoextend on;

3)SQL> alter tablespace ‘osp/sesmf/db/nxtste’ add datafile ‘/osp/sesmf/db/redo2.dbf’ autoextend on;

 

Nuevamente muchas gracias

 

Alv

3 pequeñas observaciones

[A].  Estan el mismo espacio de almacenamiento los redo logs y los datafiles (/ops/sesmf/db)? ( MALA IDEA) esto incrementara el tiempo del Logwriter y  tus waits empezaran a consumir mas y mas tiempo a medida que crecen los datafiles  , ademas que los checkpoints tomaran mas tiempo.

 

[B] Esta es una base de datos con ASM ?  ( Casi seguro que no )  has revisado las marcas de agua de las tablas / indices , probablemente un coalesce o un shrink en algun cosa pueda ayudar. Como medidas desesperadas los rebuild indexes ahorraran un poco de espacio.

 

[C]  Realizar una planificacion de consumo de recursos disco/Memoria/CPU/Network/Cintas Backup ( Capacity Plan),  es una muy buena herramienta para mostrar lo util que los DBA podemos ser. Recetas para mostrar cuanto esta cosumido en disco existen muchas , no inventes el agua azucarada observa la vista ( DBA_TABLESPACE_USAGE_METRICS la columna  USED_PERCET).  Mi preferencia particular es no crear datafiles con autoextend on , pues pierdo la uniformidad de los datafiles ( Escencial cuando quieres repartir la carda de trabajo de lectura y escritura , ademas que en las operaciones en paralelo no es optimo tener los datafiles de distinto tamaño)

 

 

Creo que la mejor forma de manejar el escenario, es vía ASM.   Es de fácil implementación bajo las nuevas versiones, y permite la nivelación de carga y distribucion deseada.


Obviamente, se debe intentar dejar data de redo o acciones del motor, en forma separada, sino la contención será la misma.


Saludos.

Responder a debate

RSS

Siguenos en Twitter

Escucha nuestro podcast!

Eventos

Insignia

Cargando…

© 2013   Creado por Fernando Garcia.

Insignias  |  Informar un problema  |  Términos de servicio