Oracle DBA Forum  

Вернуться   Oracle DBA Forum > Oracle University Official Study Notes (RUS) > База данных Oracle 10g Администрирование > База данных Oracle 10g Администрирование II

Ответ
 
Опции темы Опции просмотра
  #21  
Старый 14.10.2009, 18:41
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Поддержка лингвистических индексов



Поддержка лингвистических индексов

Лингвистическая сортировка зависит от языка. Если в БД хранится информация на разных языках, может потребоваться сортировка, учитывающая это. Создание лингвистического индекса для столбцов значительно повышает производительность запросов, требующих лингвистическую сортировку, но замедляет операции вставки и обновления.

Индексы с лингвистическими отсортированными данными создаются как индексы, основанные на функции. SQL-функция NLSSORT сортирует строки байтов, заданные в первом параметре, в соответствии с указанной лингвистической последовательностью. В примере на слайде создается индекс для значений столбца WORD, сортируемых по русскому алфавиту. После этого могут выполняться запросы, использующие индексы со значениями, отсортированными по правилам русского языка.

Можно также создать один лингвистический индекс для всех языков, используя одну из многоязыковых лингвистических сортировок, например, GENERIC_M или FRENCHM. Или же для небольшого множества языков можно использовать столбец, в котором задается язык, передаваемый в качестве параметра функции NLSSORT. Столбец должен содержать значения, соответствующие правильным значениям параметра NLS_LANGUAGE, для индексируемого столбца.


Код:
CREATE INDEX i2 on list   (NLSSORT(word,   1NLS_SORT=GENERIC_M')); 
CREATE INDEX word_all_idx ON
list(NLSSORT(word,   'NLS_SORT=' | |LANG_COL) ) ;
Дополнительные сведения о создании лингвистических индексов см. в документе Oracle Database Globalization Support Guide.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #22  
Старый 14.10.2009, 18:42
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Настройка лингвистического поиска и сортировки



Настройка лингвистического поиска и сортировки

Лингвистический поиск и сортировки имеют много возможностей. Большинство из них настраиваются для получения необходимого результата, например:

Теперь можно задать сортировку или запрос на основе базовых символов (независимую от ударений) или же на основе базовых символов и ударений (независимую от регистра символов).

Можно задать игнорирование символа тире, в результате чего значение e-mail обрабатывается как email.

Расширяющийся символ 6 рассматривается при сортировке как ое после od и перед of.

Надлежащая сортировка знаков удлиненных звуков в японском языке.

Замена а на базовый эквивалент а и умляут ("), в результате а и а считаются одним и тем же.

Расположение диакритического символа перед или после его непомеченного варианта.

Можно задать, надо ли в тайском и лаосском языках сначала поменять местами некоторые символы и следующий за ними символ перед сортировкой.

Отображение маленьких букв в несколько больших букв, например, в немецком в в ss, а также отображение больших букв в несколько маленьких, например, в турецком i становится маленькой i без точки: |.

Для настройки лингвистических сортировок необходимо использовать утилиту Oracle Locale Builder.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #23  
Старый 14.10.2009, 18:44
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Неявные преобразования CLOB В NCLOB И NCLOB В CLOB



Неявные преобразования CLOB В NCLOB И NCLOB В CLOB

Все чаще требуется производить прямое преобразование данных, а также обратное из кодировки Unicode в национальную кодировку базы данных. Явное преобразование из одного типа данных в другой для CLOB и NCLOB обеспечивалось в SQL и PL/SQL с помощью функций TO_CLOB и TO_NCLOB. В базе данных Oracle l0g разрешается неявное преобразование для связанных переменных SQL типа IN и OUT, задаваемых в запросах и командах DML, а также для передаваемых параметров функций и процедур PL/SQL и операций PL/SQL, в которых переменной присваивается значение. Например, в следующем примере выполняются полностью прозрачные преобразования между этими типами данных.


__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #24  
Старый 14.10.2009, 18:48
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию NLS-преобразования данных при использовании утилит Oracle



NLS-преобразования данных при использовании утилит Oracle

Поддержка глобализации для выполнения экспорта и импорта

Утилита Export всегда сохраняет данные, в том числе и данные в Unicode, в той же самой кодировке базы данных, из которой они были экспортированы. При экспорте описаний объектов утилита Export пишет в создаваемый файл команды на языке определения данных (data definition language -DDL) в кодировке, заданной в переменной окружения NLS LANG для сеанса пользователя. Если кодировки в переменной NLS_LANG и БД различаются, выполняется преобразование.

Во время импорта, если кодировки исходной БД (и экспортного файла) отличаются от кодировок БД, в которую импортируются данные, выполняется автоматическое преобразование в кодировки целевой базы данных.

Когда импортируются DDL-описания, они автоматически преобразуются из кодировки экспортного файла в кодировку пользовательского сеанса, выполняющего импорт. Такое преобразование при импорте возможно только для однобайтных кодировок. Поэтому для многобайтных кодировок схема кодирования, используемая при импорте файла, должна совпадать с схемой кодирования экспортного файла. Если кодировка, используемая в пользовательском сеансе импорта отличается от кодировки целевой БД, выполняется окончательное преобразование.

Поддержка глобализации для внешних таблиц

Установки переменных среды NLS на сервере определяют кодировку и маски данных для таблицы.

Поддержка глобализации для утилиты SQL*Loader

SQL*Loader поддерживает четыре кодировки:

кодировку на стороне клиента (NLS_LANG клиентского процесса SQL*Loader);
кодировку файла данных (обычно совпадает с кодировкой на стороне клиента); кодировку базы данных;
национальную кодировку базы данных.

Наивысшая производительность достигается, когда все кодировки одинаковые.

SQL*Loader имеет возможность преобразования данных из кодировки файла данных в кодировку базы данных. Кодировка файла данных задается переменной среды NLS_LANG или в параметре CHARACTERSET управляющего файла утилиты SQL*Loader:


Код:
LOAD DATA
CHARACTERSET UTF16
INFILE ulcasell.dat REPLACE ...

Предполагается, что сам управляющий файл SQL*Loader должен быть в кодировке, определяемой действующей в сеансе переменной NLSLANG. Когда кодировка управляющего файла отличается от кодировки файла данных, ограничители и фразы сравнения, заданные в управляющем файле утилиты SQL*Loader в виде символьных строк, преобразуются из кодировки управляющего файла в кодировку файла данных перед выполнением любого сравнения. Чтобы быть уверенным в том, ограничители заданы верно, можно указать их шестнадцатеричные значения вместо символьных строк .

Когда кодировка, установленная в параметре NLS_LANG для вашего сеанса, отличается от кодировки файла данных, символьные строки в управляющем файле преобразуются в кодировку файла данных. Это выполняется до проверки утилитой SQL*Loader заданных стандартных терминаторов строк.

Кодировка, указанная в параметре CHARACTERSET, не применяется к данным в управляющем файле (кодировка задается вместе с фразой INFILE). Чтобы загрузить данные, представленные в кодировке, отличной от заданной в сеансе с помощью переменной NLSLANG, необходимо поместить данные в отдельный файл данных.

Утилиту SQL*Loader используют для загрузки данных тремя способами: обычным (conventional path), прямым (direct path) или с помощью внешней таблицы (external table). В обычном режиме загрузки данные преобразуются в кодировку сеанса, заданную переменной NLS_LANG.

В прямом режиме загрузки преобразование данных происходит на стороне клиента, а не на сервере. Это означает, что параметры NLS из файла параметров инициализации не используются. Чтобы переопределить такое функционирование, можно задать форматную маску в управляющем файле SQL*Loader, что эквивалентно установке параметра NLS в файле параметров инициализации или соответствующей переменной окружения.

Когда целевая кодировка загружаемых утилитой SQL*Loader данных не является надмножеством кодировки исходного файла данных, символы, не имеющие эквивалента в целевой кодировке, преобразуются в символы замещения, например в вопросы, что приводит к потери данных.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #25  
Старый 14.10.2009, 18:49
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию NLS-преобразование данных при использовании утилиты Data Pump



NLS-преобразование данных при использовании утилиты Data Pump

Параметры NLS сеанса, в котором была запущена утилита Data Pump, используются при выполнении задания этой утилиты. Поэтому перед запуском любого задания Data Pump убедитесь в том, что параметры установлены правильно. Переменная NLS_LANG влияет только на сообщения, возвращаемые утилитами Data Pump (impdp и expdp).

Во время выполнения задания дополнительно может заполняться журнальный файл протокола работы. В нем отражается продвижение задания, а также ошибки, если они происходят. Утилита Data Pump пишет в журнальный файл с учетом параметра NLS_LANG на стороне клиента. Например, установка NLS_LANG в
RUSSIAN .CL8MSWIN12 51 приводит к записи всех сообщений задания (job) на русском языке, даже если задание было перезапущено с клиента, на котором установлено значение
AMERICAN.WE8DEC

При использовании файла параметров (PARFILE) с утилитой Data Pump предполагается, что его содержимое в кодировке клиента . Утилита Data Pump транслирует текстовые строки в файлах параметров в кодировку базы данных. Когда в файле параметров информация содержится в кодировке, отличной от используемой в настоящее время на клиенте, необходимо изменить установки NLS на клиента для соответствующей трансляции.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #26  
Старый 14.10.2009, 18:50
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Характеристики поддержки глобализации



Характеристики поддержки глобализации

Различия культурных традиций и географическое положение разных стран напрямую воздействуют на форматы данных. Поддержка глобализации (globalization support) обеспечивает автоматическую адаптацию к родному языку пользователя утилит базы данных, сообщений об ошибках, порядка сортировки, дат, времени, а также денежных, числовых и календарных соглашений. Пользователи могут сохранять, обрабатывать, извлекать данные, а также взаимодействовать друг с другом на родных языках.

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


Поддержка глобализации в базе данных Oracle осуществляется с помощью исполняемой библиотеки NLS (Oracle NLS Runtime Library' - NLSRTL). Эта библиотека предоставляет полный набор независимых от языка функций, обеспечивающих соответствующую обработку текстов и символов, а также преобразования на требуемом языке. Поведение этих функций, зависящее от языка и территории, управляется набором данных о местных особенностях, которые выявляются и загружаются при выполнении

Операции, зависимые от языка, управляются множеством параметров и переменных окружения, как на стороне клиента, так и на стороне сервера. Сервер и клиент могут работать в одном месте или на расстоянии. В случае, когда клиент и сервер используют различные кодировки, Oracle автоматически преобразует символьные данные из одной кодировки в другую.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #27  
Старый 14.10.2009, 18:51
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Итоги

__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #28  
Старый 14.10.2009, 18:51
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию

__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
Ответ
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 19:16. Часовой пояс GMT +3.


Powered by vBulletin®