Почему контексты времени выполнения не работают на 11g в программе, скомпилированной для 10g? - PullRequest
2 голосов
/ 08 марта 2011

У меня есть многопоточное приложение 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

Ответы [ 2 ]

0 голосов
/ 16 июля 2015

Объявление вашего контекста перед использованием

EXEC SQL начало объявления раздела;sql_context thread_ctx;EXEC SQL конец объявления раздела;

0 голосов
/ 20 июня 2011
SQL-02134: Invalid runtime context 

Cause: The runtime context associated with this statement has not been properly allocated.

Action: Rewrite the application to execute the EXEC SQL CONTEXT ALLOCATE statement before executing any SQL statements.

Итак, я полагаю, поскольку вы сказали, что код включает в себя этот оператор перед выполнением оператора SQL, что контекст очищается перед выполнением указанного sql.создайте файл трассировки, чтобы увидеть, где именно распространяется проблема.

...