2013-10-31 3 views
0

오라클의 이전 버전 (7 또는 8 중 하나)을 사용 중이며 exp/imp를 사용하여 데이터베이스 서버를 동기화 상태로 유지합니다 (일부 대기 시간 포함). 일종의 가난한 사람의 복제.오라클에서 사용자 및 관련 데이터 삭제

서버 중 하나가 "기본"이고 다른 하나는 "백업"입니다. 시작시 Primary는 전체 데이터베이스를 내보내고 Backup은 모든 사용자를 삭제 한 다음 Primary가 내 보낸 것을 가져옵니다. 그런 다음 일정 간격으로 주 백업은 증분 덤프를 내보내 백업에서 가져와 동기화되도록합니다.

"모든 사용자 삭제"부분은 우리가 많은 시간을 보내는 곳입니다.

select distinct owner from all_tables where owner <> 'SYSTEM' AND owner <> 'SYS'; 

을 그리고 다음이 쿼리를 기반으로 SQLPLUS에 "USER 캐스케이드 드롭"일 : 기본적으로이 같은 모든 사용자에 대해 질의하고,이 작업을 수행합니다. 제 질문은, 이보다 더 빠른 방법으로 모든 사용자와 데이터를 삭제할 수 있습니까? 나에게 어떤 도움이 될지 모르겠다. (제약 조건을 완화하라. 다른 해킹?)

답변

1

check this out을 원할 수도있다.

이 솔루션은 em을 삭제하기 전에 테이블을 자릅니다. 특히 테이블에 많은 데이터가있는 경우에는 속도가 향상됩니다.

+0

링크를 제공해 주셔서 감사합니다.하지만 어제 그 사실을 실제로 발견했습니다. 나는 그것을 시도하고 우리 스키마에 대해 "drop cascade"를 수행하고 잘라내는 솔루션을 수행하는 데 2:30 정도 소요되었습니다. – systemoutprintln

+0

경고 로그에서 재미있는 것이 있습니까? 리 폴로지가 너무 빨리 전환 될 수 있습니까? – Nagh

1

전체 데이터베이스를 삭제하고 다시 만들고 가져 오기를 수행하는 것이 더 빠를 수 있습니다. 이것은 많은 객체가있는 경우 특히 그렇습니다.

dbvisit replicate과 같은 스마트 솔루션을 업그레이드하고 스마트 솔루션을 사용할 때가 있을까요?

관련 문제