* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
| Cent os7 | |
CUBRID Ver. | [cubrid_rel] cubrid 10.5 |
CUBRID TOOL Ver. | [도움말]-[버전정보] 확인 |
응용 환경(API) | Apache, jboss |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
| 에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
| 관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요, 운영 중인 시스템에서 사용자 정보를 저장하는 테이블에서 특정 부서의 데이터가 삭제된 것으로 보입니다.
- 테이블명: [user_info]
- 누락된 대상: 부서코드 'XXX'에 해당하는 사용자 전체
- 확인 일시: 2025-07-07
- 참고 사항:
- 해당 부서의 데이터는 이전에 타 페이지(예: 부서별 사용자 조회 화면 등)에서 정상 조회되었음을 확인한 이력이 있습니다.
- 부서 담당자 측에서는 삭제 작업을 수행하지 않았다고 합니다.
혹시 CUBRID에서 아래와 같은 사항을 로그 등을 통해 확인할 수 있을지 문의드립니다:
1. 해당 테이블에서 DELETE 혹은 UPDATE가 수행된 내역을 확인할 수 있는 방법
2. 특정 사용자가 실행한 SQL 로그 추적 가능 여부
3. 별도로 활성화된 감사(audit) 로그 기능이 있는 경우 위치 및 확인 방법
4.broker/sql_log 디렉토리 등
- 로그 설정이 활성화되어 있을 경우, 누가 어떤 쿼리를 언제 실행했는지 확인 가능 여부
- 클라이언트 IP, 접속 계정 등의 정보도 남는지 여부
삭제 이력 테이블에는 관련 데이터가 남아 있지 않은 상황인데 만약 SQL로 직접 삭제한 것이 아니라면 실제로 해당 데이터가 과거에 존재했는지를 확인할 수 있는 다른 방법이 있을지 문의드립니다.
안녕하세요. 버전 정보에 10.5라고 기재해주셨는데 10.1.5를 말씀하시는 것이 맞으실까요?
update/delete는 별도 audit 로그로 남거나 하지는 않습니다.
또한 사용자가 실행한 sql은 모두 $CUBRID/log/broker/sql_log 디렉터리 내에 보관되어 해당 로그에서 확인 하실 수 있으며, sql log에서 말씀하신 클라이언트 IP 등을 확인하실 수 있습니다.
다만 sql log의 용량이 제한되어 있어 정해진 용량을 초과할 경우 덮어쓰기 되어 원하시는 로그가 없을 가능성도 있습니다.
sql log는 용량을 초과했을 경우 log.bak 확장자로 1개까지 백업 파일이 생성되나 그 이전 로그는 확인하실 수 없습니다.
추가로 과거에 데이터가 존재했었는지 확인하실 수 있는 방법은 따로 없으며, 백업을 주기적으로 받고 있으시다면 백업 파일을 통해 확인하는 방법 뿐일 것 같습니다.
감사합니다.
- 혹시 부서 테이블에 해당 부서 코드 데이터는 남아 있을까요? 부서 테이블과 유저 테이블 사이에 FK 제약관계가 있다면, FK관계로 인해 데이터가 삭제되었을 가능성이 있는지 검토해보시면 좋을 것 같습니다.