powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Журналирование всех нарушений целостности
23 сообщений из 23, страница 1 из 1
Журналирование всех нарушений целостности
    #39434636
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!
Натолкните на мысль, пожалуйста, как навести порядок со всеми сообщениями пользователю, при нарушении им целостности БД.
Дело в том, что не всегда есть время на правильную обработку ожидаемых исключений.
Иногда откладываешь эту работу на потом.
А когда наступает "потом" уже не так просто выявить все эти исключения.
Вот у меня и возникла идея: всё журналировать, а потом исправлять дефекты в ПО.
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39434695
блкангел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Курдль,

Валидацию использовать :)
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39434720
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что вы называете правильной обработкой ожидаемых исключений?
Вот пользователь нажал "сохранить", апеск выполнил insert или update, оракл выдал ORA-00001 в ответ и ничего не сохранил. И? Что именно вы хотите отложить на потом?
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39434737
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,

см. apex error handler function, в документации даже есть пример, как ловить констраты .

Начиная с 5.0 ловит в том числе и ошибки при отрисовке компонент типа регионов.
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39434740
SvDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDev,

*констранты
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39434763
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDevсм. apex error handler function, в документации даже есть пример, как ловить констраты.

Начиная с 5.0 ловит в том числе и ошибки при отрисовке компонент типа регионов.
Да, спасибо! Я это имел в виду!

Никанор КузьмичА что вы называете правильной обработкой ожидаемых исключений?
Вот пользователь нажал "сохранить", апеск выполнил insert или update, оракл выдал ORA-00001 в ответ и ничего не сохранил. И? Что именно вы хотите отложить на потом?
Да, такой ситуации, как Вы описываете не должно быть.
Но иногда рук. проекта задает вопрос: "Что можно сделать, чтобы сократить сроки вывода в эксплуатацию?.."
Тогда, например, предлагаешь забить на обработку ожидаемых исключений. РП говорит "Ок! Принимаю риски на себя".
А через какое-то время у проекта доходят руки до наведения порядка. Сталкивались с такой ситуацией?

блкангелКурдль,
Валидацию использовать :)
Какую именно валидацию? Например, каждый раз дёргать сложный рекурсивный запрос для выявления недопустимых комбинаций данных?
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39434777
блкангел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КурдльблкангелКурдль,
Валидацию использовать :)
Какую именно валидацию? Например, каждый раз дёргать сложный рекурсивный запрос для выявления недопустимых комбинаций данных?

Вообще апекс автоматически сам создает процессы валидации, на основе существующих ограничений в БД. Вам остается только сделать сообщения на русском.
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39434820
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльНиканор КузьмичА что вы называете правильной обработкой ожидаемых исключений?
Вот пользователь нажал "сохранить", апеск выполнил insert или update, оракл выдал ORA-00001 в ответ и ничего не сохранил. И? Что именно вы хотите отложить на потом?Да, такой ситуации, как Вы описываете не должно быть.
Но иногда рук. проекта задает вопрос: "Что можно сделать, чтобы сократить сроки вывода в эксплуатацию?.."
Тогда, например, предлагаешь забить на обработку ожидаемых исключений. РП говорит "Ок! Принимаю риски на себя".Я имел в виду технические подробности, а не организационные. Возможно, error_logging_clause спасет отца русской демократии? Если коротко передать суть, то "неправильная" запись, которая не лезет в таблицу, валится в другую таблицу (для логгинга) с пометкой, где и что пошло не так. А юзеру можно сказать "ты фигню какую-то ввел, в базу не лезет, потом разберемся".

КурдльА через какое-то время у проекта доходят руки до наведения порядка. Сталкивались с такой ситуацией?С какой такой? Когда руководитель говорит "ну и что что решето, баг на баге, выкладывай, а там разберемся"? Не, не сталкивался. Я даже не сталкивался с руководителями, которые за такие предложения не бьют сразу же по морде. Вы в госсекторе что ли работаете? Это единственное место, где всем плевать на качество.
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39434848
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор КузьмичВы в госсекторе что ли работаете? Это единственное место, где всем плевать на качество.
А Вы в России вообще работаете, или о какой-то другой стране говорите?
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39434858
Никанор Кузьмич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльНиканор КузьмичВы в госсекторе что ли работаете? Это единственное место, где всем плевать на качество.
А Вы в России вообще работаете, или о какой-то другой стране говорите? В российском госсекторе не работал, врать не буду. Но приходится иногда пользоваться результатами поделок чиновников (типа госуслуг) или читать о том, как работают специализированные системы (ЕГАИС, Платон, раздача земли на ДВ), и мое мнение как пользователя - это кристально чистое, эталонное г-но. Однажды на одном из моих мест работы (частный банк) мой начальник слегка испортил отношения с начальством повыше и начал саботировать некоторые указания. Я по его просьбе сделал кое-что не очень качественно, но даже когда специально делал плохо, у меня не было такого треша.
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39434892
Никанор Кузьмич,

Для государства часто пишут те же самые коммерческие компании, что и не для государства: бухгалтерия, документооборот, отдел кадров и т.д., включая разработку специфических для заведения задач.
А требования к качеству зависят как и везде: от местного руководства.
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39435156
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никанор Кузьмич,
+1
вы дело говорите.
Странная ситуация описывается. Нужно привести более конкретный пример.
Если вставляли ФИО и в базе уже есть это ФИО, то что и "куда на потом" сохранять?
)

Никанор Кузьмичто "неправильная" запись, которая не лезет в таблицу, валится в другую таблицу (для логгинга) с пометкой, где и что пошло не так. А юзеру можно сказать "ты фигню какую-то ввел, в базу не лезет, потом разберемся".
да. Как вариант. Но только в качестве логов. Т.к. решение по БЛ нужно принимать сейчас.
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39435157
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Мимоходом_Для государства часто пишут те же самые коммерческие компании
это уже OFFTOP какой то пошёл
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39435196
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Курдль,
ещё один вариант приведения сообщений и исключений в порядок:
- это решение для Оракле при БЛ в СУБД. (перехват)
======================
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR REPLACE FUNCTION MY.GET_p_code in number
Return VarChar2  DETERMINISTIC 
is
  l_mes varchar2(1000);
Begin
  case p_code
    when -20506 then
      l_mes := 'Не заполнены обяз. поля (звездочка). Переоткройте (F5)';
    when -20513 then
      l_mes := 'Нельзя выполнить при закрытом\утверждённом одном из этапов. Обновите(F5)';
    ........................  
    else
      l_mes := 'Системная непредвиденная ошибка Oracle. Код: ' || p_code;
  end case;
  return l_mes;
End;
/



потом в БЛ в БД или апексе вызываем:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
  MY.INSERT or ХранимкаБизнесЛогики
EXCEPTION
-- либо так
  if SQLCODE = -20506 then
    Raise_Application_Error(-20506, get_msg(-20506));
  else
    raise;
  end if;
  
-- либо так
  WHEN others THEN
    Raise_Application_Error(SQLCODE, get_msg(SQLCODE));
    
-- либо так
  WHEN others THEN
    Raise_Application_Error(-20517, get_msg(-20517));

END;
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39438969
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SvDevКурдль,

см. apex error handler function, в документации даже есть пример, как ловить констраинты .

Начиная с 5.0 ловит в том числе и ошибки при отрисовке компонент типа регионов.

Огромное спасибо, коллега! Это то, что дохтур прописал!

P.S. Для всех, кто тыкает меня носом в лужу за производство некачественного ПО, сообщаю:
существует такая методология производства "Agile", при которой Product Owner, в том числе, расставляет приоритеты, устанавливает критерии качества спринта и мн.др.
Таким образом, если он говорит: "Гоним без остановки - плачу 2 счётчика!" - никто с ним не спорит ;)
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39438970
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Курдль,
ещё один вариант приведения сообщений и исключений в порядок:
- это решение для Оракле при БЛ в СУБД. (перехват)
Это решение для тех, кто решил забить на преимущества АРЕХ в автоматическом создании DML?
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39438975
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльЭто решение для тех, кто решил забить на преимущества АРЕХ в автоматическом создании DML?
т.е. наличие такого кода в триггере у тебя даже мысли не возникает?
Наверно ты забил на триггеры.
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39438976
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльТаким образом, если он говорит: "Гоним без остановки - плачу 2 счётчика!" - никто с ним не спорит ;)
Если таксист нарушает правила ПДД, ты с ним споришь? ))
Шутка)
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39439296
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123т.е. наличие такого кода в триггере у тебя даже мысли не возникает?
Наверно ты забил на триггеры.
Я использую триггеры для поддержки целостности данных и реакции на ожидаемые исключения. Проблема была в "автоматических" DML.


Еще вопрос: возможно ли протоколировать, что за DML привёл к ошибке?
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39439302
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльПроблема была в "автоматических" DML.
Привёл бы пример конкретный.
Если полностью "полный автомат" то в 4-ке я такую проблему не решил. Поставил костыль вот такой
Сообщения пользователю. Дружественные))
Но там ошибка былоа от апекса а не от СУБД.
От субд можно любую ошибку перехватить и заменить на строку по русски с человеческим сообщением. Как выше привёл пример.
Ещё раз - приведи конкретный пример и конкретную ошибку для перехвата.
В первом посте ты написал что надо "на потом". Я на потом редко когда откладываю. Решаю сразу.
Поэтому тебя не понимаю.
КурдльЕще вопрос: возможно ли протоколировать, что за DML привёл к ошибке?
там же где идёт замена на текст человеческий, там же и пишется в протокол.
Если нужно в автономной транзакции, но мне это не требовалось (писать протокол отменённого).
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39441526
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Привёл бы пример конкретный.
Пример очевидный.
В тривиальных случаях с модификацией данных справляются типовые процессы APEX типа Automatic Row Processing (DML), MRU, MRD и т.п.
В моём приложении они оставляют "след", благодаря триггерам After IUD (когда DML завершаются успешно).
Когда происходит ошибка, я могу реагировать на них, благодаря handler function.
Т.е. я вижу сами ошибки, но для понимания, что за DML её вызвало, мне надо логгировать еще и Before IUD.
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39441650
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльПример очевидный.
пример, это номер сообщения ORA - ?????
Перечитал ещё раз тему и нет конкретики. Увы.
...
Рейтинг: 0 / 0
Журналирование всех нарушений целостности
    #39441767
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123КурдльПример очевидный.
пример, это номер сообщения ORA - ?????
Перечитал ещё раз тему и нет конкретики. Увы.
Мне что, все ошибки, возникающие у меня в приложении перечислять? :)
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / Журналирование всех нарушений целостности
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]