Oracle, outer joins, notacja "(+)". Poniższe zapytanie jest przykładem typowego błędu, określanego jako "join to a constant mistake":
To nie jest left outer join. To jest inner join. "(+)" w tym przykładzie zupełnie nic nie oznacza. Prawidłowo zapisany left join wygląda następująco:
Polecam:
ORAFAQ - Common errors seen when using OUTER-JOIN
Pokazywanie postów oznaczonych etykietą DB. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą DB. Pokaż wszystkie posty
czwartek, 5 lipca 2012
środa, 20 czerwca 2012
ORA-01000: maximum open cursors exceeded
ORA-01000 oznacza, że liczba otwartych kursorów w ramach sesji przekracza maksymalną dozwoloną wartość - określoną przez parametr open_cursors.
Tak możemy sprawdzić liczbę otwartych kursorów dla poszczególnych sesji:
Natomiast tak sprawdzimy, czy zbliżamy się do wartości określonej parametrem:
Co zrobić? Sprawdzić, czy kursory są poprawnie zamykane. Możliwe, że są. Może po prostu potrzebujemy czasami takiej ilości otwartych kursorów. Wystarczy wówczas zwiększyć wartość parametru:
Cytując fragment dyskusji z Ask Tom:
- Czy wpłynie to na działanie aplikacji?
- Tak. Zacznie działać w miejscach, w których do tej pory mogła się sypać.
- Jakie są zalecane wartości?
- Ustawiamy na 500 - 1000 i zapominamy o problemie. Jeżeli kursory wyciekają, prędzej czy później i tak przekroczą wartość graniczną.
Scope przyjmuje następujące wartości:
- SPFILE (For both static and dynamic parameters, changes are recorded in the spfile, to be given effect in the next restart.)
- MEMORY (For dynamic parameters, changes are applied in memory only. No static parameter change is allowed.)
- BOTH (For dynamic parameters, the change is applied in both the server parameter file and memory. No static parameter change is allowed.)
Polecam:
Monitoring Open and Cached Cursors
Ask Tom - Open cursors exceeded
Setting the Server Parameter File Values
Tak możemy sprawdzić liczbę otwartych kursorów dla poszczególnych sesji:
Natomiast tak sprawdzimy, czy zbliżamy się do wartości określonej parametrem:
Co zrobić? Sprawdzić, czy kursory są poprawnie zamykane. Możliwe, że są. Może po prostu potrzebujemy czasami takiej ilości otwartych kursorów. Wystarczy wówczas zwiększyć wartość parametru:
Cytując fragment dyskusji z Ask Tom:
- Czy wpłynie to na działanie aplikacji?
- Tak. Zacznie działać w miejscach, w których do tej pory mogła się sypać.
- Jakie są zalecane wartości?
- Ustawiamy na 500 - 1000 i zapominamy o problemie. Jeżeli kursory wyciekają, prędzej czy później i tak przekroczą wartość graniczną.
Scope przyjmuje następujące wartości:
- SPFILE (For both static and dynamic parameters, changes are recorded in the spfile, to be given effect in the next restart.)
- MEMORY (For dynamic parameters, changes are applied in memory only. No static parameter change is allowed.)
- BOTH (For dynamic parameters, the change is applied in both the server parameter file and memory. No static parameter change is allowed.)
Polecam:
Monitoring Open and Cached Cursors
Ask Tom - Open cursors exceeded
Setting the Server Parameter File Values
Subskrybuj:
Posty (Atom)