Problem z wykonaniem updatu -> oci_execute |
Problem z wykonaniem updatu -> oci_execute |
27.07.2012, 13:42:15
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 27.07.2012 Ostrzeżenie: (0%) |
To mój pierwszy własny wątek na tym forum, ale skończyły mi się pomysły i nadzieja tylko w wiedzy forumowiczów.
W skrócie, mam problem z wykonaniem w skrypcie PHP serii updatów na bazie Oracle 11. Przy którymś z kolei updacie w momencie wykonanie oci_execute(..) skrypt zawisa i tyle. Na bazie działają dodatkowo 2 aplikacje seamowe i pierwsze skojarzenie to jakiś lock, który blokuje wykonanie updatu - nie udało mi się go w każdym razie w stanie odnaleźć. Poniżej dokładniejsze informacje na temat problemu. W skrypie PHP w pętli wykonywane są takie updaty:
Dziś ten ostatni zapisany update nie wykonuje się, a oci_execute się nie kończy (conajmniej przez kilka godzin). Ten sam update, nawet w czasie wykonywania skryptu, wykonany np w Toad wykonuje się bez problemu. Poszukiwalem locka nastepujacym skryptem w trakcie wiszącego wywolania:
Wynik przed wykonaniem skryptu jest pusty, a w trakcie wykonania gdy wisi: USERNAME TYPE NAME LOCK REQUEST REQUEST_1 SID STATUS OSUSER MACHINE TERMINAL PROGRAM ID1 ID2 BLOCK KLIK |AE |ORA$BASE S BRAK 0 134 ACTIVE root drupij pts/1 php@drupij (TNS V1-V3) 99 0 0 KLIK |TM |FORECASTS RX BRAK 0 134 ACTIVE root drupij pts/1 php@drupij (TNS V1-V3) 382256 0 0 KLIK |TX |X BRAK 0 134 ACTIVE root drupij pts/1 php@drupij (TNS V1-V3) 589846 26401 0 0 Aby uniknąć locków w trakcie updatów z innych aplikacji, dodałem na początku SELECT ... FOR UPDATE z danych które będą updatowane, i dopiero puszczam w tej samej tranzakcji te pojedyncze updaty, ale kończy się to dokładnie tak samo. (przy wywołaniu oci_execute(..., OCI_DEFAULT). Wywołania z OCI_COMMIT_ON_SUCCESS kończą się tak samo. Dziś zawiesza się zawsze na tym samym updacie. Choć wczoraj na innych (chyba). Gdzie szukać przyczyny? Będę wdzięczny za pomysły. |
|
|
Wersja Lo-Fi | Aktualny czas: 21.05.2024 - 13:58 |