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

dans Oracle, y a-t-il un moyen de savoir quand une table particulière a été créée?

de même, y a-t-il un moyen de savoir quand une ligne particulière a été insérée/mise à jour pour la dernière fois?

36
demandé sur a_horse_with_no_name 2010-12-14 20:47:06

5 réponses

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

vous indiquera 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 les privilèges SELECT sur la table).

la réponse générale pour obtenir des horodateurs à partir d'une ligne, cependant, est que vous ne pouvez obtenir ces données que si vous avez ajouté des colonnes pour suivre cette information (en supposant, bien sûr, que votre application popule les colonnes aussi bien). Il existe cependant plusieurs cas particuliers. Si le DML se produisait relativement récemment (très probablement dans les dernières heures), vous devriez être en mesure d'obtenir les horodateurs à partir d'une requête de flashback. Si le DML s'est produit dans les derniers jours (ou peu importe combien de temps vous conservez vos journaux archivés), vous pouvez utiliser LogMiner pour extraire les horodateurs, mais cela va être une opération très coûteuse, en particulier si vous obtenez des horodateurs pour de nombreuses rangées. Si vous construisez la table avec les dépendances de ligne activées (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 dernière date de modification et numéro de modification du système (NSC) pour la rangée. Par défaut, cependant, sans les dépendances de rang, le SCN est seulement au niveau du bloc. SCN_TO_TIMESTAMP la fonction ne va pas non plus être en mesure de mapper les SCN aux horodateurs pour toujours.

50
répondu Justin Cave 2010-12-14 18:08:30

Vous pouvez interroger le dictionnaire de données / les vues de catalogue pour savoir quand un objet a été créé ainsi que L'heure du dernier DDL impliquant l'objet (exemple: alter table)

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

la colonne "créé" vous indique quand l'objet a été créé. La colonne "LAST_DDL_TIME" vous indique quand la dernière DDL a été effectuée par rapport à l'objet.

comme pour quand une ligne particulière a été insérée / mise à jour, vous pouvez utiliser des colonnes d'audit comme une colonne "insert_timestamp" ou utiliser un déclencheur et remplir une table d'audit

7
répondu bhangm 2010-12-14 18:06:32
SELECT CREATED FROM USER_OBJECTS WHERE OBJECT_NAME='<<YOUR TABLE NAME>>'
4
répondu Saurabh Gadariya 2014-10-26 16:11:19

vous copiez et collez le code suivant. Il affichera toutes les tables avec nom et date de création

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

Remarque: Remplacer '%table_name%' avec le nom de la table que vous recherchez.

2
répondu shary.sharath 2015-05-21 10:50:50

Essayez cette requête:

SELECT sysdate FROM schema_name.table_name;

Ceci devrait afficher l'horodatage que vous pourriez avoir besoin.

-2
répondu Deepjyoti Dev 2016-01-25 14:38:04