[ОТВЕТИТЬ]
25.03.2015 09:58
[+kliN+]
 
Имею проблему с БД Oracle.
Не так давно заметил что бд раздувается огромными темпами, заканчивалось место в таблицах, причем растут индексы. (сейчас индексы весят 100гб 8 файлов, все остальные файлы весят 7гб)
сейчас на этот комп с базой поймали вирус, который зашифровал почти все важное. это в основном архивы, документы мс офис, файлы DBF (безвозвратно пострадала одинеска) программы и которые запускаются как служба вирус зашифровать не успевает, а значит еще есть шанс спасти базу супермага.

На момент, когда я забрал системник, супермаг уже не работал, (кому интересно могу прикрепить лог супермага.)
затем отказал listener, служба не хотела запускаться.
файлы бд, как я уже сказал, не зашифровались, но зашифровались некоторые файлы из Oracle_HOME
Нужно срочно делать дамп.
С горем пополам удалось начать экспорт, (пересоздал listener, восстановил возможность подключаться к базе)
в логе экспорта постоянно появлялись сообщения exp-00091 вида:

Код:
. . exporting table TTSCALEITEMSRATE
. . exporting table TTSCALEKEYMAP          0 rows exported
EXP-00091: Exporting questionable statistics
EXP-00091: Exporting questionable statistics
. . exporting table TTSCALESUBARTICLE
а в конце в конце импорта
Код:
. exporting dimensions
. exporting post-schema procedural objects and actions
EXP-00008: ORACLE error 44001 encountered
ORA-44001: invalid schema
ORA-06512: at "SYS.DBMS_ASSERT", line 243
ORA-06512: at "SYS.DBMS_AW_EXP", line 447
ORA-06512: at line 1
EXP-00083: The previous problem occurred when calling SYS.DBMS_AW_EXP.schema_info_exp
. exporting user history table
. exporting defoult and system auditing options
. exporting statistics
Export terminated successfully whith warnings
видимо этот дамп нельзя будет восстановить нормально

в гуглах нашел, что видимо я допустил ошибку в NLS

щас выполняется еще один экспорт с нормальным NLS_LANG
и уже сразу видно что сообщений типа "EXP-00091" нету.
есть надежда что экспорт будет успешен, или я еще что-то не исправил?

пока писал сообщение закончился второй экспорт without warnings

Оба дампа весят ~46,5 ГБ. Второй (успешный) на 34кб больше
Год назад дамп весил 2,15 ГБ.

Как импортировать базу без лишнего мусора, чтоб бд была не такая опухшая?
25.03.2015 10:41
OlegON
 
С таким началом я бы предложил не делать дамп. Если база работала, то ее можно файлами и восстановить. С такими познаниями велик риск, что базу убьешь при переливке дампом. Скопируй файлы на новый сервер и восстанавливай.
25.03.2015 10:43
[+kliN+]
 
файлы скопирую на крайний случай, хочется всетаки дампом.
25.03.2015 11:14
OlegON
 
Извини, я затрудняюсь угадать с чего начать, а комплексное обучение - не готов. Вот инструкция: Переход с 8i на 9i (для баз Супермага) за небольшими изменениями она подходит.
Если мусор не хочешь перетаскивать - почисть его в исходной БД после того, как файлы скопируешь при остановленной БД.
25.03.2015 11:45
[+kliN+]
 
как почистить то? тупо удалить файлы индексов а потом создать один нормальный индекс?
25.03.2015 11:50
Mtirt
 
Цитата:
[+kliN+] как почистить то? тупо удалить файлы индексов а потом создать один нормальный индекс?
Не стоит этого делать.
Надо посмотреть, что, кроме данных Супермага есть в базе, и из этого аккуратно удалить ненужное.
25.03.2015 11:57
[+kliN+]
 
есть dbforge studio for oracle.
как узнать, какие данные нужны, а какие не нужны?
25.03.2015 12:07
OlegON
 
Обойти пользователей и согласовать очистку лишнего с их руководством. Что нужно, что не нужно, решать бизнесу, а не администратору.
25.03.2015 12:14
Mtirt
 
Посмотреть, какие схемы, кроме supermag и sys есть в базе.
Попытаться понять, откуда они взялись и за что отвечают.
25.03.2015 12:33
[+kliN+]
 
как узнать какая схема больше места занимает?
25.03.2015 12:49
[+kliN+]
 
эта база одиночного магазина небольшой площади с тремя кассами, (и те работают по очереди).
30000-35000 карточек максимум.
Магазин работает на супермаге с конца 2010 года...
меня мучает вопрос, почему база весит 107 ГБ ?
куда прут индексы?
25.03.2015 12:59
Ferus
 
Ммм многовато...
БД ЦО 2 магазина с 2006 70Гб 74к карточек
БД ЦО 3 магазина с 2009 50Гб 68к карточек
и т.д.
25.03.2015 13:02
[+kliN+]
 
ВОТ! ))))
может индексы пересоздать?
25.03.2015 13:07
Mtirt
 
Определим сколько места занимают схемы, для этого выполним следующий запрос:
Код:
SELECT 
  OWNER,
  CASE 
    WHEN (S.BYTES / 1024 / 1024 / 1024 / 1024) > 1 THEN TO_CHAR(S.BYTES / 1024 / 1024 / 1024 / 1024) || ' PB' --Petabytes
    WHEN (S.BYTES / 1024 / 1024 / 1024 / 1024) > 1 THEN TO_CHAR(S.BYTES / 1024 / 1024 / 1024 / 1024) || ' TB' --Terabyte
    WHEN (S.BYTES / 1024 / 1024 / 1024) > 1 THEN TO_CHAR(S.BYTES / 1024 / 1024 / 1024) || ' GB' --Gigabyte
    WHEN (S.BYTES / 1024 / 1024) > 1 THEN TO_CHAR(S.BYTES / 1024 / 1024) || ' MB' --Megabyte
    WHEN (S.BYTES / 1024) > 1 THEN TO_CHAR(S.BYTES / 1024) || ' KB' --Kilobyte
   ELSE TO_CHAR(S.BYTES) || ' B' --Byte
  END CASE
  FROM (SELECT OWNER,
               SUM(BYTES) AS BYTES
      FROM DBA_SEGMENTS
      GROUP BY OWNER) S
  ORDER BY S.BYTES DESC
Определим сколько места занимают таблицы в Oracle:
Код:
SELECT S.SEGMENT_NAME, S.BYTES
      FROM DBA_SEGMENTS S
WHERE OWNER = '<название схемы>'
  AND S.SEGMENT_TYPE = 'TABLE'
Определим сколько места занимает таблица в Oracle:
Код:
SELECT S.BYTES
      FROM DBA_SEGMENTS S
WHERE OWNER = '<название схемы>'
  AND S.SEGMENT_TYPE = 'TABLE'
  AND S.SEGMENT_NAME = '<название таблицы>'
Определим сколько места занимает индекс в определенной схеме в Oracle:
Код:
SELECT S.BYTES
      FROM DBA_SEGMENTS S
WHERE OWNER = '<название схемы>'
  AND S.SEGMENT_TYPE = 'INDEX'
  AND S.SEGMENT_NAME = '<название индекса>'
Определим сколько места занимают индексы в определенной схеме Oracle:
Код:
SELECT S.BYTES
      FROM DBA_SEGMENTS S
WHERE OWNER = '<название схемы>'
  AND S.SEGMENT_TYPE = 'INDEX'
25.03.2015 14:48
[+kliN+]
 
вот что выдал первый скрипт
25.03.2015 14:49
[+kliN+]
 
вот второй скрипт
25.03.2015 14:49
Mtirt
 
А нельзя вместо картинки просто текст скопировать и выложить?
25.03.2015 14:51
[+kliN+]
 
кстати экспорт очень долго висел на выгрузке "MLOG$_SMSPEC"
25.03.2015 14:55
[+kliN+]
 
если картинки не нравятся, могу текст
25.03.2015 14:56
Mtirt
 
В Адм. модуле (База данных - Заказ поставщикам) стоит галочка "Вести журнал формирования заказов на базе контрактов"?
25.03.2015 15:01
[+kliN+]
 
сейчас супермаг не работает. я копирую 100гб баз на другой комп по сетям, осталось всего лишь 200 минут, и тормозить копирование не охота.
но могу с уверенностью сказать что контрактами и заказами в этой базе не пользовались
25.03.2015 15:11
kadr
 
Цитата:
[+kliN+] кстати экспорт очень долго висел на выгрузке "MLOG$_SMSPEC"
Это материализованное представление, если правильно помню, то это часть сервера отчетов.
25.03.2015 15:33
[+kliN+]
 
нашел тему там эти таблицки просто удалили. может тоже попробовать? ))
25.03.2015 15:42
Mtirt
 
Может лучше оптимайзер натравить? Там есть очистка логов...
25.03.2015 15:53
[+kliN+]
 
Можно попробовать, optimizer с этой базой уже работал. Были проблемы с ffmaprep, помоему место заканчивалось. вот оптимайзер лечил.
26.03.2015 07:54
Mtirt
 
А кто-нибудь знает точно, что это за материализованные представления и откуда они берутся?
26.03.2015 08:29
Mtirt
 
Т.е. их создает оптимайзер, если поставить опцию "Ускорение заказов"?
Или создавал на старых версиях?
Ускорение заказов
26.03.2015 09:16
OlegON
 
Угу, либо OptimizeOrders включили, либо руками по той ссылке сделали. Опт ставил только на старых версиях СМ, где это нужно было, на новых он не ставил, а имеющиеся снимал.


Опции темы


Часовой пояс GMT +3, время: 14:26.

 

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