Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[52.15.59.163] |
|
Сообщ.
#1
,
|
|
|
Добрый день.
Разрабатываю ПО, которое основную работу проводит с сетевыми устройствами и по столько по сколько использует базу oracle(требование заказчика) для хранения некоторой информации об устройствах и изображений, полученных с устройств. До этого всегда использовал для таких целей MySQL и с Oracle не знаком. С подключением к базе(пищу на Visual Studio 2017 и использую OracleClient) и отправкой запросов я разобрался. Запросы не мудреные, в основном SELECT'ы при загрузке данных при старте и INSERT'ы при записи состояний в базу и записи изображений в BLOB. Oracle скачал и установил с офф сайта, последнюю версию. Но при работе с базой возникает ошибка "ORA-01000: количество открытых курсоров превысило допустимый максимум". Отсюда вопросы: 1) Есть ли ограничения в той версии Oracle, которая доступна на сайте. 2) Какие значения задать для processes и open_cursors(значение sessions я вообще не нашел в init.ora), возможно еще какие-то значения нужно изменить? 3) Как избежать накопления неявных открытых курсоров или как закрывать поле каждого запроса Заранее прошу прощение, если что-то не так написал, так как не имею опыта работы с Oracle. Если нужны какие-то примеры запросов или кода могу привести. Заранее скажу, что будет около 300 потоков(по 1 на каждое устройство), каждый раз в секунду выполняет 1 UDPATE (записывает состояние - около 12 полей) и возможно 1 INSERT, если есть необходимость записать изображение. Сейчас работает только один поток, но проблема уже возникает. |
Сообщ.
#2
,
|
|
|
1. Нет, на сайте Oracle доступна полноценная версия базы данных Oracle, а не какая-то урезанная версия.
2. Количество процессов и открытых курсоров в базе данных зависит от конкретных требований приложения и количества соединений с базой данных. Для установки значений параметров в файле инициализации init.ora можно использовать следующие параметры: PROCESSES: устанавливает максимальное количество процессов, которое может использовать база данных. OPEN_CURSORS: устанавливает максимальное количество открытых курсоров на сессию в базе данных. Значения параметров можно установить в файле init.ora или динамически с помощью команд SQL в сеансе базы данных. 3.Для закрытия курсора в Oracle используйте команду CLOSE. После выполнения запроса, курсор будет закрыт автоматически, но если вы используете курсор в цикле или вложенных блоках, то следует явно закрывать его после использования. Неявное закрытие курсора может привести к утечкам памяти и другим проблемам производительности. Для оптимизации производительности и избежания ошибки "ORA-01000: количество открытых курсоров превысило допустимый максимум", рекомендуется использовать параметризованные запросы и избегать использования динамических запросов с неопределенными параметрами. Также, можно использовать пакеты PL/SQL для группировки запросов и минимизации количества открытых курсоров. |