Я не понимаю, почему вы так беспокоитесь о размере. Возможно, БД будет на несколько (!) Процентов больше, скорее всего, вы не заметите никакой разницы.
В любом случае, этот PL / SQL должен дать представление о размере:
declare
iso_size number;
utf8_size number;
iso_size_sum number := 0;
utf8_size_sum number := 0;
begin
for aCol in (select table_name, column_name from user_tab_cols where data_type = 'VARCHAR') loop
iso_size.extend;
utf8_size.extend;
execute immediate
'select sum(LENGTH('||aCol.column_name||')),
sum(LENGTHB(convert('||aCol.column_name||', ''AL32UTF8'')))
from '||aCol.table_name INTO iso_size, utf8_size;
iso_size_sum := iso_size_sum + iso_size;
utf8_size_sum := utf8_size_sum + utf8_size ;
end loop;
dbms_output.put_line('Current size: '||to_char(iso_size_sum/1024/1024))||' MiByte');
dbms_output.put_line('Estimated UTF-8 size: '||to_char(utf8_size_sum/1024/1024))||' MiByte');
end;
Два числа должны указывать (!) На сколько вырастет база данных. Обратите внимание, что данные в Oracle организованы в блоках (обычно 8 килобайт), а не в байтах.
По соображениям производительности вы должны выполнять запрос только для одной типовой таблицы, а не для всей схемы.