Я собираюсь предположить, что Вы хотите соответствовать против шестнадцатеричного печатного представления SHA1, а не против эквивалентных 20 необработанных байтов. Кроме того, я собираюсь предположить, что рассматриваемый SHA1 использует только строчные буквы для представления шестнадцатеричных цифр. Необходимо будет скорректировать регулярное выражение, если требования отличаются.
grep -o -E -e "[0-9a-f]{40}"
будет соответствовать такому SHA1. Необходимо будет перевести вышеупомянутое регулярное выражение с диалекта egrep на любой инструмент, который Вы, оказывается, используете. Так как соответствие должно быть точно 40 символами долго, я не думаю, что Вы подвергаетесь риску случайно соответствующих слов. Я не знаю ни о каких словах с 40 символами, которые состоят только из букв A через f.
редактирование:
Еще лучше: используйте А Regex для соответствия SHA1, поскольку его решение включает проверку границы слова в обоих концах. Я пропустил это выше.
Транзакция должна быть значимой единицей работы. Но то, что составляет Единицу работы, зависит от контекста. В системе OLTP единицей работы может быть одно лицо вместе с их адресной информацией и т. Д. Но это звучит так, как будто вы реализуете некоторую форму пакетной обработки, которая загружает множество людей.
Если у вас есть Проблемы с ORA-1555 почти наверняка связаны с тем, что у вас есть длительный запрос, предоставляющий данные, которые обновляются другими транзакциями. Фиксация внутри вашего цикла способствует циклическому использованию сегментов UNDO и, таким образом, будет иметь тенденцию к увеличению вероятности того, что сегменты, на которые вы полагаетесь для обеспечения согласованности чтения, будут повторно использованы. Так что не делать этого, вероятно, хорошая идея.
Другой вопрос, является ли использование SAVEPOINT решением. Я' Я не уверен, какое преимущество это даст вам в вашей ситуации. Поскольку вы работаете с Oracle10g, возможно, вам следует рассмотреть возможность использования вместо этого массового журнала ошибок DML .
В качестве альтернативы вы можете захотеть переписать управляющий запрос, чтобы он работал с небольшими порциями данных. Не зная больше о специфике вашего процесса, я не могу дать конкретных советов. Но в целом, вместо открытия одного курсора для 10000 записей, может быть лучше открыть его двадцать раз для 500 строк за раз. Еще одна вещь, которую следует учитывать, - можно ли сделать процесс вставки более эффективным, например, с помощью массового сбора и FORALL.
В качестве альтернативы вы можете захотеть переписать управляющий запрос, чтобы он работал с небольшими порциями данных. Не зная больше о специфике вашего процесса, я не могу дать конкретных советов. Но в целом, вместо открытия одного курсора для 10000 записей, может быть лучше открыть его двадцать раз для 500 строк за раз. Еще одна вещь, которую следует учитывать, - можно ли сделать процесс вставки более эффективным, например, с помощью массового сбора и FORALL.
В качестве альтернативы вы можете захотеть переписать управляющий запрос, чтобы он работал с небольшими порциями данных. Не зная больше о специфике вашего процесса, я не могу дать конкретных советов. Но в целом, вместо открытия одного курсора для 10000 записей, может быть лучше открыть его двадцать раз для 500 строк за раз. Еще одна вещь, которую следует учитывать, - можно ли сделать процесс вставки более эффективным, например, с помощью массового сбора и FORALL.
скажем, используя массовый сбор и FORALL. скажем, используя массовый сбор и FORALL.Некоторые мысли. ..