2009-07-22 3 views
3

DELETE을 제외한 모든 명령문에서 잘 작동하는 Informatica를 사용하는 MySQL-> Oracle ETL이 있습니다. 안타깝게도 DELETE은 레코드를 삭제하여 인포매티카가 Oracle에서 제거/만료되는 것을 다시 볼 수 없도록합니다.MySQL DELETE 문 기록

사람들은 어떻게 MySQL DELETE 문을 기록 했습니까?

테이블은 모든 레코드 (auto_increment)의 고유 기본 키가있는 InnoDB (ACID 호환)입니다. 우리는 Windows에서 오픈 소스 MySQL을 사용하고 있습니다.

성능상의 이유로 일반 쿼리 로그를 사용하지 않는 것이 좋습니다. 우리는 또한 주식 MySQL 바이너리를 유지하고 우리 자신의 특별한 DELETE 성명을 재 컴파일하지 않는 것을 선호합니다.

답변

2

가능한 해결책은 데이터베이스에서 절대로 아무 것도 삭제하지 않는 것입니다. 정보가 영원히 손실되기 때문에 나는 데이터베이스에서 삭제하는 것을 피합니다. 테이블에 적절한 열을 추가하여 정보를 유효하지 않거나 쓸모 없게 표시하는 것을 선호합니다.

또 다른 유사한 솔루션은 trigger을 사용하여 삭제할 레코드를 감사 테이블에 삽입 한 다음 해당 정보를 삭제하는 것입니다. 인포매티카의 인서트를 사용하여 오라클 측에서도 동일한 작업을 수행하십시오.

+0

첫 번째 단락에 동의합니다. 우리는 트리거를 구현하는 것에 대해 정말로 선택 적이지만 두 번째 단락과 함께 실행 가능한 옵션으로 동의합니다. – codemonkey

+0

예, 저는'DELETE'를 표현하는 방법으로 부울'active' 컬럼에'INSERT'를 구현했습니다. 그러면''DELETE'd '데이터를 걸러 내기 위해'SELECT'을 조정해야합니다 –