sql >> Database >  >> RDS >> Oracle

Hoe kom ik erachter wanneer een bepaalde tabel in Oracle is gemaakt?

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

zal u vertellen wanneer een tabel is gemaakt (als u geen toegang heeft tot DBA_OBJECTS, kunt u in plaats daarvan ALL_OBJECTS gebruiken, ervan uitgaande dat u SELECT-rechten voor de tafel heeft).

Het algemene antwoord op het verkrijgen van tijdstempels uit een rij is echter dat u die gegevens alleen kunt krijgen als u kolommen hebt toegevoegd om die informatie bij te houden (ervan uitgaande natuurlijk dat uw toepassing de kolommen ook vult). Er zijn echter verschillende speciale gevallen. Als de DML relatief recent is gebeurd (hoogstwaarschijnlijk in de afgelopen paar uur), zou u de tijdstempels van een flashback-query moeten kunnen krijgen. Als de DML de afgelopen dagen is gebeurd (of hoe lang u uw gearchiveerde logboeken ook bewaart), kunt u LogMiner gebruiken om de tijdstempels te extraheren, maar dat wordt een erg dure operatie, vooral als u tijdstempels krijgt voor veel rijen. Als u de tabel bouwt met ROWDEPENDENCIES ingeschakeld (niet de standaard), kunt u

SELECT scn_to_timestamp( ora_rowscn ) last_modified_date,
       ora_rowscn last_modified_scn,
       <<other columns>>
  FROM <<your table>>

om de laatste wijzigingsdatum en SCN (systeemwijzigingsnummer) voor de rij te krijgen. Standaard is de SCN echter zonder ROWDEPENDENCIES alleen op blokniveau. De SCN_TO_TIMESTAMP functie is ook niet in staat om SCN's voor altijd toe te wijzen aan tijdstempels.



  1. Hoe de FORMAT()-functie werkt in SQL Server (T-SQL)

  2. Automatisch verhogen na verwijderen in MySQL

  3. Rails:FATAL - Peer-authenticatie mislukt voor gebruiker (PG::Error)

  4. Voeg meerdere rijen in een array samen met SQL op PostgreSQL