[ОТВЕТИТЬ]
Опции темы
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.
 
"Спасибо" OlegON от:
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 останется запущенным. с ним - вернется в операционку
 
"Спасибо" akonev от:
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, время: 11:37.

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