Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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 произошел относительно недавно (скорее всего, за последние пару часов), вы должны получить метки времени из запроса flashback. Если 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 на временные метки навсегда.

Ответ 2

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

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

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

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

Ответ 3

SELECT CREATED FROM USER_OBJECTS WHERE OBJECT_NAME='<<YOUR TABLE NAME>>'

Ответ 4

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

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

Примечание. Замените '% table_name%' на имя таблицы, которое вы ищете.

Ответ 5

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

SELECT sysdate FROM schema_name.table_name;

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