Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Обязательно сделать копию БД, без копии и гарантии ее работоспособности, скрипты не запускать, дальше не читать!

---------------------------------------------------------------------------------------

1. Таблица SMPOSTOUTLOG содержит историю почтовых отправлений. Если история не нужна, таблицу можно очистить.
2. Таблица SMTIMESPANSALE - таблица итогов продаж за интервал времени для кассовых документов. Таблица используется в отчетах "Почасовая статистика ...". Для совсем давних времен эта таблица, смысла не имеет. Можно очистить ее скриптом:

declare
vBeforeDate date := to_date('01.01.2012','DD.MM.YYYY');
begin
loop
delete from SMTIMESPANSALE t
where exists (select 1 from SMDocuments d
where d.DocType=t.DocType
and d.ID=t.DocID
and D.Createdat<vBeforeDate)
and ROWNUM < 100000;
exit when SQL%ROWCOUNT = 0;
commit;
end loop;
end;
/

3. Таблица SSEVENTLOG - журнал различных событий. Автоматически чистится заданием "Сборка мусора". Сейчас там остаются данные за последние 3 года. Можно оставить записи только за последние 12 месяцев:

declare
vOldTime date := add_months( trunc(sysdate), -12 );
begin
delete from SSEventLog L where L.EventTime < vOldTime;
commit;
end;
/

4. Таблица SMPRICEHISTORY - история изменения цен. Если эта информация за все прошлые годы не интересна, можно ее удалить:

declare
vBeforeDate date := to_date('01.01.2012','DD.MM.YYYY');
begin
delete from SMPRICEHISTORY where EventTime < vBeforeDate;
commit;
end;
/

5. По п. 3-6 Нужно иметь в виду следующее, что:
Даты в скриптах (vBeforeDate, vOldTime) можно выставить самостоятельно, исходя из собственных соображений.
Удаление записей в таблицах не приведет к уменьшению физического размера (занимаемого размера) таблиц, но сократит объем данных и как следствие повысит быстродействие.

6. В БД присутствуют документы не оказывающие влияние на товародвижение, на начало 2016 года (использовался запрос):
select count(*), D.DocType from supermag.SMDocuments D
where D.CreatedAt < to_date('01.01.2016','DD.MM.YYYY')
and D.DocType in ('LA','FA','OR','OC',
'SO','BI','SR','ME',
'IL','RL','AC','AB','AD',
'SL','PL',
'CI','PW','PF',
'RD','BA') group by D.DocType;

Ранее (в 2006 году) уже применялся скрипт, с помощью которого удалялись документы по 2012 год. Скрипт во вложении, его можно использовать повторно, установив дату удаления исходя из собственных соображений.

7. Т.к. п.3-8 внесли существенные изменения в состав данных, в обязательном порядке через административный модуль необходимо собрать статистику (выполнить задание «Полный сбор статистики»).

--

еще скрипты:

declare
vBeforeDate date := to_date('01.01.2012','DD.MM.YYYY');
vCount integer;
begin
delete from supermag.TTDocList;
insert into supermag.TTDocList(DocType,ID)
select D.DocType, D.ID from supermag.SMDocuments D
where D.CreatedAt < vBeforeDate
and D.DocType in ('LA','FA','OR','OC',
'SO','BI','SR','ME',
'IL','RL','AC','AB','AD',
'SL','PL',
'CI','PW','PF',
'RD','BA');
commit;

Documents.SetMassiveLoad(true);

loop
vCount := 0;
for vRec in (select T.DocType, T.ID
from supermag.SMDocuments D, supermag.TTDocList T
where T.DocType = D.DocType 
and T.ID = D.ID
and rownum <= 100000)
loop
vCount := 1;
delete from supermag.SMDocuments where DocType=vRec.DocType and ID=vRec.ID;
delete from supermag.SMCommonBases where BaseDocType=vRec.DocType and BaseID=vRec.ID;
delete from supermag.SMDocLog where DocType=vRec.DocType and ID=vRec.ID;
delete from supermag.TTDocList where DocType = vRec.DocType and ID=vRec.ID;
end loop;
commit;
exit when vCount=0;
end loop;

Documents.SetMassiveLoad(false);
end;
/

-------------------------------

Просто посмотреть сколько...

select D.DocType, D.ID, D.CreatedAt from supermag.SMDocuments D
        where D.CreatedAt < to_date('01.01.2015','DD.MM.YYYY')
            and D.DocType in ('LA','FA','OR','OC',
                        'SO','BI','SR','ME',
                        'IL','RL','AC','AB','AD',
                        'SL','PL',
                        'CI','PW','PF',
                        'RD','BA');


--------------------------------

select count(*) from supermag.SMDocuments D
        where D.CreatedAt < to_date('01.01.2015','DD.MM.YYYY')
            and D.DocType in ('LA','FA','OR','OC',
                        'SO','BI','SR','ME',
                        'IL','RL','AC','AB','AD',
                        'SL','PL',
                        'CI','PW','PF',
                        'RD','BA');

  • Нет меток