특정 삽입에 대한 액세스를 동기화하고 싶습니다. 따라서 여러 응용 프로그램에서이 "하나의"삽입을 실행하면 삽입은 한 번에 하나씩 발생해야합니다. 동기화의 이유는이 엔티티의 인스턴스가 하나만 있어야한다는 것입니다. 여러 응용 프로그램이 동일한 엔티티를 삽입하려고하면 하나만 성공하고 다른 하나는 실패해야합니다. 하나의 옵션으로 복합 엔티티를 생성하는 것이 고려되었습니다.이 고유 키는 엔티티를 고유하게 식별하고 고유 제한 조건에 의존합니다. 어떤 이유로 dba 부서는이 아이디어를 거부했습니다. 내 마음에 온 다른 옵션은 삽입에 대한 저장된 proc를 생성하는 것이었고, 저장된 proc이 전역 잠금을 얻을 수 있다면 동일한 애플리케이션에 동일한 proc을 호출하는 여러 애플리케이션이 있었지만 별도의 데이터베이스 세션에서는 저장된 proc 글로벌 락을 취득 할 수있어 인서트를 직렬화 할 수 있습니다. 제 질문은 오라클 버전 10/11의 저장된 proc를 사용하여 이러한 잠금을 얻는 것이고 문서에 대한 포인터가 도움이 될 것입니다.프로세스 전반에 걸친 Oracle 글로벌 잠금
1
A
답변
1
삽입 된 엔티티를 고유하게 만들려면 Oracle에서 어떤 것도 serialize 할 필요가 없습니다. 고유 한 제한 조건이 완벽하게 설계되어이 용도로 적합합니다. Oracle은 하나의 엔티티 만 삽입되도록하는 데 필요한 모든 잠금을 처리합니다.
dba 부서가 고유 한 제약 조건에 대한 아이디어를 거부 한 이유를 생각할 수 없습니다. 이는 매우 기본적인 것입니다. 제안 된 솔루션의 다른 측면을 거부했을 수도 있습니다.
어떤 이유로 액세스를 직렬화하려면 (이유가 무엇인지 생각할 수 없다), (a) 테이블의 모든 DML을 직렬화하는 전체 테이블을 잠글 수 있습니다. 또는 (b) DBMS_LOCK을 사용하여 사용자 이름이 지정된 잠금을 얻습니다. 잠금을 얻는 특정 프로세스 만 직렬화합니다. 두 옵션 모두 장점과 단점이 있습니다.
관련 문제
- 1. iOS의 앱 수명주기 전반에 걸친 SQLite 지속성
- 2. 수업 전반에 걸친 일정을 어떻게 시작합니까?
- 3. 팀 프로젝트 전반에 걸친 체크인을 막기위한 TFS 체크인 정책이 있습니까?
- 4. Oracle sql - 글로벌 변수
- 5. oracle db에 글로벌 사용자로 로그인
- 6. 멀티 코어 컴퓨터에서 프로세스 잠금
- 7. 프로세스 잠금 코드 그림 필요
- 8. 파이썬 글로벌 통역 잠금 GIL 문제
- 9. Oracle 글로벌 임시 테이블 - 최대 레코드 수?
- 10. 여러 컴퓨터에서 프로세스 간의 잠금 메커니즘
- 11. 프로세스/컴퓨터에서 SharePoint 목록/항목 잠금 방법?
- 12. SQL 서버 프로세스 아이디 잠금 오류
- 13. 배치 파일로 Oracle 사용자 잠금 해제
- 14. SetWindowsHookEx를 사용하는 프로세스 전체 훅
- 15. 2 개의리스트에 걸친 결합의 데이터 바인딩
- 16. 가계도에 걸친 SQL 루프
- 17. Dotconnect for Oracle - EF - 글로벌 트랜잭션에서 너무 많은 로컬 세션
- 18. Oracle 글로벌 임시 테이블에서 선택하는 경우의 PHP 문제
- 19. 글로벌 임시 테이블에 데이터로드
- 20. 관리 코드의 파일에 대한 프로세스 핸들 및 잠금 확인
- 21. 잠긴 프로세스 나 잠금 프로세스가 없으면 SQL Server 2005가 차단됩니다.
- 22. 여러 필드에 걸친 MySQL의 독창성
- 23. 여러 테이블에 걸친 복잡한 쿼리
- 24. 여러 실행에 걸친 영구 저장소
- 25. 여러 줄에 걸친 파이썬 정규식
- 26. 여러 노드에 걸친 텍스트 찾기
- 27. 불규칙한 시계열에 걸친 정규 분석
- 28. .Net에서 잠금 행 잠금
- 29. 개인용 글로벌 대 공개용 글로벌
- 30. 수업 전반에 걸쳐 사용되는 개체를 해제하려면?
DBA 그룹이 고유 한 제약 조건을 갖는 주요 이유 중 하나 인 "고유 한 제약 조건을 사용하여 그룹 열에 대한 액세스를 직렬화하지 마십시오"라고 말한 이유는 상상할 수 없습니다. 세션 A가 세션 B, C 및 D를 차단하는 행을 삽입하는 경우 세션 B-D가 세션 A가 블록 문을 완료 또는 롤백하기를 기다리는 동안 중단됩니다. 또는 데이터 일관성을 위해 고유 색인이 필요하다는 것을 주장하면 다리를 놓을 수 없습니다. –