При подключении к oracle вы обычно подключаетесь к ОДНОЙ базе данных, и в этой базе данных у вас будет несколько схем.Эти схемы будут рассматриваться как «базы данных» в некоторых других системах rdbms.Каждая схема принадлежит пользователю БД, который может быть системным или обычным пользователем.Все таблицы / объекты, созданные в схеме, «принадлежат» владельцу схемы.
Таким образом, грубым методом отделения системных таблиц от пользовательских таблиц будет рассмотрение таблиц в схемах, принадлежащих системному пользователю, как системных таблиц.
Если в базе данных с версией 12c и выше вы можете сделать это следующим образом:
select t.table_name, t.owner, u.oracle_maintained
from dba_tables t, dba_users u
where t.owner = u.username
and rownum < 100;
Если версия ниже 12c, столбец oracle_maintained не существует, поэтому вам нужен этот обходной путь.Для 35 пользователей должно быть установлено наибольшее значение used_id.Пользователи системы обычно самые низкие в базе данных.
select t.table_name, t.owner, case when u.user_id > 35 then 'N' else 'Y' end systemgenerated
from dba_tables t, dba_users u
where t.owner = u.username
and rownum < 100;
Также: 'и rownum <100' должны быть заменены вашим собственным фильтром для таблиц. </p>