У меня есть многопоточное приложение C, скомпилированное с использованием Oracle 10g (pro*c и библиотеки). Программа использует одно соединение с базой данных на каждый поток. Мы переходим на 11g, и при тестировании 11g все, что использует контекст, отличный от глобального контекста, генерирует SQL-02134: Invalid runtime context
при подключении к базе данных. Использование глобального контекста работает нормально. Это известная несовместимость при переходе с 10g на 11g, или я что-то не так делаю? В конечном итоге я перекомпилирую все для 11g, но для целей реализации будет намного проще, если мы сможем запустить программу 10g до тех пор, пока все базы данных не будут преобразованы.
Что бы это ни стоило, код включает в себя то, что я считаю нормальными вещами:
EXEC SQL ENABLE THREADS;
EXEC SQL CONTEXT ALLOCATE :thread_ctx
EXEC SQL CONTEXT USE :thread_ctx