2011-03-07 1 views
2

Oracle 10g (pro * c 및 libraries)를 사용하여 컴파일 된 멀티 스레드 C 응용 프로그램이 있습니다.이 프로그램은 스레드 당 하나의 데이터베이스 연결을 사용합니다. 11g으로 이동하고 11g를 테스트 할 때 전역 컨텍스트가 아닌 다른 컨텍스트를 사용하는 것은 데이터베이스에 연결할 때 SQL-02134: Invalid runtime context을 생성합니다. 전역 컨텍스트를 사용하면 문제가 없습니다. 이것은 10g에서 11g으로의 전환에서 알려진 불일치입니까? 아니면 내가 잘못하고 있습니까? 11g에 대해 모든 것을 다시 컴파일 할 것이지만 구현 목적으로 모든 데이터베이스가 변환 될 때까지 10g 프로그램을 실행할 수 있다면 훨씬 쉽습니다. 그것은 가치가 무엇인지에 대한 10g 용으로 컴파일 된 프로그램에서 11g에서 런타임 컨텍스트가 작동하지 않는 이유는 무엇입니까?

이 코드는 내가 정상적인 일이라고 믿는 것을 포함

EXEC SQL ENABLE THREADS; 
EXEC SQL CONTEXT ALLOCATE :thread_ctx 
EXEC SQL CONTEXT USE :thread_ctx 
그래서

답변

0
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 문을 실행하기 전에 컨텍스트가 지워진다.

어떤 종류의 디버거를 실행하여 추적 파일을 생성하여 정확하게 문제가 전파되고 있는지 확인하십시오.

0

EXEC SQL 섹션을 선언 시작 사용

하기 전에 컨텍스트를 선언; sql_context thread_ctx; EXEC SQL 끝 선언 섹션;

관련 문제