sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo saber cuándo se creó una tabla en particular en Oracle?

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

le dirá cuándo se creó una tabla (si no tiene acceso a DBA_OBJECTS, puede usar ALL_OBJECTS en su lugar, suponiendo que tiene privilegios SELECT en la tabla).

Sin embargo, la respuesta general para obtener marcas de tiempo de una fila es que solo puede obtener esos datos si ha agregado columnas para rastrear esa información (asumiendo, por supuesto, que su aplicación también llena las columnas). Sin embargo, hay varios casos especiales. Si el DML ocurrió hace relativamente poco tiempo (muy probablemente en las últimas dos horas), debería poder obtener las marcas de tiempo de una consulta de flashback. Si el DML ocurrió en los últimos días (o durante el tiempo que mantenga sus registros archivados), podría usar LogMiner para extraer las marcas de tiempo, pero será una operación muy costosa, especialmente si obtiene marcas de tiempo para muchas filas. Si crea la tabla con ROWDEPENDENCIES habilitado (no el valor predeterminado), puede usar

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 SCN (número de cambio del sistema) para la fila. Sin embargo, de forma predeterminada, sin ROWDEPENDENCIES, el SCN solo se encuentra en el nivel de bloque. El SCN_TO_TIMESTAMP la función tampoco podrá asignar SCN a marcas de tiempo para siempre.