Tomasz W.

Tomasz W. Administrator
Systemów
Informatycznych

Temat: Własne zapytanie SQL w harmonogramie.

Witam,
Czy jest możliwość wykonania zapytania SQL w aplikacji lub poza nią, ( sql Developer) aby zapytanie takie ująć w harmonogramie, by wykonywało się w tle.
Zapytanie pod developerem wykonuje się kilka godzin. Dotyczy ono widoku GEN_LED_VOUCHER_ROW_UNION_QRY i ma w sobie funkcje sum.
Tabela bardzo duża, miliony rekordów.
Zestawienie potrzebne jest raz na miesiąc. Wynik do pliku xls lub csv.
Pozdrawiam
Tomek

select
t.year_period_key, t.ACCOUNT, t.REFERENCE_NUMBER, sum(t.AMOUNT)
from
ifsapp.GEN_LED_VOUCHER_ROW_UNION_QRY t
where
t.year_period_key=201811 and
t.account_group=501 and
t.ACCOUNT = 501000
group by t.year_period_key, t.ACCOUNT, t.REFERENCE_NUMBER."
Krzysztof Wojtal

Krzysztof Wojtal Specjalista ds
systemu ERP, PL/SQL,
Crystal rep., Power
B...

Temat: Własne zapytanie SQL w harmonogramie.

Cześć,

Wszystko zależy od tego czy masz wersję developerską i masz moduł Admin w którym można tworzyć IAL - w tych obiektach możesz ustawić, kiedy ma się wykonać, codziennie, cyklicznie, czyli raz w miesiącu, raz na rok oraz podać jakiego dnia ma się wykonać. Do takiego obiektu odwołujesz się jak do tabeli.
Jeżeli masz wykonywać raport tylko dla określonego miesiąca, to proponowałbym zmienić warunki w sekcji WHERE:

t.year_period_key=201811 and

na

t.year_period_key=To_Char(Add_Months(SYSDATE,-2 /* tu podajesz ilość miesięcy (z minusem ilość wstecz)*/),'YYYYMM') and

Pozdrawiam
Krzysiek
Tomasz W.

Tomasz W. Administrator
Systemów
Informatycznych

Temat: Własne zapytanie SQL w harmonogramie.

Cześć,
tak mam moduł adm i IALe, ale średnio to widzę.
Nie problem w uruchomieniu raz w miesiącu.
Ten widok jest zbudowany w 3 tabel. Jest to jeden z największych obiektów w bazie. Miliony rekordów. Księgowania zleceń produkcyjnych po asortymencie.
Zapytanie bez SUM, zwraca taką ilość rekordów że Excell 2016 już go ogranicza ilością wierszy.
Dlatego do analizy w excelu zrobiłem SUM. Powinien zwrócić około 1000 rekordów.
Ale czas wykonania tego zapytania trwa około 5-6 godzin. ( pod sql develperem) a zdaży się że w trakcie coś się wywali.
Dlatego to zapytanie chciałem ubrać w harmonogram - póki co jednorazowy - potem raz w miesiącu za okres poprzedzający. Najlepiej w aplikacji i specjalnej kolejce, bo wówczas widzę czy jeszcze się robi i czy ma błędy jeśli nie zrobi.

Czy budowanie IALa z tym selektem przyspieszy sprawę, wątpie.

Pozdrawiam
Tomek
Krzysztof Wojtal

Krzysztof Wojtal Specjalista ds
systemu ERP, PL/SQL,
Crystal rep., Power
B...

Temat: Własne zapytanie SQL w harmonogramie.

Cześć Tomku,

Jeżeli korzystasz z widoku, który wykorzystuje 3 tabele, to zobacz jakich danych potrzebujesz - jeżeli pochodzą one z jednej tabeli to zapytanie oprzyj na bezpośrednio na tej tabeli. Sprawdź jakie ma indeksy i postaraj się użyć pól z indeksów w sekcji WHERE np. czy pole year_period_key jest na indeksie, bo może szybciej Ci pójdzie jak użyjesz np pól year i period, które są zaindeksowane.
U nas jest widok z historią transakcji magazynowych która zawiera pierdyliard wierszy. Wyszukiwanie w nim znacznie przyśpiesza, jak się użyje pola SITE - Umiejscowienie, które jest na indeksie w tabeli. samo wyszukiwanie np po numerze partii trwało wieki, a z podanym umiejscowieniem kilka / kilkanaście sekund (przetestowane w SQL Developerze jak i w aplikacji.

IAL można ustawić tak, żeby zaczął się wykonywać każdego 1-go dnia miesiąca np. 30 min po północy - w nocy jest mniejsze obciążenie serwera, tak więc powinno to krócej trwać.

Pozdrawiam
Krzysiek
Tomasz W.

Tomasz W. Administrator
Systemów
Informatycznych

Temat: Własne zapytanie SQL w harmonogramie.

:) Dzięki za podpowiedź - odwołałem się do tabel. na szczęście było wszytko w jednej .
Czas wykonania zapytania z 6 godzin - na 3 minuty :)

Pozdrawiam
Tomek



Wyślij zaproszenie do