Развалилась БД, не ясны причины

SergeyHab
Дата: 11.11.2008 03:25:49
Привет всем!

Собственно проблема, с утра развалилась БД, точнее схема SYS, в ней заинвалидилось около 600 объектов. Попытка перекомпилировать ни к чему не привела.
Пришлось восстановиться с бэкапа.
Разваленную БД оставил для изучения причин и того как с таким бороться.
Так вот собственно причины найти и не могу... с чего могли развалиться все основные пакеты БД в схеме sys и почему не перекомпилируются.
может кто сталкивался с таким?

версия 10.2.0.3 на сорярке10 спарк
Вячеслав Любомудров
Дата: 11.11.2008 03:29:07
Все как обычно...
Берешь разваленный пакет, пробуешь перекомпилировать, смотришь ошибки

PS. А перекомпилять через utlrp пробовал?
SergeyHab
Дата: 11.11.2008 03:41:20
Вячеслав Любомудров
Все как обычно...
Берешь разваленный пакет, пробуешь перекомпилировать, смотришь ошибки

PS. А перекомпилять через utlrp пробовал?


Так в том и странность, что беру к примеру один из пакетов, пробую его откомпилить, смотрю ошибку говорит к примеру не объявлена такаято таблица или ее нет, проверяю все есть, но пакет не компилица.
utlrp пробовал, но от не отрабатывает так как ситемный пакет инвалиден
SergeyHab
Дата: 11.11.2008 03:45:11
к примеру на том же utlrp, при запуске вот такая ошибка
ERROR at line 1:
ORA-04063: package body "SYS.UTL_RECOMP" has errors
ORA-06508: PL/SQL: could not find program unit being called: "SYS.UTL_RECOMP"
ORA-06512: at line 4
Вячеслав Любомудров
Дата: 11.11.2008 03:50:32
С правами никаких замутов не было?
Типа sysdba отобрать?
SergeyHab
Дата: 11.11.2008 04:01:14
Вячеслав Любомудров
С правами никаких замутов не было?
Типа sysdba отобрать?


тоже грешил на права, проверил все в норме
Dimka9
Дата: 11.11.2008 05:11:52
SergeyHab

тоже грешил на права, проверил все в норме

а тупо сравнить поломанную БД с текущей типа:
select count(*),object_type
from dba_objects
where owner='SYS'
group by object_type
ну и паблик синонимы "посчитать" не лишне будет.
SergeyHab
Дата: 11.11.2008 05:16:41
Dimka9
SergeyHab

тоже грешил на права, проверил все в норме

а тупо сравнить поломанную БД с текущей типа:
select count(*),object_type
from dba_objects
where owner='SYS'
group by object_type
ну и паблик синонимы "посчитать" не лишне будет.


тоже такая идея была, сейчас попробую
ShaDmiF
Дата: 11.11.2008 08:00:29
SergeyHab
Dimka9
SergeyHab

тоже грешил на права, проверил все в норме

а тупо сравнить поломанную БД с текущей типа:
select count(*),object_type
from dba_objects
where owner='SYS'
group by object_type
ну и паблик синонимы "посчитать" не лишне будет.


тоже такая идея была, сейчас попробую

а если поглядеть в dba_errors?
SergeyHab
Дата: 11.11.2008 08:55:46
сверил объекты, различия по следующим
705	INDEX	706	INDEX
807	TYPE	929	TYPE
2887	VIEW	2886	VIEW
14	OPERATOR	15	OPERATOR

решил проверить по времени модификации создании объектов, чуть ранее развала, была кем то создана забавная въюха с именем sys и следующего содержания
CREATE OR REPLACE VIEW sys (
   sid,
   serial#,
   user#,
   username,
   status )
AS
select "SID","SERIAL#","USER#","USERNAME","STATUS" from v$session
/

Переименовал ее, большая часть объектов откомпилилась, но еще не все из 600 остались 60.
Буду смотреть остальные объекты, но по времени модификации больше никто не попадает
Можно ли как то найти кто создал эту въюшку?