При работе с Oracle такие вещи обычно выполняются в базе данных с использованием планировщика Oracle (или заданий до 9i). Однако, даже если вы используете это, процесс будет непрозрачным для вашего кода PHP во время его работы.
Похоже, что вы действительно хотите, чтобы код PHP мог знать, как работает большой анонимный блок во время его работы. Лучший способ справиться с этим без записи в таблицу - это использовать контексты. По сути, вы создадите глобальный контекст в базе данных, а затем добавите строки в анонимный блок, чтобы обновить контекст по мере его развития. Поскольку глобальные контексты видны во всех сеансах, у вас может быть запущен отдельный поток PHP для мониторинга контекста и записи изменений в ваш журнал.
Однако, когда вы создаете контекст, вы должны указать, какому пакету разрешено его администрировать, поэтому вы не можете обновить его напрямую из автономного блока. Вы можете сделать это, переместив весь автономный блок в пакет или создав небольшой пакет, который ничего не делает, только обновляет контекст, а затем вызывает эту процедуру из блока.