Программирование >>  Oracle 

1 ... 159 160 161 [ 162 ] 163 164 165 ... 469


Глава 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$, к которым я регулярно обращаюсь.



1 ... 159 160 161 [ 162 ] 163 164 165 ... 469

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика