ENG: | ORA-12518 TNS-12518 listener could not hand off client connection |
Соединения не могут быть установлены из-за ошибки:
ORA-12518 or TNS-12518: TNS:listener could not hand off client connection
Часто сопровождается ошибками:
ORA-12547 — TNS-12547 = lost contact
ORA-12537 — TNS-12537 = connection closed
ORA-03135 — TNS-03135 = connection lost contact
ORA-03113 — TNS-03113 = end-of-file on communication channel
ORA-03106 — TNS-03106 = fatal two-task communication protocol error
ORA-03136 — TNS-03136 = WARNING inbound connection timed out
ORA-12535 — TNS-12535 = TNS:operation timed out
ORA-12170 — TNS-12170 = Connect timeout occurred
ORA-12637 — TNS-12637 = Text: Packet receive failed
Вот цитата из документации (никакой полезной информации тут нет 🙂 ):
ORA-12518: TNS:listener could not hand off client connection
Cause: The process of handing off a client connection to another process failed.
Action: Turn on listener tracing and re-execute the operation. Verify that the listener and database instance are properly configured for direct handoff. If problem persists, call Oracle Support.
Причина:
Основная причина — это нехватка ресурсов на сервере где работает Listener. Ошибка обычно возникает при высокой загруженности сервера или большом количестве сессий.
Решения:
1. Проверить с помощью запроса параметры processes и sessions. Если нужно увеличить их (Как узнать значения и изменить параметры processes и sessions в Oracle). В примере видно что максимальное количество prosesses достигло лимита — т.е. нужно увеличивать processes и соответственно sessions.
select * from v$resource_limit;
RESOURCE_NAME CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION LIMIT_VALUE
processes 137 150 150 150
sessions 141 159 170 170
2. Увеличить количество оперативной памяти и файла подкачки ОС (swap). Если возможно — сделать это физически, т.е. добавить на сервер модули RAM (если ОС 32-битная и памяти уже > 3Gb то это не поможет — нужно переходить на 64-битную ОС и Oracle). Можно попытаться остановить все ненужные службы (демоны) и приложения.
©Bobrovsky Dmitry
3. На 32-битных ОС Windows — установить параметр /3GB (Как установить ключ /3GB /PAE в Windows Vista 7 2008).
©Bobrovsky Dmitry
4. Уменьшить потребление памяти Oracle,т.е. уменьшить SGA, т.е. уменьшить один из параметров PGA_AGGREGATE_TARGET или SGA_MAX_SIZE или оба вместе.
Dmitry Bobrovsky
5. Перейти на Shared Server (Managing Processes in Oracle).
Dmitry Bobrovsky
6. Если у вас 32-битная система — перейти на 64-битную систему!
Остальные решения не рассматриваю, т.к. если пункты 1-5 не помогли, то это экзотический случай и лучше обратиться в тех.поддержку или начать поиск в MOS. Начать можно отсюда — ORA-12518 / TNS-12518 Troubleshooting
Запись ORA-12518 TNS-12518 впервые появилась Dmitry Bobrovsky Blog