Как лучше всего выполнять архивирование данных в базе данных Oracle?

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


person Rulas    schedule 11.11.2009    source источник
comment
Существует множество способов архивирования вне Oracle. Вам не нужно разрабатывать какие-либо инструменты. Какое у вас оборудование/бюджет. Обязательно установите SANS. Вам нужно, чтобы ваши архивные данные были практически доступны, или они могут годами храниться в дальнем шкафу?   -  person scope_creep    schedule 12.11.2009
comment
Как вы думаете, почему архивирование улучшит производительность приложений? Если вы собираетесь архивировать данные, вам нужно подумать, как вы будете обращаться к ним позже (если понадобится). Имейте в виду, что будущие изменения схемы и обновления базы данных повлияют на возможность «просто» перезагрузить ее.   -  person Gary Myers    schedule 12.11.2009
comment
Я думаю, что нам действительно нужно больше узнать о ваших потребностях здесь ... объем данных, насколько сложна схема и сколько таблиц вам нужно архивировать, понадобятся ли вам когда-нибудь эти данные снова, и если да, то что будет SLA для доступа к нему...   -  person David Aldridge    schedule 12.11.2009
comment
@David- Ну, дело в том, что мне больше не понадобятся данные, я хочу иметь их в качестве резервной копии, я говорю о 60 ГБ или что-то в этом роде.   -  person Rulas    schedule 12.11.2009
comment
@Gary- Может быть, вы правы в том, что производительность приложения не сильно отличается, основными целями этого архивирования являются такие вещи, как 1. Сокращение времени, необходимого для действий по обслуживанию базы данных: реорганизация, экспорт / импорт, создание / повторное индексирование. создание, добавление дискового пространства. 2. Сокращение времени, необходимого для восстановления в случае аварии. 3. Сокращение времени, необходимого для ежедневного резервного копирования (меньшее использование инфраструктуры резервного копирования на магнитной ленте). 4. Снижение стоимости оборудования (диска и дискового шасси), необходимого для хранения данных.   -  person Rulas    schedule 12.11.2009


Ответы (3)


Один из способов управления архивированием:

  1. Разделите свои таблицы по диапазону дат, например. ежемесячные разделы
  2. Поскольку разделы устаревают, например. через 36 месяцев эти разделы теперь можно переместить в ваше хранилище данных, которое может быть еще одной базой данных, состоящей только из текстовых файлов, в зависимости от ваших потребностей в доступе.
  3. После перемещения устаревшие разделы могут быть удалены из вашей основной базы данных, поэтому всегда сохраняйте только (например) 36-месячные текущие данные.
  4. Все это можно автоматизировать с помощью комбинации сценариев SQL/Shell.
person Sam    schedule 25.01.2016

Лучший способ заархивировать старые данные в базе данных ORACLE:

  1. Определите политику архивирования и хранения на основе даты или размера.
  2. Экспорт архивируемых данных во внешнюю таблицу (табличное пространство) на основе определенной политики.
  3. Сожмите внешнюю таблицу и сохраните ее на более дешевом носителе.
  4. Удалите заархивированные данные из вашей активной базы данных с помощью SQL DELETE.
  5. Затем, чтобы очистить пространство, выполните следующие команды: alter table T_XYZ разрешить перемещение строк; изменить таблицу T_XYZ сжать пространство;
  6. Если вы по-прежнему хотите освободить место на диске для ОС (поскольку Oracle теперь зарезервировала бы общее пространство, которое использовалось ранее), вам, возможно, придется изменить размер самого файла данных: SQL> alter database datafile '/home/ oracle/database/../XYZ.dbf' изменить размер на 1м;

Для получения более подробной информации см.: http://stage10.oaug.org/file/sroaug080229081203621527.pdf< /а>

person Ravi Ramanathan    schedule 17.04.2014
comment
Относительно шага 4. Если удаление связано с проблемой производительности, я мог бы рассмотреть возможность переноса текущих данных в новую таблицу, удаления старой таблицы и переименования новой на старое имя. - person EvilTeach; 13.01.2016

Я бы экспортировал данные в файл с разделителями-запятыми, чтобы их можно было экспортировать практически в любую базу данных. Поэтому, если вы поменяете версии Oracle или перейдете на что-то другое спустя годы, вы можете восстановить их без особых проблем.

Для этого используйте функцию буферного файла SQL*Plus: http://cisnet.baruch.cuny.edu/holowczak/oracle/sqlplus/#savingoutput

person Todd Moses    schedule 11.11.2009
comment
Это законная операция, которая задокументирована в Oracle SQL. По ссылке есть доказательство. - person Todd Moses; 12.11.2009
comment
Для всего, кроме небольших объемов данных, это плохой вариант. У него возникают трудности со сложными типами данных и даже с простыми столбцами VARCHAR2, которые могут содержать разделитель. - person Gary Myers; 13.11.2009
comment
Есть также потенциальные проблемы с clobs. - person EvilTeach; 13.01.2016