어떻게 생각하시나요?
인덱스는 DDL 로 따로 관리하면 되는데
어차피 rebuild, 생성시에 항상 nologging 로 하게되는데
운영시에 alter logging 로 바꿀 필요가 있을까요?
고견이 궁금합니다.
nologging으로 설정되어 있어도 DML 작업은 redo 로그에 기록된다고 합니다. 대신 로깅되는 양이 줄어서 성능 향상은 있는듯한데요. 서비스는 잘 되더라도 문제가 생겼을때 백업본으로 복구시 정상적으로 복구되느냐의 문제가 있지 않을까요.
답변 정말 감사드립니다.
테스트를 안해봐서 잘 모르겠지만,
인덱스 logging 안한다고 복구할 때
인덱스가 복구 되지 않을까라는
생각이 듭니다.
이건 테스트를 안해봐서 ...
백업이라는게 결국 DDL 수행 --> 데이터붇고 --> 롤포워드 --> 롤백 절차인데
있던 인덱스가 사라질까요?
500G 넘는 테이블에서
인덱스 logging, nologging 의 성능차이는
대량 로딩시 확실히 차이가 있었습니다.
대량 로드 작업을 하실때 nologging 상태로 수행하신건 적절한 것 같습니다.
오라클 매뉴얼에서도 ETL 프로세스등의 작업을 수행할 때는 nologging을 권장하네요.
https://docs.oracle.com/cd/E18283_01/server.112/e10578/tdpdw_bandr.htm#BFGIJDAH
대신 아래 링크의 글을 보시면 nologging 상태에서 데이터 입력후 복구시 발생할 수 있는 시나리오에 대한 테스트가 있습니다. 이런점을 감안하시고, nologging 상태에서 작업이 완료된 후에는 백업을 수행하는 것이 좋을 듯 합니다.
https://www.dbi-services.com/blog/the-consequences-of-nologging-in-oracle/
대량 로딩 작업 - nologging 후 풀백업은 명심하고 있습니다.
데이터는 logging 상태이고, 인덱스는 nologging 로
운영하는 경우를 말씀드린겁니다.
인덱스 nologging 를 정책으로 가져가도
풀복구를
unusable 로 빠지는건 있을 수 있더라도
하는 경우 있던 인덱스가 없어질까요?
네 말씀하신 상황으로 이해하고 있습니다. 이미 알고계시는 원론적인 말씀만 드리고 있는데요. 풀백업한 시점 이후 롤포워드를 포함하여 복원할때 인덱스 상태가 어떻게 되는지가 관건일 것 같습니다. 인덱스가 없어지진 않지만 액세스가 안되는 상태로 빠질 가능성도 있어 보이네요.
저도 테스트를 직접 해보기에는 조금 번거로워서 블로그들을 좀 찾아보았는데 여의치 않네요.
이거 번데기 앞에서 주름잡는 격이 되었습니다 ^^;
지금까지의 제 생각을 정리해보면 인덱스만 nologging으로 했을때 사용중에는 지장이 없지만 복구 이후 또는 crash recovery 이후 인덱스가 unusable로 빠졌을때는 리빌드를 해줘야하고, 임시적으로는 dbms_repair 패키지로 땜질하는 정도의 방편이 있을 것으로 보이네요.