24.01.2007 07:29
Gromila
 
У меня в Event log пишется такая ошибка:

General failure. Error messages follows.
Запись 1. Код=80004005h (0) [SMUKMD~1]:
Ошибка при обработке файла чека 'E:\exchange\Cash\cashO\000605060014.ret'.

Запись 2. Код=80004005h (0) [Microsoft OLE DB Provider for Oracle]:
ORA-01578: разрушен блок данных ORACLE (файл # 10, блок # 133359)
ORA-01110: файл данных 10: 'E:\ORACLE\ORADATA\DBMAG2\USERS05.DBF'
ORA-06512: на "SUPERMAG.CASH", line 2299
ORA-06512: на "SUPERMAG.CASH", line 2346
ORA-06512: на "SUPERMAG.CASH", line 2390
ORA-06512: на "SUPERMAG.CASH", line 2491
ORA-06512: на line 1


Запись 3. Код=80004005h (0) [SmLibaryBase trace]:
{ ? = call Cash.ImportOnlineCheck(?, ?, ?, ?, ?, ?, ?) }
Params:
{0} [0](0,0): vt=0 value=<not printable>
{1} [0](0,0): vt=3 value=5
{2} [0](0,0): vt=3 value=6
{3} [0](0,0): vt=3 value=506
{4} [0](0,0): vt=3 value=14
{5} [1](0,0): vt=8 value=0
{6} [0](0,0): vt=3 value=37
{7} [0](0,0): vt=7 value=24.01.2007 10:22:00

%4 %5 %6 %7 %8

Причет все стартует и работает!
Как это вылечить помогите срочно !

P/s/ Заранее большое спасибо!
24.01.2007 07:50
kadr
 
База в архивлоге? версия?

P.S. это в раздел Oracle надо
24.01.2007 07:58
Gromila
 
База не в архив логе! Оракля 8-ка супермажа 1-024-6!
24.01.2007 08:06
Propil
 
Gromila, ругается только на один оперативный чек или на разные?
если один и тот же, удали его, может он "неправильный"
оптимайзером пройдись с параметром /valid
24.01.2007 08:13
kadr
 
Propil, тут не в чеках дело. блоки самой базы побились.
Gromila, правильно Propil говорит, оптимайзер не помешает прогнать. Также проверить диски на наличие сбойных блоков. Есть ещё утилита DBV, прогнать её по файлам БД (но помнить, что файл д.б. менее 2 Гб, иначе не сможет проверить). Предварительно бэкап перед всеми действиями не забывай
Но моё мнение: надо экспорт/импорт в новую базу, заодно дефрагментация и есть возможность поднять версию Oracle до 9-ки.
Если нет желания/времени делать экспорт/импорт, то можно перенести все объекты из ТП, к которому относится указанный в ошибке файл, в новое, а это ТП грохнуть.

Ещё есть возможность (вот не помню в 8-ке есть, но в 9-ке точно) проверить блоки стандартными пакетами Oracle и бытые пометить для того чтобы Oracle к ним больше не обращался.
24.01.2007 08:38
Gromila
 
Сделал вот енто:

SVRMGR> SELECT SEGMENT_TYPE,OWNER||'.'||SEGMENT_NAME FROM DBA_EXTENTS WHERE 10 =
FILE_ID AND 133359 BETWEEN BLOCK_ID AND BLOCK_ID+BLOCKS-1;
SEGMENT_TYPE OWNER||'.'||SEGMENT_NAME

------------------ -------------------------------------------------------------
-------------------
INDEX SUPERMAG.SMOPERGOODS_PK

1 row selected.
SVRMGR> alter index SMOPERGOODS_PK Rebuild;
alter index SMOPERGOODS_PK Rebuild
*
ORA-01418: specified index does not exist
SVRMGR> alter index SUPERMAG.SMOPERGOODS_PK Rebuild;
alter index SUPERMAG.SMOPERGOODS_PK Rebuild
*
ORA-01578: ORACLE data block corrupted (file # 10, block # 133359)
ORA-01110: data file 10: 'E:\ORACLE\ORADATA\DBMAG2\USERS05.DBF'
SVRMGR>

Получаем что сбойный блок относится к SUPERMAG.SMOPERGOODS_PK значит вопрос:

1.Как удалить енто и создать заново?
24.01.2007 08:53
kadr
 
Gromila, как вариант, это таблица оперчеков, поэтому грохнуть её и пересоздать заново. Лично я пользуюсь PL/SQL Developer`ом он позволяет посмотреть текст создания таблицы.
вот от версии 1.024.
Код:
-- Create table
create table SMOPERGOODS
(
  LOCID          NUMBER(10) not null,
  DESKNUM        NUMBER(5) not null,
  ZNUM           NUMBER(5) not null,
  DEPID          NUMBER(10) not null,
  ARTICLE        VARCHAR2(50) not null,
  SALEQUANTITY   NUMBER(14,3) not null,
  RETURNQUANTITY NUMBER(14,3) not null,
  TOTALSALESUM   NUMBER(19,4) not null,
  TOTALRETSUM    NUMBER(19,4) not null
)
tablespace USERS1
  pctfree 10
  pctused 40
  initrans 1
  maxtrans 255
  storage
  (
    initial 128K
    next 1M
    minextents 1
    maxextents unlimited
    pctincrease 0
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table SMOPERGOODS
  add constraint SMOPERGOODS_PK primary key (LOCID, DESKNUM, ZNUM, DEPID, ARTICLE)
  using index 
  tablespace INDEX_OPER
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 128K
    minextents 1
    maxextents unlimited
  );
alter table SMOPERGOODS
  add constraint SMOPERGOODS_DESK foreign key (LOCID, DESKNUM)
  references SMCASHDESKS (LOCID, ID) on delete cascade;
-- Create/Recreate check constraints 
alter table SMOPERGOODS
  add constraint SMOPERGOODS_NEGQ
  check (SaleQuantity>=0 and ReturnQuantity>=0);
alter table SMOPERGOODS
  add constraint SMOPERGOODS_NEGSUM
  check (TotalSaleSum>=0 and TotalRetSum>=0);
-- Grant/Revoke object privileges 
grant select on SMOPERGOODS to SUPERMAG_FN_CARD_VIEWSTOCK;
grant select on SMOPERGOODS to SUPERMAG_MODULE_GOODS;
Если важна инфа, которая хранится в ней, то предварительно слить куда-нить данные из неё.
Но сбойный блок останется и Oracle в следующий раз туда может попытаться записать что-то более важное/критичное для СуперМага.
24.01.2007 09:11
Gromila
 
Какая енто таблица я в курсе! Но всетаки может таблицу оперчеков не валить а завалить именно SMOPERGOODS_PK так как на него ругается т.е. завалить индексы SMOPERGOODS_PK и создать заново! проверил бедов нет все нормально! Щас еще dbv ищу если есть кинте мне ссылочку! Если физическая структура диска и файла нормальная то освобождение блока и перезапись его решение проблемы и впредь даже записав оракле туда новые данные все будет нормально !
24.01.2007 09:26
OlegON
 
Елки-палки, только что про правильное оформление тем писал :(
Не упирайся, прогони /validate, сразу увидишь размеры разрушений. dbv - штатная утилита Oracle, тут уже про нее писали, посмотри по форуму.
24.01.2007 10:15
Gromila
 
прогоняю опитизер с опцией /validate пишет все время вот такое дело!

ORA-1652: unable to extend temp segment by 16 in tablespace USERS
Часовой пояс GMT +3, время: 16:25.

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