Тема достаточно интересная, хлопотная,но производительность на лицо.
что необходимо сделать в первую очередь,
это перекроить полностью физический уровень дисков
обычно, базу размещают на одном логическом диске, который включает
в себя RAID 5 или 1+0, логи и темп выносят на отдельный диск
нам нужно развернуть табличные пространства "поперек" дисков,
для этого соберем логический диск RAID 1+0
(как минимум 2 физический, чем их больше тем лучше).
таких дисков нужно собрать 5-6 штук, выбор стоит за количеством файлов
табличного пространства.
Еще немало важная деталь - Качество дисков!
Для анализа поверхности понадобиться утилитка - HD Tune 2.53
http://soft.softodrom.ru/ap/p4650.shtml
Хороший одиночный диск будет показывать картинку,
плавный спад сверху-вниз и справа-налево, будут ровные плато со спадами
если вы собрали райд, прямая будет на одном уровне.
Но если будет "пляска", похожее на кардиограмму..стявя такой диск на сервер,
вы рискуете заметным снижением производительности.
Когда диски оттестированны, выбранные лучшие из лучших,
собранны допустим 6 логических дисков RAID 1+0, можно приступать
к размещению файлов табличных пространств.
5 из них выделим для данных, 6-й отведем под UNDO и Temp
data0 - F
data1 - G
data2 - H
data3 - J
data4 - K
undo - L
Копируем файлы данных на диски,
табличное пространство PSAPKRS состоит из 10 файлов,
разнесем по 2 файла на каждый диск.
Так проделать с остальными табличными пространсвами.
Перебить контрольный файл, с учетом новой конфигурации:
CREATE CONTROLFILE REUSE DATABASE "KRS" NORESETLOGS ARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 255
MAXLOGMEMBERS 3
MAXDATAFILES 254
MAXINSTANCES 50
MAXLOGHISTORY 1134
LOGFILE
GROUP 1 (
'F:\ORIGLOGA\LOG_G11M1.DBF',
'F:\MIRRLOGA\LOG_G11M2.DBF'
) SIZE 50M,
GROUP 2 (
'G:\ORIGLOGB\LOG_G12M1.DBF',
'G:\MIRRLOGB\LOG_G12M2.DBF'
) SIZE 50M,
GROUP 3 (
'F:\ORIGLOGA\LOG_G13M1.DBF',
'F:\MIRRLOGA\LOG_G13M2.DBF'
) SIZE 50M,
GROUP 4 (
'G:\ORIGLOGB\LOG_G14M1.DBF',
'G:\MIRRLOGB\LOG_G14M2.DBF'
) SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'F:\SAPDATA4\KRS_1\KRS.DATA1',
'F:\SAPDATA4\KRS_2\KRS.DATA2',
'G:\SAPDATA4\KRS_3\KRS.DATA3',
'G:\SAPDATA4\KRS_4\KRS.DATA4',
'H:\SAPDATA4\KRS_5\KRS.DATA5',
'H:\SAPDATA4\KRS_6\KRS.DATA6',
'J:\SAPDATA4\KRS_7\KRS.DATA7',
'J:\SAPDATA4\KRS_8\KRS.DATA8',
'K:\SAPDATA4\KRS_9\KRS.DATA9',
'K:\SAPDATA4\KRS_10\KRS.DATA10',
'F:\SAPDATA3\KRS620_1\KRS620.DATA1',
'F:\SAPDATA3\KRS620_2\KRS620.DATA2',
'G:\SAPDATA3\KRS620_3\KRS620.DATA3',
'G:\SAPDATA3\KRS620_4\KRS620.DATA4',
'H:\SAPDATA3\KRS620_5\KRS620.DATA5',
'H:\SAPDATA3\KRS620_6\KRS620.DATA6',
'J:\SAPDATA3\KRS620_7\KRS620.DATA7',
'J:\SAPDATA3\KRS620_8\KRS620.DATA8',
'K:\SAPDATA3\KRS620_9\KRS620.DATA9',
'K:\SAPDATA3\KRS620_10\KRS620.DATA10',
'K:\SAPDATA3\KRS620_11\KRS620.DATA11',
'L:\SAPDATA2\UNDO_1\UNDO.DATA1',
'L:\SAPDATA1\SYSTEM_1\SYSTEM.DATA1',
'L:\SAPDATA1\KRSUSR_1\KRSUSR.DATA1'
CHARACTER SET WE8DEC;
Для использования возможности партицирования,
необходимо поддержка патча Oracle 9.2.0.4, можно и выше.
последняя 9.2.0.8 показала себя стабильно.
Затем нужно создать новую структруру таблицы, для этого вам понабятся
Oracle инструменты - PL/SQL developer, либо подобные, чтобы выдернуть
скрипт с готовыми полями.
и пересоздаем уже с добавлением
create table parent (
id number(12,6),
v1 varchar2(10),
padding varchar2(100)
)
partition by range(id) (
partition p1000 values less than (1000),
partition p3000 values less than (3000),
partition p5000 values less than (5000)
);
Рукомедую почитать
http://www.citforum.ru/database/oracle/lewis3/
Данная тема неплохо освящена в книге "Производительность Oracle 9i"
Но для того чтобы, пересоздать таблицу, нужно предварительно выгрузить данные,
благо есть удобный инструмент BrTools
- Segment management - Export Tables
Удаляем таблицу - drop table XXX including contents
Создаем новую, с нашим новым скриптом,
И обратно заливаем через BrTools
- Segment management - Import Tables
и на последок, там же - Rebuild Index
Что мы сделали, образно сказать "размазали" таблицу, по всем дискам,
чтение идет практически одновременно.
Вроде все, Желаю удачи!