sqlplus 또는 rman을 사용하여 Oracle 10g 테스트용 데이터베이스 백업/복원

StackOverflow https://stackoverflow.com/questions/67666

문제

테스트 서버와 함께 Oracle 10g를 사용하면 백업이 생성되면 항상 지정된 지점으로 돌아가고 싶다고 가정할 때 데이터베이스를 정적 ​​지점으로 백업하고 복원하는 가장 효율적이고 쉬운 방법은 무엇입니까?

샘플 사용 사례는 다음과 같습니다

  1. 모든 소프트웨어 설치 및 구성
  2. 기본 테스트 지점에 대한 데이터 수정
  3. 어떻게든 백업을 수행하십시오(이것은 이를 수행하는 방법에 대한 질문의 일부입니다).
  4. 테스트를 하다
  5. 3단계 상태로 복귀(백업 지점으로 다시 복원, 이것이 질문의 나머지 절반입니다)

최적으로 이는 sqlplus, rman 또는 기타 스크립트 가능한 방법을 통해 완료됩니다.

도움이 되었습니까?

해결책

기본 시간에는 백업을 수행할 필요가 없습니다.플래시백 데이터베이스를 활성화하고, 보장된 복원 지점을 생성하고, 테스트를 실행하고, 이전에 생성된 복원 지점으로 플래시백하면 됩니다.

이에 대한 단계는 다음과 같습니다.

  1. 마운트 모드에서 인스턴스를 시작합니다.

    시동 강제 마운트;

  2. 복원 지점을 만듭니다.

    before_test에서 복원 지점을 생성하여 플래시백 데이터베이스를 보장합니다.

  3. 데이터베이스를 엽니다.

    데이터베이스 열기 변경;

  4. 테스트를 실행하세요.

  5. 인스턴스를 종료하고 마운트합니다.

    즉시 종료;시작 마운트;

  6. 복원 지점으로 플래시백합니다.

    before_test 복원 지점으로의 플래시백 데이터베이스;

  7. 데이터베이스를 엽니다.

    데이터베이스 열기 변경;

다른 팁

Oracle의 기능을 사용할 수 있습니다. 플래시백 이를 통해 테스트를 마친 후 쉽게 다시 돌아갈 수 있는 복원 지점을 만들 수 있습니다.

사이트에서 인용했는데,

플래시백 데이터베이스는 데이터베이스의 '리 윈드 버튼'과 같습니다.데이터베이스의 백업을 먼저 복원 할 필요없이 데이터베이스 포인트 회복을 제공합니다.테이프에서 데이터베이스 백업을 복원하는 데 걸리는 시간을 제거하면 데이터베이스 포인트 시간 복구가 빠릅니다.

내 경험에 따르면 가져오기/내보내기가 아마도 좋은 방법일 것입니다.내보내기는 DB의 논리적 스냅샷을 생성하므로 대규모 DB나 엄격한 성능 요구 사항에는 유용하지 않습니다.그러나 스냅샷을 만드는 데 적합하며 여러 컴퓨터에서 사용하지 않는 것이 좋습니다.

통합 테스트를 위해 개발자 간에 교환할 수 있는 프로덕션 스냅샷을 얻기 위해 Rails 프로젝트에서 이를 사용했고 우리는 rake 스크립트 내에서 작업을 수행했습니다.우리는 DB를 파괴한 다음 덤프 파일을 맨 위로 가져오는 작은 sqlplus 스크립트를 작성했습니다.

확인하고 싶은 기사:OraFAQ 치트시트 오라클 위키

오라클은 분명히 imp/exp를 더 이상 좋아하지 않습니다. 데이터 펌프, 데이터 펌프를 사용할 때 우리는 가질 수 없는 것들이 필요했습니다(예:공유 환경에서는 얻을 수 없는 SYSDBA 권한).따라서 한 번 살펴보시고 데이터 펌프가 귀하의 가방이 아니더라도 낙심하지 마십시오. 이전 imp/exp가 여전히 존재합니다 :)

RMAN은 많은 설정이 필요하고 DB에 구성이 필요하기 때문에 이런 종류의 작업에는 RMAN을 권장할 수 없습니다(베어 메탈 복원에 대한 속담에서 고통스러운 백업을 위한 자체 카탈로그 DB도 있습니다).

기록 중 복사 스냅샷을 지원하는 파일 시스템을 사용하는 경우 데이터베이스를 원하는 상태로 설정할 수 있습니다.그런 다음 모든 것을 종료하고 파일 시스템 스냅샷을 찍습니다.그런 다음 테스트를 진행하고 다시 시작할 준비가 되면 스냅샷을 롤백할 수 있습니다.스냅샷을 지원하는 파일 시스템이 있다고 가정하면 이는 다른 옵션보다 간단할 수 있습니다.

@Michael Ridley 솔루션은 완벽하게 스크립트 가능하며 모든 버전의 Oracle에서 작동합니다.

이것이 바로 제가 하는 일입니다. 매주 실행되는 스크립트가 있습니다.

  1. 파일 시스템 롤백
  2. 프로덕션 아카이브 로그 적용
  3. 새로운 "사전 데이터 마스킹" FS 스냅샷 생성
  4. 로그 재설정
  5. "사전 제작" 데이터 마스킹을 적용합니다.
  6. 새로운 "포스트 데이터 마스킹" 스냅샷 생성(마스킹된 데이터 게시로의 롤백 허용)
  7. 데이터베이스 열기

이를 통해 개발 데이터베이스를 프로덕션 데이터베이스와 가깝게 유지할 수 있습니다.

이를 위해 ZFS를 사용합니다.

이 방법은 응용 프로그램이나 전체 "환경"에도 사용할 수 있습니다. 예를 들어 단일(스크립트된) 명령으로 전체 환경을 "롤백"할 수 있습니다.

하지만 10g를 실행하는 경우 가장 먼저 살펴보고 싶은 것은 데이터베이스에 내장된 Flashback입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top