Wpis z mikrobloga

Baza danych Oracle

Orientujecie się może czy w jakiś sposób jest możliwość przyspieszenia wykonywania select z widoku?

Mianowicie mam taką sytuację:
Baza Postgres (z której korzysta firma zewnętrzna) ↔ baza "gateway" (Oracle) ↔ główna baza (Oracle)

1) W bazie "gateway" utworzony jest widok który poprzez dblinka odwołuje się do widoku w głównej bazie
2) W bazie Postgres utworzony jest widok który poprzez dblinka odwołuje się do widoku utworzonego w pkt 1)

Firma zewnętrzna zgłosiła długi czas oczekiwania na dane, np. count 300tys wierszy zajmuje ok. 20 minut, gdzie ten sam count na bazie "gateway" zajmuje ok 10sekund

Orientujecie się może czy jest jakiś sposób aby to przyspieszyć? (tylko od strony Oracle - czyli albo na bazie "gateway" albo na głównej) // dane w głównej bazie często się zmieniają
Od miesiąca zajmuje się bazami i nie za bardzo wiem co robić :/
#bazydanych #oracle #informatyka
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@DinapeS: ta baza gateway to oracle gateway, czy po prostu inna baza?
Nie znam zbytnio postgresa, ale na pewno da się wyciągnąć, jakie są główne waity na tej bazie przy robieniu selecta na wspomnianym widoku. Warto zobaczyć, na co czeka baza.
  • Odpowiedz
@DinapeS: sprawdzaj v$activesessionhistory na bazie gateway oraz głównej w calu znalezienia waitów, które się pojawiają przy egzekucji zapytań.
Jeśli problemem jest duży poziom odczytów na bazie głównej to tak jak napisał @bob9876 robisz widok zmaterializowany i zastępujesz nim zwykły widok.
Generalnie warto żebyś zaprzyjaźnił się z raportami ASH, ADDM oraz AWR, bez tego będzie ciężko.
  • Odpowiedz
@p4damczyk: active session history to część diagnostic packa, który kosztuje duże pieniądze. Pytanie czy na bazach @DinapeS są odpowiednie licencje, bo inaczej w audycie mogą wyjść potem piękne karne kwoty ( ͡° ͜ʖ ͡°)
  • Odpowiedz
@Sebgat: racja, u mnie to standard na szczęście.
Mam nadzieję, że nie narobił sobie bigosu przez moje rady ( ͡° ͜ʖ ͡°)
Ale nawet jeśli - to wina jest tylko pracownika, bo wrzucili świeżą osobę na bardzo głęboką wodę ( ͡° ͜ʖ ͡°)
  • Odpowiedz