Как узнать, когда в Oracle была создана конкретная таблица? - PullRequest
37 голосов
/ 14 декабря 2010

В Oracle, есть ли способ узнать, когда была создана конкретная таблица?

Аналогично, есть ли способ узнать, когда была добавлена ​​/ последний раз обновлена ​​определенная строка?

Ответы [ 5 ]

56 голосов
/ 14 декабря 2010
SELECT created
  FROM dba_objects
 WHERE object_name = <<your table name>>
   AND owner = <<owner of the table>>
   AND object_type = 'TABLE'

сообщит вам, когда была создана таблица (если у вас нет доступа к DBA_OBJECTS, вы можете вместо этого использовать ALL_OBJECTS, если у вас есть привилегии SELECT для таблицы).

Общий ответ на получение временных меток из строки, тем не менее, заключается в том, что вы можете получить эти данные, только если добавили столбцы для отслеживания этой информации (при условии, конечно, что ваше приложение также заполняет столбцы). Однако существуют различные особые случаи. Если DML произошел сравнительно недавно (скорее всего, в последние пару часов), вы сможете получить временные метки из запроса флэшбэка. Если DML произошел в последние несколько дней (или сколько времени вы храните свои архивные журналы), вы можете использовать LogMiner для извлечения временных меток, но это будет очень дорогая операция, особенно если вы получаете временные метки для многих строк. Если вы строите таблицу с включенным ROWDEPENDENCIES (не по умолчанию), вы можете использовать

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

для получения даты последней модификации и SCN (номер системного изменения) для строки. По умолчанию, однако, без ROWDEPENDENCIES, SCN находится только на уровне блока. Функция SCN_TO_TIMESTAMP также не сможет навсегда отображать SCN на временные метки.

8 голосов
/ 14 декабря 2010

Вы можете запросить представления словаря / каталога данных, чтобы узнать, когда был создан объект, а также время последнего DDL, связанного с объектом (пример: изменить таблицу)

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

Столбец "CREATED""говорит вам, когда объект был создан.Столбец "LAST_DDL_TIME" сообщает вам, когда последний объект DDL был выполнен для объекта.

Что касается того, когда конкретная строка была вставлена ​​/ обновлена, вы можете использовать столбцы аудита, такие как столбец "insert_timestamp", или использовать триггер изаполнить таблицу аудита

3 голосов
/ 21 мая 2015

Вы копируете и вставляете следующий код.В нем будут отображаться все таблицы с Именем и датой создания

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

Примечание: Замените '% table_name%' на имя таблицыВы ищете.

3 голосов
/ 26 октября 2014
SELECT CREATED FROM USER_OBJECTS WHERE OBJECT_NAME='<<YOUR TABLE NAME>>'
0 голосов
/ 25 января 2016

Попробуйте этот запрос:

ВЫБРАТЬ sysdate ОТ схемы_имя.имя_таблицы;

Это должно отобразить временную метку, которая может вам понадобиться.

...