Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment savoir quand une table particulière a été créée dans Oracle ?

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 en supposant que vous avez des privilèges SELECT sur la table).

La réponse générale pour obtenir des horodatages à partir d'une ligne, cependant, est que vous ne pouvez obtenir ces données que si vous avez ajouté des colonnes pour suivre ces informations (en supposant, bien sûr, que votre application remplisse également les colonnes). Il existe cependant divers cas particuliers. Si le DML s'est produit relativement récemment (probablement au cours des deux dernières heures), vous devriez pouvoir obtenir les horodatages à partir d'une requête flashback. Si le DML s'est produit au cours des derniers jours (ou quelle que soit la durée pendant laquelle vous conservez vos journaux archivés), vous pouvez utiliser LogMiner pour extraire les horodatages, mais cela va être une opération très coûteuse, en particulier si vous obtenez des horodatages pour de nombreuses lignes. Si vous construisez la table avec ROWDEPENDENCIES activé (pas la valeur 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 date de la dernière modification et le SCN (numéro de modification du système) pour la ligne. Par défaut, cependant, sans ROWDEPENDENCIES, le SCN est uniquement au niveau du bloc. Le SCN_TO_TIMESTAMP La fonction ne pourra pas non plus mapper les SCN sur les horodatages pour toujours.