Pregunta

En Oracle, hay una manera de averiguar cuándo se creó una tabla en particular?

Del mismo modo, hay una manera de averiguar cuando se inserta una fila en particular / actualizó por última vez?

¿Fue útil?

Solución

SELECT created
  FROM dba_objects
 WHERE object_name = <<your table name>>
   AND owner = <<owner of the table>>
   AND object_type = 'TABLE'

le dirá cuando se creó una mesa (si usted no tiene acceso a DBA_OBJECTS, se puede utilizar en lugar ALL_OBJECTS suponiendo que tiene privilegios de SELECT en la tabla).

La respuesta general a conseguir marcas de tiempo de una fila, sin embargo, es que sólo se puede conseguir que los datos si ha añadido columnas para realizar un seguimiento de esa información (suponiendo, por supuesto, que su solicitud rellena las columnas también). Hay varios casos especiales, sin embargo. Si el LMD ocurrió hace relativamente poco (muy probablemente en el último par de horas), usted debe ser capaz de obtener las marcas de tiempo de una consulta de flashback. Si el DML que sucedió en los últimos días (o el tiempo que mantener sus registros archivados), se puede usar para extraer LogMiner las marcas de tiempo, sino que va a ser una operación muy costosa especialmente si usted está recibiendo marcas de tiempo para muchas filas. Si se construye la tabla con habilitadas ROWDEPENDENCIES (no el valor por defecto), puede utilizar

SELECT scn_to_timestamp( ora_rowscn ) last_modified_date,
       ora_rowscn last_modified_scn,
       <<other columns>>
  FROM <<your table>>

para obtener la última fecha de modificación y el SCN (System Change Number) para la fila. Por defecto, sin embargo, sin ROWDEPENDENCIES, el SCN es sólo a nivel de bloque. La función SCN_TO_TIMESTAMP tampoco va a ser capaz de asignar a SCN de marcas de tiempo para siempre.

Otros consejos

Puede consultar las vistas del diccionario de datos / Catálogo para saber cuando un objeto fue creado, así como el momento de la última DDL que implica el objeto (ejemplo: alter table)

select * 
  from all_objects 
 where owner = '<name of schema owner>'
   and object_name = '<name of table>'

La columna "creó" le indica cuándo se creó el objeto. La columna "LAST_DDL_TIME" le dice cuando el último DDL se llevó a cabo contra el objeto.

En cuanto a cuándo se inserta una fila en particular / modificada, puede utilizar columnas de auditoría como una columna "insert_timestamp" o utilizar un disparador y poblar una tabla de auditoría

SELECT CREATED FROM USER_OBJECTS WHERE OBJECT_NAME='<<YOUR TABLE NAME>>'

copia y pega el siguiente código. Se mostrará todas las tablas con Nombre y Fecha de Creación

SELECT object_name,created FROM user_objects
WHERE object_name LIKE  '%table_name%'
AND object_type = 'TABLE'; 

Nota:. Reemplazar 'nombre_tabla%%' con el nombre de la tabla que busca

Trate de esta consulta:

sysdate SELECT FROM nombre.esquema.nombre.tabla;

Esto debería mostrar la marca de tiempo que pueda necesitar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top