2011-11-29 12 views
6

Chciałbym mieć kompilację CI (np. Hudson) skonfigurować i zburzyć schemat Oracle 11g w ramach nocnego cyklu budowy/testowania dla dość wanilia Aplikacja JSF/JPA.Ustawienia/zerwanie Oracle schemat dla budowania CI bez fragmentacji katalogu

Najbardziej oczywistym sposobem na to jest upuszczenie i ponowne utworzenie wszystkich tabel. Chociaż wydaje się to dość normalne (przynajmniej to jest właśnie to, co narzędzia Hibernate/JPA wykonałyby automatycznie dla ciebie), miałem już bazy danych Oracle DBA ostrzegające mnie, że katalog Oracle zostanie rozproszony po wielokrotnych cyklach tworzenia/upuszczania obiektów. Ostatecznie spowoduje to problemy z wydajnością, ponieważ obszar tabel SYSTEM nie może być defragmentowany/scalony.

Moje pytania są następujące:

  • jest fragmentacja prawdziwym problemem, czy nie jest to coś trzeba się martwić w typowym środowisku rozwoju webapp?
  • jeśli fragmentacja naprawdę jest problemem, czy istnieje lepszy sposób na zburzenie i odtworzenie schematu w Oracle niż DROP TABLE/CREATE TABLE?

Dzięki!

Odpowiedz

7

Nie wierz te administratorom

przynajmniej 10g i powyżej przy użyciu lokalnie zarządzanych obszarów tabel (LMT) to nie powinno być problemem.

I nawet jeśli to spowodowało jakąkolwiek fragmentację, bardzo wątpię, że można zmierzyć jego wpływ - szczególnie na bazę danych, która jest używana dla CI.

+1

LMT na własną rękę powinno wyeliminować wszelkie obawy, które ktoś miał z fragmentacją, zakładając, że obszar tabel "SYSTEM" jest zarządzany lokalnie. Nie jest dla mnie oczywiste, że ASM dodaje cokolwiek. ASM wydaje się być znacznie bardziej politycznie i technicznie kontrowersyjną technologią, ponieważ polega na umożliwieniu administratorom DBA obsługiwać więcej zadań związanych z zarządzaniem pamięcią masową, co oznacza przeniesienie odpowiedzialności z grup, które robią to dzisiaj. Z drugiej strony, LMT są martwym mózgowo najwyraźniej lepszym zamiennikiem dla starych stołów zarządzanych przez słownik (DMT). –

+0

@ JustinCave: dzięki za podpowiedź. Usunąłem komentarz na temat ASM (i tak nie byłem pewien) –

2

Jestem w trakcie wprowadzania procesu kompilacji CI dla mojego drugiego projektu Oracle. Nie wydaje mi się, aby upuszczenie i odtworzenie wszystkiego wyrządziło jakąkolwiek krzywdę (jako a_horse_with_no_name podaną powyżej). Cieszę się, że myślisz o rozszerzeniu CI na obiekty bazy danych - zbyt wiele zespołów tego nie robi.

Innym rozwiązaniem może być przywracanie bazy danych z ostatniej kopii zapasowej każdej nocy (lub korzystanie z bazy danych Flashback) i migracja aplikacji z "kopii zapasowej produkcji" do bieżącego stanu dewelopera przy każdym uruchomieniu CI. W ten sposób kod, który ostatecznie zostanie zastosowany do produkcji, będzie testowany każdej nocy przed czymś, co jest w dużej mierze identyczne z produkcją. To trochę zmiana myślenia, ale niezbyt duża zmiana, jeśli już myślisz o CI.

Jeśli masz ochotę wypróbować metodę migracji, mam narzędzie, nad którym pracowałem, które może pomóc - http://dbgeni.com Nadal jest bardzo w fazie rozwoju, ale zaprojektowałem go z CI i zarządzając zmianami bazy danych mając na uwadze migracje.

Powiązane problemy