Oracle DBA Forum  

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

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 14.10.2009, 17:51
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию 16 Использование поддержки глобализации

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



Рассматриваемые вопросы

Дополнительные сведения см. в документе Oracle Database Globalization Support Guide.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #3  
Старый 14.10.2009, 17:53
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Что необходимо знать каждому АБД

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



Что такое кодировка?

При обработке символов в компьютерной системе используются числовые коды символов, а не их графическое представление. Схема кодирования символов (encoded character set) задает соответствие между символами, которые могут приниматься и выводиться компьютером или терминалом, и их кодовым представлением. База данных Oracle в настоящее время поддерживает около 30 схем кодирования символов и при этом значительно большее количество языков и территорий (около 100). Это возможно, потому что Unicode - универсальная кодировка, содержащая большинство основных символов, используемых при письме (scripts) в современном мире.

Различные кодировки поддерживают различные наборы символов (например кириллицу, латиницу). Поскольку кодировки обычно основываются на определенной письменной системе (script), они могут поддерживать несколько языков. Однако такие кодировки ограничены в том смысле, что они соответствуют группам языков, основанным на схожих наборах символов. Универсальные же кодировки используют большинство письменных систем, применяемых в современных языках и дают решение для одновременной поддержки нескольких языков. Дополнительные сведения о стандартах Unicode см. на Web-сайте http:www.unicode.org.

База данных Oracle поддерживает различные схемы кодирования символов:

однобайтовую;
многобайтную переменной ширины;
всемирную.


Однобайтовые кодировки

В однобайтовых кодировках каждый символ занимает один байт. Однобайтовые 7-битовые кодировки могут определять до 128 (2^7) символов; однобайтовые 8-битовые кодировки могут определять до 256 (2^8) символов.

Примеры однобайтовых кодировок

7-битовая кодировка:

American Standard Code for Information Interchange (Американский стандартный код обмена информацией - ASCII) 7-bit American (US7ASCII)
ASCII 7-bit Yugoslavian (YUG7ASCII)
DEC VTTOO 7-bit French (F7DEC)


8-битовая кодировка:

ISO (International Organization for Standards - Международная организация по стандартизации ) 8859-1 West European (WE8IS08859P1)
DEC 8-bit West European (WE 8 DE C)
Extended Binary Coded Decimal Interchange Code (расширенный двоично-десятичный код обмена информацией - EBCDIC) Code Page 1144 8-bit Italian (I8EBCDIC1144)


Примечание: ASCII-кодировки поддерживаются только на платформах, основанных на использовании ASCII. Кодировки EBCDIC используются только на платформах, основанных на использовании EBCDIC.


Многобайтовые кодировки

В многобайтовых кодировках на один символ отводится один или несколько байтов. Обычно многобайтовые кодировки используются для поддержки азиатских языков. В некоторых многобайтовых кодировках значение старшего бита используется для указания, является ли байт одиночным или входит в набор байтов, представляющих символ. Другие же кодировки разделяют однобайтовые и многобайтовые символы. Устройство посылает управляющий код, показывающий, что следующие пары байтов будут интерпретироваться как представление одного символа до тех пор, пока не поступит управляющий код возврата к стандартной кодировке. Кодировки, использующие управляющий код, в основном применяются на платформах IBM.


Примеры многобайтовых кодировок переменной ширины

Shift-JIS 16-bit Japanese (JA16S Л S)
MS Windows Code Page 950 with Hong Kong Supplementary Character Set HKSCS-2001
(ZHT16HKSCS)
Unicode 4.0 UTF-8 Universal character set (AL32UTF8)
__________________
Чат форума (требуется аккаунт на github или twitter)

Последний раз редактировалось Marley; 14.10.2009 в 18:05.
Ответить с цитированием
  #5  
Старый 14.10.2009, 17:59
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Кодировки Unicode



Кодировки Unicode

Unicode - это всемирный стандарт кодирования символов, который позволяет хранить информацию на различных языках в одной схеме кодирования. Unicode предоставляет уникальный код для каждого символа независимо от платформы, программы или языка.
Стандарт Unicode был одобрен многими производителями программного и аппаратного обеспечения. В настоящее время Unicode поддерживается многими операционными системами и браузерами. Стандарты XML, Java, JavaScript, LDAP и WML требуют использования Unicode. Кроме того, стандарт Unicode согласован с стандартом 1SO/1EC 10646.


Кодировка AL32UTF8

AL32UTF8 - кодировка Unicode, использующая 8-битовые кодовые последовательности. Она относится к типу кодировок переменной длины и представляет собой строгое надмножество над ASCII. Это означает, что каждому символу в 7-bit ASCII соответствует такое же кодовое значение в AL32UTF8.

Один символ в этой кодировке Unicode может быть предоставлен 1, 2, 3 или 4 байтами. Символы европейских национальных алфавитов поддерживаются с использованием 1 или 2 байтов; Символы азиатских национальных алфавитов - 3 байтами, а дополнительные символы - 4 байтами.


Кодировка AL16UTF16

AL16UTF16 - кодировка Unicode, использующая 16-битовые кодовые последовательности.

В этой системе кодирования один символ может быть представлен 2 или 4 байтами. Символы европейских алфавитов (а также ASCII) и большинства азиатских алфавитов представлены 2 байтами. Дополнительные символы отображаются 4 байтами. AL16UTF16 - основная кодировка Unicode для Microsoft Windows 2000 и Windows ХР.

Дополнительные символы

В первоначальной версии Unicode использовался 2-байтовый формат кодирования. Такое использование 16 бит для каждого кодируемого элемента позволяет представить до 65536 символов. Однако требуется поддерживать значительно большое количество символов. Например, только сообщество говорящих на китайском использует более 55000 символов.
В таких языках, как китайский, японский и корейский еще не закодированы десятки тысяч идеограмм. И несмотря на то, что многие из этих символов используются редко, они все еще представлены в документах, которые должны сохраняться в электронном виде.

Для удовлетворения этого требования в стандарте Unicode определяются дополнительные символы (supplementary characters). Применяя два 16-битовых кодовых указателя (их называют также заменяющими парами (surrogate pairs)) для представления одного символа, можно дополнительно определить до 1 048 576 символов.

Первая группа дополнительных символов (4944 символа) была добавлена в стандарт Unicode 3.1, выпущенный в марте 2001 года. Вместе с уже существовавшими в Unicode 3.0 49194 символами общее число символов, закодированных в Unicode 3.1, составляет сейчас 94140. Это вносит большую сложность в стандарт Unicode. Однако это значительно проще, чем сопровождать большое количество отдельных кодировок. База данных Oracle 10g поддерживает стандарт Unicode 4.0.


Примечание: кодировки UTF-16 и UTF-8 (с дефисом) относятся к кодировкам стандарта Unicode; UTF8, AL32UTF8 и AL16UTF16 (без дефиса) относятся к кодировкам Oracle, основанным на стандарте Unicode.

Примечание: дополнительные сведения о поддержке Oracle стандарта Unicode см. в документе Oracle Database Globalization Support Guide lOg Release 2 (10.2).
__________________
Чат форума (требуется аккаунт на github или twitter)

Последний раз редактировалось Marley; 14.10.2009 в 18:01.
Ответить с цитированием
  #6  
Старый 14.10.2009, 18:02
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Как используются кодировки?



Как используются кодировки?

NLS_LANG задает схему кодирования символов для терминала клиента. Разные клиенты могут использовать различные кодировки. Если кодировки клиента и сервера отличаются, то при передаче данных между ними происходит автоматическая перекодировка.

Кодировка базы данных должна быть надмножеством, или эквивалентом, всех клиентских кодировок. Перекодировка выполняется в прозрачном для клиентского приложения режиме.

Когда кодировки базы данных и клиента совпадают, Oracle считает, что информация принимается и передается в той же схеме кодирования и не выполняет никаких проверок и преобразований.

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



Такие проблемы следует избегать

Недостоверные данные вносятся в базу данных, когда на клиенте неверно установлена переменная среды NLS_LANG. Значение NLS_LANG должно отражать схему кодирования поступающих на сервер данных.

Если переменная среды NLS_LANG установлена правильно, тогда база данных может автоматически преобразовывать данные, поступающие из клиентской операционной системы.
Если переменная среды NLS LANG установлена неправильно, тогда база данных неверно преобразует поступающие данные.

Например, предположим кодировка базы данных AL32UTF8, на клиенте установлена русская версия операционной системы Windows (кодовая страница: CL8MSWIN1251) и на клиенте же в переменной среды NLS_LANG указана кодировка AL32UTF8. Данные поступают в БД в кодировке CLE8MSWIN1251 и не преобразуются в AL32UTF8, поскольку заданная в NLS_LANG установка соответствует кодировке базы данных.
Поэтому база данных Oracle полагает, что преобразования не нужны и неверные данные вносятся в базу данных.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #8  
Старый 14.10.2009, 18:04
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Пример еще одной проблемы



Пример еще одной проблемы

Пусть кодировка базы данных US7ASCII и на терминале клиента используется Simplified Chinese Windows, т.е. значение параметра NLS_LANG в окружении клиента SIMPLIFIED CHINESE_HONGKONG.US7ASCII. В этом случае возможны ситуации, когда пользователь сохранит многобайтные символы Simplified Chinese в одном байте базы данных. Oracle будет обрабатывать символы как однобайтные символы кодировки US7ASCII, поэтому все SQL-функции манипулирования строками (например, SUBSTR, LENGTH) будут выполнять обработку на основе байта, а не символа. Все не ASCII символы могут быть потеряны после экспорта и импорта в другую базу данных.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #9  
Старый 14.10.2009, 18:07
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Выбор кодировки



Выбор кодировки

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

Для правильного выбора кодировки базы данных оцените ваши текущие и будущие бизнес-требования, а также технические требования (например, в соответствие с стандартами XML и Java требуется использовать Unicode). В общем случае Oracle рекомендует использовать Unicode для всех новых баз данных, поскольку это наиболее гибкая кодировка, которая также позволит избежать преобразований в будущем.

Для указания кодировки используется команда CREATE DATABASE. В ней в предложении CHARACTER SET объявляется кодировка базы данных и в предложении NATIONAL CHARACTER SET - национальная кодировка. Если NATIONAL CHARACTER SET не указывается, тогда по умолчанию задается национальная кодировка AL16UTF16.

После создания базы данных может потребоваться изменить кодировку БД. Это может быть вызвано появлением непредусмотренных заранее требований, например, необходимостью поддержки новых источников данных (ХА, хранилище данных и т.д.). Часто такое изменение может привести к значительным временным затратам и оказаться дорогостоящим процессом. В большинстве случаев понадобится выполнить полный экспорт/импорт, чтобы соответствующим образом преобразовать данные из старой кодировки в новую.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
  #10  
Старый 14.10.2009, 18:08
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,385
По умолчанию Кодировки базы данных и национальные кодировки



Кодировки базы данных и национальные кодировки

Поскольку кодировка базы данных используется для идентификации и хранения исходного кода SQL и PL/SQL, она должна в зависимости от платформы включать в себя 7-битную кодировку ASCII или EBCDIC. Поэтому многобайтная кодировка фиксированной ширины не может использоваться в качестве кодировки базы данных, а может использоваться только в качестве национальной кодировки.

Национальная кодировка - это альтернативная кодировка, позволяющая хранить символьные данные в кодировке Unicode, если в качестве кодировки базы данных не определена Unicode. Для хранения типов данных SQL NCHAR, NVARCHAR2 и NCLOB используется только кодировка Unicode. Можно выбрать одну из двух таких кодировок:
UTF8 илиAL16UTF16.
__________________
Чат форума (требуется аккаунт на github или twitter)
Ответить с цитированием
Ответ
Опции темы
Опции просмотра

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

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

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


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


Powered by vBulletin®