12.11.2007 00:29
1024.6 sp6
Убился. Уже несколько дней мучаюсь, не могу понять причины.
Суть в том, что по одному из поставщиков (крупному) заказ по контракту генерится чуть ли не сутки. При этом загрузки проца нет, загрузки винтов тоже.
Цитата:
SELECT MAX(X.DATEDAT)
FROM SMDOCUMENTS D,SMDATEDOCS X,SMSPEC S
WHERE D.DOCTYPE = 'OR' AND D.CLIENTINDEX = :b1 AND D.DOCSTATE != 1 AND X.ID = D.ID AND X.DOCTYPE = D.DOCTYPE AND S.DOCID = D.ID AND S.DOCTYPE = D.DOCTYPE AND S.ARTICLE = :b2
торчит в текущем, подозреваю, что просто долбится кучей таких запросов... Такое подозрение, что проблема в какой-то тормозной опции СМ. Есть какие-то идеи?
12.11.2007 03:22
На своей базе запрос покрутил, вроде все гуд, а трэйс что говорит?
12.11.2007 04:23
А можно сюда файл параметров оракла? и х-ки рейда, если есть и объем оп. памяти ?
12.11.2007 06:54
Цитата:
avl2007 А можно сюда файл параметров оракла? и х-ки рейда, если есть и объем оп. памяти ?
ты всерьез хочешь помочь Олегу оптимизировать параметры оракла?
он OCA не за красивые глаза получил.

надо понимать, эта сволочь ищет последние приходы.
или ради цен последнего прихода или чтобы проверить параметр поставщика "частота заказа" (он отличается от других поставщиков?)
12.11.2007 07:25
Были тормоза. Попробуй
1) Очистить ассортимент поставки на закладке "Заказ" по этому поставщику. (У тебя же всё равно есть контракт)
2) Индексы пересоздать
3) У нас был случай, когда пришлось заново прогнать генератор БД. Как-то "криво" скомпилировался один из пакетов. Тормозили именно заказы. Но у нас еще и товар отказывался заказываться... :(

В логе заказа есть что-то интересное?
12.11.2007 07:44
Спасибо всем за то, что откликнулись! На самом деле уверен, что проблема не в базе, если не брать в расчет хранимые процедуры. Запрос этот выполняется настолько быстро, насколько это возможно и во много раз быстрее, чем у тех, у кого заказ нормально выполняется. У меня уже OCP, но и на старуху бывает... Параметры и трейс выложу чуть позже (из дома неудобно), план запроса не отличается от обычного. Я их уже перестраивал раз 50 точно в разные стороны, как и индексы и прочее. Базу (индексы) уже пересобирал раз 5, только генератором не прогонял ни разу, что обязательно проделаю. У меня тоже не генерятся сами заказы :( Но почему-то только на кого-то конкретного.
Спасибо за идеи, пошел пробовать все написанное...
12.11.2007 08:12
Было аналогично. Еще можно попробовать следующее: из этого контракта выдернуть несколько позиций, попробовать сделать по ним заказ, посмотреть лог заказа, дальше копать.
12.11.2007 08:35
Перепрогнал генератором, не помогает... Рейд неплохой, главное, что не грузится совсем, что и обидно. С выдиранием позиций - новый контракт сделать? Или ограничить ассортимент? Удивляет, что current sql тот, что я привел в начале, а по трейсу (ниже) - insert...
Цитата:
select name,value from v$parameter where isdefault<>'TRUE'
processes=300
sessions=335
timed_statistics=TRUE
resource_limit=TRUE
cpu_count=8
shared_pool_size=167772160
sga_max_size=4172608328
large_pool_size=83886080
java_pool_size=117440512
lock_sga=TRUE
control_files=/opt/oracle/oradata/TABERCO/control01.ctl, /opt/oracle/oradata/TABERCO/control02.ctl
db_block_checksum=FALSE
db_block_size=8192
db_writer_processes=2
db_32k_cache_size=738197504
db_cache_size=738197504
compatible=9.2.0.8.0
log_archive_start=TRUE
log_archive_dest_1=LOCATION=/mnt/base/arch MANDATORY REOPEN
log_buffer=10971648
db_file_multiblock_read_count=128
fast_start_mttr_target=900
transactions_per_rollback_segment=1
undo_management=AUTO
undo_tablespace=UNDOTBS1
undo_retention=10800
O7_DICTIONARY_ACCESSIBILITY=TRUE
remote_login_passwordfile=EXCLUSIVE
db_domain=
instance_name=TABERCO
cursor_space_for_time=TRUE
session_cached_cursors=50
job_queue_processes=10
cursor_sharing=FORCE
hash_join_enabled=TRUE
background_dump_dest=/opt/oracle/admin/TABERCO/bdump
user_dump_dest=/opt/oracle/admin/TABERCO/udump
core_dump_dest=/opt/oracle/admin/TABERCO/cdump
db_name=TABERCO
open_cursors=300
star_transformation_enabled=FALSE
parallel_automatic_tuning=TRUE
optimizer_index_cost_adj=25
optimizer_index_caching=100
query_rewrite_enabled=TRUE
pga_aggregate_target=1314572800
aq_tm_processes=1
Цитата:
SELECT LOCKID FROM DBMS_LOCK_ALLOCATED WHERE NAME = :b1 FOR UPDATE
SELECT MESSAGE FROM DBMS_ALERT_INFO WHERE NAME = UPPER(:b1) AND SID = :b2
UPDATE DBMS_ALERT_INFO SET CHANGED='N' WHERE NAME = UPPER(:b1) AND SID = :b2 AND CHANGED = 'Y'
INSERT INTO DBMS_ALERT_INFO VALUES ( UPPER(:b1),:b2,'N', NULL )
DELETE FROM DBMS_ALERT_INFO WHERE SID = :b1
SELECT DISTINCT SUBSTR(KGLNAOBJ,11) SID FROM X$KGLOB WHERE KGLHDNSP = 7 AND KGLNAOBJ LIKE 'ORA$ALERT$%' AND BITAND(KGLHDFLG,128) != 0 UNION SELECT DISTINCT SID FROM DBMS_ALERT_INFO
select :"SYS_B_0"||banner, user, :"SYS_B_1"/:"SYS_B_2" from v$version where banner like :"SYS_B_3"
SELECT PARAMVALUE FROM SSSYSINFO WHERE PARAMNAME = :b1
DELETE FROM SSLOCKS L WHERE NOT EXISTS (SELECT * FROM SUPERMAG_SESSIONS S WHERE S.SID = L.SID AND S.SERIAL# = L.SERNUM )
SELECT A.ID,A.KEYCODE,F.FUNCID,F.DAYSBEFORE FROM SMCLIENTFUNCTIONS A,SMGRANTEDFUNCTIONS F WHERE A.ID IN ( :b1,:b2,:b3,:b4,:b5 ) AND F.FUNCID (+) = A.ID AND F.POSID (+) = :b6
SELECT A.KEYCODE,M.APPID,M.DAYSBEFORE FROM SMCLIENTAPPS A,SMGRANTEDMODULES M WHERE A.ID = :b1 AND M.APPID (+) = A.ID AND M.POSID (+) = :b2
SELECT OFFINDEX FROM SMSTAFF WHERE SERVERLOGIN = USER
DELETE FROM TTHOLYNAMES
INSERT INTO TTHOLYNAMES ( THEDAY,THETITLE ) VALUES ( TO_DATE('19000101','YYYYMMDD') + :b1 ,:b2 )
SELECT ORAROLE,KEYCODE FROM SMCLIENTFUNCTIONS WHERE ID = :b1
SELECT APPROLE,KEYCODE FROM SMCLIENTAPPS WHERE ID = :b1
SELECT LOCKLABEL FROM SSLOCKS WHERE SID = :b1 AND SERNUM = :b2 AND OBJTYPE = 'CP'
SELECT * FROM SUPERMAG_SESSIONS WHERE SID = :b1 AND SERIAL# = :b2
SELECT PROCESS FROM SUPERMAG_SESSIONS WHERE SID = :b1 AND SERIAL# = :b2
SELECT COUNT(*) FROM SSLOCKS WHERE OBJTYPE = 'CP' AND ID = :b1
SELECT NVL(MIN(F.ID),-2) FROM SMSTAFF F,SUPERMAG_SESSIONS S WHERE S.SID = :b1 AND S.SERIAL# = :b2 AND F.SERVERLOGIN = S.USERNAME
SELECT COUNT(*) FROM SUPERMAG_SESSIONS WHERE SID = :b1 AND SERIAL# = :b2 AND AUDSID = USERENV('SESSIONID')
SELECT SYS_CONTEXT(:B2 ,:B1 ) FROM SYS.DUAL
DELETE FROM TTSHOPLIST
insert into Supermag.TTDocList(Doctype,ID) values(:"SYS_B_0",:"SYS_B_1")
SELECT IDMATRIX FROM SMASSORTMATRIXLOC WHERE STORELOC = :b1
SELECT COUNT(*) FROM USER_POLICIES V WHERE V.OBJECT_NAME = :B1 AND (POLICY_NAME LIKE '%xdbrls%' OR POLICY_NAME LIKE '%$xd_%')
SELECT COUNT(*) FROM ALL_POLICIES V WHERE V.OBJECT_OWNER = :B2 AND V.OBJECT_NAME = :B1 AND (POLICY_NAME LIKE '%xdbrls%' OR POLICY_NAME LIKE '%$xd_%')
BEGIN IF (xdb.DBMS_XDBZ.is_hierarchy_enabled(sys.dictionary_obj_owner, sys.dictionary_obj_name)) THEN xdb.XDB_PITRIG_PKG.pitrig_truncate(sys.dictionary_obj_owner, sys.dictionary_obj_name); END IF; EXCEPTION WHEN OTHERS THEN null; END;
SELECT ... FROM SVSUPPLYSPECCO CSP,TTDOCLIST T WHERE CSP.DOCTYPE = T.DOCTYPE AND CSP.DOCID = T.ID AND CSP.ARTICLE = :b1 AND EXISTS (SELECT * FROM SMCONTRACTLOCATIONS L WHERE L.ID = CSP.DOCID AND L.DOCTYPE = CSP.DOCTYPE AND L.LOCATIONID = :b2 ) ORDER BY CSP.CLIENTINDEX
INSERT INTO TTTRACEORDER ( ID,MSGLINE,EVENTMESSAGE ) VALUES ( :b1,:b2,:b3 )
DELETE FROM TTTRACEORDER
INSERT INTO TTBASEDOCORDER ( ID,BASEDOCID ) VALUES ( :b1,:b2 )
INSERT INTO TTAUTOORDERDOCS ( ID,SUPPLIER,LOCATION,DATEDAT,SUPPLYAT ) VALUES ( :b1,:b2,:b3,:b4,:b5 )
INSERT INTO TTSHOPLIST ( ID,FLAGS,LOCTYPE ) SELECT ID,0,LOCTYPE FROM SMSTORELOCATIONS WHERE PARENTLOC = :b1 AND LOCTYPE != 1 AND (ACCEPTED != '0' ) AND PRTY >= 0
INSERT INTO TTSHOPLIST ( ID,FLAGS,LOCTYPE ) VALUES ( :b1,1,:b2 )
SELECT ALGNAME FROM SSGENORDERALG WHERE UPPER(NVL(:b1,:b2)) = UPPER(ALGPROC)
DELETE FROM TTBASEDOCORDER
DELETE FROM TTAUTOORDERDOCS
UPDATE TTGOODSORDER SET SUPPLIER=:b1,ORDERAMOUNT=:b2,ORDERDATE=:b3,SUPPLYDATE=:b4,INCOMEDATE=:b5,SUPPLYSHOP=:b6,DOCID=:b7 WHERE ARTICLE = :b8
SELECT :b1 + NVL(SUM(SALERATE),0) FROM SVSTOCKLEVELS LSALE,TTSHOPLIST T WHERE LSALE.ARTICLE = :b2 AND LSALE.STORELOC = T.ID AND T.ID != :b3 AND NOT EXISTS (SELECT * FROM SMSUPPLYLOCS SL,SMSUPPLYCASE SC WHERE SC.ARTICLE = :b2 AND SL.SUPPLIERID = SC.IDSUPPLIER AND SL.STORELOC = T.ID ) AND NOT EXISTS (SELECT * FROM SMCONTRACTLOCATIONS SL,SVSUPPLYSPECCO CSP WHERE CSP.DOCTYPE = SL.DOCTYPE AND CSP.DOCID = SL.ID AND CSP.ARTICLE = :b2 AND SL.LOCATIONID = T.ID ) AND (LSALE.MAXLEVEL > 0 OR LSALE.MAXLEVEL IS NULL )
SELECT * FROM SMGOODS WHERE ARTICLE = :b1 AND STORELOC = :b2
SELECT COUNT(*) FROM TTGOODSORDER
DELETE FROM TTGOODSORDER T WHERE EXISTS (SELECT * FROM SMCOMPLEXARTICLES A WHERE A.ARTICLE = T.ARTICLE AND (A.ISDEPENDENT != '0' ))
DELETE FROM TTGOODSORDER T WHERE EXISTS (SELECT * FROM SVSTOCKLEVELS L WHERE L.STORELOC = :b1 AND L.ARTICLE = T.ARTICLE AND L.MAXLEVEL = 0 )
INSERT INTO TTGOODSORDER ( ARTICLE,QUANTITY,EXPIRED,SALERATE,MINLEVEL,MAXLEVEL,DEADLINE ) SELECT T.ARTICLE,0,TRUNC(SYSDATE),SALERATE,MINLEVEL,MAXLEVEL,X.DEADLINE FROM SVSTOCKLEVELS X,TTAUTOORDERARTS T WHERE X.ARTICLE = T.ARTICLE AND X.STORELOC = :b1 AND (EXISTS (SELECT * FROM SMSUPPLYCASE C,SMSUPPLYLOCS S WHERE C.IDSUPPLIER = S.SUPPLIERID AND S.STORELOC = :b1 AND C.ARTICLE = X.ARTICLE ) OR EXISTS (SELECT * FROM SVSUPPLYSPECCO CSP,SMCONTRACTLOCATIONS S WHERE CSP.DOCTYPE = S.DOCTYPE AND CSP.DOCID = S.ID AND S.LOCATIONID = :b1 AND CSP.ARTICLE = X.ARTICLE ) )
SELECT COUNT(*) FROM DUAL WHERE EXISTS (SELECT * FROM TTAUTOORDERARTS )
SELECT LOCTYPE FROM TTSHOPLIST WHERE ID = :b1
SELECT * FROM TTGOODSORDER
SELECT * FROM SMSUPPLIERS WHERE ID = :b1
SELECT MAX(X.DATEDAT) FROM SMDOCUMENTS D,SMDATEDOCS X,SMSPEC S WHERE D.DOCTYPE = 'OR' AND D.CLIENTINDEX = :b1 AND D.DOCSTATE != 1 AND X.ID = D.ID AND X.DOCTYPE = D.DOCTYPE AND S.DOCID = D.ID AND S.DOCTYPE = D.DOCTYPE AND S.ARTICLE = :b2
SELECT * FROM SVSUPPLYSPECCO CSP WHERE CSP.DOCID = :b1 AND CSP.DOCTYPE = 'CO' AND CSP.ARTICLE = :b2 AND ROWNUM = 1
SELECT * FROM SVSUPPLYCASECO C WHERE C.ID = :b1 AND C.DOCTYPE = 'CO'
SELECT * FROM SMSTORELOCATIONS WHERE ID = :b1
SELECT COUNT(*) FROM TTDOCLIST WHERE DOCTYPE = 'CO'
begin Supermag.SMGenerateOrders(:V00001,:V00002,:V00003); end;
SELECT 1 FROM SMSTORELOCATIONS WHERE ID = :b1 AND LOCTYPE IN ( 0,4,2 )
DELETE FROM Supermag.TTAutoOrderArts
begin Supermag.SMBeginActionEx(null,29,2901,null,null,null,null); end;
SELECT * FROM SUPERMAG.TTHOLYNAMES
select Supermag.Core.GetSessionID from dual
begin supermag.core.NewSession(:V00001); end;
DELETE FROM Supermag.TTAutoOrderSuppl
DELETE FROM Supermag.TTDocList
insert into Supermag.TTAutoOrderArts(Article) select distinct Article from Supermag.SVSpecNoPriceCO S,Supermag.TTDocList L where S.DocType=L.DocType and S.DocID=L.ID
12.11.2007 08:44
Сделай новый. Просто на 5-10 позиций. С тем же поставщиком и теми же условиями контракта.
12.11.2007 10:11
olegon, из файла параметров я вижу что у тебя версия 9.2.0.8, не та ли это проблема с которой я мучился как то несколько дней, пока не снес статистику с темповых талиц и индексов? у менят тогда очень сильно тормозили запросы с темповыми таблицами, попробуй
Часовой пояс GMT +3, время: 06:59.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.