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

Может ли кто-нибудь сказать мне, как я могу получить количество строк в каждой таблице в моей базе данных Oracle? Я нашел несколько запросов, но ни один из них не сработал, потому что я использую oracle 7 и sql plus 3.2, и в основном все, что я нашел, не сработало. Мне просто нужно что-то, что работало бы на sql plus 3.2.

Необходимые:

Строки имени таблицы

Таблица 1 0

Таблица 2 5

...

Можно ли это сделать чем-то вроде петли? Или что именно мне делать?


person kimoturbo    schedule 15.04.2015    source источник
comment
Почему вы все еще используете Oracle 7? Есть ли что-то, что мешает вам перейти на что-то более современное? Oracle 7 из 92 года ...   -  person philnate    schedule 15.04.2015
comment
SELECT table_name, num_rows from all_tables это таблица статистики, которую механизм db использует для определения оптимальных путей выполнения, они не 100%, но обычно достаточно близки. Также обратите внимание, all_tables ограничен тем, что у вас есть для просмотра. Если у вас нет прав доступа к таблице, вы не сможете увидеть количество таблиц / записей в результатах.   -  person xQbert    schedule 15.04.2015
comment
Вот что я пытаюсь сделать. Я пытаюсь выполнить обновление с Oracle 7 до 10g или 11g, но есть много вещей, которые мне нужно выяснить в базе данных, прежде чем я смогу выполнить обновление, чтобы я ничего не испортил, поскольку это база данных компании. Мне просто нужно знать, какие таблицы бесполезны, а какие можно отбросить. У них около 370 таблиц, и я уверен, что они используют только около 50 таблиц, поэтому мне нужно отбросить остальные, а затем я сам отреагирую на новую базу данных.   -  person kimoturbo    schedule 16.04.2015
comment
Это может быть актуально ... но 7 документов больно читать и еще труднее искать. stackoverflow.com/questions/2247310/   -  person xQbert    schedule 16.04.2015


Ответы (1)


если SELECT table_name, num_rows from all_tables не дает вам того, что вам нужно.

Вы можете использовать динамический SQL и считать, как выбран Рахул.

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

SELECT 'SELECT ' ||t.name || ' as tName, count(*) as Row_Cnt  
        FROM ' || t.name || ' UNION ALL '
FROM ALL_TABLES t

Просто не забудьте удалить последний оператор объединения в последнем запросе.

Также обратите внимание: если у вас нет доступа для просмотра таблицы, она не появится в этом списке!

--- Обновлено ------ Итак, если all_tables не существует, ничего из этого не сработает. Поскольку у меня нет под рукой экземпляра oracle 7 ... могли бы вы увидеть, возвращает ли SELECT * FROM dictionary что-нибудь, что могло бы создать список всех таблиц? Если вы найдете объект представления или таблицы, используйте его вместо all_tables выше.

Я сейчас читаю документы для oracle 7, но нахожу их немного удобными для поиска. таким образом, метод предположения и проверки может работать быстрее.

person xQbert    schedule 15.04.2015
comment
Обратите внимание, что этот вопрос касается Oracle 7 (!). Есть ли в Oracle 7 статистика оптимизатора и столбец num_rows? - person Jon Heller; 15.04.2015
comment
Я пробовал столбец num_rows, и он всегда давал мне нулевые ответы. Я попытался обновить его с помощью DBMS_STATS, но он сказал, что сначала нужно объявить DBM_STATA. Также я попытался выполнить аналогичный запрос к тому, который вы написали, и это тоже не сработало. Код SQL PLUS: выберите «select count (*) from» || владелец || '.' || table_name || ';' from dba_tables, где owner = 'xxxx' упорядочить по имени_таблицы; - person kimoturbo; 16.04.2015
comment
Вы правы, это скорее ›7 ответ. Мне пока не удалось найти свидетельства существования системных таблиц в 7. Есть ли в 7 даже словарь для перечисления доступных системных объектов, о которых вы могли бы узнать Select * from dictionary where table_name like '%TABLE%'? - person xQbert; 16.04.2015
comment
В Oracle 7 All_tables действительно существует, но проблема с num_rows, а не с All_tables. Он просто возвращает null, и когда я пытался использовать DBMS_STATS, как я нашел в Интернете. Он сказал, что это должно быть заявлено в первую очередь. Я не знаю насчет словаря from, но я не думаю, что это будет иметь значение, поскольку моя проблема заключается либо в подсчете строк, либо в использовании num_rows, и оба они не работают. - person kimoturbo; 16.04.2015
comment
Я собирался попросить вас посмотреть в словаре, есть ли другая системная таблица в 7, содержащая список таблиц. Если все таблицы есть и работают, то кажется странным, что выбор для создания оператора select, который вы затем запустили, не сработает. - person xQbert; 16.04.2015
comment
Можно ли сделать цикл и на каждой итерации подсчитывать количество строк в каждой таблице? - person kimoturbo; 17.04.2015