오라클의 내장 인증 메커니즘을 사용하여 사용자 계정과 비밀번호를 관리하는 애플리케이션을 개발 중입니다. 또한 응용 프로그램은 행 수준 보안을 사용합니다. 기본적으로 응용 프로그램을 통해 등록하는 모든 사용자는 "USERS"테이블의 일반적인 항목 대신 Oracle 사용자 이름과 암호를 가져옵니다. 사용자는 또한 특정 테이블에 레이블을받습니다. 이러한 유형의 기능을 사용하려면 DML 및 DDL 문을 여러 인스턴스에서 결합해야하지만 DDL 문이 암시 적 커밋을 수행하기 때문에 문제가 발생합니다. DDL 문 실행 후 오류가 발생하면 트랜잭션 관리가 모든 것을 롤백하지 않습니다. 테이블에단위 테스트 트랜잭션에 있어야하는 DDL 문
- 시작 트랜잭션
- 삽입 사람 세부 정보 : 새로운 사용자가 시스템에 등록 할 때 예를 들어, 일어날 수있는 다음과 같습니다. (이름, 성 등) -DML
- 오라클 계정 생성 (암호로 식별 된 사용자 testuser 생성) -DDL 암시 적 커밋. 거래가 종료됩니다.
- 새 트랜잭션이 시작됩니다.
- 더 많은 DML 구문 (삽입, 업데이트 등)을 수행하십시오.
- 오류 트랜잭션은 내가 위의 논리가 설계된대로 작동하는지 이해 4.
단계로 롤백 발생하지만 단위 테스트에 이러한 유형의 기능 어려운 그것을 발견하고 데이터를 관리하고있어 액세스 레이어. 데이터베이스가 다운되었거나 단위 테스트 중에 오류가 발생하여 테스트 스키마가 롤백 된 테스트 데이터로 오염되었습니다. 이런 일이 발생하면 테스트 스키마를 지우는 것은 쉽지만 프로덕션 환경의 데이터베이스 오류가 걱정됩니다. 나는 이것을 관리하기위한 전략을 찾고있다.
이것은 Java/Spring 응용 프로그램입니다. Spring은 트랜잭션 관리를 제공한다.
.. :
이 읽기? –
나는 cletus의 대답을 읽고 USERS 테이블에서보다 전통적인 접근 방식을 사용하도록 결정할 것을 강력히 권장합니다 ... –
@matt b. 아니요, Oracle 계정을 만들 때 Oracle의 행 수준 보안 기능을 사용하는 경우 기존 테이블에 레이블을 추가해야 할 수 있습니다. –