2016-10-14 2 views
0

Могут ли два курсора с таким же именем существовать в двух разных процессах?Может ли два курсора с таким же именем существовать в двух разных процессах?

Скажем, у меня есть бинарный alert_sender, который использует имя cusror GET_ALERT_CURSOR для получения данных из базы данных, и одно и то же имя курсора существует в другом бинарном alert_closer, который закрывает предупреждения.

Оба двоичных файла будут работать на одном компьютере и подключаются к одной базе данных.

Есть ли проблемы с этим?

Я получаю такие ошибки в моем процессе.

H_ALERT_PROCESSOR: ERROR_LEVEL: 2016/10/04 05: 10: 55: Ошибка открытия H_CURSOR произошла ошибка при рекурсивном уровне SQL 1

ОРА-01000:: ОРА-00604 Максимальная | Время Дельта: 0,003 | Всего: 0,017 | (Файл/строка = HAlertDataPuller.PC: 176)

H_ALERT_PROCESSOR: ERROR_LEVEL: 2016/10/04 05: 25: 55: Ошибка открытия H_CURSOR: ОРА-01003: никакое утверждение не анализируется

H_ALERT_PROCESSOR: ERROR_LEVEL : 2016/10/04 05: 40: 55: открытие ошибки H_CURSOR: ORA-01003: нет синтаксического анализа

H_ALERT_PROCESSOR: ERROR_LEVEL: 2016/10/04 05: 55: 55: открытие ошибки H_CURSOR: ORA-01003: нет заявления проанализировано

H_ALERT_PROCESSOR: ERROR_LEVEL: 2016/10/04 06:10:55: ошибка открытия H _CURSOR: ORA-01003: нет синтаксического анализа

+0

Это очень сложно помочь вам диагностировать проблему, если вы не предоставили нам какой-либо пример кода и т. Д. Если вам нужна дополнительная помощь в этом, вам нужно предоставить нам гораздо больше информации - помните, мы не вижу вашу базу данных, мы не знаем вашу структуру данных или схемы, и мы определенно не знаем вашу бизнес-логику, поэтому чем больше информации вы можете предоставить, тем лучше. – Boneist

ответ

0

Не должно быть никаких проблем, это похоже на то, что одна и та же локальная переменная определяется различными способами, они могут работать на одном компьютере и в одном приложении.

+0

ОК, на самом деле я столкнулся с проблемой в одном из моих процессов. – naren

+0

Я редактирую свой вопрос. – naren

+0

Были ли внесены изменения в таблицы, используемые этими курсорами? – Sebz

1

Yes они могут exist, но если они работают в same time, тогда возникла проблема.

Давайте рассмотрим ваш пример:

Когда процесс alert_sender начал и открыл курсор GET_ALERT_CURSOR, это означает, что в буфере его остается активным до обработки SQL происходит. В то же время ваш второй процесс alert_closer начался, и он также попытался открыть курсор с тем же именем GET_ALERT_CURSOR, поэтому ранее определение курсора по-прежнему остается активным и SQL двигатель находит, что его уже открытым и выбрасывает ошибки, как

ORA-06511 - Курсор уже открыт.

Incase ваш предыдущий курсор завершает & курсор не закрыт, а другой начинается тогда

ора-01000 максимально открытые курсоры превышено

и так далее.

+0

ОК .. с вашего взгляда это может произойти между двумя процессами, на самом деле наше - большое приложение, и у нас есть n экземпляров одного и того же кода .. например alert_sender1, alert_sender_2 ... aler_sender_n (все объединены и связаны с тем же кодом и в среде sam). Итак, как вы думаете, это решение для этого. – naren

+0

Либо измените имя курсора, либо создайте зависимости. – XING

+0

Прошу прощения, но как мы создаем зависимости? – naren

Смежные вопросы