2012-03-28 4 views
0

Я новичок в мире oracle/sql., И я знаю, как найти ответ самостоятельно, искать и снова искать .. но для моей новой проблемы i d'ont найти хороший ответ, поэтому я просто хочу найти историю манипулирования базой данных, фильтруя пользователя, который создал последние таблицы, какие таблицы, когда он создал его и т. д. является sql oracleпоиск истории для всех таблиц, созданных пользователем

I Использует oracle XE, а клиент - жаба.

я попробовать с

select table_name from sys.dba_tables where owner='system' 

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

ответ

2

Соответствие строкам чувствительно к регистру, и большинство вещей в словаре данных хранятся во всех верхних регистрах как общее правило. Так что ваш пример запрос должен возвращать несколько строк, если изменить буквальную к верхнему регистру:

select table_name from sys.dba_tables where owner='SYSTEM' 

Если вы хотите, чтобы просмотреть недавно созданные таблицы, вы должны присоединиться к этому с dba_objects и использовать created столбец там фильтровать или сортировать.

Конечно, если вы действительно хотите увидеть таблицы для схемы, в которую вы в настоящее время вошли, user_tables - это лучший взгляд на запрос.

За свой комментарий, вот как получить последнее изменение времени для каждой таблицы:

select table_name, last_ddl_time 
    from dba_tables t 
     join dba_objects o 
     on o.object_name=t.table_name and o.object_type='TABLE' and o.owner = t.owner 
    where t.owner='SYSTEM' 
    and last_ddl_time >= date '2011-01-02' 
    and last_ddl_time < date '2011-01-10' 

(. Обратите внимание, что «модифицированный» означает изменение в определение таблицы, а не в нем данные)

+0

отличный первый запрос., я ставлю систему в верхнем ase 'SYSTEM', и теперь я вижу все таблицы, созданные в прошлом году .. но все еще ожидаю, как искать в этих таблицах для явной даты. let say 01/02/2011 –

+0

Я имею в виду, что хочу знать таблицы, которые был создан или таблицы, которые имеют модификации с 01/02/2011 по 01/09/2011 пользователем 'SYSTEM' –

+0

Обновленный ответ, чтобы показать, как получить дату изменения таблицы –

0

Выполните одно из следующих действий:

select * from tab; 

или

select * from user_tables; 

И даст список таблиц, созданных пользователем (вы).

+0

не подходит для вашего ответа, потому что в таблице column_name и в другом столбце table_type используется множество таблиц, генерируемых oracle xe, а в другом столбце table_type, если это вид, последовательность, таблица .. поэтому я хочу видеть таблицы, которые были созданы им пользовательская система несколько месяцев назад, и если мы можем выбрать и дату создания таблиц, это замечательно –

Смежные вопросы