Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Нет ответа на запрос.Причина?  [new]
puls
Member

Откуда:
Сообщений: 305
Привет.Два дня назад запрос вернуль резултата за 5 мин.А сейчась запрос выполняется и выполняется резултатов нет и нет.
Какие причины может быть?Как из положении выйти?
Oracle 10gR2.PLSQLDEV 7.
26 апр 11, 22:09    [10570932]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
puls,

что есть результата нет и нет? no rows returned или виснет запрос?
26 апр 11, 22:13    [10570945]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
puls
Member

Откуда:
Сообщений: 305
comphead,
Кажется виснет запрос.Как мне быть?Где искать?
26 апр 11, 22:18    [10570961]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
puls,

вы можете приложить план запроса текущий и тот, что был на тот момент? можно вытянуть из dba_hist_sql_plan.
статистику собираете? какая версия оракла?
26 апр 11, 22:34    [10571025]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
puls
Member

Откуда:
Сообщений: 305
comphead,
Запрос не изменися как была так и есть 2 дня назад.
Что дасть dba_hist_sql_plan?
Oracle 10gR2.PLSQLDEV 7.
26 апр 11, 22:41    [10571046]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
puls
Member

Откуда:
Сообщений: 305
comphead,
Запрос не изменися как была так и есть 2 дня назад.
Что дасть dba_hist_sql_plan?
Oracle 10gR2.PLSQLDEV 7.
26 апр 11, 23:04    [10571139]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
puls
Member

Откуда:
Сообщений: 305
Кажется асы оракла отдыхает.
26 апр 11, 23:19    [10571198]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54384
puls,

пока асы отдыхают, покажи хотя бы запрос
27 апр 11, 00:37    [10571507]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
puls
Member

Откуда:
Сообщений: 305
andreymx,

SELECT b1.subid,b1.ddate,b1.metervalue,b1.r_metervalue,b2.ddate datus,b2.meterno,b2.meterid,b2.firstshow,B1.TD FROM
(select a0.subid,a0.ddate,metervalue,r_metervalue,FARE TD from ahali.subcontrol a0,
(select subid,max(ddate) ddate from ahali.subcontrol where subid in
(select subid from ahali.subcontrol where ddate=to_date('20042011','ddmmyyyy'))
and ddate<to_date('20042011','ddmmyyyy')
group by subid) a1 where a0.subid=a1.subid and a0.ddate=a1.ddate
union
(select subid,ddate,metervalue,r_metervalue,
AHALI.PACK_SUBSCRIBER.GET_NUMBER_FROM_VSTRING(AHALI.pack_subscriber.abone_string(subid,to_date('19900101','YYYYMMDD'),TO_DATE('20110420','YYYYMMDD')),'TDB') td
from ahali.subcontrol
where ddate=to_date('20042011','ddmmyyyy'))) b1 left join
(select bb.subid,bb.ddate,bb.meterno,bb.meterid,bb.firstshow from ahali.submeter bb,
(select subid,max(ddate) ddate from ahali.submeter group by subid) aa
where bb.subid=aa.subid and bb.ddate=aa.ddate) b2 on b1.subid=b2.subid
27 апр 11, 08:06    [10571753]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54384
puls,

отформатируй и выложи в тэге src
а то глаза поломать можно
27 апр 11, 08:39    [10571817]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54384
хотя бы так где-то
 SELECT b1.subid,
       b1.ddate,
       b1.metervalue,
       b1.r_metervalue,
       b2.ddate datus,
       b2.meterno,
       b2.meterid,
       b2.firstshow,
       B1.TD
   FROM    ( SELECT a0.subid,
                   a0.ddate,
                   metervalue,
                   r_metervalue,
                   FARE TD
               FROM ahali.subcontrol a0,
                    ( SELECT subid, MAX (ddate) ddate
                        FROM ahali.subcontrol
                       WHERE subid IN
                                   ( SELECT subid
                                       FROM ahali.subcontrol
                                      WHERE ddate = TO_DATE ('20042011', 'ddmmyyyy')
                                   )
                         AND ddate < TO_DATE ('20042011', 'ddmmyyyy')
                     GROUP BY subid
                    ) a1
              WHERE a0.subid = a1.subid AND a0.ddate = a1.ddate
            UNION
            (SELECT subid,
                    ddate,
                    metervalue,
                    r_metervalue,
                    AHALI.PACK_SUBSCRIBER.GET_NUMBER_FROM_VSTRING (
                       AHALI.pack_subscriber.abone_string (
                          subid,
                          TO_DATE ('19900101', 'YYYYMMDD'),
                          TO_DATE ('20110420', 'YYYYMMDD')
                       ),
                       'TDB'
                    )
                       td
                FROM ahali.subcontrol
               WHERE ddate = TO_DATE ('20042011', 'ddmmyyyy')
             )
           ) b1
        LEFT JOIN
           ( SELECT bb.subid,
                   bb.ddate,
                   bb.meterno,
                   bb.meterid,
                   bb.firstshow
               FROM ahali.submeter bb,
                    (SELECT subid, MAX (ddate) ddate
                       FROM ahali.submeter
                      GROUP BY subid
                    ) aa
              WHERE bb.subid = aa.subid AND bb.ddate = aa.ddate
           ) b2
        ON b1.subid = b2.subid
27 апр 11, 08:42    [10571822]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
лучше выложить сюда тестовые данные и сказать что нужно в ответ выдать. Что б могли написать оптимизированный запрос, ото например в твоем запросе мне очень нен нравится это:


 SELECT b1.subid,
       b1.ddate,
       b1.metervalue,
       b1.r_metervalue,
       b2.ddate datus,
       b2.meterno,
       b2.meterid,
       b2.firstshow,
       B1.TD
   FROM    ( 
                   SELECT a0.subid,
                   a0.ddate,
                   metervalue,
                   r_metervalue,
                   FARE TD
               FROM ahali.subcontrol a0,
                    ( SELECT subid, MAX (ddate) ddate
                        FROM ahali.subcontrol
                       WHERE subid IN
                                   ( SELECT subid
                                       FROM ahali.subcontrol
                                      WHERE ddate = TO_DATE ('20042011', 'ddmmyyyy')
                                   )
                         AND ddate < TO_DATE ('20042011', 'ddmmyyyy')
                     GROUP BY subid
                    ) a1
              WHERE a0.subid = a1.subid AND a0.ddate = a1.ddate
            UNION
            (SELECT subid,
                    ddate,
                    metervalue,
                    r_metervalue,
                    AHALI.PACK_SUBSCRIBER.GET_NUMBER_FROM_VSTRING (
                       AHALI.pack_subscriber.abone_string (
                          subid,
                          TO_DATE ('19900101', 'YYYYMMDD'),
                          TO_DATE ('20110420', 'YYYYMMDD')
                       ),
                       'TDB'
                    )
                       td
                FROM ahali.subcontrol
               WHERE ddate = TO_DATE ('20042011', 'ddmmyyyy')
             )
           ) b1
        LEFT JOIN
           ( SELECT bb.subid,
                   bb.ddate,
                   bb.meterno,
                   bb.meterid,
                   bb.firstshow
               FROM ahali.submeter bb,
                    (SELECT subid, MAX (ddate) ddate
                       FROM ahali.submeter
                      GROUP BY subid
                    ) aa
              WHERE bb.subid = aa.subid AND bb.ddate = aa.ddate
           ) b2
        ON b1.subid = b2.subid

одну таблицу два раза лопатить не правильно... можно OR использовать
уверен что можно хорошенько оптимизировать твой селект зная структуру и вопрос.
27 апр 11, 08:55    [10571857]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
puls
Member

Откуда:
Сообщений: 305
andreymx,Bravo,Bravo.Sposibi.Mne samomu stal leqce ponyat cto ya sam pisal.
Oraclu ot etoqol lucsh stanet?On kak bil upryamiy tak i ostalsa.
Tolko ya starayus kak Bi pisat zaprosu.Eshe raz Bravo.
Vopros ostaetsya otkritim.
27 апр 11, 08:56    [10571861]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
По поводу того, делает что-то запрос в настоящее время или нет, смотри v$session_wait
27 апр 11, 09:13    [10571905]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
puls
Member

Откуда:
Сообщений: 305
Ramin,Esli nado nayti stroku poslednuyu i pered poslednuy y bil vunujden delet tak.
Est li alternativi?
27 апр 11, 09:28    [10571945]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
что б найти последную и перед последную строку по дате просто можно делать так:
-- Create table
create table TEXT_IMPORT
(
  T4 DATE
)

20.04.2011
21.04.2011
22.04.2011
23.04.2011
26.04.2011


селект
select q.*
  from (select t.t4
          from text_import t
         where t.t4 <= to_date('26.04.2011', 'dd.mm.yyyy')
         order by t.t4 desc) Q
 where rownum <= 2

ответ:

26.04.2011
23.04.2011
27 апр 11, 09:41    [10572000]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6729
puls
andreymx,Bravo,Bravo.Sposibi.Mne samomu stal leqce ponyat cto ya sam pisal.
Oraclu ot etoqol lucsh stanet?On kak bil upryamiy tak i ostalsa.
Tolko ya starayus kak Bi pisat zaprosu.Eshe raz Bravo.
Vopros ostaetsya otkritim.


Твойсарказмоченьнеуместен. Тебепредложилизаключитьзапросвтег,чтобыегоможнобылочитатьнеломаяглаза.
Иначе твой запрос выглядит примерно так, как предыдущее предложение.

Ораклу от этого лучше не станет, зато автору и отвечающим легче увидеть ошибки.
27 апр 11, 09:54    [10572069]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
Data corruption
Guest
puls,

покажите тексты:
AHALI.PACK_SUBSCRIBER.GET_NUMBER_FROM_VSTRING
и
AHALI.pack_subscriber.abone_string

+ функция у вас реально считает за 21 год ?
27 апр 11, 10:13    [10572155]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
comphead
Member

Откуда: Киев
Сообщений: 3390
думаю, что без плана или трассы будет все одно неудобно.
27 апр 11, 10:15    [10572174]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
puls
Member

Откуда:
Сообщений: 305
Ramin,
Sposibo za otvet.
Ot etoqo zapros budetli vipolnyatsya po bistree ?
27 апр 11, 10:25    [10572235]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
puls
Ramin,
Sposibo za otvet.
Ot etoqo zapros budetli vipolnyatsya po bistree ?

если сравнить с твоим запросом то 100% да.
27 апр 11, 13:22    [10573767]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
puls
Member

Откуда:
Сообщений: 305
Ramin,
Mojet bit ya ne tak obesnil,resulta po druqomu dolgen bit.

kod data
01000001 23.03.2011
01000001 21.03.2011
01000001 24.03.2011

01000002 13.03.2001
01000002 15.03.2001
01000002 23.03.2001


rezultat tak doljen bit.

kod data
01000001 24.03.2011
01000001 23.03.2011

01000002 23.03.2001
01000002 15.03.2001
27 апр 11, 14:00    [10574174]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
puls
Ramin,
Mojet bit ya ne tak obesnil,resulta po druqomu dolgen bit.

kod data
01000001 23.03.2011
01000001 21.03.2011
01000001 24.03.2011

01000002 13.03.2001
01000002 15.03.2001
01000002 23.03.2001


rezultat tak doljen bit.

kod data
01000001 24.03.2011
01000001 23.03.2011

01000002 23.03.2001
01000002 15.03.2001


вот так:

-- Create table
create table TEXT_IMPORT
(
  T3 VARCHAR2(100),
  T4 DATE,
);

01000001 23.03.2011
01000001 21.03.2011
01000001 24.03.2011
01000002 13.03.2001
01000002 15.03.2001
01000002 23.03.2001



 select t3,
        t4
   from (select t.t3,
                t.t4,
                lag(t.t4,1) over(partition by t.t3 order by t.t4) prelast_max_dt
           from text_import t)
           
 where prelast_max_dt is not  null
27 апр 11, 15:31    [10575082]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
puls
Member

Откуда:
Сообщений: 305
Ramin ,
T3 T4
1 01000001 23.03.2011
2 01000001 21.03.2011
3 01000001 15.03.2011
4 01000002 13.03.2001
5 01000002 15.03.2011
6 01000002 10.03.2011
7 01000002 09.03.2001
8 01000003 15.03.2011
9 01000002 17.03.2011

Vot tvoy select cto vernul


T3 T4
1 01000001 21.03.2011
2 01000001 23.03.2011
3 01000002 13.03.2001
4 01000002 10.03.2011
5 01000002 15.03.2011
6 01000002 17.03.2011

Mne nada bila takoy rezultat
1 01000001 23.03.2011
2 01000001 21.03.2011
3 01000002 15.03.2001
4 01000002 13.03.2011
5 01000003 15.03.2011
28 апр 11, 10:24    [10578591]     Ответить | Цитировать Сообщить модератору
 Re: Нет ответа на запрос.Причина?  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
ааа теперь понятно....

сам запрос:
  select t3, t4
  from (select t.t3,
               t.t4,
               DENSE_RANK() over(partition by t.t3 order by t.t4) prelast_max_dt
          from text_import t)

 where prelast_max_dt <= 2


в вашем примере:
with TEXT_IMPORT as
 (select '01000001' as T3, to_date('23.03.2011', 'dd.mm.yyyy') as T4
    from dual
  union all
  select '01000001', to_date('21.03.2011', 'dd.mm.yyyy')
    from dual
  union all
  select '01000001', to_date('15.03.2011', 'dd.mm.yyyy')
    from dual
  union all
  select '01000002', to_date('13.03.2001', 'dd.mm.yyyy')
    from dual
  union all
  select '01000002', to_date('15.03.2011', 'dd.mm.yyyy')
    from dual
  union all
  select '01000002', to_date('10.03.2011', 'dd.mm.yyyy')
    from dual
  union all
  select '01000002', to_date('09.03.2001', 'dd.mm.yyyy')
    from dual
  union all
  select '01000003', to_date('15.03.2011', 'dd.mm.yyyy')
    from dual
  union all
  select '01000002', to_date('17.03.2011', 'dd.mm.yyyy') from dual)
  
  select t3, t4
  from (select t.t3,
               t.t4,
               DENSE_RANK() over(partition by t.t3 order by t.t4) prelast_max_dt
          from text_import t)

 where prelast_max_dt <= 2
28 апр 11, 10:46    [10578700]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить