![]() |
|
Программирование >> Oracle
Глава 9 На Web-сайте издательства Wrox можно найти еще один мини-утилиту SQLLDR на языке PL/SQL. Она создана специально для загрузки файлов в формате dBASE. Для чтения данных используются объекты типа BFILE, поскольку файлы формата dBASE содержат одно-, двух- и четырехбайтовые целые числа, которые не позволяет обрабатывать пакет UTL FILE. Загрузчик может либо описывать содержимое dBASE-файла, либо загружать его в базу данных. Проблемы Давайте рассмотрим ряд особенностей, которые необходимо учитывать при использовании утилиты SQLLDR. Нельзя выбрать сегмент отката Часто при загрузке с помощью SQLLDR используется опция REPLACE. В результате перед загрузкой данных просто выполняется оператор DELETE. При этом может генерироваться огромный объем данных отката. Хотелось бы помещать их в конкретный, специально созданный большой сегмент отката. Однако утилита SQLLDR не предлагает средств привязки к сегменту отката. Необходимо обеспечить достаточный размер всех сегментов отката, чтобы в них поместились данные отката для оператора DELETE, или просто использовать опцию TRUNCATE. Поскольку при выполнении оператора INSERT данных отката генерируется мало, а утилита SQLLDR достаточно часто выполняет фиксацию, такая проблема возникает только при использовании опции REPLACE. TRUNCATE работает по-другому Опция TRUNCATE в SQLLDR может работать не так, как оператор TRUNCATE в SQL*Plus или других инструментальных средствах., Исходя из предположения, что в таблицу будет загружен примерно такой же объем данных, утилита SQLLDR использует расширенный вариант оператора TRUNCATE. Она выполняет: truncate table t reuse storage Опция REUSE STORAGE не освобождает выделенные экстенты, она лишь помечает их как свободное пространство . Если такой результат нежелателен, необходимо явно выполнять оператор TRUNCATE для таблицы перед вызовом SQLLDR. Стандартным типом поля в SQLLDR является CHAR(255) Стандартная длина поля - 255 символов. Если загружаемое поле длиннее, выдается сообщение об ошибке: Record N: Rejected - Error on table T, column С. Field in data file exceeds maximum length Загрузка данных 517 Это не означает, что данные не поместятся в столбец базы данных, просто SQLLDR ожидает не более 255 байт данных, а получает больше. Решение: задать тип поля CHAR(N) в управляющем файле, где N - достаточно большое значение, превышающее размер самого большого поля во входном файле. Опции командной строки переопределяют установки в командном файле Многие опции утилиты SQLLDR можно задавать как в управляющем файле, так и в командной строке. Например, можно использовать конструкцию INFILE в управляющем файле, а можно просто вызывать SQLLDR ... DATA=FILENAME. Опции командной строки переопределяют соответствующие установки командного файла. Нельзя гарантировать, что будут использоваться именно установки управляющего файла, поскольку при вызове SQLLDR пользователь их может переопределить. Резюме В этой главе рассмотрены стандартные задачи: загрузка файлов с разделителями; загрузка файлов с записями фиксированной длины; загрузка файлов изображений из каталога; преобразование данных с помощью функций в ходе загрузки; способы выгрузки данных и т.д. Мы не рассматривали подробно множественную загрузку данных в режиме непосредственной загрузки, а лишь кратко описали ее особенности. В главе мы хотели ответить на вопросы, наиболее часто возникающие при использовании SQLLDR и интересующие максимально широкую аудиторию. ![]() Стратегии и средства настройки Мне очень хорошо знакомы проблемы настройки. Я потратил уйму времени на настройку систем, в особенности тех, которые не проектировал и не реализовывал. Это создает определенные трудности: надо подумать не только о том, где искать проблемы, но и о том, где не искать. Настройка при этом становится чрезвычайно сложной и ее приходится выполнять в крайне жестких условиях. Никто не занимается настройкой, пока все хорошо, - о ней начинают думать, когда система разваливается. В этой главе описан подход и средства, используемые мною при настройке. Я стараюсь делать все так, чтобы ничего никогда не приходилось настраивать; по крайней мере - систему после ввода в эксплуатацию. Настройка - часть процесса разработки, начинающаяся еще до того, как написана первая строка кода, и заканчивающаяся за день до внедрения; настройкой нельзя заниматься после внедрения. К сожалению, большинство проблем настройки, к решению которых меня привлекают, связано с настройкой уже созданных производственных систем. Это означает, что настройка ведется во враждебной среде (недовольных пользователей) и в условиях множества нежелательных ограничений (никто не хочет останавливать производственную систему, чтобы изменить в ней что-то). Лучше всего настраивать задолго до этого момента. В частности, в этой главе рассматривается: использование связываемых переменных и их влияние на производительность; выполнение трассировки приложений с помощью установок SQL TRACE и TIMED STATISTICS, а интерпретация результатов с помощью утилиты TKPROF; установка и использование пакета Statspack для настройки экземпляра; использование представлений V$, к которым я регулярно обращаюсь.
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |