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, время: 09:15.

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