오라클 트랜잭션 예제

트랜잭션에 의해 변경 된 데이터는 트랜잭션이 커밋 되거나 롤백 될 때까지 일시적입니다. 트랜잭션이 끝나기 전에 데이터의 상태는 다음과 같습니다: 하나 이상의 트랜잭션이 커밋되는 클라이언트의 각 왕복에 대해 데이터베이스는 논리적 트랜잭션 ID를 유지합니다. 이 ID는 데이터를 커밋하는 각 왕복에 대해 응용 프로그램과 데이터베이스 간의 상호 작용에 대한 트랜잭션 idempotence를 제공할 수 있습니다. SGA의 데이터베이스 버퍼가 변경되었습니다. 이러한 변경 내용은 트랜잭션이 커밋되기 전에 디스크로 이동될 수 있습니다. Oracle Database는 행과 테이블에 보관된 잠금을 해제합니다. 트랜잭션 가드는 핵심 오라클 데이터베이스 기능입니다. 응용 프로그램 연속성은 최종 사용자의 중단을 마스킹할 때 트랜잭션 가드를 사용합니다. 트랜잭션 가드가 없으면 오류가 발생한 후 응용 프로그램을 다시 시도하면 중복 트랜잭션이 커밋될 수 있습니다. 이 문은 트랜잭션 sal_update2에서 수행된 모든 변경 내용을 커밋하여 트랜잭션을 종료합니다. 커밋은 변경 내용이 온라인 다시 수행 로그 파일에 저장되도록 보장합니다. 예를 들어 두 데이터베이스가 커밋할 준비가 된 조정 데이터베이스에 보고하지만 조정 데이터베이스 인스턴스는 메시지를 받은 직후에 실패합니다. 커밋할 준비가 된 두 데이터베이스는 이제 결과에 대한 알림을 기다리는 동안 매달려 있습니다.

모든 거래에는 SCN이 있습니다. 예를 들어 트랜잭션이 행을 업데이트하는 경우 데이터베이스는 이 업데이트가 발생한 SCN을 기록합니다. 이 트랜잭션의 다른 수정 사항은 동일한 SCN을 갖습니다. 트랜잭션이 커밋되면 데이터베이스는 이 커밋에 대한 SCN을 기록합니다. 커밋에서 사용자는 트랜잭션의 변경 내용을 영구적으로 만들도록 명시적으로 또는 암시적으로 요청했습니다. 트랜잭션에 의해 변경된 내용은 영구적이며 트랜잭션이 커밋된 후에만 다른 사용자에게 표시됩니다. „샘플 트랜잭션: 계정 차변 및 신용“에 표시된 트랜잭션은 커밋으로 끝납니다. 데이터베이스가 롤백하고 다른 사용자에게 제공하는 데 필요한 정보를 유지 관리해야 하므로 데이터베이스에서 재생이 진행될 수 있는지 여부를 검사합니다(예: 데이터베이스가 트랜잭션을 롤백했기 때문에) Open 트랜잭션은 리소스를 소비합니다. 트랜잭션이 시작되기 전과 마찬가지로 데이터 보기를 볼 수 있습니다.

데이터베이스를 쿼리하는 것만 으로도 트랜잭션을 가능한 한 짧게 유지해야 합니다. 로컬 데이터베이스의 트랜잭션과 달리 분산 트랜잭션은 여러 데이터베이스의 데이터를 변경합니다. 따라서 데이터베이스가 트랜잭션의 변경 내용을 원자 단위로 커밋하거나 롤백하는 것을 조정해야 하기 때문에 분산 트랜잭션 처리가 더 복잡해지므로 더 복잡합니다. 전체 트랜잭션이 커밋되거나 롤백되어야 합니다.

Komentáře nejsou povoleny.