En Oracle, hay una manera de averiguar cuando una tabla en particular fue creado?

Del mismo modo, hay una manera de averiguar cuando una fila en particular fue insertado/última actualización?

InformationsquelleAutor Moeb | 2010-12-14

5 Comentarios

  1. 57
    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 usted no tiene acceso a DBA_OBJECTS, usted podría utilizar ALL_OBJECTS en lugar de asumir que usted tiene los privilegios SELECT sobre la tabla).

    La respuesta general a la obtención de marcas de tiempo a partir de una fila, sin embargo, es que sólo se puede conseguir que los datos si ha añadido columnas para el seguimiento de esa información (suponiendo, claro, que su aplicación rellena las columnas así). Hay varios casos especiales, sin embargo. Si el DML sucedió hace relativamente poco (más probable en el último par de horas), usted debería ser capaz de obtener la fecha y hora a partir de un flashback de consulta. Si el DML sucedido en los últimos días (o el tiempo que usted mantenga sus archivos logs), podría usar LogMiner para extraer las marcas de tiempo, pero que va a ser una operación muy costosa, particularmente si usted está recibiendo de tiempo para el número de filas. Si la construcción de la tabla con ROWDEPENDENCIES habilitado (no el valor predeterminado), 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 SCN (cambio de sistema número) para la fila. Por defecto, aunque, sin ROWDEPENDENCIES, el SCN es sólo en el nivel de bloque. El SCN_TO_TIMESTAMP función no va a ser capaz de asignar SCN para las marcas de tiempo para siempre.

  2. 9

    Puede consultar el diccionario de datos/vistas de catálogo para averiguar cuando se crea un objeto, así como el tiempo de la última DDL que implican el objeto (ejemplo: alter table)

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

    La columna «CREADO», dice cuando se creó el objeto.
    La columna «LAST_DDL_TIME» le dice cuando la última DDL se realizó contra el objeto.

    Como para cuando una fila en particular fue insertado o actualizado, puede utilizar auditoría columnas como un «insert_timestamp» de la columna o el uso de un disparador y rellenar una tabla de auditoría

  3. 3
    SELECT CREATED FROM USER_OBJECTS WHERE OBJECT_NAME='<<YOUR TABLE NAME>>'
    • Y ¿cómo es esto diferente a los 4 años de edad aceptado la respuesta?
    • Aquí estoy usando una tabla diferente nada más. Diferencia entre dba_object y user_object
    • Por favor, edita tu respuesta para agregar una explicación de cómo funciona el código y cómo se resuelve el OP del problema. Muchos carteles son novatos y no va a entender el código que has publicado.
  4. 3

    Copia y pega el siguiente código. Mostrará todas las tablas con Nombre y la Fecha de creación

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

    Nota: Reemplazar ‘%table_name%’ con el nombre de la tabla que usted está buscando.

  5. -3

    Pruebe esta consulta:

    SELECT sysdate DE schema_name.nombre_tabla;

    Esto debe mostrar la marca de tiempo que usted puede ser que necesite.

Dejar respuesta

Please enter your comment!
Please enter your name here