SELECT created
FROM dba_objects
WHERE object_name = <<your table name>>
AND owner = <<owner of the table>>
AND object_type = 'TABLE'
vous dira quand une table a été créée (Si vous n'avez pas accès à DBA_OBJECTS, vous pouvez utiliser ALL_OBJECTS à la place si vous avez des privilèges SELECT sur la table). Cependant, la réponse générale à l'obtention d'horodatages d'une ligne est que vous ne pouvez obtenir ces données que si vous avez ajouté des colonnes pour suivre ces informations (en supposant, bien entendu, que votre application remplisse également les colonnes). Il existe cependant différents cas particuliers. Si le DML est arrivé relativement récemment (probablement au cours des deux dernières heures), vous devriez être en mesure d'obtenir l'horodatage d'une requête de retour de flamme. Si le DML a eu lieu ces derniers jours (ou aussi longtemps que vous gardez vos logs archivés), vous pouvez utiliser LogMiner pour extraire les timestamps mais cela va être une opération très coûteuse, surtout si vous recevez des timestamps pour plusieurs lignes. Si vous construisez la table avec ROWDEPENDENCIES activé (non par défaut), vous pouvez utiliser
SELECT scn_to_timestamp(ora_rowscn) last_modified_date,
ora_rowscn last_modified_scn,
<<other columns>>
FROM <<your table>>
pour obtenir la dernière date de modification et SCN (numéro de changement de système) pour la ligne. Par défaut, cependant, sans ROWDEPENDENCIES, le SCN est uniquement au niveau du bloc. La fonction SCN_TO_TIMESTAMP
ne pourra pas non plus mapper les SCN aux horodatages pour toujours.
Et en quoi est-ce différent de la réponse acceptée de 4 ans? –
Ici, j'utilise une table différente de rien d'autre. [Différence entre dba_object et user_object] (https://community.oracle.com/thread/929286?tstart=0) –
Veuillez éditer votre réponse pour ajouter une explication du fonctionnement de votre code et de la manière dont il résout le problème du PO. Beaucoup d'affiches sont des débutants et ne comprendront pas le code que vous avez posté. –