transponer registros multiple ejemplos developer columns columnas campo autoincremental auto_increment 11g oracle

registros - rownum oracle



Cómo reducir el espacio de tabla temporal en Oracle? (6)

¿Cómo podemos reducir el espacio de tabla temporal en Oracle? Y por qué está aumentando tanto como hasta 25 GB, ya que solo hay un esquema en la base de datos para la aplicación y el tamaño del espacio de la tabla de datos es de 2 GB y el tamaño del espacio de la tabla de índice es de 1 GB.


Aumentará porque necesita espacio de almacenamiento temporal, posiblemente debido a un producto cartesiano o una operación de clasificación grande.

La vista de rendimiento dinámico V$TEMPSEG_USAGE ayudará a diagnosticar la causa.


Deberías haber escrito qué versión de Oracle utilizas. Lo más probable es que use algo más que Oracle 11g, es por eso que no puede reducir un espacio de tabla temporal.

Alternativas:

1) alter database tempfile ''[your_file]'' resize 128M; que probablemente fallará
2) Suelta y recrea el tablespace. Si el espacio de tabla temporal que desea reducir es su espacio de tabla temporal predeterminado, primero deberá crear un nuevo espacio de tabla temporal, establecerlo como el espacio de tabla temporal predeterminado, luego colocar su anterior espacio de tabla temporal predeterminado y volver a crearlo. Luego, suelte la segunda tabla temporal creada. 3) Para Oracle 9i y superior, simplemente puede soltar los archivos temporales y agregar uno (s) nuevo (s)

Todo se describe here con gran detalle.

Vea este enlace: here
Ya estaba vinculado, pero tal vez te lo perdiste, así que aquí está de nuevo.


Las opciones para administrar espacios de tablas han mejorado mucho con respecto a las versiones que comienzan con 8i. Esto es especialmente cierto si está utilizando los tipos de archivos apropiados para un espacio de tabla temporal (es decir, archivos temporales gestionados localmente).

Por lo tanto, podría ser tan simple como este comando, que reducirá su tablespace a 128 meg ...

alter tablespace <your_temp_ts> shrink space keep 128M;

La documentación en línea de Oracle es bastante buena. Saber más.

editar

Parece que el OP tiene una versión anterior de la base de datos. Con versiones anteriores, tenemos que cambiar el tamaño de los archivos de datos individuales. Entonces, antes que nada, busque los nombres de los archivos. Una u otra de estas consultas debería hacerlo ...

select file_name from dba_data_files where tablespace_name = ''<your_temp_ts>'' / select file_name from dba_temp_files where tablespace_name = ''<your_temp_ts>'' /

Luego usa esa ruta en este comando:

alter database datafile ''/full/file/path/temp01.dbf'' resize 128m /


No me molesto en dejar caer la temperatura alternativa en caso de que necesite reclamar el almacenamiento nuevamente en el futuro ...

  1. desde el grupo de temperatura predeterminado a la temperatura independiente
  2. espere un momento, luego cambie el tamaño de los miembros del grupo temporal
  3. establecer por defecto de vuelta al grupo de temp
  4. espere un momento, cambie el tamaño de la temperatura individual. no hay prisa por dar el último paso

¡Oh Dios mío! ¡Mira el tamaño de mi espacio de mesa temporal! O ... cómo reducir espacios de tablas temporales en Oracle.

Sí, ejecuté una consulta para ver qué tan grande es mi espacio de tabla temporal:

SQL> SELECT tablespace_name, file_name, bytes 2 FROM dba_temp_files WHERE tablespace_name like ''TEMP%''; TABLESPACE_NAME FILE_NAME BYTES ----------------- -------------------------------- -------------- TEMP /the/full/path/to/temp01.dbf 13,917,200,000

La primera pregunta que debe hacerse es por qué el espacio de tabla temporal es tan grande. Usted puede saber la respuesta a esto en la parte superior de su cabeza. Puede deberse a una gran consulta que acaba de ejecutar con un tipo que fue un error (lo he hecho más de una vez). Puede deberse a alguna otra circunstancia excepcional. Si ese es el caso, entonces todo lo que necesita hacer para limpiar es reducir el espacio de tabla temporal y continuar en la vida.

¿Pero y si no sabes? Antes de que decida contraerse, es posible que deba investigar sobre las causas del espacio de tabla grande. Si esto sucede de manera regular, es posible que su base de datos solo necesite tanto espacio.

La vista de rendimiento dinámico

V$TEMPSEG_USAGE

puede ser muy útil para determinar la causa.

Tal vez simplemente no te importa la causa y solo necesitas reducirla. Este es su tercer día en el trabajo. Los datos en la base de datos son solo 200MiB si los datos y el espacio de tabla temporal son 13GiB. Simplemente córtalo y sigue. Si vuelve a crecer, investigaremos la causa. Mientras tanto, estoy sin espacio en ese volumen de disco y solo necesito recuperar el espacio.

Echemos un vistazo a reducirlo. Dependerá un poco de la versión de Oracle que esté ejecutando y de cómo se configuró el tablespace temporal.
Oracle hará lo mejor para evitar errores horrendos por lo que solo probaremos los comandos y, si no funcionan, nos encogeremos de una nueva manera.

Primero, intentemos reducir el tamaño del archivo de datos. Si podemos hacer eso, recuperamos el espacio y podemos preocuparnos sobre por qué creció mañana.

SQL> SQL> alter database tempfile ''/the/full/path/to/temp01.dbf'' resize 256M; alter database tempfile ''/the/full/path/to/temp01.dbf'' resize 256M * ERROR at line 1: ORA-03297: file contains used data beyond requested RESIZE value

Dependiendo del mensaje de error, puede probar esto con diferentes tamaños que son más pequeños que el sitio actual del archivo. He tenido un éxito limitado con esto. Oracle solo reducirá el tamaño del archivo si el espacio de tabla temporal está a la cabeza del archivo y si es más pequeño que el tamaño que especifique. Alguna documentación antigua de Oracle (corrigieron esto) decía que podía emitir el comando y que el mensaje de error le indicaba a qué tamaño podía recurrir. Para cuando comencé a trabajar como DBA esto no era cierto. Simplemente tenía que adivinar y volver a ejecutar el comando un montón de veces y ver si funcionaba.

Bien. Eso no funcionó. Qué tal esto.

SQL> alter tablespace YOUR_TEMP_TABLESPACE_NAME shrink space keep 256M;

Si estás en 11g (Maybee en 10g también) ¡esto es todo! Si funciona, es posible que desee volver al comando anterior y darle algunos intentos más.

Pero qué pasa si eso falla. Si el espacio de tabla temporal es el valor predeterminado temporal que se configuró cuando se instaló la base de datos, es posible que deba hacer mucho más trabajo. En este punto, normalmente vuelvo a evaluar si realmente necesito recuperar ese espacio. Después de todo, el espacio en disco solo cuesta $ X.XX a GiB. Por lo general, no quiero hacer cambios como este durante las horas de producción. Eso significa trabajar nuevamente a las 2AM! (No es que realmente me oponga a trabajar a las 2 AM, es solo que ... Bueno, me gusta dormir también. Y a mi esposa le gusta tenerme en casa a las 2 AM ... no vagabundear por las calles del centro a las 4AM tratando de recordar dónde Aparqué mi automóvil 3 horas antes. He oído hablar de ese asunto del "trabajo a distancia". Solo me preocupa que llegue a la mitad y luego falle la conectividad a Internet, entonces tengo que apresurarme en el centro para arreglarlo todo antes de que aparezcan las personas en la mañana para usar la base de datos).

Ok ... Volvamos a las cosas serias ... Si el espacio de tabla temporal que desea reducir es su espacio de tabla temporal predeterminado, primero tendrá que crear un nuevo espacio de tabla temporal, establecerlo como el espacio de tabla temporal predeterminado y luego colocar su anterior predeterminado predeterminado tablespace y recrearlo. Afterwords descarta la segunda tabla temporal creada.

SQL> CREATE TEMPORARY TABLESPACE temp2 2 TEMPFILE ''/the/full/path/to/temp2_01.dbf'' SIZE 5M REUSE 3 AUTOEXTEND ON NEXT 1M MAXSIZE unlimited 4 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M; Tablespace created. SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2; Database altered. SQL> DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES; Tablespace dropped. SQL> CREATE TEMPORARY TABLESPACE temp 2 TEMPFILE ''/the/full/path/to/temp01.dbf'' SIZE 256M REUSE 3 AUTOEXTEND ON NEXT 128M MAXSIZE unlimited 4 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M; Tablespace created. SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp; Database altered. SQL> DROP TABLESPACE temp2 INCLUDING CONTENTS AND DATAFILES; Tablespace dropped.

¡Con suerte, una de estas cosas ayudará!


alter database datafile ''C:/ORA_SERVER/ORADATA/AXAPTA/AX_DATA.ORA'' resize 40M;

Si no ayuda:

  • Crear un nuevo espacio de tablas
  • Cambiar a un nuevo tablespace temporal
  • Espere hasta que no se use el tablespace anterior
  • Eliminar el viejo espacio de tabla