Oracle mechanics

15.10.2009

«library cache: mutex X», NLS_LENGTH_SEMANTICS и предел количества дочерних курсоров?

Filed under: Диагностика системы (instance),Oracle,wait events — Игорь Усольцев @ 09:33

Необычная проблема на серверах Oracle у клиентов. Пользовательские сессии — в ожидании library cache: mutex X, веб сервер(Apache) c CMS висит :(

При этом все зависшие сессии дочерних процессов Apache выполняют один и тот же запрос,  sql_id=’fhh6c2w6thz2h’ (сам запрос не имеет значения), и в v$sql_shared_cursor можно увидеть аномально большое количество дочерних курсоров «проблемного» запроса:

SQL> select count(*) as child_cursor_count from v$sql_shared_cursor
     where sql_id = 'fhh6c2w6thz2h';
CHILD_CURSOR_COUNT
32768

32768=2**15

Похоже на жёстко фиксированное в коде Oracle ограничение на количество дочерних курсоров одного SQL, не так ли?

Однако объяснение феномена проще:

Bug 7648406 — Child cursors not shared for «table_…» cursors when NLS_LENGTH_SEMANTICS = CHAR.

Проблеманаблюдалась дважды на версиях Oracle servers 10.2.0.4 and 11.1.0.7, в точном соответствии с описанием бага на Metalink.

Причиной, как ясно из названия бага было значение  параметра NLS_LENGTH_SEMANTICS = CHAR, которое устанавливалось (приложением) в начале каждой сессии:

alter session set NLS_LENGTH_SEMANTICS = CHAR;

А делалось это потому, что в коде встречались неполностью определённые DDL, что при использовании unicode приводило к ошибкам в размерах текстовых столбцов

create table ... (column_name varchar2(10))...

т.е. без указания BYTES или CHAR.

Рекомендации по решению: либо изменить код приложения для исключения необходимости установки параметра NLS_LENGTH_SEMANTICS = CHAR в NLS окружении сессии, либо накатить патч 7648406, доступный для Windows, Linux x64_64, Sun Solaris 64 и др. ОС на Metalink.

Добавить комментарий »

Комментариев нет.

RSS feed for comments on this post. TrackBack URI

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

Блог на WordPress.com.

%d такие блоггеры, как: