ďťż
 
[Oracle] brak danych w sql_plan dla SELECT ďťż
 
[Oracle] brak danych w sql_plan dla SELECT
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[Oracle] brak danych w sql_plan dla SELECT



Piotr Grzegrzolka - 14-02-2006 09:37
[Oracle] brak danych w sql_plan dla SELECT
  Witam,

mam taki problem: przez wiele kilkanaście tygodni były gromadzone dane m.in. z
v$plan_table o wykorzystaniu obiektów. Na tej podstawie usunęliśmy w ubiegłym
tygodniu indeksy nie wykorzystywane w naszej bazie (Oracle 9.2.0.5). Ale w
niedzielę uruchomił się job (z konta SYS) i zadanie to wykonuje się do chwili
obecnej (normalnie kończyło się po 1-3 godzinach) - czytana jest cała tabela.
W tej chwili wykonuje się zapytanie:
select /*+ all_rows */ count(1) from "USER"."JAKAS_TABELA" where "ID" = :1
Na tej kolumnie był założony indeks "ID_FK", który w ubiegłym tygodniu
usunęlismy. Okazuje się, że tego selecta (a właściwie jego planu zapytania)
nie ma w widoku sys.v$sql_plan...
Czy ktoś ma pomysł, czym to jest spowodowane?

Dziękuję bardzo,

Piotr Grzegrzółka

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/





news997 - 15-02-2006 09:43

  > Witam,
>
> mam taki problem: przez wiele kilkanaście tygodni były gromadzone dane
> m.in. z
> v$plan_table o wykorzystaniu obiektów. Na tej podstawie usunęliśmy w
> ubiegłym
> tygodniu indeksy nie wykorzystywane w naszej bazie (Oracle 9.2.0.5). Ale w
> niedzielę uruchomił się job (z konta SYS) i zadanie to wykonuje się do
> chwili
> obecnej (normalnie kończyło się po 1-3 godzinach) - czytana jest cała
> tabela.
> W tej chwili wykonuje się zapytanie:
> select /*+ all_rows */ count(1) from "USER"."JAKAS_TABELA" where "ID"
> = :1
> Na tej kolumnie był założony indeks "ID_FK", który w ubiegłym tygodniu
> usunęlismy. Okazuje się, że tego selecta (a właściwie jego planu
> zapytania)
> nie ma w widoku sys.v$sql_plan...
> Czy ktoś ma pomysł, czym to jest spowodowane?
>
> Dziękuję bardzo,
>
> Piotr Grzegrzółka

Nie za bardzo rozumiem o co Ci dokladnie chodzi, ale moje 3 grosze...

ID_FK - to prawdopodobnie klucz obcy a te pod oraclem nie sa standardowo
indeksowanie, wiec takie indeksy lepiej zostawic w spokoju. Przy laczeniu
tabela1.PK -> tabela2.FK - tabela2 jest dla kazdego rekodu z tabeli1
skanowana w calosci. (Zwykle)

Jesli potrzebujesz plan selecta to:
explan plan for
select /*+ all_rows */ count(1) from "USER"."JAKAS_TABELA" where "ID" = :1
;
a nastepnie
select * from table(dbms_xplan.display) ;

Co do gromadzenie informacji o wykorzystywanych indeksach, toz tego co
pamietam plan do zapytania jest generowany nawet przy takim explain, a nie
tylko i wylacznie gdy zapytanie jest wykonywane. Dlatego poleganie tylko na
informacjach zawartych w v$sql_plan czy innych wewnetrznych Oracle moze byc
troche mylace. Ja raczej preferuje metode zrozumienia aplikacji i recznego
usuwania indeksow.

dap
--
polanski.biz




Piotr Grzegrzolka - 15-02-2006 09:43

  news997 <news997@gazeta.pl> napisał(a):

> Nie za bardzo rozumiem o co Ci dokladnie chodzi, ale moje 3 grosze...
Każdy SELECT (i inne klauzule) powinien mieć ślad (m.in. w postaci treści
polecenia w widoku v$sqltext oraz planu wykonania w widoku v$sql_plan). A
ponieważ nie mam tych danych, bardzo się dziwię :-0

> ID_FK - to prawdopodobnie klucz obcy a te pod oraclem nie sa standardowo
> indeksowanie, wiec takie indeksy lepiej zostawic w spokoju. Przy laczeniu
> tabela1.PK -> tabela2.FK - tabela2 jest dla kazdego rekodu z tabeli1
> skanowana w calosci. (Zwykle)
Zamiarem zbierania statystyk dot. wykorzystania obiektów było usunięcie
nieużywanych indeksów (właśnie takich, dla których nie ma wpisów do widoku
v$sql_plan) - jednakże nie chciałem korzystać z klauzuli MONITORING (lub coś
takiego w ALTER INDEX)

> Jesli potrzebujesz plan selecta to:
> explan plan for
> select /*+ all_rows */ count(1) from "USER"."JAKAS_TABELA" where "ID" = :1
> ;
> a nastepnie
> select * from table(dbms_xplan.display) ;
W pracy korzystam z SQL Navogatora, któy ma m.in. możliwośc pokazania
graficznego planu zapytania ...

> Co do gromadzenie informacji o wykorzystywanych indeksach, toz tego co
> pamietam plan do zapytania jest generowany nawet przy takim explain, a nie
> tylko i wylacznie gdy zapytanie jest wykonywane. Dlatego poleganie tylko na
> informacjach zawartych w v$sql_plan czy innych wewnetrznych Oracle moze byc
> troche mylace. Ja raczej preferuje metode zrozumienia aplikacji i recznego
> usuwania indeksow.
Myślę, że na "podstawowych" widokach takich jak v$sql_plan czy v$sqltext można
w zupełności polegać (co innego widoki np. EXU8PHS, EXU9XDBUID,...).
Aplikacja nam sie rozrosła (sami ją rozwijamy), indeksy zajmują więcej GB niż
dane (baza OLTP). W takiej sytuacji, po zbadaniu indeksów, chcielismy usunąć
te nieużywane. A tu taki klops....

Pozdrawiam,

Piotr Grzegrzółka

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/




news997 - 15-02-2006 09:43

 
----- Original Message -----
From: "Piotr Grzegrzolka" <piotrgrz@gazeta.SKASUJ-TO.pl>
Newsgroups: pl.comp.bazy-danych
Sent: Wednesday, February 15, 2006 9:57 AM
Subject: Re: [Oracle] brak danych w sql_plan dla SELECT

> news997 <news997@gazeta.pl> napisał(a):
>
>> Nie za bardzo rozumiem o co Ci dokladnie chodzi, ale moje 3 grosze...
> Każdy SELECT (i inne klauzule) powinien mieć ślad (m.in. w postaci treści
> polecenia w widoku v$sqltext oraz planu wykonania w widoku v$sql_plan). A
> ponieważ nie mam tych danych, bardzo się dziwię :-0

Czyli pytanie jest taki, kiedy znika plan wykonania zapytania z pamieci?
Na pewno po restarcie oraz po wykasowaniu zawartosci shared_pool.

>> Co do gromadzenie informacji o wykorzystywanych indeksach, toz tego co
>> pamietam plan do zapytania jest generowany nawet przy takim explain, a
>> nie
>> tylko i wylacznie gdy zapytanie jest wykonywane. Dlatego poleganie tylko
>> na
>> informacjach zawartych w v$sql_plan czy innych wewnetrznych Oracle moze
>> byc
>> troche mylace. Ja raczej preferuje metode zrozumienia aplikacji i
>> recznego
>> usuwania indeksow.
> Myślę, że na "podstawowych" widokach takich jak v$sql_plan czy v$sqltext
> można
> w zupełności polegać (co innego widoki np. EXU8PHS, EXU9XDBUID,...).
> Aplikacja nam sie rozrosła (sami ją rozwijamy), indeksy zajmują więcej GB
> niż
> dane (baza OLTP). W takiej sytuacji, po zbadaniu indeksów, chcielismy
> usunąć
> te nieużywane. A tu taki klops....

Hmm... skasuj moze (po wczesniejszej analizie) te najwieksze objetosciowo.
dap





Piotr Grzegrzolka - 16-02-2006 10:04

  news997 <news997@gazeta.pl> napisał(a):
> Czyli pytanie jest taki, kiedy znika plan wykonania zapytania z pamieci?
> Na pewno po restarcie oraz po wykasowaniu zawartosci shared_pool.
Tak, ale obie sytuacje nie miały miejsca (na 100%).
Problem polega na tym, że dla tego samego joba (nie był modyfikowany przez
kilkanaście tygodni) [korzysta on wyłącznie z jednego pakietu, który tez nie
był modyfikowany w tym czasie]:
-) przez kilka (naście) ostatnch tygodni job wykonuje się sprawnie (max 1-3
godziny), nie widac wykorzystania indeksu ID_FK w v$sql_plan,
-) w ostania niedzielę po usunięciu indeksu job działał ponad 24 godziny (i
wtedy wycięliśmy sesję) - wtedy w v$session widać było hash_value dla tego
SELECT-a,
-) po założeniu indeksu job wykonał się w 15-20 minut, ale jak sprawdzaliśmy
chwilę po zakończeniu jego działania, nie było wierszy związanych z tym
SELECT-em ani w v$sql_plan ani w v$sqltext...

> Hmm... skasuj moze (po wczesniejszej analizie) te najwieksze objetosciowo.
Zbieranie tych informacji miało byc analizą...

Pozdrawiam,

Piotr Grzegrzółka

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/




Lucyna Witkowska - 16-02-2006 10:04

  Piotr Grzegrzolka <piotrgrz@gazeta.skasuj-to.pl> napisał:
> -) po założeniu indeksu job wykonał się w 15-20 minut, ale jak sprawdzaliśmy
> chwilę po zakończeniu jego działania, nie było wierszy związanych z tym
> SELECT-em ani w v$sql_plan ani w v$sqltext...

Szkoda, ze nie sprawdziliscie w trakcie wykonywania. Byc moze po prostu
sql wylecial juz z shared pool.

> > Hmm... skasuj moze (po wczesniejszej analizie) te najwieksze objetosciowo.
> Zbieranie tych informacji miało byc analizą...

Dla pocieszenia ;-) - w systemie jak najbardziej OLTP, z aplikacją
napisana przez amerykanska firmę, indeksy też zajmują wiecej miejsca niz dane.

Pozdrowienia,
LW




Piotr Grzegrzolka - 16-02-2006 10:05

  Lucyna Witkowska <ypwitkow@nospamcyf-kr.edu.pl> napisał(a):

> Szkoda, ze nie sprawdziliscie w trakcie wykonywania. Byc moze po prostu
> sql wylecial juz z shared pool.
SQL nie "wyleciał" - w zbieranych przez nas danych (np. z widoku v$sqlarea)
mam m.in. selecty, które mają wcześniejsze first_load_time niż SELECT-y z tego
joba (dodatkowo i jedne i drugie mają wartość kolumny 'load' =1). Tak więc
sądzę, że dane nie mogły "wylecieć"...

Piotr Grzegrzółka

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/




news997 - 16-02-2006 10:05

 
"Piotr Grzegrzolka" <piotrgrz@gazeta.SKASUJ-TO.pl> schrieb im Newsbeitrag
news:dsv7s5$6k5$1@inews.gazeta.pl...
> Lucyna Witkowska <ypwitkow@nospamcyf-kr.edu.pl> napisał(a):
>
>> Szkoda, ze nie sprawdziliscie w trakcie wykonywania. Byc moze po prostu
>> sql wylecial juz z shared pool.
> SQL nie "wyleciał" - w zbieranych przez nas danych (np. z widoku
> v$sqlarea)
> mam m.in. selecty, które mają wcześniejsze first_load_time niż SELECT-y z
> tego
> joba (dodatkowo i jedne i drugie mają wartość kolumny 'load' =1). Tak więc
> sądzę, że dane nie mogły "wylecieć"...
A wlaczales trace? Bo przypomniam sobie jak jeden ekspert opowiadal, ze
wlaczenia trace zmienia plan wykonania. Jeszcze to sprawdze.

dap

--
polanski.biz
xoops.pl




Piotr Grzegrzolka - 16-02-2006 10:05

  news997 <news997@gazeta.pl> napisał(a):

> > Tak więc
> > sądzę, że dane nie mogły "wylecieć"...
> A wlaczales trace? Bo przypomniam sobie jak jeden ekspert opowiadal, ze
> wlaczenia trace zmienia plan wykonania. Jeszcze to sprawdze.
Trace nie jest włączony.
Kod joba jest prosty "begin uruchom_zadanie; end;".

Piotr Grezgrzółka

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle 19g +Insert +Insert +Insert... [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?= jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?= [oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?= [oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?= MSSQL Express czy Oracle Express =?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?= =?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?= [Oracle] =?ISO-8859-2?Q?=A3=B1czenie_wierszy_z_zapytania_?==?ISO-8859-2?Q?w_jeden_string?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • misida.pev.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com