При возникновении ошибки ORA-04020 нужно откомпилировать триггер SYS.CDC_ALTER_CTABLE_BEFORE. Сделать это можно по крайней мене двумя путями в зависимости от сложившейся ситуации.
1 вариант
alter trigger SYS.CDC_ALTER_CTABLE_BEFORE disable; alter trigger SYS.CDC_ALTER_CTABLE_BEFORE compile; alter trigger SYS.CDC_ALTER_CTABLE_BEFORE enable;
2 вариант
Если из-за этой ошибки не можете открыть базу, тогда вносите следующие изменения в pfile :
job_queue_processes=0 _system_trig_enabled=false aq_tm_processes=0
И открывайте с помощью этого pfile.
Проверяем валидность объектов:
select owner, object_type, count(*) from dba_objects where status = 'INVALID' group by owner, object_type;
При обнаружении невалидных объектов, компилируем скриптом:
SQL> @?/rdbms/admin/utlrp.sql
Если обнаружились невалидные объекты, то, по всей видимости , словарь данных в базе подпорчен. Поэтому желательно его пересоздать. Для этого традиционно используем скрипты:
/rdbms/admin/catalog.sql /rdbms/admin/catproc.sql /rdbms/admin/utlrp.sql
Ну а дальше все ясно: останавливаем базу и поднимаем ее без до этого внесенных изменений в pfile.