2011-01-07 2 views
3

SQL Server 2005의 테이블에서 Oracle 11로 데이터를 마이그레이션하는 SQL 스크립트 집합이 있습니다. 두 데이터베이스의 데이터를 비교하여 올바르게 마이그레이션되었는지 확인하려고합니다.SQL Server와 Oracle의 테이블 비교

출처 : SQL Server 2005. 약 8 천만 개의 행이있는 10 개의 큰 테이블과 약 100,000 개의 행이있는 20 개의 테이블이 있습니다.

내 대상은 Exadata의 Oracle 11이며 원본과 비슷한 테이블 구조를 가지고 있습니다.

내가 할 수있는 의견이 있으십니까? 사용할 수있는 도구가 있습니까?

+0

이전 Oracle 마이그레이션에서 없었던 Exadata로 마이그레이션하는 문제에 대해 들어 봤기 때문에 'exadata'태그가 추가되었습니다. 공유 할 수있는 구체적인 것은 없습니다. –

+1

비교에서주의해야 할 점은 thatin SQL Server의 varchar 또는 nvarchar는 'null이 아닌 빈 문자열입니다. 오라클에서는 null과 동일합니다. 비교 도구 및 방법에 따라 SQL Server는 '오라클과 다른 플래그가 붙을 수 있습니다.' –

답변

1

당신은 아마 각 테이블의 각 열에 대해하는 기능을 설계 할 수 있습니다 : 값

  • CONCATENATE 행 번호
  • 해시 그것 (MD5가 모두 사용할 수 있어야합니다)
  • 및 집계 비트를 계산 해시 값의 XOR.

결과가 동일하면 대용량 데이터를 네트워크를 통해 전송할 필요없이 두 데이터베이스에서 동일한 값을 가질 수 있습니다.

단점은 : 결과가 동일하지 않은 경우 차이점이 어디 있는지 알 수 없습니다. 예를 들어 테이블을 1000 행 단위로 분할 할 수 있습니다.

0

SSMO에 연결된 서버를 Oracle 데이터베이스에 설치하려고합니다. 그런 다음 나는 각 테이블에 대해 운영자를 제외하고

select * from table1 
except 
select * from [link_server]..myschema.TABLE1 
union 
select * from [link_server]..myschema.TABLE1 
except 
select * from table1 

주를를 사용하여 테이블을 비교하는 것 : 오라클 테이블 CLOB 열을 포함 할 때, 그것은 작동하지 않았다.

답변에 대한 답변 : 로컬 컴퓨터에 SQL Server를 설치하십시오. 거기에 DBA가 있습니다. 원격 컴퓨터에 액세스 할 수 있으면 연결된 서버를 추가 할 수 있습니다.

+0

DBTA가 링크드 servres의 아이디어를 좋아한다고 생각하지 않기 때문에 뭔가 다른 것을해야 할 것입니다 : ( – Vikram

0

"내가 소스 데이터베이스에있는 데이터를 대상 데이터베이스에 충실하게 복제 할 수 있도록 ETL 솔루션을 어떻게 테스트 할 수 있습니까?"

테이블의 개수와 크기에 대한 자세한 내용을 살펴보면 모든 테이블의 모든 열의 모든 값을 비교하는 깊이가 있음을 알 수 있습니다.

나는 그런 도구에 대해 몰라. 이러한 점검은 오랜 시간 동안 실행될 수 있지만 한 번 실행되므로 수행 할 수 있습니다. 당신은 C# 또는 자바 또는 당신이 편안하게 다른 언어로 그런 것을 쓸 수 있습니다.

또 다른 생각은 각 테이블의 작은 하위 집합을 확인하는 것입니다. ETL 도구가 작은 하위 집합을 제대로 수행한다면 예외적 인 상황이 아니면 예외가 발생하지 않을 것이라고 믿을만한 이유가 없습니다.

일괄 적으로 데이터를 마이그레이션하고 이동하면서 각 데이터를 확인하고 커밋 할 수 있습니다.

또 다른 아이디어는 통계적 접근 방식 일 수 있습니다. 각각의 행을 무작위로 샘플링하고 검사를 수행하십시오.

+0

네, 정확히 내가 물어 보는 것과 데이터베이스의 무지가 간단한 용어로 표현할 수 있습니다 :) . 이 검사를 실행하는 데 걸리는 시간을 줄이기 위해 더 작은 하위 집합을 검사하려고 생각했습니다. 나는 ppl이 가지고있는 다른 아이디어를 듣고 싶다. 그래서 여기에 질문을 던지려고했다. 귀하의 의견을 보내 주셔서 감사합니다. – Vikram