Вы в качестве примера используете select count, а как посмотреть прогресс на мосент исполнения insert?, к примеру есть таблица куда инсертится примерно 5 миллионов записей, но мы незнаем какое количество в итоге выйдет и хотелось бы видеть прогресс?!
5М записей как генерится? если чтением из другой таблиц(ы) insert-select и операция занимает продолжительное время - СУБД автоматом отобразит примерный прогресс. Если 5М в цикле, например, то можете самим навесить прогресс.
@@OracleDBD как вот в таких случаях узнать, что идет процесс insert'а for rec in (здесь огромный и сложный запрос) loop insert into table (field1, field2 ...) values (rec.field1, rec.field2 ...) end loop; Этот цикл запускает определенный job потому что 5 млн записей.
Спасибо за видео. А можно ли подобное проделать с обычным sql запросом? Или они попадают в представление v$ только по каким-то критериям? И если можно, то как интерпретировать содержимое v$session_longops?
Только для тяжелых запросов, в которых Oracle может оценить трудоемкость. Например, полное сканирование таблицы для построения индекса. Размер таблицы есть, количество строк есть + другие метрики. Оракл сам автоматом посчитает. Самому считать запрос... ну хз. надо ли. Описание полей v$session_longops есть в доке: docs.oracle.com/en/database/oracle/oracle-database/12.2/refrn/V-SESSION_LONGOPS.html#GUID-F2802C36-066C-493E-8255-C08CC79B87FB
Полезно, спасибо
Спасибо, очень полезно 👍
Супер
спасибо
каждую секунду считывать таблицу v$session_longops?
считываете с тем интервалом, с которым удобно.
Вы в качестве примера используете select count, а как посмотреть прогресс на мосент исполнения insert?, к примеру есть таблица куда инсертится примерно 5 миллионов записей, но мы незнаем какое количество в итоге выйдет и хотелось бы видеть прогресс?!
5М записей как генерится? если чтением из другой таблиц(ы) insert-select и операция занимает продолжительное время - СУБД автоматом отобразит примерный прогресс. Если 5М в цикле, например, то можете самим навесить прогресс.
@@OracleDBD в цикле идет select, а дальше идет insert в таблицу. А как самим навести примерчик скинете)))
@@askat25 так в видео один в один примеры
@@OracleDBD в цикле идет огромный и сложный запрос с подзапросами я не могу туда применить count как в вашем случае
@@OracleDBD
как вот в таких случаях узнать, что идет процесс insert'а
for rec in (здесь огромный и сложный запрос) loop
insert into table (field1, field2 ...)
values (rec.field1, rec.field2 ...)
end loop;
Этот цикл запускает определенный job потому что 5 млн записей.
Спасибо за видео. А можно ли подобное проделать с обычным sql запросом? Или они попадают в представление v$ только по каким-то критериям? И если можно, то как интерпретировать содержимое v$session_longops?
Только для тяжелых запросов, в которых Oracle может оценить трудоемкость. Например, полное сканирование таблицы для построения индекса. Размер таблицы есть, количество строк есть + другие метрики. Оракл сам автоматом посчитает.
Самому считать запрос... ну хз. надо ли.
Описание полей v$session_longops есть в доке:
docs.oracle.com/en/database/oracle/oracle-database/12.2/refrn/V-SESSION_LONGOPS.html#GUID-F2802C36-066C-493E-8255-C08CC79B87FB