2011-11-29 4 views
6

CI 빌드 (예 : 허드슨)를 설정하여 바닐라를위한 야간 빌드/테스트주기의 일환으로 Oracle 11g 스키마를 설정하고 해체하고 싶습니다. JSF/JPA 응용 프로그램.조각 모음 카탈로그없이 CI 빌드 용 Oracle 스키마 설정/해제

가장 확실한 방법은 모든 테이블을 삭제하고 다시 만드는 것입니다. 이것이 표준 (최소한 Hibernate/JPA 도구가 자동으로 사용자에게 제공하는 기능) 인 것처럼 느껴지지만 오라클 DBA는 반복되는 객체 생성/삭제주기 후에 Oracle 카탈로그가 조각화된다는 경고를 받았습니다. 결국 이것은 SYSTEM 테이블 스페이스가 조각 모음/병합 될 수 없기 때문에 성능 문제를 야기합니다.

내 질문은 :

  • 조각화가 진짜 관심사, 또는 일반적인 웹 애플리케이션 개발 환경에 대해 고민 할 필요가있는 것이 아닙니다?
  • 조각화가 실제로 우려된다면 DROP TABLE/CREATE TABLE보다 Oracle에서 스키마를 분리하고 다시 만드는 더 좋은 방법이 있습니까?

감사합니다.

답변

7

그 DBA가 적어도 10g와 로컬 관리 테이블 스페이스 (LMT)이 문제가되지 않습니다를 사용하는 경우 위의

믿지 마세요.

비록 그것이 조각화를 일으키더라도, 나는 당신이 그 영향을 측정 할 수 있다는 것을 의심합니다. 특히 CI에 사용되는 데이터베이스에서 그러합니다.

+1

LMT는 자체적으로 'SYSTEM' 테이블 스페이스가 로컬로 관리된다고 가정 할 때 누군가가 가진 단편화를 제거해야합니다. ASM이 아무 것도 추가하지 않는다는 것은 나에게는 분명하지 않습니다. 또한 ASM은 정치적으로나 기술적으로 논쟁의 여지가있는 기술이되는 경향이 있습니다. DBA가 스토리지 관리 작업을 더 많이 처리 할 수있게하는 것입니다. 반면에 LMT는 오래된 DMT (Dictionary Managed Tablespaces)를 두드러지게 대체합니다. –

+0

@JustinCave : 힌트를 주셔서 감사합니다. ASM에 대한 설명을 삭제했습니다 (어쨌든 확실하지 않았습니다). –

2

두 번째 Oracle 프로젝트를 위해 CI 빌드 프로세스를 진행 중입니다. 나는 모든 것을 떨어 뜨리고 재창조하는 것이 해를 끼치 지 않을 것이라고 생각합니다 (위에서 설명한 a_horse_with_no_name처럼). CI를 데이터베이스 개체로 확장하려는 생각을 들었 기 때문에 기쁘게 생각합니다. 너무 많은 팀이 데이터베이스 개체를 사용하지 않습니다.

각기 다른 방법으로 최근 백업에서 데이터베이스를 복원하거나 플래시백 데이터베이스를 사용하고 응용 프로그램을 '프로덕션 백업'에서 각 CI 실행시 현재 개발 상태로 마이그레이션 할 수 있습니다. 그런 식으로 생산에 적용될 코드는 매일 밤 생산과 거의 동일하게 테스트됩니다. 생각을 조금 바꾸었지만 이미 CI를 생각하고 있다면 너무 많이 바뀌지는 않습니다.

마이그레이션 방법을 시도해 본 결과 도움이 될만한 도구를 가지고 있습니다. - http://dbgeni.com 아직 개발 단계에 있지만 CI로 설계하고 마이그레이션을 염두에두고 데이터베이스 변경을 관리했습니다.