2017-02-09 12 views
-1

Oracle9i (9.2)를 사용 중입니다. 매일 테이블을 채워야하는 상황이 있습니다. 매일 밤 중반이 테이블은 잘리고 새 데이터가 입력됩니다. 새 데이터 채우기에는 약 10-20 분이 소요됩니다. 문제는이 테이블을 아래로 잠글 수 없다는 것입니다. 새 데이터가 삽입되는 동안 이전 요일 데이터를 선택 절차에 사용할 수 있어야합니다.트랜잭션이 진행되는 동안 테이블에서 읽음.

수정 - 트랜잭션 수준을 조사 중입니다. 그냥 전문가의 의견이 필요해.

오라클에서 가능합니까?

+0

나는 잘 모르겠다. 당신은 테이블이 잘리고 새 데이터가 삽입되었다고 말합니다. 그러나이 테이블은 이전 날짜 데이터와 함께 쿼리에 사용됩니다. 그러나 테이블은 잘 렸어 ?? – BobC

+0

그래, 트랜잭션 내에서 잘라 내기 또는 삭제를 수행 할 수 있지만 커밋되지는 않았 으면합니다. 커밋 될 때까지 테이블의 데이터는 트랜잭션 이전과 동일한 상태로 유지되어야하며 쿼리에 사용할 수 있어야합니다. 그러나 이것은 단지 나의 가정입니다. – pinklotus

+0

TRUNCATE는 DDL 명령으로 트랜잭션 의미론의 적용을받지 않습니다. – BobC

답변

1

두 개의 테이블 사용 방법은 어떻습니까? 이전 요일 데이터가있는 "현재"테이블이 있어야합니다. 그런 다음로드 할 수있는 새 테이블을 준비하십시오. 그런 다음 준비가되면 일련의 이름 바꾸기 작업을 사용하여 두 테이블을 "바꿀"수 있습니다.

+0

두 테이블간에 전환 할 수있는보기를 사용하십시오. –

+0

또는 슈퍼 - 클린 스와핑을위한'ALTER TABLE ... EXCHANGE PARTITION' (파티셔닝 면허가있는 경우). 즉, @ mathguy의 접근 방식 (삭제, 삽입, 커밋)이 마음에 들지만 전체 새로 고침 프로세스에서 데이터를 100 % 온라인 상태로 유지하는 유일한 방법입니다. –

+0

죄송합니다 .. OP가 Oracle 9.2에서 발생 했으므로 'EXCHANGE PARTITION'을 사용할 수 없습니다. –