sobre - ¿Cómo saber cuándo se creó una tabla en particular en Oracle?
listar grants de usuario oracle (5)
En Oracle, ¿hay alguna forma de averiguar cuándo se creó una tabla en particular?
Del mismo modo, ¿hay alguna manera de averiguar cuándo se insertó / actualizó una fila en particular?
Copia y pega el siguiente código. 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: reemplace ''% table_name%'' con el nombre de la tabla que está buscando.
Prueba esta consulta:
SELECCIONAR sysdate FROM schema_name.table_name;
Esto debería mostrar la marca de tiempo que pueda necesitar.
Puede consultar las vistas de diccionario / catálogo de datos para averiguar cuándo se creó un objeto, así como la hora de la última DDL que involucra el objeto (ejemplo: modificar la tabla)
select *
from all_objects
where owner = ''<name of schema owner>''
and object_name = ''<name of table>''
La columna "CREATED" te dice cuándo se creó el objeto. La columna "LAST_DDL_TIME" le indica cuándo se realizó el último DDL contra el objeto.
En cuanto a cuándo se insertó / actualizó una fila en particular, puede usar columnas de auditoría como una columna "insertar marca de tiempo" o usar un desencadenador y rellenar una tabla de auditoría
SELECT CREATED FROM USER_OBJECTS WHERE OBJECT_NAME=''<<YOUR TABLE NAME>>''
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, podría usar ALL_OBJECTS en lugar de asumir que tiene privilegios SELECT en la tabla).
La respuesta general para obtener marcas de tiempo de una fila, sin embargo, es que solo puede obtener esos datos si ha agregado columnas para rastrear esa información (suponiendo, por supuesto, que su aplicación llene las columnas también). Sin embargo, hay varios casos especiales. Si el DML ocurrió hace relativamente poco tiempo (lo más probable en las últimas dos horas), debería poder obtener las marcas de tiempo de una consulta de retrospectiva. Si el DML ocurrió en los últimos días (o por el tiempo que guarde sus registros archivados), puede usar LogMiner para extraer las marcas de tiempo, pero va a ser una operación muy costosa, especialmente si obtiene marcas de tiempo para muchas filas. Si construye la tabla con ROWDEPENDENCIES habilitado (no el 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 fecha de la última modificación y SCN (número de cambio del sistema) para la fila. Sin embargo, por defecto, sin ROWDEPENDENCIES, la SCN solo se encuentra en el nivel de bloque. La función SCN_TO_TIMESTAMP
tampoco podrá mapear SCN a marcas de tiempo para siempre.