26.01.2009 11:49
mighty
 
Версия СМ+ 1.026.3
Полный перенос ускорил с 15 часов до 1 ч 22 мин путем сверки таблиц аналитической базы с базой эталоном сгенерированной на тестовом компе.
Оказалось что СМ+ в процессе переноса отключает только свои ограничения и чеки, про которые знает, у меня видимо были многие поля NOT NULL или от старой базы наследие или кривизна в генераторе, не знаю. Ну вообщем сначала отобрал все таблицы аналитики чтобы сделать их NOLOGGING запросом:
Все действия выполняю в PL\SQL Developer'e
Код:
SELECT 'ALTER TABLE SUPERMAG.'||T.table_name||' NOLOGGING;' FROM DBA_ALL_TABLES T WHERE T.OWNER='SUPERMAG' AND T.TABLE_NAME LIKE 'F%' AND T.logging='YES'
Выбрал все строки и запустил результат этого запроса в отдельном окне SQL.
Потом тоже самое сделал с индексами
Код:
SELECT 'ALTER INDEX SUPERMAG.'||T.index_name||' NOLOGGING;' FROM DBA_INDEXES T WHERE T.OWNER='SUPERMAG' AND T.TABLE_NAME LIKE 'F%' AND T.logging='YES'
Запустил результат запроса.
потом очистил таблицы аналитики:
Код:
truncate table SUPERMAG.FFAVGPRICELOG_;
truncate table SUPERMAG.FFBADLINKS;
truncate table SUPERMAG.FFDEBUGLOG;
truncate table SUPERMAG.FFDOCUMENTS;
truncate table SUPERMAG.FFFINBASES;
truncate table SUPERMAG.FFINVALIDOUTIN;
truncate table SUPERMAG.FFMAPININ;
truncate table SUPERMAG.FFMAPOUTIN;
truncate table SUPERMAG.FFMAPREP;
truncate table SUPERMAG.FFMAPREP_;
truncate table SUPERMAG.FFPARTNERHIST;
truncate table SUPERMAG.FFPAYORDERS;
truncate table SUPERMAG.FFPAYORDERSVAT;
truncate table SUPERMAG.FFPRICETHRESHOLD;
truncate table SUPERMAG.FFPRODDOCUMENTS;
truncate table SUPERMAG.FFPRODEXPSPEC;
truncate table SUPERMAG.FFPRODOUTSPEC;
truncate table SUPERMAG.FFPRODREP;
truncate table SUPERMAG.FFREMAINS;
truncate table SUPERMAG.FFREMAINS_;
truncate table SUPERMAG.FFREMAINSLOG;
truncate table SUPERMAG.FFREMINCOME;
truncate table SUPERMAG.FFREMINCOME_;
truncate table SUPERMAG.FFREMINCOMELOG;
truncate table SUPERMAG.FFREMTHRESHOLD;
truncate table SUPERMAG.FFSALERETURNS;
truncate table SUPERMAG.FFSPEC;
truncate table SUPERMAG.FFSPECSCALE;
truncate table SUPERMAG.FFSTOREHIST;
truncate table SUPERMAG.FFWORKDATA;
truncate table SUPERMAG.FSREMAINS;
delete from  supermag.sscalclog;
delete from  supermag.sstransfers;
commit;
Потом установил все столбцы аналитеских таблиц в NULL
Код:
SELECT 'ALTER TABLE SUPERMAG.'||T.TABLE_NAME||' MODIFY '||T.COLUMN_NAME||' NULL;' FROM DBA_TAB_COLS T WHERE T.OWNER='SUPERMAG' AND T.TABLE_NAME LIKE 'FF%' ORDER BY T.TABLE_NAME,T.COLUMN_NAME
Запустил результаты запроса.
Установил у нужных столбцов проверки на NULL с эталонной базы
Код:
ALTER TABLE  SUPERMAG.FFAVGPRICELOG_  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFAVGPRICELOG_  MODIFY ( CALCDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFAVGPRICELOG_  MODIFY ( PARTNER   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFAVGPRICELOG_  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFAVGPRICELOG_  MODIFY ( SUMNOVAT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFAVGPRICELOG_  MODIFY ( TOTALSUM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFBADLINKS  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFBADLINKS  MODIFY ( DSTDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFBADLINKS  MODIFY ( DSTOP   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFBADLINKS  MODIFY ( FORCEDMAPPING   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFBADLINKS  MODIFY ( LINKDSTDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFBADLINKS  MODIFY ( LINKDSTITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFBADLINKS  MODIFY ( LINKSRCDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFBADLINKS  MODIFY ( LINKSRCITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFBADLINKS  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFBADLINKS  MODIFY ( SRCDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFBADLINKS  MODIFY ( SRCOP   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFDEBUGLOG  MODIFY ( ID   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFDEBUGLOG  MODIFY ( ISTRANSFER   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFDEBUGLOG  MODIFY ( LOGID   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFDEBUGLOG  MODIFY ( TS   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFDOCUMENTS  MODIFY ( CREATEDAT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFDOCUMENTS  MODIFY ( CURRENCYMULTORDER   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFDOCUMENTS  MODIFY ( CURRENCYRATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFDOCUMENTS  MODIFY ( CURRENCYTYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFDOCUMENTS  MODIFY ( DOCTYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFDOCUMENTS  MODIFY ( GOODSOWNER   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFDOCUMENTS  MODIFY ( ID   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFDOCUMENTS  MODIFY ( ISROUBLES   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFDOCUMENTS  MODIFY ( NDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFDOCUMENTS  MODIFY ( OPCODE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFDOCUMENTS  MODIFY ( PAYCASH   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFFINBASES  MODIFY ( BASECURR   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFFINBASES  MODIFY ( BASECURRMULTORDER   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFFINBASES  MODIFY ( BASECURRRATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFFINBASES  MODIFY ( BASEDOCTYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFFINBASES  MODIFY ( BASEID   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFFINBASES  MODIFY ( DOCID   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFFINBASES  MODIFY ( DOCTYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFFINBASES  MODIFY ( TOTALSUM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFINVALIDOUTIN  MODIFY ( INCOMEDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFINVALIDOUTIN  MODIFY ( INCOMEITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFINVALIDOUTIN  MODIFY ( LOGID   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFINVALIDOUTIN  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFINVALIDOUTIN  MODIFY ( SALEDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFINVALIDOUTIN  MODIFY ( SALEITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPININ  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPININ  MODIFY ( FORCEDMAPPING   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPININ  MODIFY ( INCOMEDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPININ  MODIFY ( INCOMEDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPININ  MODIFY ( INCOMEITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPININ  MODIFY ( INCOMEOP   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPININ  MODIFY ( INCOMEQ   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPININ  MODIFY ( INCOMETOTALNOVAT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPININ  MODIFY ( INCOMETOTALSUM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPININ  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPININ  MODIFY ( RETDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPININ  MODIFY ( RETDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPININ  MODIFY ( RETITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPININ  MODIFY ( RETOP   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPOUTIN  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPOUTIN  MODIFY ( FORCEDMAPPING   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPOUTIN  MODIFY ( INCOMEDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPOUTIN  MODIFY ( INCOMEDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPOUTIN  MODIFY ( INCOMEITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPOUTIN  MODIFY ( INCOMEOP   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPOUTIN  MODIFY ( INCOMEQ   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPOUTIN  MODIFY ( INCOMETOTALNOVAT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPOUTIN  MODIFY ( INCOMETOTALSUM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPOUTIN  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPOUTIN  MODIFY ( SALEDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPOUTIN  MODIFY ( SALEDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPOUTIN  MODIFY ( SALEITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPOUTIN  MODIFY ( SALEOP   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( PRIMECOST   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( PRIMECOSTFORCED   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( PRIMECOSTNOVAT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( RECTYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( SALECURTYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( SALEDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( SALEID   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( SALENOTAX   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( SALENOVAT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( SALEOP   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( SALEPAYCASH   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( SALEQ   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( SALESPECITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( SALESUM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( SALESUMCUR   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( SALETYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP  MODIFY ( SALEVATRATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( PRIMECOST   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( PRIMECOSTFORCED   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( PRIMECOSTNOVAT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( RECTYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( SALECURTYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( SALEDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( SALEID   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( SALENOTAX   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( SALENOVAT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( SALEOP   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( SALEPAYCASH   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( SALEQ   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( SALESPECITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( SALESUM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( SALESUMCUR   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( SALETYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFMAPREP_  MODIFY ( SALEVATRATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPARTNERHIST  MODIFY ( ENDDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPARTNERHIST  MODIFY ( FIFOALG   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPARTNERHIST  MODIFY ( PRIMEALG   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPARTNERHIST  MODIFY ( WAVGPERIOD   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERS  MODIFY ( CLIENTINDEX   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERS  MODIFY ( CREATEDAT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERS  MODIFY ( CURRENCYMULTORDER   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERS  MODIFY ( CURRENCYRATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERS  MODIFY ( CURRENCYTYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERS  MODIFY ( DOCID   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERS  MODIFY ( DOCTYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERS  MODIFY ( ISCASH   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERS  MODIFY ( ISROUBLES   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERS  MODIFY ( LOCATION   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERS  MODIFY ( OPCODE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERS  MODIFY ( OURSELFCLIENT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERS  MODIFY ( PAYDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERS  MODIFY ( TOTALSUM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERS  MODIFY ( TOTALSUMCUR   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERSVAT  MODIFY ( DOCID   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERSVAT  MODIFY ( DOCTYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERSVAT  MODIFY ( VATRATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPAYORDERSVAT  MODIFY ( VATSUM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRICETHRESHOLD  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRICETHRESHOLD  MODIFY ( CALCQUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRICETHRESHOLD  MODIFY ( CALCSUMFULL   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRICETHRESHOLD  MODIFY ( CALCSUMNOVAT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRICETHRESHOLD  MODIFY ( PARTNER   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODDOCUMENTS  MODIFY ( CREATEDAT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODDOCUMENTS  MODIFY ( DOCTYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODDOCUMENTS  MODIFY ( ID   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODDOCUMENTS  MODIFY ( NDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODDOCUMENTS  MODIFY ( OPCODE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODDOCUMENTS  MODIFY ( STORELOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODDOCUMENTS  MODIFY ( ZONEID   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODEXPSPEC  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODEXPSPEC  MODIFY ( DOCID   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODEXPSPEC  MODIFY ( DOCTYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODEXPSPEC  MODIFY ( NDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODEXPSPEC  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODEXPSPEC  MODIFY ( SPECITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODOUTSPEC  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODOUTSPEC  MODIFY ( DOCID   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODOUTSPEC  MODIFY ( DOCTYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODOUTSPEC  MODIFY ( NDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODOUTSPEC  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODOUTSPEC  MODIFY ( SPECITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODREP  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODREP  MODIFY ( PRIMECOST   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODREP  MODIFY ( PRIMECOSTFORCED   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODREP  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFPRODREP  MODIFY ( TOTALSUM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINS  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINS  MODIFY ( CP_FULL   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINS  MODIFY ( CP_NOVAT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINS  MODIFY ( FORCED   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINS  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINS  MODIFY ( REMDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINS  MODIFY ( STORELOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINS_  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINS_  MODIFY ( CP_FULL   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINS_  MODIFY ( CP_NOVAT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINS_  MODIFY ( FORCED   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINS_  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINS_  MODIFY ( REMDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINS_  MODIFY ( STORELOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINSLOG  MODIFY ( ENDTIME   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINSLOG  MODIFY ( ISCLOSEDPERIOD   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINSLOG  MODIFY ( REMDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMAINSLOG  MODIFY ( STARTTIME   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMINCOME  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMINCOME  MODIFY ( FORCED   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMINCOME  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMINCOME  MODIFY ( REMDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMINCOME  MODIFY ( STORELOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMINCOME_  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMINCOME_  MODIFY ( FORCED   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMINCOME_  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMINCOME_  MODIFY ( REMDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMINCOME_  MODIFY ( STORELOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMINCOMELOG  MODIFY ( ENDTIME   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMINCOMELOG  MODIFY ( ISCLOSEDPERIOD   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMINCOMELOG  MODIFY ( REMDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMINCOMELOG  MODIFY ( STARTTIME   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMTHRESHOLD  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMTHRESHOLD  MODIFY ( CP_FULL   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMTHRESHOLD  MODIFY ( CP_NOVAT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMTHRESHOLD  MODIFY ( PARTNER   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFREMTHRESHOLD  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSALERETURNS  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSALERETURNS  MODIFY ( FORCEDMAPPING   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSALERETURNS  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSALERETURNS  MODIFY ( RETDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSALERETURNS  MODIFY ( RETDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSALERETURNS  MODIFY ( RETITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSALERETURNS  MODIFY ( RETOP   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSALERETURNS  MODIFY ( SALEDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSALERETURNS  MODIFY ( SALEDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSALERETURNS  MODIFY ( SALEITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSALERETURNS  MODIFY ( SALEOP   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPEC  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPEC  MODIFY ( DOCDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPEC  MODIFY ( DOCOP   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPEC  MODIFY ( DOCTYPE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPEC  MODIFY ( EXPQUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPEC  MODIFY ( ITEMPRICE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPEC  MODIFY ( ITEMPRICECUR   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPEC  MODIFY ( NDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPEC  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPEC  MODIFY ( SPECITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPEC  MODIFY ( TOTALSUM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPEC  MODIFY ( TOTALSUMCUR   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPEC  MODIFY ( TOTALSUMNOTAX   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPEC  MODIFY ( TOTALVAT   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPEC  MODIFY ( VATRATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPECSCALE  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPECSCALE  MODIFY ( NDOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPECSCALE  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSPECSCALE  MODIFY ( SPECITEM   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSTOREHIST  MODIFY ( ENDDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFSTOREHIST  MODIFY ( STORELOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFWORKDATA  MODIFY ( ISTRANSFER   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFWORKDATA  MODIFY ( LOGID   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFWORKDATA  MODIFY ( VARNAME   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFWORKDATA  MODIFY ( X   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FFWORKDATA  MODIFY ( Y   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FSREMAINS  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FSREMAINS  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FSREMAINS  MODIFY ( REMDATE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FSREMAINS  MODIFY ( STORELOC   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FVPRODREP  MODIFY ( ARTICLE   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FVPRODREP  MODIFY ( PRIMECOST   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FVPRODREP  MODIFY ( QUANTITY   NOT NULL ENABLE);
ALTER TABLE  SUPERMAG.FVPRODREP  MODIFY ( TOTALSUM   NOT NULL ENABLE);
Потом дописал полный перенос таким образом чтобы он удалял индексы, констрайнты, вторичные ключи, проверки и выключал триггеры (во вложении). ТОЛЬКО ВНИМАНИЕ - ПОСЛЕ ДАННОГО ПЕРЕНОСА НАДО ПЕРЕКОМПИЛЛИРОВАТЬ ВСЕ ИНВАЛИДНЫЕ ОБЪЕКТЫ.
Запустил - время переноса 1ч 30 минут на моем ноутбуке, на сервере 1ч. 22 минуты..
Может быть кому нибудь и понадобится этот алгоритм.
Сейчас в офисе рассчитаю себестоимость и буду смотреть планы.

Arsen, может быть ты выложишь свои параметры на форуме. Вопросы полюбому появятся - обсуждение продвинет и тебя вперед и нас?
Вложения
Тип файла: zip SMTransfer.zip (2.8 Кб, 95 просмотров)
26.01.2009 12:30
Arsen
 
Вот мои параметры:
единственной проблемой с переходом с 9 по 10 была, величина параметра processes, sessions. На otn читал, что 10-ка вроди бы генерирует много процессов чем 9 (но честно говоря не понял как?). и потом собстно убедился сам когда смотрел в трейс файлы там было: Maximum number of processes 150 exceeded.
Увеличил и юзеры стали нормально конектится, но ошибка которая выдала у пользователей ни о чем не говорила (нет прослушивателья).
И еще сервис плюс добавил к этому, что это из за того что клиент от 8-ки, даже дал патч 10.2.0.4.3, но это не помогло.
26.01.2009 12:43
mighty
 
Нет Arsen, сделай плз, выгрузку из v$parameter с сортировкой по наименованию параметра..
26.01.2009 14:00
Arsen
 
Извини забыл прикрепить файл, вот он
Вложения
Тип файла: rar parameters.rar (14.1 Кб, 209 просмотров)
26.01.2009 20:34
mighty
 
в 9 часов утра запустил расчет себестоимости..4 часа длился сам расчет..в 13.00 надпись "Индексация результатов расчета"..в 19:00 часов вечера я не выдержал и отключил его..
Никак не могу понять что так влияет на сбор статистики, почем утак долго ALL_ROWS по умолчанию..По всем таблицам аналитики статистика собралась - по FFMAPREP - нет...
27.01.2009 09:53
OlegON
 
сделай
analyze table ffmaprep compute statistic; и хватит пока, на время посмотри.
параллельно можешь select sum(bytes) from dba_segments where segment_name='FFMAPREP';
странное что-то... винты небось тормознутые. ругайся, кто проседает. джобы смотри, активные сессии.
27.01.2009 12:07
mighty
 
Что поменял в настройках:
optimizer_mode=CHOOSE; |было ALL_ROWS
db_file_multiblock_read_count=128 | было 16

В 23:17 запустил расчет (без пеерноса), выполнялся 4 ч. 51 минуту, то етсь понятно 4 часа на расчет, 51 минута на сбор статистики по 5-6 таблицам, вообщем расчиталась себестоимость, сегодня защиту сделаю на случай сбоев, чтобы FFMAPREP -перед расчетом бекапился экспортом, чтобы в случае сбоя ночью можно было дамп сегодняшнего расчета накатить.
Я тут пробовал собирать статистику и через ANALYZE и через DBMS_STATS - результаты разные(по аналитической базе), сейчас на вскидку не помню, но дома сделаю и скажу. Выставил оптимайзер в CHOOSE - руководствовался тем что раньше(3 месяца назад) с этой опцией оптимайзера работало быстро все, расчет себестоимости шел около 3 часов. Удалил статистику, всю потом только заново расчитывал. То есть CHOOSE расчитал её как RULE..

Сейчас ничего не делаю в базе - работают только опереторы с накладными, менеджеры с заказами и менеджеры с кучей отчетов по аналитической базе:
Запрос:
Код:
select sum(bytes) from dba_segments where segment_name='FFMAPREP';
Возвращает: 6560940032

Теперь результаты плана:
Код:
select sum(decode(f.saletype,'CR',-f.salesum,f.salesum)) realiz from supermag.ffmaprep f where f.rectype=1 and f.saletype in ('CR','CS') 
and f.saledate>=to_date('20.01.2005','DD.MM.YYYY')
and f.saledate<=to_date('19.01.2009','DD.MM.YYYY')
and f.article in ( select c.article from supermag.smcard c where  c.accepted<>-1  )
Код:
-----------------------------------------------------------------------------------------------------------
| Id  | Operation                     | Name      | Rows  | Bytes | Cost (%CPU)| Time     | Pstart| Pstop |
-----------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT              |           |     1 |    76 |     3   (0)| 00:00:01 |       |       |
|   1 |  SORT AGGREGATE               |           |     1 |    76 |            |          |       |       |
|   2 |   NESTED LOOPS                |           |     1 |    76 |     3   (0)| 00:00:01 |       |       |
|   3 |    PARTITION RANGE ALL        |           |     1 |    66 |     2   (0)| 00:00:01 |     1 |    26 |
|*  4 |     TABLE ACCESS FULL         | FFMAPREP  |     1 |    66 |     2   (0)| 00:00:01 |     1 |    26 |
|*  5 |    TABLE ACCESS BY INDEX ROWID| SMCARD    |     1 |    10 |     1   (0)| 00:00:01 |       |       |
|*  6 |     INDEX UNIQUE SCAN         | SMCARD_PK |     1 |       |     0   (0)| 00:00:01 |       |       |
-----------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   4 - filter("F"."RECTYPE"=1 AND ("F"."SALETYPE"='CR' OR "F"."SALETYPE"='CS') AND
              "F"."SALEDATE">=TO_DATE(' 2005-01-20 00:00:00', 'syyyy-mm-dd hh24:mi:ss') AND
              "F"."SALEDATE"<=TO_DATE(' 2009-01-19 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
   5 - filter("C"."ACCEPTED"<>(-1))
   6 - access("F"."ARTICLE"="C"."ARTICLE")
Пипец -фуллскан откуда-то вылез(может из за db_file_multiblock_read_count?).. FFMAPREP партиционирован по дате(помесячно), индексы не партиционированы.
индексы аналитической базы лежат в одном таблспейсе с индексами оперативной базы..хочу разнести, но боюсь большого прироста это не даст.
Вообщем разбираюсь дальше - у кого есть предложения, прошу..
27.01.2009 12:16
kadr
 
Цитата:
mighty Пипец -фуллскан откуда-то вылез(может из за db_file_multiblock_read_count?).. FFMAPREP партиционирован по дате(помесячно), индексы не партиционированы.
индексы аналитической базы лежат в одном таблспейсе с индексами оперативной базы..хочу разнести, но боюсь большого прироста это не даст.
Вообщем разбираюсь дальше - у кого есть предложения, прошу..
Считаю что фуллсканы не страшны.
Сам сейчас на тестовом серваке борюсь со скоростью, индекс FFMAPREP_SALEDATE битовый локально партицированный, при выставлении параметра optimizer_index_cost_adj в районе 10 план меняется на использование индекса, но при реальной работе с фуллсканом по партициям работет быстрее чем по индексному доступу. Разница раза в 3
27.01.2009 12:43
mighty
 
Код:
select sum(decode(f.saletype,'CR',-f.salesum,f.salesum)) realiz from supermag.ffmaprep f where f.rectype=1 and f.saletype in ('CR','CS') 
and f.saledate>=to_date('20.01.2005','DD.MM.YYYY')
and f.saledate<=to_date('19.01.2009','DD.MM.YYYY')
and f.article in ( select c.article from supermag.smcard c where  c.accepted<>-1  )
Запрос при вышеописанном плане отрабатывал 631 секунда - плохо, на таких объемах данных еще 2 месяца назад этот запрос отрабатывался за минуту или даже меньше но там была 9.2.0.8 и 32 разрядная.

Kard, а после изменения optimizer_index_cost_adj статистику надо пересобирать? или план запроса сразу меняется?
27.01.2009 12:55
Arsen
 
Советую не менять этот мараметр - optimizer_index_cost_adj.

Я тоже читал, что при таких значениях план меняется на индексы, но когда поменял его, то случилось вот что: когда редактируешь карточки товаров, сохраниние длится около 3 минуты.
Часовой пояс GMT +3, время: 20:30.

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