2010-09-23 3 views
0

Я использую базу данных oracle. Если у вас большая транзакция (700 таблиц, миллионы строк, размер данных будет около 100G), какие параметры должны быть оштрафованы? Сервер oracle имеет дисковое пространство 250G, 32G RAM. (Это вопрос для суперпользователя/serverfault? Пожалуйста, переместите)Системные требования для oracle большой транзакции (скажем, 100GB)

+0

Я говорю serverfault ... – Thilo

+0

Я бы сказал, что это (возможно) не должно быть отдельной транзакцией. Если это одно время, и нет никакой другой параллельной нечитаемой активности в базе данных, которую вам нужно разместить, тогда у вас обычно будет полная резервная копия, сделанная до операции, и затем сделайте еще одну полную резервную копию, и эти резервные копии предоставят эквивалент «транзакции». –

ответ

2

Я не думаю, что 250G будет достаточно. У вас будет 100G данных в вашем табличном пространстве (файлы .DBF), плюс 100G незавершенных транзакций в ваших ORL (онлайн-журналы повтора). И фактический размер на диске будет больше (вы должны настроить PCTUSED и PCTFREE, чтобы Oracle пыталась заполнить каждый блок, а не оставлять пространство для расширения строк), даже при этом, по грубой догадке, вам понадобится 130-150G DBF для хранения это много данных.

Oracle вполне способен делать транзакции большими, и если вам действительно нужно сделать одно атомное обновление 100G, тогда не бойтесь. Вам просто нужно убедиться, что это физически возможно на вашем оборудовании. Скорее всего, ваш лучший выбор, если ваш исходный формат файла данных подходит, будет SQL*Loader Direct Path Load. Это записывает блоки непосредственно в DBF. Это очень быстро, но не очень гибко.

ОЗУ не имеет особого значения в этом сценарии, за исключением производительности.

+0

Не требуется полный 100G в * онлайн-журналах. Они будут заполняться до размера и архивироваться (или нет, если вы находитесь в noarchive). Табличное пространство отмены должно справляться с размером незафиксированной транзакции, но не повторять. Но рекомендуется, потому что прямой путь должен быть первым выбором для такого размера операции –

+0

К сожалению, да, конечно, вы правы :-) – Gaius

1

У вас должно быть место для сегмента отката, возможно, более 100 ГБ, НО ваш подход не самый лучший. Вам следует избегать делать все в транзакции ONE. Попробуйте разделить процесс на более мелкие последовательные шаги. Если шаг N завершился неудачно, необходимо выполнить шаг N повтора, не отменяя шаги с 1 по N-1.

Смежные вопросы