Oracle 데이터베이스의 서로 다른 두 스키마에있는 개체에 대해 DML을 수행하는 단일 연결이 있습니다. 나는 schema A
에있는 객체를 포함하는 트랜잭션을 완료 한 다음 schema B
에있는 객체로 작업 할 두 번째 트랜잭션을 시작합니다. 두 번째 트랜잭션에서 작업 할 때 오류가 발생하면 두 트랜잭션의 변경 내용을 롤백해야합니다. 그게 가능하니?데이터베이스의 여러 스키마에 걸친 트랜잭션
답변
두 스키마에 대한 변경 사항을 커밋하거나 롤백 할 경우 단일 트랜잭션을 사용해야합니다. 첫 번째 트랜잭션을 커밋하면 두 번째 트랜잭션이 실패 할 경우 롤백 할 수 없습니다 (물론 플래시백 기술을 사용할 수도 있지만 방법이에 더 관여합니다). 그러나 두 스키마에서 수행중인 작업에 대해 단일 트랜잭션을 사용한 경우 모든 변경 사항이 기본적으로 커밋되거나 롤백되는 동작을 얻게됩니다.
당신이 Connection
그래서, 예를 들어 (기본값)하는 자동 커밋하지 않는 설정 :
conn.setAutoCommit(false);
그런 다음 동일한 연결 개체를 사용하여 첫 번째 스키마에 대해 DML을 실행할 수 있습니다 실행하여 두 번째 스키마에 대한 DML. 뭔가가 실패 할 경우, 예컨대, 다시 모든 롤 : 모두가 성공했을 경우
conn.rollback();
그렇지 않으면, 커밋 :
conn.commit();
GriffeyDog 단일 연결로 두 개의 스키마에 액세스 할 수 없지만 단일 트랜잭션 잘못된 것이 맞습니다. – BALASCJP
이제 JDBC 데이터베이스 연결을 사용하여 두 스키마 각각에 직접 연결하는 것처럼 들립니다. 응용 프로그램이 Oracle 데이터베이스에 연결하는 데 사용할 수있는 별도의 스키마를 설정하고 액세스 할 필요가있는 데이터베이스 개체에 대해이 스키마에서 기존 스키마와의 적절한 권한을 부여하여 적절하거나 필요한 동의어를 만듭니다. 그런 다음 단일 JDBC 연결 만 필요합니다. – GriffeyDog
- 1. 다른 스키마에 대한 트랜잭션 복제?
- 2. 데이터베이스의 트랜잭션 잠금
- 3. 여러 파일 이상에 걸친 템플릿
- 4. 여러 테이블에 걸친 복잡한 쿼리
- 5. 여러 디렉토리에 걸친 복잡한 SVN
- 6. 여러 필드에 걸친 MySQL의 독창성
- 7. 여러 도메인에 걸친 PHP 세션
- 8. 여러 서비스에 걸친 WCF 보안
- 9. MySql - 여러 서버에 걸친 통합
- 10. 여러 줄에 걸친 파이썬 정규식
- 11. 여러 노드에 걸친 텍스트 찾기
- 12. 여러 실행에 걸친 영구 저장소
- 13. edb 데이터베이스의 트랜잭션 로그 파일
- 14. 여러 트랜잭션
- 15. @ 트랜잭션 주석이있는 여러 트랜잭션 관리자
- 16. Grails에서 여러 달에 걸친 항목을 월 단위로 선택
- 17. 여러 요소에 걸친 jQuery 애니메이션 큐
- 18. 여러 컬럼에 걸친 mysql 키워드 검색
- 19. SSRS 2012 여러 열에 걸친 재귀 계층
- 20. 여러 하위 도메인에 걸친 URL 라우팅
- 21. 여러 프로젝트에 걸친 캐슬 윈저 구성
- 22. Hadoop 파일 시스템의 여러 파일에 걸친 grep
- 23. 테이블 릭스 매트릭스 - 여러 행에 걸친 차트
- 24. 여러 파일에 걸친 C++ 전역 변수
- 25. SQL Server - 여러 시간에 걸친 시간별 쿼리
- 26. 여러 소켓에 걸친 원자 소켓 메시지
- 27. 여러 세트에 걸친 IsSubset-relation 테스트
- 28. 여러 스레드에 걸친 작업에 대한 로그 연결
- 29. 여러 모델에 걸친 마법사 스타일 양식 만들기
- 30. FullCalendar 및 MySQL - 여러 달에 걸친 이벤트
당신은이 질문에 오라클 태그했습니다. 오라클이 정의한 방식대로 "데이터베이스"라는 용어를 사용하고 있습니까? 그렇다면 다중 데이터베이스에 단일 연결을 할 수 없습니다. 또는 오라클 용어를 사용하여 동일한 데이터베이스의 두 가지 스키마에서 데이터를 수정하는 프로세스를 언급하고 있습니까? –
동일한 데이터베이스의 서로 다른 두 스키마를 참조하고 있습니다. – BALASCJP
좋아요, 당신의 말을 분명히하기 위해 질문을 편집 한 것 같습니다. 질문을 올바르게 이해했는지 확인하십시오. –