Удаление старого табличного пространства после обновления системы с помощью SUM

Написал данную заметку для внутренней корпоративной Wiki, но решил поделиться и в своем блоге немного изменив подачу материала, считаю, что моим читателям будет интересно.



Руководство по обновлению систем SAP с помощью утилиты SUM говорит, что после обновления системы старое табличное пространство можно удалить. НО, если вы обновляли систему с помощью SUM впервые, то вас может ожидать не очень приятная новость - табличное пространство вы удалите, но получите ошибку о том, что удалить физические файлы невозможно (точно не помню, но то ли потому что они используются БД, то ли brspace ждет какой-то команды  от Oracla и ее не получает).

Казалось бы, ничего страшного, подумал я и вырубив систему и БД - переименовал физические файлы, чтобы их удалить в дальнейшем, если эксперимент завершится удачно. Запустил базу и систему, они запустились - я обрадовался. Но рано...

При входе в систему посыпались дампы с указанием на таблицу TTREE. Поиск нот привел к 1819182 - Tables (TTREE*) remain in old exchange tablespace. Оказалось, что я не переместил важные таблицы, которые остались в старом табличном пространстве. Заглядываю в SE14, вижу, что таблица не существует в БД. Активирую эту таблицу и несколько следующих через SE11, перезахожу в систему - все работает. Но опять рано радоваться...

При более детальном изучении оказалось, что пропало стандартное SAP меню. Пытаюсь "нагуглить" ответ - подходящего ответа нет, нот тоже, поддержка молчит - на дворе 6-е января ж :)

Понимаю, что основной моей ошибкой было то, что я не проверил табличное пространство на заполненность. Решаю исправиться. Системный администратор (не SAP) восстанавливает виртуалку с SAP-системой из бекапа. И тут я сталкиваюсь с другой оказией, не стартует система.

Начинаю разбираться. Восстанавливаю часть файлов, система запускается.

Теперь я уже научен, и приступаю к нормальному удалению табличного пространства.

1. Иду в DB02, жму Обновить и проверяю, что табличное пространство пустое.

2. После этого из командной строки подключаюсь к БД и проверяю сколько объектов осталось в табличном пространстве.
  • SQL> select count(*) from dba_segments where tablespace_name = "PSAPSR3702";
если count не равен 0, то
  • SQL> select owner, segment_name, segment_type from dba_segments where tablespace_name = '<tablespace_name>';
Получаю список таблиц, он почти идентичен тому, который упоминается в ноте 1819182.

3. Дальше используя ноту 646681 - Reorganization of tables with BRSPACE и перемещаю все таблицы с помощью команды:
  • brspace -u / -f tbreorg -s "PSAPSR3702" -t "*" -n "PSAPSR3702X"
4.  Выполняю пункт 2 еще раз и проверяю, что табличное пространство действительно пусто.

5. Удаляю табличное пространство с помощью команды:
  • brspace -u / -f tsdrop -t "PSAPSR3702"
У меня удалились почти все файлы, которые должны были удалиться. Часть из них не удалилось по причине отсутствия прав и доступа (почему то). Я думаю, что лучше выполнять удаление при выключенной системе и БД, в дальнейшем я остановил систему, переименовал оставшиеся файлы в директории на диске, запустил систему - система стартовала успешно. Переименованные файлы удалил.

Ссылки:
  1. 1819182 - Tables (TTREE*) remain in old exchange tablespace
  2. 646681 - Reorganization of tables with BRSPACE 
  3. Housekeeping Unused or Old Tablespace

1 комментарий:

  1. Я бы на всякий случай для перемещённых таблиц ещё проверил наличие индексов.
    И если таковые найдутся, то обязательно не забыть их отребилдить ( можно online ).
    А то с битыми индексами - можно получить в саповском приложении тележку ошибок...

    ОтветитьУдалить