Temat: Alter view compile - zwiecha.

Oracle Xe 10g.
Windows 2003.
Alter view compile na jednym konkretnym widoku (dość skomplikowanym - unia kilku left outer joinów) potrafi trwać ponad dzień i się nie kończy. Muszę zabić proces Oracle.exe, który w tym czasie (przed zabiciem ;>) zjada całego core'a.

W sytuacji kiedy to się dzieje nie mogę się w ogóle połączyć inną sesją do tej bazy.
Puściłem kompilację z sql trace w sesji. Nic sensownego nie ma w trace...

Co moge sprawdzić żeby zdiagnozować problem?

Jakieś pomysły ?

konto usunięte

Temat: Alter view compile - zwiecha.

Jacek Tomaka:
Co moge sprawdzić żeby zdiagnozować problem?

Przejrzyj listę parametrów, które wpływają na plan zapytania i zmieniaj je
kolejno przed kompilacją, może któryś "puści".

Na początek można zacząć od _PUSH_JOIN_PREDICATE ... potem OPTIMIZER_FEATURES_ENABLE ...

http://www.dba-oracle.com/t_hidden_optimizer_parameter...

Zajrzyj do V$WAITSTAT, może jest tam coś ciekawego.

Spróbuj też przekonstruować ten widok.
Paweł Grzegorz Kwiatkowski

Paweł Grzegorz Kwiatkowski Architekt
oprogramowania,
Ericsson

Temat: Alter view compile - zwiecha.

Duże zużycie CPU wskazywałoby na to, że proces aktywnie (spinlock) próbuje uzyskać jakiegoś latcha i z jakiegoś powodu nie udaje mu się to.

Zacząłbym od sprawdzenia na czym "wisi" sesja, z której wykonujesz kompilację widoku.

Temat: Alter view compile - zwiecha.

Krzysztof Pułapa:
Przejrzyj listę parametrów, które wpływają na plan zapytania i zmieniaj je
kolejno przed kompilacją, może któryś "puści".

Jak?
Na początek można zacząć od _PUSH_JOIN_PREDICATE ... potem OPTIMIZER_FEATURES_ENABLE ...

Widok się wcześniej kompilował... Parametry nie były zmieniane.
http://www.dba-oracle.com/t_hidden_optimizer_parameter...

Zajrzyj do V$WAITSTAT, może jest tam coś ciekawego.

W czasie trwania kompilacji nie mogę się wbić inną sesją. Inne zapytania stoją.
Spróbuj też przekonstruować ten widok.

Spróbuję.

konto usunięte

Temat: Alter view compile - zwiecha.

Jacek Tomaka:
Jak?

Powoli :)
W czasie trwania kompilacji nie mogę się wbić inną sesją. Inne zapytania stoją.

W takim razie idź może metodą eliminacji. Najpierw skopiuj jego treść do innego widoku. Potem usuwaj z niego kolejne fragmenty aż do momentu, w którym zacznie się kompilować.

Temat: Alter view compile - zwiecha.

Krzysztof Pułapa:
Jacek Tomaka:
Jak?

Powoli :)
W czasie trwania kompilacji nie mogę się wbić inną sesją. Inne zapytania stoją.

W takim razie idź może metodą eliminacji. Najpierw skopiuj jego treść do innego widoku. Potem usuwaj z niego kolejne fragmenty aż do momentu, w którym zacznie się kompilować.

Troche jednak oszukałem. Mogłem się połączyć inną sesją, jeśli połączyłem się wcześniej.
Udało się zapodać oradebug hanganalyze 5, który zrzucił m.in. call stacka zwieszonego procesu.
W call stacku poniżej metod trace'owych znalazłem _qcsjFindFroInQbc parę sztuk.
Search na metalinku po tym pozwolił zlokalizować buga:
Bug 4767699 Spin in qcsjFindFroInQbc for query with join and functional index

Dwa kliki później czytałem już o :
Bug 4767699: VIEW CREATION OR COMPILATION GETS 100% CPU AND HANGS

I to czego szukałem, czyli:

WORKAROUND:
Write the view using Oracle format.

Jeszcze nie zweryfikowałem, ale to będzie z dużym prawdopodobieństwem to ;>
Dzięki za pomoc.
Paweł Grzegorz Kwiatkowski

Paweł Grzegorz Kwiatkowski Architekt
oprogramowania,
Ericsson

Temat: Alter view compile - zwiecha.

A tu na przyszłość: http://tech.e2sn.com/oracle/troubleshooting/hang/how-t... jak się podpiąć po zawieszoną instancję z wyjaśnieniem dlaczego to działa :)

Temat: Alter view compile - zwiecha.

Paweł Grzegorz Kwiatkowski:
A tu na przyszłość: http://tech.e2sn.com/oracle/troubleshooting/hang/how-t... jak się podpiąć po zawieszoną instancję z wyjaśnieniem dlaczego to działa :)

Dobra, a skąd wziąć ospid? W windowsie to są wątki, a nie procesy, więc żeby się dowiedzieć który to proces/wątek - odpytałem katalogu.
Jak się połącze z -prelim to nie będę mógł tego zrobić.

konto usunięte

Temat: Alter view compile - zwiecha.

Jacek Tomaka:
Paweł Grzegorz Kwiatkowski:
A tu na przyszłość: http://tech.e2sn.com/oracle/troubleshooting/hang/how-t... jak się podpiąć po zawieszoną instancję z wyjaśnieniem dlaczego to działa :)

Dobra, a skąd wziąć ospid? W windowsie to są wątki, a nie procesy, więc żeby się dowiedzieć który to proces/wątek - odpytałem katalogu.
Jak się połącze z -prelim to nie będę mógł tego zrobić.

Wątki też mają przecież swoje identyfikatory :). Powinieneś móc je zdobyć Process Explorerem (http://technet.microsoft.com/en-us/sysinternals/bb896653), pole TID.

Temat: Alter view compile - zwiecha.

Adam Michalski:
Wątki też mają przecież swoje identyfikatory :). Powinieneś móc je zdobyć Process Explorerem (http://technet.microsoft.com/en-us/sysinternals/bb896653), pole TID.

Uważasz, że procesexplorer powie mi który wątek jest procesem SHADOW mojej sesji?:)
Po czym ? Po natywnym call stacku?

konto usunięte

Temat: Alter view compile - zwiecha.

Jacek Tomaka:
Adam Michalski:
Wątki też mają przecież swoje identyfikatory :). Powinieneś móc je zdobyć Process Explorerem (http://technet.microsoft.com/en-us/sysinternals/bb896653), pole TID.

Uważasz, że procesexplorer powie mi który wątek jest procesem SHADOW mojej sesji?:)
Po czym ? Po natywnym call stacku?

Zawsze możesz sprawdzić wszystkie TIDy danego procesu po kolei ;) Jeśli nie wymyślisz nic lepszego.

Temat: Alter view compile - zwiecha.

Adam Michalski:
Jacek Tomaka:
Adam Michalski:
Wątki też mają przecież swoje identyfikatory :). Powinieneś móc je zdobyć Process Explorerem (http://technet.microsoft.com/en-us/sysinternals/bb896653), pole TID.

Uważasz, że procesexplorer powie mi który wątek jest procesem SHADOW mojej sesji?:)
Po czym ? Po natywnym call stacku?

Zawsze możesz sprawdzić wszystkie TIDy danego procesu po kolei ;) Jeśli nie wymyślisz nic lepszego.

Czyli nic mi to nie daje. Bo zawsze mogę zrobić dumpa oradebugiem wszystkich procesów. Ech. Unixiarze/Linuxiarze mają lżej ;)
Paweł Grzegorz Kwiatkowski

Paweł Grzegorz Kwiatkowski Architekt
oprogramowania,
Ericsson

Temat: Alter view compile - zwiecha.

Adam Michalski:
Jacek Tomaka:
Adam Michalski:
Wątki też mają przecież swoje identyfikatory :). Powinieneś móc je zdobyć Process Explorerem (http://technet.microsoft.com/en-us/sysinternals/bb896653), pole TID.

Uważasz, że procesexplorer powie mi który wątek jest procesem SHADOW mojej sesji?:)
Po czym ? Po natywnym call stacku?

Zawsze możesz sprawdzić wszystkie TIDy danego procesu po kolei ;) Jeśli nie wymyślisz nic lepszego.

Google mówi, że jest taki tool jak QSlice.exe: http://www.oraclepoint.com/topic.php?filename=372

Nigdy nie korzystałem, więc ciężko mi powiedzieć na ile użyteczny. Aczkolwiek Jacek ma doskonałą szansę sprawdzić i podzielić się wrażeniami ;)

Temat: Alter view compile - zwiecha.

Paweł Grzegorz Kwiatkowski:

Nigdy nie korzystałem, więc ciężko mi powiedzieć na ile użyteczny. Aczkolwiek Jacek ma doskonałą szansę sprawdzić i podzielić się wrażeniami ;)

;)
Ale, ale... Ja już się dowiedziałem tego co chciałem ;> Teraz próbuję się dowiedzieć co się zmieniło od ostatniej wersji aplikacji...

Następna dyskusja:

ORA-00942: table or view do...




Wyślij zaproszenie do