CftClub.ru
Клуб специалистов ЦФТ-Банк

Найти битые объекты БД

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы
Предыдущая тема :: Следующая тема  
Автор Сообщение
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеПт Июн 22, 2012 15:46   Найти битые объекты БД Ответить с цитатой
Полезность: Нет оценки
Добрый день,
подскажите, плиз, есть ли в ЦФТ представление которое выведет все битые объекты БД.
На Sql запрос выглядит так:

Код:

select OBJECT_NAME,OBJECT_TYPE from dba_objects where STATUS='INVALID';


И ещё хотелось бы каким то образом видеть Ломанные объекты в словаре ЦФТ, т.к. периодически бывает что в БД он нормальный, а в словаре битый.
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеПт Июн 22, 2012 17:17    Ответить с цитатой
Полезность: Нет оценки
У нас вьюха сделана. Показывает как состояние пакета, так и состояние операции.
Пример вьюхи
Код:
pragma pl_sql(true);
type main is
  SELECT M(
   ::[RUNTIME].[STR].[GET_DIGITALL](M.id)   : ID,
   M.id                           : ID_MET,
   m.SHORT_NAME                     : SHORT_NAME,
   m.NAME                           : NAME,
   M.CLASS_ID,
   [LIB].CLASS_NAME(M.CLASS_ID)         : CLASS_NAME,
   m.[TAG],
   m.[FLAGS],
   m.PACKAGE_NAME                     : PACKAGE_NAME,
   m.STATUS,
   nvl(method.get_obj_status(m.PACKAGE_NAME,'PACKAGE BODY'),'INVALID')   : STATUS,
   nvl(method.get_obj_status(m.PACKAGE_NAME,'PACKAGE'),'INVALID')      : STATUS1,
   m.[USER_CREATED]                  : USER_CREATED,
   m.[CREATED]                        : CREATED,
   m.[USER_MODIFIED]                  : USER_MODIFIED,
   m.[MODIFIED]                     : MODIFIED
   ) IN methods%rowtype
  where
   (   nvl(method.get_obj_status(m.PACKAGE_NAME,'PACKAGE BODY'),'INVALID') not in('VALID')
      or nvl(method.get_obj_status(m.PACKAGE_NAME,'PACKAGE'),'INVALID') not in('VALID')
      or m.STATUS not in ('VALID')
     )
     and nvl(m.kernel,0) = 0
;


по представлениям у нас отдельная вьюха
_________________
всегда есть как минимум 2 выхода
devor
Профи


Вступление в Клуб: 13.02.2012
СообщениеСб Июн 23, 2012 07:44    Ответить с цитатой
Полезность: Нет оценки
Для невалидных представлений вьюха выглядит так:

Код:
type main is
select r(r.class_id:c_1,r.short_name:short_name,r.name:name,nvl(c.status,'NOT EXISTS'):status) in criteria%rowtype,(all_objects%rowtype:c)
 where r.short_name=c.object_name(true)
     and nvl(c.[STATUS],'NOT EXISTS')<>'VALID'
     and r.[src_id] is null;
Vovidez
Профи


Вступление в Клуб: 27.09.2007
СообщениеПн Июн 25, 2012 12:10   Re: Найти битые объекты БД Ответить с цитатой
Полезность: Нет оценки
yaffil пишет:
есть ли в ЦФТ представление которое выведет все битые объекты БД.


В "ЦФТ-Банк" такого представления нет.

В аттаче скрипт, который выводит всевозможные невалидные объекты как метамодели, так и Oracle:

1. Вывод операций, имеющих проблемы с "Валидностью" (с пользователями)
2. Вывод операций, пакет которых имеет статус "INVALID"
3. Вывод представлений, имеющих проблемы с "Валидностью", но существующих в all_object
4. Вывод представлений для отчетов, имеющих проблемы с "Валидностью", но существующих в all_object
5. Вывод представлений, не существующих в user_object ("NOT EXIST")
6. Вывод фильтров представлений, имеющих проблемы с "Валидностью" (с пользователями)
7. Вывод индексов, не существующих в all_indexes ("NOT EXIST")
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеПн Июн 25, 2012 12:26    Ответить с цитатой
Полезность: Нет оценки
Всем огромное спасибо, то что надо!
pas
Профи


Вступление в Клуб: 20.11.2007
СообщениеПн Июн 25, 2012 14:10    Ответить с цитатой
Полезность: Нет оценки
Есть дистрибутив:
Банковские продукты -> ТМЦ. Импорт -> представления "Журнал "инвалидных" операций" и "Журнал "инвалидных" представлений"

Там же списочные операции "Компилировать операции", "Компилировать представления"
Матвеев Евгений
Профи


Вступление в Клуб: 31.01.2012
СообщениеПн Фев 19, 2018 13:48    Ответить с цитатой
Полезность: Нет оценки
Сделал пару вьюх,


Alexsey пишет:
У нас вьюха сделана. Показывает как состояние
пакета, так и состояние операции.
Пример вьюхи
Код:
pragma pl_sql(true);
type main is
  SELECT M(
   ::[RUNTIME].[STR].[GET_DIGITALL](M.id)   : ID,
   M.id                           : ID_MET,
   m.SHORT_NAME                     : SHORT_NAME,
   m.NAME                           : NAME,
   M.CLASS_ID,
   [LIB].CLASS_NAME(M.CLASS_ID)         : CLASS_NAME,
   m.[TAG],
   m.[FLAGS],
   m.PACKAGE_NAME                     : PACKAGE_NAME,
   m.STATUS,
   nvl(method.get_obj_status(m.PACKAGE_NAME,'PACKAGE BODY'),'INVALID')   : STATUS,
   nvl(method.get_obj_status(m.PACKAGE_NAME,'PACKAGE'),'INVALID')      : STATUS1,
   m.[USER_CREATED]                  : USER_CREATED,
   m.[CREATED]                        : CREATED,
   m.[USER_MODIFIED]                  : USER_MODIFIED,
   m.[MODIFIED]                     : MODIFIED
   ) IN methods%rowtype
  where
   (   nvl(method.get_obj_status(m.PACKAGE_NAME,'PACKAGE BODY'),'INVALID') not in('VALID')
      or nvl(method.get_obj_status(m.PACKAGE_NAME,'PACKAGE'),'INVALID') not in('VALID')
      or m.STATUS not in ('VALID')
     )
     and nvl(m.kernel,0) = 0
;


по представлениям у нас отдельная вьюха


на невалид операции нормально работает

devor пишет:
Для невалидных представлений вьюха выглядит так:

Код:
type main is
select r(r.class_id:c_1,r.short_name:short_name,r.name:name,nvl(c.status,'NOT EXISTS'):status) in criteria%rowtype,(all_objects%rowtype:c)
 where r.short_name=c.object_name(true)
     and nvl(c.[STATUS],'NOT EXISTS')<>'VALID'
     and r.[src_id] is null;


по представлениям виснет до перезагрузки навигатора... тут вроде и ломаться то нечему
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПн Фев 19, 2018 14:31    Ответить с цитатой
Полезность: Нет оценки
Матвеев Евгений пишет:
Сделал пару вьюх,

по представлениям виснет до перезагрузки навигатора... тут вроде и ломаться то нечему


у меня быстро отрабатывает (в sql навигаторе)
Матвеев Евгений
Профи


Вступление в Клуб: 31.01.2012
СообщениеПн Фев 19, 2018 14:41    Ответить с цитатой
Полезность: Нет оценки
Volod пишет:
Матвеев Евгений пишет:
Сделал пару вьюх,

по представлениям виснет до перезагрузки навигатора... тут вроде и ломаться то нечему


у меня быстро отрабатывает (в sql навигаторе)


в девелопере работает быстро

Код:

/* Реальный текст */
SELECT
A1.Id ID, 'SYS_DIARYS' Class_Id,
a1.CLASS_ID C_1,
a1.SHORT_NAME C_2,
a1.NAME C_3,
NVL(b1.STATUS,'NOT EXISTS') C_4
    from ALL_OBJECTS b1, CRITERIA a1
    where a1.SHORT_NAME = b1.OBJECT_NAME(+) and NVL(b1.STATUS,'NOT EXISTS') <> 'VALID' and a1.SRC_ID is NULL


в АРМ Навигаторе не хочет ... почему то...
Volod
Эксперт


Вступление в Клуб: 19.09.2007
СообщениеПн Фев 19, 2018 15:10    Ответить с цитатой
Полезность: Нет оценки
А hint по умолчанию какой?
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Справочник PL/PLUS: Функции, примеры, приёмы Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru