По сути, вам нужно перебрать словарь данных и сгенерировать динамический SQL, который выполняет подсчет для каждой таблицы.
Я предполагаю, что вы передаете только одну схему. Если это не так или вы не подключаетесь в качестве целевой схемы, вам нужно будет использовать ALL_TABLES вместо USER_TABLES и включить столбец OWNER в запрос на запуск и динамический запрос тоже.
declare
n pls_integer;
stmt varchar2(32767);
begin
for r in ( select table_name from user_tables order by table_name ) loop
stmt := 'select count(*) from ' || r.table_name;
-- uncomment the next line to debug errors
-- dbms_output.put_line(stmt);
execute immediate stmt into n;
-- you may wish to only display empty tables
-- if n = 0 then
dbms_output.put_line(r.table_name || ' = ' || lpad(n, 10));
-- end if;
end loop;
end;
Можно надеяться, что ваш процесс копирования данных был достаточно умен, чтобы фиксировать только заполненные таблицы. Если это так, вам нужно только запустить это в DB2. В противном случае на обоих.