에 의해 공유되고 있습니다.이 절차에서는 세션 기반 글로벌 임시 테이블을 사용하므로 문제가 발생합니다. 좋은 이유가 필요합니다. 한 웹 클라이언트의 동작은 다른 웹 클라이언트의 동작을 방해합니다. 동일한 Oracle 세션이 별도의 클라이언트에 의해 재사용되는 이유는 무엇입니까?오라클 세션이 다른 웹 클라이언트 - 웹 로그
웹 로직이있는 연결 풀링이 있습니다. 실제로 2 개의 클라이언트가 동일한 oracle 세션을 할당 받고 있음을 확인하기 위해 다음을 인쇄했습니다.
SELECT SYS_CONTEXT ('USERENV', 'INSTANCE'),
SYS_CONTEXT ('USERENV', 'SID'),
SYS_CONTEXT ('USERENV', 'SESSIONID')
FROM DUAL;
각 클라이언트가 다른 세션 (HTTP 세션이 아닌 Oracle 세션)을 확보하는 방법은 무엇입니까? 웹 로직 레벨에서 뭔가 수정해야 할 필요가 있습니까?
몇 가지 질문이 있습니다. 먼저 답장을 보내 주셔서 감사합니다. (1) "고유 한 세션 ID를 키의 일부로 포함하는 영구 테이블"이라고하는 고유 한 세션 키는 무엇입니까? Java 세션 ID를 언급하고 있습니까? 왜냐하면 내가 질문에서 언급했듯이, DB 세션 ID가 다른 사용자/클라이언트에 대해 동일한 값을 보여주기 때문에 모든 문제가 발생하기 때문입니다. (2) 웹 응용 프로그램 컨텍스트에서 세션 기반 GTT에 대해 논의하지 않았습니까? 나는 웹 사이트와 관련하여 글로벌 임시 테이블의 다른 응용 프로그램이 무엇인지 의미합니까? 장바구니는 어떻게 구현됩니까? – user2275460
@ user2275460 - "고유 한 세션 키"는 중간 계층에서 할당 한 것으로 응용 프로그램 세션을 식별합니다. 그리고 예, 저는 웹 기반 응용 프로그램에서 GTT를 사용하는 상황을 상상하기가 매우 어려울 것입니다. 장바구니를 만들 때 GTT를 사용하는 것을 상상할 수 없습니다. 나는 장바구니가 '쇼핑'상태 인 주문을 추적하는 데 사용할 영구 테이블을 보유 할 것으로 예상됩니다. 이 경우, 응용 프로그램 세션뿐만 아니라 장 Y 구니에 사용자의 장 Y 구니가 표시되기를 원할 수도 있습니다. –
@ user2275460 - 예를 들어 몇 달 동안 Amazon cart에있는 항목이 있습니다. 아마존은 저에게만 전용 데이터베이스 연결을 열지 않았으며, 그 시간 동안 수십 대의 기계에서 열어 본 모든 애플리케이션 세션에 데이터베이스 연결을 연결하고 저장된 항목으로 GTT의 데이터를 보여주었습니다. . –