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

Представление для поиска невалидных операций

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Обновления и тестирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Васильев Николай
Профи


Вступление в Клуб: 29.06.2007
СообщениеСр Ноя 21, 2007 12:59   Представление для поиска невалидных операций Ответить с цитатой
Полезность: 4
Сделали давно у себя представление невалидных операций , очень удобно при накате.

Представление PL/PLUS.
В системе
Код:

type main is
select U(
   U.CLASS_ID      :   C_CLASS_ID,
   U.SHORT_NAME   :   C_SHORT_NAME,
   U.NAME         :   C_NAME,
   U.STATUS      :   C_STATUS)

in ::METHODS%rowtype
where U.STATUS <> 'VALID'
order by U.CLASS_ID;
dbmaslov
Профи


Вступление в Клуб: 11.07.2007
СообщениеПт Ноя 23, 2007 10:28    Ответить с цитатой
Полезность: Нет оценки
мы тоже давно используем подобное представление.
также разработаны представления:
список журналируемых операций
список журналируемых реквизитов.
_________________
Маслов Дмитрий
dbmaslov
Профи


Вступление в Клуб: 11.07.2007
СообщениеСб Ноя 24, 2007 06:04    Ответить с цитатой
Полезность: 4
PL/PLUS ПРЕДСТАВЛЕНИЕ С ЖУРНАЛИРУЕМЫМИ ОПЕРАЦИЯМИ:

Код:
type main is select s(
           
      s.CLASS_ID
      ,s.ID  :ID
      ,s.SHORT_NAME :SHORT_NAME
      ,s.NAME :NAME 
      ,s.CREATED  :CREATED
      ,s.USER_CREATED :USER_CREATED
      ,s.MODIFIED :MODIFIED
      ,s.USER_MODIFIED : USER_MODIFIED
      ,s.STATUS : STATUS
      ,s.KERNEL : KERNEL
     ,s.PROPERTIES : PROPERTIES
     ,s.REPORT_OBJECT : REPORT_OBJECT
     ,s.REPORT_ON_PROC : REPORT_ON_PROC
     ,s.REPORT_TYPE : REPORT_TYPE
     ,s.FORM_ID : FORM_ID
     ,s.EXT_ID: EXT_ID
 ) in methods%rowtype
 
 where s.properties like '%PARAMS Y%'
 ;

_________________
Маслов Дмитрий
dbmaslov
Профи


Вступление в Клуб: 11.07.2007
СообщениеСб Ноя 24, 2007 06:06    Ответить с цитатой
Полезность: 4
PL/PLUS ПРЕДСТАВЛЕНИЕ С ЖУРНАЛИРУЕМЫМИ РЕКВИЗИТАМИ:

Код:
type main is select s(
           
         s.CLASS_ID:CLASS_ID,
      s.qual:qual,
      s.column_name:column_name,
      s.table_name:table_name,
      s.logging:logging,
      s.deleted:deleted,
      s.indexed:indexed,
      s.self_class_id:self_class_id,
      s.base_class_id:base_class_id,
      s.def:def,
      s.target_class_id:target_class_id,   
      s.static:static,
      s.nullable:nullable,       
      s.mapped_from:mapped_from,
      s.map_style:map_style,
      s.editable:editable,
      s.position:position,
      s.host_type:host_type,
      s.not_null:not_null,
      s.sequenced:sequenced,
      s.nt_table:nt_table,
      s.not_cached:not_cached,
      s.qual_pos:qual_pos,
      s.flags:flags
 ) in class_tab_columns%rowtype
 
 where s.logging != '0'
 ;

_________________
Маслов Дмитрий
timochev
Эксперт


Вступление в Клуб: 02.07.2007
СообщениеПн Ноя 26, 2007 10:30    Ответить с цитатой
Полезность: 4
dbmaslov пишет:
PL/PLUS ПРЕДСТАВЛЕНИЕ С ЖУРНАЛИРУЕМЫМИ ОПЕРАЦИЯМИ:


Добавлю, что приведенный выше текст выборки "журналируемых операций" соответсвует выборке операций, у которых включено журналирование параметров. А вот чтобы получить список операций с включенным в одно из положений свойством "Журналирование", необходимо написать примерно следующее:
Код:
s.properties like '%COMPILER %' and s.properties not like '%COMPILER 0%'
Гарфилд
Участник


Вступление в Клуб: 20.09.2007
СообщениеПн Дек 03, 2007 12:01    Ответить с цитатой
Полезность: Нет оценки
Представления пиэль-плус - жуть, я делаю проще - в PL/SQL-девепопере или в жабе под ИБСом:

-- кол-во разных инвалидных объектов с группировкой по типу инвалидности
select status,count(1) from ibs.methods group by status;
timochev
Эксперт


Вступление в Клуб: 02.07.2007
СообщениеПн Дек 03, 2007 12:14    Ответить с цитатой
Полезность: Нет оценки
Гарфилд пишет:
Представления пиэль-плус - жуть

позвольте не согласиться!

Гарфилд пишет:
в PL/SQL-девепопере или в жабе под ИБСом...


Предложу такой вариант:
Код:
select m.id, m.class_id, m.short_name, m.status, o.status package_status,m.modified
from methods m, user_objects o
where flags <> 'Z'
      and kernel = '0'
      and o.object_name(+) = m.package_name
      and o.object_type(+) = 'PACKAGE BODY'
      and (m.status <> 'VALID' or not exists
       (select *
            from user_objects o
            where o.object_name = m.package_name
                  and o.object_type = 'PACKAGE BODY') or exists
       (select *
            from user_objects o
            where o.object_name = m.package_name
                  and o.object_type = 'PACKAGE BODY'
                  and o.status != 'VALID')
           or exists
              (select * from user_objects o
               where o.object_name = 'Z$U$' || m.id
                 and o.object_type = 'PACKAGE BODY'
                 and o.status!='VALID')
      )     
order by class_id, short_name
Гарфилд
Участник


Вступление в Клуб: 20.09.2007
СообщениеПн Дек 03, 2007 12:23    Ответить с цитатой
Полезность: Нет оценки
2 timochev:
довольно много текста, на мой кошачий взгляд Smile , вот так проще:
select m.class_id, m.short_name, m.name, m.user_created, m.status from ibs.methods m where status = 'INVALID' order by class_id
timochev
Эксперт


Вступление в Клуб: 02.07.2007
СообщениеПн Дек 03, 2007 12:54    Ответить с цитатой
Полезность: Нет оценки
Гарфилд пишет:
2 timochev:
довольно много текста, на мой кошачий взгляд Smile

Можно, конечно, стремиться к меньшему количеству символов в тексте, а можно к более объективной ситуации.
Так вот анализ состояния ораклового пакета очень хорошо дополняет картину.
Andry
Участник - экстремал


Вступление в Клуб: 14.01.2009
СообщениеВт Июл 27, 2010 10:45   уточнение Ответить с цитатой
Полезность: Нет оценки
dbmaslov пишет:
PL/PLUS ПРЕДСТАВЛЕНИЕ С ЖУРНАЛИРУЕМЫМИ ОПЕРАЦИЯМИ:


Вместе с уточнениями от timochev получаем:

Код:

type main is select s(
           
      s.CLASS_ID
      ,s.ID  :ID
      ,s.SHORT_NAME :SHORT_NAME
      ,s.NAME :NAME 
      ,decode(instr(s.properties,'PARAMS Y'),0,'','Да')
      ,decode(substr(s.properties,instr(s.properties,'COMPILER ') + 9,1),
                           '0','Нет',
                           '1','Запуск',
                           '2','Запуск и завершение',
                           '3','Запуск в Авт.тран.',
                           '4','Запуск и завершение в Авт.тран.')
      ,s.CREATED  :CREATED
      ,s.USER_CREATED :USER_CREATED
      ,s.MODIFIED :MODIFIED
      ,s.USER_MODIFIED : USER_MODIFIED
      ,s.STATUS : STATUS
      ,s.KERNEL : KERNEL
      ,s.PROPERTIES : PROPERTIES
      ,s.REPORT_OBJECT : REPORT_OBJECT
      ,s.REPORT_ON_PROC : REPORT_ON_PROC
      ,s.REPORT_TYPE : REPORT_TYPE
      ,s.FORM_ID : FORM_ID
      ,s.EXT_ID: EXT_ID    
 ) in methods%rowtype
where s.properties like '%PARAMS Y%'
  OR (s.properties like '%COMPILER %' and s.properties not like '%COMPILER 0%' );
Andry
Участник - экстремал


Вступление в Клуб: 14.01.2009
СообщениеВт Авг 03, 2010 09:23   ПРЕДСТАВЛЕНИЕ С ЖУРНАЛИРУЕМЫМИ РЕКВИЗИТАМИ Ответить с цитатой
Полезность: Нет оценки
dbmaslov пишет:
PL/PLUS ПРЕДСТАВЛЕНИЕ С ЖУРНАЛИРУЕМЫМИ РЕКВИЗИТАМИ:

Для наглядности туда нужно добавить колонку-расшифровку типа логгирования

Код:
decode(s.logging,
            '1','Авт.      |Не пустые',
            '2','Прогр.      |Не пустые',
            '3','Авт. + Прогр.   |Не пустые',
            '5','Авт.      |Новые    ',
            '6','Прогр.      |Новые    ',
            '7','Авт. + Прогр.   |Новые    ',
            '9','Авт.      |Пустые   ',
            'A','Прогр.      |Пустые   ',
            'B','Авт. + Прогр.   |Пустые   ',
            'D','Авт.      |Все      ',
            'E','Прогр.      |Все      ',
            'F','Авт. + Прогр.   |Все      ',
            '?|?'):DESCRIPTION,
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Обновления и тестирование Часовой пояс: GMT + 3
Страница 1 из 1

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