[ОТВЕТИТЬ]
29.02.2012 10:29
pipeg
 
При резервном копировании БД Oracle копируются все файлы кроме одного - indx02.dbf
Копирование это файла доходит до 68% и отваливается с ошибкой CRC
При этом БД нормально останавливается и запускается, при работе СМ2000 тоже никаких проблем не возникает.

Возможно ли как-то реанимировать этот файл?
29.02.2012 10:32
OlegON
 
Для начала надо выяснить, что в нем лежит. Пересоздать эти объекты в новом ТП и убить старое ТП.
29.02.2012 10:34
pipeg
 
что есть ТП? Просто БД не совсем мой профиль
29.02.2012 10:43
OlegON
 
Табличное Пространство. Предлагаю пригласить в эту тему от вас того, чей профиль - заниматься БД в вашей организации.
29.02.2012 11:04
pipeg
 
Тогда тему по ходу надо закрывать, я тут один на всю организацию, а в одну руку все орехи не ухватишь.

Добавлено через 8 минут 5 секунд
В поддержке посоветовали, сделать Полное пересоздание индексов. Это поможет?
29.02.2012 11:13
OlegON
 
От той проблемы, что описана выше - нет. Еще и навредить можно. Еще раз, сначала - узнайте, что в этом файле лежит. Либо просто - какому табличному пространству принадлежит этот файлик и все из него переместите в другое, а само ТП убейте.
29.02.2012 11:19
akonev
 
Цитата:
pipeg ... БД не совсем мой профиль
тогда придется медленно и мучительно.

версия оракла?
29.02.2012 12:35
akonev
 
варианта два.

первый - пару недель вдумчиво куришь мануалы, чтобы осознать, что именно тебе два раза сказал Олег. учти, это вариант более правильный.

второй - в режиме попугая смотришь что уже есть и делаешь то же самое по новой.
1) лезем в DBA Studio (Олег сейчас плеваться начнет :) )
2) цепляемся к базе под именем sys, указываем Connect as: sysdba (ПОКА НИЧЕГО НЕ МЕНЯЕМ, только смотрим !!!)
3) залезаем в раздел storage
4) ищем там tablespaces
5) рассматриваем табличные и их файлы, читаем пару статеек про то, что такое табличное пространство. их много, погугли.
6) находим к какому табличному относится твой файл
7) внимательно просматриваем параметры этого табличного и его файлов (НИЧЕГО НЕ МЕНЯЕМ!!!)
8) оцениваем сколько места оно занимает и где сделать новое такое же или больше (если видно, что места уже маловато)
9) по аналогии с существующим создаем новое. например, если старое зовется INDX, то новое пусть будет INDEX (если есть свободное место на отдельных шустрых винтах - может быть полезно новое отселить туда)
10) еще раз внимательно и придирчиво сравниваем новое ТП со старым. если похоже на правду, считаем что новое табличное есть и можно начинать пересаживать индексы.
29.02.2012 12:45
Vovantus
 
тяжёлый случай.. обратись к olegon'у, он починит.
29.02.2012 13:49
pipeg
 
Цитата:
Andrew_Konev варианта два.

первый - пару недель вдумчиво куришь мануалы, чтобы осознать, что именно тебе два раза сказал Олег. учти, это вариант более правильный.

второй - в режиме попугая смотришь что уже есть и делаешь то же самое по новой.
1) лезем в DBA Studio (Олег сейчас плеваться начнет :) )
2) цепляемся к базе под именем sys, указываем Connect as: sysdba (ПОКА НИЧЕГО НЕ МЕНЯЕМ, только смотрим !!!)
3) залезаем в раздел storage
4) ищем там tablespaces
5) рассматриваем табличные и их файлы, читаем пару статеек про то, что такое табличное пространство. их много, погугли.
6) находим к какому табличному относится твой файл
7) внимательно просматриваем параметры этого табличного и его файлов (НИЧЕГО НЕ МЕНЯЕМ!!!)
8) оцениваем сколько места оно занимает и где сделать новое такое же или больше (если видно, что места уже маловато)
9) по аналогии с существующим создаем новое. например, если старое зовется INDX, то новое пусть будет INDEX (если есть свободное место на отдельных шустрых винтах - может быть полезно новое отселить туда)
10) еще раз внимательно и придирчиво сравниваем новое ТП со старым. если похоже на правду, считаем что новое табличное есть и можно начинать пересаживать индексы.
6) файл indx02.dbf принадлежит табличному пространству INDX
7) 8) Размер: 1200 Md, Использовано: 265

Как-то так, каких-то ещё параметров я не заметил
29.02.2012 13:58
akonev
 
я так понимаю, еще как минимум indx01 в этом же табличном имеется. только два файла в табличном или больше?
если в остальных тоже места с запасом - тупо передирай табличное.

следи, чтобы новые имена файлов не совпадали со старыми.

жмешь правым кнопком на таблеспасес и выбираешь create. смотришь, чего спрашивает, заполняешь параметры по аналогии со старым. если и ошибешься - пока в нем все равно ничего нет. прибьешь и создашь по новой.

потом выбираешь его и добавляешь файлы.

главное - старые ТП не трогай.
29.02.2012 14:30
pipeg
 
Цитата:
Andrew_Konev варианта два.

первый - пару недель вдумчиво куришь мануалы, чтобы осознать, что именно тебе два раза сказал Олег. учти, это вариант более правильный.

второй - в режиме попугая смотришь что уже есть и делаешь то же самое по новой.
1) лезем в DBA Studio (Олег сейчас плеваться начнет :) )
2) цепляемся к базе под именем sys, указываем Connect as: sysdba (ПОКА НИЧЕГО НЕ МЕНЯЕМ, только смотрим !!!)
3) залезаем в раздел storage
4) ищем там tablespaces
5) рассматриваем табличные и их файлы, читаем пару статеек про то, что такое табличное пространство. их много, погугли.
6) находим к какому табличному относится твой файл
7) внимательно просматриваем параметры этого табличного и его файлов (НИЧЕГО НЕ МЕНЯЕМ!!!)
8) оцениваем сколько места оно занимает и где сделать новое такое же или больше (если видно, что места уже маловато)
9) по аналогии с существующим создаем новое. например, если старое зовется INDX, то новое пусть будет INDEX (если есть свободное место на отдельных шустрых винтах - может быть полезно новое отселить туда)
10) еще раз внимательно и придирчиво сравниваем новое ТП со старым. если похоже на правду, считаем что новое табличное есть и можно начинать пересаживать индексы.
Цитата:
Andrew_Konev я так понимаю, еще как минимум indx01 в этом же табличном имеется. только два файла в табличном или больше?
если в остальных тоже места с запасом - тупо передирай табличное.

следи, чтобы новые имена файлов не совпадали со старыми.

жмешь правым кнопком на таблеспасес и выбираешь create. смотришь, чего спрашивает, заполняешь параметры по аналогии со старым. если и ошибешься - пока в нем все равно ничего нет. прибьешь и создашь по новой.

потом выбираешь его и добавляешь файлы.

главное - старые ТП не трогай.
Их там 5 штук и все дай бог на четверть забиты.
Табличное создавать с новым именем, а файлы они сами создадуться ли их тоже с новыми именами?
И вся эта балалайка сколько по времени займёт? Размер 5-и indx файлов примерно одинаковая и заполненость тоже.
29.02.2012 14:59
akonev
 
не совсем сами.
там в окошке создания ТП должна быть табличка с параметрами файлов - каталог, имя, расширение, размер. вот туда и прописать.

но детали уже не помню, могу с EMC путать от старших версий. с 8 давно дела не имел.

нажми Show SQL - внизу сразу будет заполнятся текст запроса, которым все это надо было бы делать на самом деле :)

в нем должны быть все файлы перечислены (после DATAFILE) через запятую

по времени не сильно долго. в пределах нескольких минут на файл. хотя, конечно, от машины зависит.
29.02.2012 15:06
pipeg
 
т.е. я могу новый файлы в тотже каталог положить, чтоб по винтам не раскидываться?
29.02.2012 15:13
akonev
 
можешь. но имей в виду, что индексы - половина базы и по объему и по нагрузке. если они живут физически на отдельных винтах, то это может на десятки процентов поднять производительность. если такой необходимости нет, то можно в тот же каталог.
посмотри, кстати, размер табличного USERS (занятое пространство интересует). если оно такое же примерно - индексы у тебя уже вынесены в отдельное табличное. если значительно больше - тогда надо будет дополнительно подумать, не надо ли новое ТП под индексы сделать намного больше.
29.02.2012 15:33
pipeg
 
Цитата:
Andrew_Konev можешь. но имей в виду, что индексы - половина базы и по объему и по нагрузке. если они живут физически на отдельных винтах, то это может на десятки процентов поднять производительность. если такой необходимости нет, то можно в тот же каталог.
посмотри, кстати, размер табличного USERS (занятое пространство интересует). если оно такое же примерно - индексы у тебя уже вынесены в отдельное табличное. если значительно больше - тогда надо будет дополнительно подумать, не надо ли новое ТП под индексы сделать намного больше.
у меня индексы самые большие по размеру.
спасибо за помощь
29.02.2012 15:50
akonev
 
получается в районе 3-4 гигов суммарно по данным? это совсем юная база или просто магазин небольшой?
29.02.2012 16:25
pipeg
 
5 касс, работает примерно 5 лет, строительные и отделочные материалы
01.03.2012 09:02
akonev
 
Цитата:
pipeg 5 касс, работает примерно 5 лет, строительные и отделочные материалы
тогда понятно. специфика отрасли. небольшой относительно продуктовой розницы документооборот.

табличное новое создал?

теперь надо запустить sqlplus (или pl/sql developer или toad или что там у вас есть для работы с базой) подключиться под sys as sysdba и прогнать запрос
select * from dba_segments where tablespace_name like 'INDX';
пока просто увидеть, что в старом ТП живут индексы и убедиться, что нет ничего другого (Segment_Type = INDEX, owner = SUPERMAG)

дальше есть варианты. самый понятный и контролируемый, но не самый быстрый:
поштучно брать индексы из этого списка (SEGMENT_NAME) и прогонять для них
ALTER INDEX supermag.индекс REBUILD TABLESPACE новоеТП;

можно погуглить готовые скрипты для переноса всех индексов скопом.

лучше все это делать, когда в базе нет пользователей.
в принципе, можно и на ходу попробовать, но не все индексы согласятся под нагрузкой переезжать. и пользователи могут тормоза словить.

когда первый запрос, который
select * from dba_segments where tablespace_name like 'INDX';
перестанет что-нибудь возвращать - значит пришло счастье.
01.03.2012 14:33
pipeg
 
Клоуны из поддержки то предлагали переиндексацию сделать, теперь вообще говорят базу на другой винт тащить надо, через дамп.
Я их попросил инструкцию по переносе в другое ТП прислать, 4-й час пошёл.

Я так понял новой ТП можно во время работы системы создавать? И перетаскивать тоже, но лучше без пользователей в системе?
01.03.2012 14:37
Mtirt
 
Цитата:
pipeg Я так понял новой ТП можно во время работы системы создавать? И перетаскивать тоже, но лучше без пользователей в системе?
Да. Можно. Но лучше без пользователей.
01.03.2012 17:21
pipeg
 
Из поддержки прислали такое решение:

Подключиться в SQL+ под пользователем SYS.
Далее выполнить:

SQL>spool c:\indexes.sql
SQL> select 'alter index '||index_name||' rebuild tablespace NEW;' from all_indexes where owner='SUPERMAG';

После этого образуется скрипт c:\indexes.sql, который и можно будет выполнить уже массово (необходимо перелогиниться под Supermag):

SQL>@c:\indexes.sql;

Скрипт нужно выполнять в момент, когда БД простаивает, т.е. нет активных подключений и СМ+ полностью отключен.

Оно правильное? А то когда я туда позвонил и попросил скрипт прислать, сказали, что ща по андексу полазим и попробуем найти скрипт.
Т.ч. опасаюсь %)
01.03.2012 19:11
OlegON
 
Через одно место, конечно, лучше не использовать, оно не учитывает, что в этом ТП может еще что-то лежать, а сколько я не копался - помойки кругом... Но вот, не из яндекса, но не пробовал, правил из аналогичного своего скрипта, попробуй ты:
Код:
set serveroutput on;
begin
for c in (select owner,index_name from dba_indexes where tablespace_name='СТАРОЕ ТП')
Loop
begin
execute immediate
'alter index '||c.owner||'.' || c.index_name || ' rebuild tablespace НОВОЕ ТП';
exception when others then begin
dbms_output.put_line(c.owner||'.' || c.index_name);
end;
end;
end loop;
end;
/
запускать из под SYS в SQL Plus. Кстати, ни мой, ни их скрипт не будет работать, если ты квоту на ТП для supermag не дашь.
Код:
ALTER USER SUPERMAG QUOTA UNLIMITED ON НОВОЕ ТП;
и вообще покопай форум, миллион раз уже писалось про различные переносы. Да, если будут выводиться названия каких-то индексов - пиши сюда (это ошибки). Сервер Супермага должен быть остановлен.

Добавлено через 4 минуты 46 секунд
Я что-то на автомате продолжил, но не увидел, что ты ответил Андрею по поводу того, что у тебя в этом табличном пространстве. Сюрпризы разные бывают, в том числе и появление "посторонних" сегментов в INDX.
02.03.2012 09:34
akonev
 
Цитата:
pipeg Из поддержки прислали такое решение:
...

Оно правильное? А то когда я туда позвонил и попросил скрипт прислать, сказали, что ща по андексу полазим и попробуем найти скрипт.
Т.ч. опасаюсь %)
этот вариант перетащит все индексы именно супермага. вариант Олега - все индексы, которые есть в старом табличном независимо от владельца.

в любом случае, после переноса индексов обязательно посмотреть, что там еще в старом табличном осталось.
вот когда убедишься, что оно пустое - тогда можно будет с чистой совестью его грохнуть.
02.03.2012 10:04
pipeg
 
Цитата:
OlegON попробуй ты:
Код:
set serveroutput on;
begin
for c in (select owner,index_name from dba_indexes where tablespace_name='СТАРОЕ ТП')
Loop
begin
execute immediate
'alter index '||c.owner||'.' || c.index_name || ' rebuild tablespace НОВОЕ ТП';
exception when others then begin
dbms_output.put_line(c.owner||'.' || c.index_name);
end;
end;
end loop;
end;
/
Этот код можно в файлик *.sql запихнуть и в SQL PLus запустить?
И в догонку, в конце скрипта "/" он для чего нужен?
02.03.2012 10:26
akonev
 
Цитата:
pipeg Этот код можно в файлик *.sql запихнуть и в SQL PLus запустить?
И в догонку, в конце скрипта "/" он для чего нужен?
запихнуть в файл и в sqlplus выполнить
@имяскрипта.sql;

"/" считай выходом. если передавать имя скрипта в sqlplus параметром командной строки, то без него после окончания скрипта sqlplus останется запущенным. с ним - вернется в операционку
05.03.2012 18:35
pipeg
 
Прогнал скрипт. вроде всё нормально. БД поднялась, СМ2000 стартанул.
Команда:
select * from dba_segments where tablespace_name like 'INDX';

ничего не вывела на экран. Я так понял, что всё перенеслось и можно старое ТП грохнуть?
05.03.2012 19:21
OlegON
 
Грохай, сделай бекап сначала и грохай.
06.03.2012 10:10
akonev
 
вот как раз бэкап у него не делается. с этого вся возня и началась


Опции темы


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

 

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