oracle lobsegment что это

Oracle lobsegment что это

select segment_name from dba_SEGMENTS where tablespace_name=’USERS’ and segment_type=’LOBSEGMENT’ AND
SEGMENT_NAME IN (select distinct(SEGMENT_name) from dba_extents where TABLESPACE_NAME=’USERS’
and BLOCK_ID>720000 and SEGMENT_TYPE=’LOBSEGMENT’);

SEGMENT_NAME
———————————
SYS_LOB0000056919C00006$$
SYS_LOB0000057898C00003$$
SYS_LOB0000057887C00006$$
SYS_LOB0000057887C00005$$
SYS_LOB0000004033C00007$$

SELECT * FROM DBA_TAB_COLUMNS WHERE DATA_TYPE LIKE ‘%LOB%’ AND OWNER=’GC’;

select * from dba_segments where segment_name=’SYS_LOB0000057898C00003$$’;

� ��� � ����� ����� ������� ���� �������� ������� � �� LOB-��������, ���� ������ �� �����!? 🙂28 ��� 08, 12:36����[6119295] �������� | ���������� �������� ����������

oracle lobsegment что это. Смотреть фото oracle lobsegment что это. Смотреть картинку oracle lobsegment что это. Картинка про oracle lobsegment что это. Фото oracle lobsegment что этоRe: ����� ������� ����������� LOB-�������? [new]
Denis Popov
Member

������: �����-���������
���������: 7862

DBA_LOBS
28 ��� 08, 12:40����[6119312] �������� | ���������� �������� ����������
oracle lobsegment что это. Смотреть фото oracle lobsegment что это. Смотреть картинку oracle lobsegment что это. Картинка про oracle lobsegment что это. Фото oracle lobsegment что этоRe: ����� ������� ����������� LOB-�������? [new]
�����
Member

������:
���������: 227

Denis Popov
DBA_LOBS
������� �����, ������ �������! 🙂
28 ��� 08, 12:45����[6119361] �������� | ���������� �������� ����������
oracle lobsegment что это. Смотреть фото oracle lobsegment что это. Смотреть картинку oracle lobsegment что это. Картинка про oracle lobsegment что это. Фото oracle lobsegment что этоRe: ����� ������� ����������� LOB-�������? [new]
�����
Member

������:
���������: 227

��� ���������� ����� ����������� LOB-��������� �� ������� ���� �������������?
���� ����, �� ���? 🙂
28 ��� 08, 13:02����[6119485] �������� | ���������� �������� ����������
oracle lobsegment что это. Смотреть фото oracle lobsegment что это. Смотреть картинку oracle lobsegment что это. Картинка про oracle lobsegment что это. Фото oracle lobsegment что этоRe: ����� ������� ����������� LOB-�������? [new]
�����
Member

������:
���������: 227

�����
��� ���������� ����� ����������� LOB-��������� �� ������� ���� �������������?
���� ����, �� ���? 🙂
SQL> alter index gc.SYS_IL0000057887C00005$$ rebuld;
alter index gc.SYS_IL0000057887C00005$$ rebuld
*
ERROR at line 1:
ORA-02243: invalid ALTER INDEX or ALTER MATERIALIZED VIEW option
28 ��� 08, 13:12����[6119555] �������� | ���������� �������� ����������
oracle lobsegment что это. Смотреть фото oracle lobsegment что это. Смотреть картинку oracle lobsegment что это. Картинка про oracle lobsegment что это. Фото oracle lobsegment что этоRe: ����� ������� ����������� LOB-�������? [new]
StarBlade
Member

28 ��� 08, 13:20����[6119626] �������� | ���������� �������� ����������
oracle lobsegment что это. Смотреть фото oracle lobsegment что это. Смотреть картинку oracle lobsegment что это. Картинка про oracle lobsegment что это. Фото oracle lobsegment что этоRe: ����� ������� ����������� LOB-�������? [new]
StarBlade
Member

������: ������ ���� �� �� ���
���������: 415

���������� � ��� �� �������� �����. �� ��� �� ��������. ���� >0
�����
28 ��� 08, 13:24����[6119664] �������� | ���������� �������� ����������
oracle lobsegment что это. Смотреть фото oracle lobsegment что это. Смотреть картинку oracle lobsegment что это. Картинка про oracle lobsegment что это. Фото oracle lobsegment что этоRe: ����� ������� ����������� LOB-�������? [new]
�����
Member

alter table GC.XSL$TEMPLATES move TABLESPACE LARGE_TAB lob(TEMPLATE) store as SYS_LOB000005789803$$;

���
alter table GC.XSL$TEMPLATES move lob(TEMPLATE) store as SYS_LOB000005789803$$ TABLESPACE LARGE_TAB;

select OWNER,SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME from DBA_SEGMENTS WHERE SEGMENT_NAME=’SYS_LOB0000057898C00003$$’

Источник

/привет/мир/etc

Непериодические заметки о программировании

понедельник, 25 мая 2015 г.

О работе с большими объектами в СУБД Oracle

Указанные типы данных можно использовать в СУБД Oracle для определения столбцов таблиц, атрибутов объектных типов и переменных PL/SQL.

Вот краткая характеристика этих типов:

Итак, по месту хранения LOB’ы делятся на

а по содержанию на

Для работы с LOB’ами cоздам таблицу со столбцами соответствующих типов:

Вместе с таблицей были созданы сегменты для хранения больших объектов:

Значение типа LOB может быть

Пустые LOB значения создаются функциями EMPTY_CLOB и EMPTY_BLOB :

Начиная с версии Oracle 9i в SQL и PL/SQL поддерживается неявная конвертация между (N)CLOB и VARCHAR2, что позволяет манипулировать значениями в (N)CLOB столбцах и переменных так, как будто это значения типа VARCHAR2:

Как видим, функции и операторы, работающие с VARCHAR2, перегружены для типа (N)CLOB! При этом преодолеваются ограничения в 4000 символов, свойственные SQL типу VARCHAR2:

А вот операторы сравнения для (N)CLOB работают только в PL/SQL и не работают в SQL:

Выше я воспользовался функциями TO_NCLOB и TO_CLOB для явной конвертации значений VARCHAR2 в значения (N)CLOB. В следующей таблице представлены все функции для конвертации в LOB типы и обратно:

ФункцияГде работает
TO_CLOB(character_data)SQL и PL/SQL
TO_BLOB(raw_data)SQL и PL/SQL
TO_LOB(long_data)SQL and PL/SQL
TO_NCLOB(character_data)SQL и PL/SQL
TO_RAW(blob_data)только PL/SQL

Как видим, функция TO_RAW недоступна в SQL и, отсюда, возможности конвертации между BLOB и RAW в SQL ограничены. Например:

Зато в PL/SQL работают явная и неявная конвертации между BLOB и RAW:

Рассмотренные возможности по работе со значениями LOB как с VARCHAR2 получили название SQL семантика для LOB’ов (SQL semаntics for LOBs). С их использованием связаны некоторые ограничения, как мы увидим ниже.

С точки зрения PL/SQL большие объекты делятся на:

В вышеприведенных примерах с PL/SQL мы имели дело с временными LOB’ами.

Изменения внутренних постоянных LOB’ов (в отличие от внешних или временных) в СУБД Oracle подчиняются транзакциям. Убедимся в этом, отменив только что сделанные изменения:

Типичный алгоритм для чтения или изменения постоянного LOB’а с помощью PL/SQL таков:

Приведу пример выгрузки данных из постоянного CLOB’а во внешний файл. Для доступа к внешним файлам потребуется создать директорию, например:

Альтернативно, можно выгрузить CLOB во внешний файл, пользуясь SQL семантикой для LOB и не прибегая к DBMS_LOB :

Тип данных BFILE содержит указатель на внешний файл, который

Пример чтения BFILE и записи во временный BLOB:

Процедура / ФункцияЧто делает
FILEGETNAMEвозвращает имя директории и файла BFILE
FILEEXISTSпроверяет, что файл BFILE существует
FILEOPENоткрывает файл BFILE
FILEISOPENпроверяет, что файл BFILE открыт
FILECLOSEзакрывает файл BFILE
FILECLOSEALLзакрывает все открытые в сеансе файлы BFILE

Вместо чтения BFILE по частям пакет DBMS_LOB позволяет

Пример загрузки текстового файла во временный CLOB (аналогично можно загрузить и в постоянный CLOB):

Приведу неполный список процедур и функций DBMS_LOB для чтения, анализа и изменения значений BLOB, CLOB и NCLOB:

Процедура / ФункцияЧто делает
APPENDдобавляет один LOB в конец другого
COPYкопирует все или часть содержимого LOB’а в другой LOB
ERASEудаляет все или часть содержимого LOB’а
GETLENGTHвозвращает размер LOB’а
INSTRищет «подстроку» в LOB’е
ISOPENпроверяет, открыт ли LOB
ISTEMPORARYпроверяет, временный ли LOB
READчитает данные LOB’а
SUBSTRполучает «подстроку» из LOB’а
TRIMсокращает размер LOB’а до указанного
WRITEзаписывает данные в LOB
WRITEAPPENDзаписывает данные в конец LOB’а

Следующий эксперимент покажет разницу между внутренними и внешними постоянными LOB’ами. Помещу в поле bfile_col таблицы lobs_tab объект BFILE и скопирую единственную строку таблицы во вторую строку:

Команда INSERT привела к тому, что значения bfile_col в обеих строках связаны с одним и тем же внешним файлом, и его изменение отразится на обоих значениях.

Аналогично, при присваивании BLOB и (N)CLOB переменных в PL/SQL мы получаем независимые копии LOB’ов:

Источник

Как освободить место в табличном пространстве за счет LOB сегмента.

В статье описано как освободить место в табличном пространстве за счет LOB сегмент

Можно переместить LOB сегмент в табличное пространство, которое располагаются на более медленных устройствах хранения, но больших по объему и относительно дешевых.

Чтобы освободить место в табличном пространстве за счет LOB сегмента, можно использовать три способа:
A) Освободить неиспользуемое место выше High Water Mark (HWM).
B) Сделать SHRINK. В сегменте освободиться неиспользуемое место и место под удаленными данными.
C) Физически переместить LOB сегмент в другое табличное пространство.

ВНИМАНИЕ: Во время выполнения запросов из способов B) и C) LOB сегмент блокируется. Если LOB сегмент большой, то это может занять значительное время. Поэтому эти операции рекомендуется проводить во вне рабочее время.

Сначала определяем, с какими сегментами мы будем работать
0) Определяем размер LOB сегментов, чтобы понять какие из них самые большие

1) Сегмент может занимать больше места, чем в нем содержится данных. Этим запросом можно определить, сколько места занимают реальные данные конкретного сегмента.
Если место занимаемое данными намного меньше самого сегмента, значит есть свободное место в самом сегменте и его можно попробовать освободить способами A) и B)
Если данные занимают весь сегмент — значит чтобы освободить место в табличном пространстве его нужно переносить в другое табличное пространство.
Вместо переменных подставить:
— поле table_name из запроса 0
— поле segment_name из запроса 0

A.1) Процедура показывает, сколько места можно освободить командой ALTER TABLE … DEALLOCATE UNUSED.
Если такого места много и вы хотите освободить его — выполните A.2.
Если такого места мало тогда место используйте способы B) или С).

A.2) Если такого места много его можно освободить командой
— поле table_name из запроса 0
— поле COLUMN_NAME из запроса 0
alter table ELA_DOCUMENT modify lob (ELADO_BYTES) (deallocate unused);

B.1) Процедура показывает, сколько места можно освободить командой ALTER TABLE … DEALLOCATE UNUSED.
Если такого места много и вы хотите освободить его — выполните A.2.
Если такого места мало тогда место используте способы B) или С).
— поле table_name из запроса 0
— поле COLUMN_NAME из запроса 0
alter table ELA_DOCUMENT modify lob(ELADO_BYTES) (shrink space);
alter table ELA_DOCUMENT modify lob(ELADO_BYTES) (shrink space cascade);
Опция cascade — применяет SHRINK не только к LOB сегменту но и к связанным с ним LOB индексам

C.1) Запрос которым LOB сегмент переноситься в другое табличное пространство
Вместо переменных подставить:
— поле table_name из запроса 0
— поле COLUMN_NAME из запроса 0
— имя табличного пространства в которое вы хотите перенести LOB сегмент
ALTER TABLE ELA_DOCUMENT MOVE LOB(ELADO_BYTES) STORE AS (TABLESPACE DATA2);

Источник

Опыт использования таблиц с LOB-столбцами

Тихомиров Владимир Вадимович,
Директор по информационным технологиям ОСАО “Ингосстрах”

Михеичев Валерий Вадимович,
Эксперт Oracle, ОСАО “Ингосстрах”

oracle lobsegment что это. Смотреть фото oracle lobsegment что это. Смотреть картинку oracle lobsegment что это. Картинка про oracle lobsegment что это. Фото oracle lobsegment что этоoracle lobsegment что это. Смотреть фото oracle lobsegment что это. Смотреть картинку oracle lobsegment что это. Картинка про oracle lobsegment что это. Фото oracle lobsegment что это

Существует несколько типов LOB объектов: BLOB (двоичный большой объект), CLOB (символьный большой объект), NCLOB (национальный символьный большой объект) и BFILE (внешний двоичный файл). LOB объекты делятся на внутренние и внешние.

Внешние большие объекты External LOB – вид данных, который хранится в файлах операционной системы, вне базы данных, а в базе данных на них хранятся ссылки (локаторы). Внешние LOB используют тип данных – BFILE.

Инструментом работы с LOB выступает пакет DBMS_LOB. Он предоставляет методы манипулирования внутренними и внешними LOBами.

В данной статье рассматриваются только постоянные внутренние LOB объекты.

Сегменты LOB объектов Oracle

Таким образом, если в таблице было указано N столбцов типа LOB, то получим 2*N LOB-сегментов.

LOB сегменты можно увидеть из представления DBA_LOBS запросом:

Команда создания таблицы имеет вид:

LOB сегменты этой таблицы можно увидеть из представления DBA_LOBS указанным выше запросом:

В результате получаем:

Мы видим, что в именах сегментов имеются символы SYS_LOB для LOB-сегментов и SYS_IL для индексных сегментов.

Используя представление Oracle DBA_SEGMENTS (при наличии данных в LOB), можно получить размер в байтах, занимаемых LOB-сегментами и LOB-индексными сегментами. Например, для LOB столбца XMLOUT число байтов, занимаемых сегментом, определяется запросом, указанным ниже. При этом в запросе в поле segment_name подставляется имя сегмента, полученного из представления DBA_LOBS.

В результате работы запроса получаем:

Для работы с LOB удобным является запрос, в котором используются оба указанных выше представления: DBA_SEGMENTS и DBA_LOBS. Данный запрос покажет (при наличии данных в LOB) не только LOB сегменты всей таблицы и ее индексов, но и размеры в байтах, которые они занимают.

Иногда важно посмотреть объем, занимаемый самой таблицей без LOB объектов. Это можно увидеть (при наличии данных в таблице) запросом:

Как видно, сама таблица составляет порядка 8 MB, в то время как один из LOB занимает 6900 MB. В силу чего таблица была размещена в табличном пространство ADATA среднего размера, в то время как LOB большого объема был размещен в другом существенно большем табличном пространстве LOBTBS. О табличных пространствах LOB изложено ниже.

Задание табличного пространства для LOB столбцов таблицы

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

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

Для размещения LOB в другое табличное пространство, отличное от пространства таблицы, используется структура STORE (начиная с Oracle 11g можно использовать структуру STORE AS SECUREFILE) в команде CREATE таблицы. При этом фразу STORE можно указать только при создании таблицы, т.е. STORE нельзя вставить в процессе модификации таблицы.

Замечание. При создании таблицы по команде Create table с LOB столбцами в ней автоматически для каждого LOB столбца таблицы создается структура STORE. Например, для столбца XMLOUT типа LOB по умолчанию создалась бы структура STORE вида:

В ней по умолчанию табличным пространство LOB-а становиться табличное пространство таблицы ADATA и автоматически создаются несколько параметров.

Если есть необходимость управлять табличным пространством или параметрами STORE, надо явно описать конструкцию STORE при создании таблицы (что и было сделано при создании таблицы AIS.SERVICEMSGXML по каждому LOB столбцу). При этом, если используется конструкция STORE AS SECUREFILE, то ее необходимо явно прописывать в команде Create table.

Вычислить процент строк, в которых LOB типа BLOB составляют менее 4000 байт можно по запросу

Вывод. При создании STORE cледует оценить, что эффективнее: хранить LOB в таблице или вынести их из таблицы (режим ENABLE или DISABLE), обосновать целесообразность кэширования LOB и определить более эффективный размер CHUNK.

Модификация атрибутов конструкции STORE

Ряд атрибутов STORE могут быть добавлены или модифицированы в любой момент после создания таблицы командой ALTER TABLE (не модифицируются такие атрибуты как CHUNK и ENABLE/DISABLE STORAGE IN ROW).

Например, для столбца XMLIN таблицы SERVICEMSGXML модификация атрибутов NOCACHE на CACHE осуществляется так же по команде ALTER

Для режима STORE AS SECUREFILE можно модифицировать или добавлять новые атрибуты. Например, добавить DEDUPLICATE и модифицировать COMPRESS с LOW на HIGH по команде:

Особенности очистки табличного пространства, занимаемого LOB объектами

В отличие от обычных таблиц удаление данных из таблицы с LOB не освобождает табличное пространство, занимаемое LOB. Для освобождения табличного пространства используется команда SHRINK либо TRUNCATE таблицы или (что более эффективно) TRUNCATE секции для секционированных таблиц.

Сжатие пространства для не секционированной таблицы осуществляется по команде

Для секционированной таблицы команды с shrink и truncate имеют вид:

Фраза UPDATE GLOBAL INDEXES в TRUNCATE обеспечивает исправность глобальных индексов после очистки секции по Truncate.

Источник

Работа с большими объектами в PL/SQL (BFILE, LOB, SecureFiles)

oracle lobsegment что это. Смотреть фото oracle lobsegment что это. Смотреть картинку oracle lobsegment что это. Картинка про oracle lobsegment что это. Фото oracle lobsegment что это

oracle lobsegment что это. Смотреть фото oracle lobsegment что это. Смотреть картинку oracle lobsegment что это. Картинка про oracle lobsegment что это. Фото oracle lobsegment что этоТема работы с большими объектами весьма объемна, поэтому мы не сможем рассмотреть все ее аспекты. Данную статью блога следует рассматривать как введение в программирование больших объектов для разработчиков PL/SQL. Мы познакомимся с некоторыми нюансами, которые необходимо учитывать, и рассмотрим примеры важнейших операций. Хочется надеяться, что представленный материал станет хорошей основой для ваших дальнейших исследований в этой области.

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

oracle lobsegment что это. Смотреть фото oracle lobsegment что это. Смотреть картинку oracle lobsegment что это. Картинка про oracle lobsegment что это. Фото oracle lobsegment что это

Рис. 1. Водопад Драйер-Хоуз возле Мунисинга (штат Мичиган)

Таблица содержит информацию о водопадах, расположенных в северной части штата Мичиган. На рис. 1 изображен водопад Драйер-Хоуз возле Мунисинга; в замерзшем состоянии его часто посещают альпинисты.

Понятие локатора LOB

oracle lobsegment что это. Смотреть фото oracle lobsegment что это. Смотреть картинку oracle lobsegment что это. Картинка про oracle lobsegment что это. Фото oracle lobsegment что это

Рис. 2. Локатор LOB указывает на объект в базе данных

Этот механизм в корне отличается от того, как работают другие типы данных. Переменные и значения в столбцах LOB содержат локаторы больших объектов, которые идентифицируют реальные данные, хранящиеся в другом месте базы данных или вне ее. Для работы с данными типа LOB нужно сначала извлечь локатор, а затем с помощью встроенного пакета DBMS_LOB получить и/или модифицировать реальные данные. Так, для получения двоичных данных фотографии, локатор которой хранится в столбце BLOB из приведенной ранее таблицы, необходимо выполнить следующие действия:

Не все эти действия являются обязательными; не огорчайтесь, если что-то пока остается непонятным. Далее все эти операции будут описаны более подробно.

LOB-ДАННЫЕ В ДОКУМЕНТАЦИИ ORACLE

Если вам часто приходится работать с большими объектами, настоятельно рекомендуем ознакомиться со следующими документами Oracle:

Большие объекты — пустые и равные NULL

Очень важно понимать это различие, потому что у типов LOB способ проверки наличия либо отсутствия данных получается более сложным, чем у скалярных типов. Для традиционных скалярных типов достаточно простой проверки IS NULL :

Итак, проверять нужно два условия вместо одного.

Для создания пустого объекта BLOB используется функция EMPTY_BLOB (). Для типов CLOB и NCLOB используется функция EMPTY_CLOB ().

Запись данных в объекты LOB

Чтение данных из объектов LOB

В результате выполнения этого кода выводится следующий текст:

Особенности типа BFILE

Как упоминалось ранее, типы данных BLOB, CLOB и NCLOB представляют внутренние большие объекты, хранящиеся в базе данных, в то время как BFILE является внешним типом. Между объектами BFILE и внутренними LOB существуют три важных различия:

Создание локатора BFILE

Локатор BFILE — всего лишь комбинация псевдонима каталога и имени файла. Реальный файл и каталог даже не обязаны существовать. Иначе говоря, Oracle позволяет создавать псевдонимы для несуществующих каталогов, а BFILENAME — локаторы для несуществующих файлов. Иногда это бывает удобно.

Доступ к данным BFILE

Результат выполнения этого кода:

Использование BFILE для загрузки столбцов LOB

Не путайте предупреждения с ошибками PL/SQL; загрузка все равно будет выполнена в соответствии с запросом.

Следующий пример SQL*Plus демонстрирует загрузку данных из внешнего файла с использованием LOADCLOBFROMFILE :

SecureFiles и BasicFiles

По данным тестирования Oracle, повышение быстродействия от использования SecureFiles составляет от 200 до 900%. В простом тесте с загрузкой файлов PDF на сервер Microsoft Windows я наблюдал снижение времени загрузки от 80 до 90% от 169 секунд до 20–30 секунд (в зависимости от конфигурации и количества загрузок). В системе x86 Linux выигрыш был более скромным. Возможно, в вашей ситуации цифры будут другими, но ускорение будет наверняка!

Если вы не уверены относительно базы данных, обратитесь за помощью к администратору.

Устранение дубликатов

Сжатие

Чтобы включить режим устранения дубликатов одновременно со сжатием, укажите соответствующие параметры в определении LOB :

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

Шифрование

Созданный бумажник необходимо открывать заново после каждого перезапуска экземпляра. Открытие и закрытие бумажника выполняется следующим образом:

Временные объекты LOB

Создание временного объекта LOB

Другой способ создания временного объекта LOB основан на объявлении переменной LOB в коде PL/SQL и присваивании ей значения. Например, следующий фрагмент создает временные объекты BLOB и CLOB :

Освобождение временного объекта LOB

Процедура DBMS_LOB.FREETEMPORARY освобождает временный объект типа BLOB или CLOB в текущем временном табличном пространстве. Заголовок процедуры:

В следующем примере сначала создаются, а затем освобождаются два временных объекта LOB :

После вызова FREETEMPORARY освобожденный локатор LOB ( lob_loc ) помечается как недействительный. Если присвоить его другому локатору с помощью обычного оператора присваивания PL/SQL, то и этот локатор будет освобожден и помечен как недействительный.

PL/SQL неявно освобождает временные объекты LOB при выходе за пределы области действия блока.

Проверка статуса объекта LOB

Функция ISTEMPORARY позволяет определить, является ли объект с заданным локатором временным или постоянным. Она возвращает целочисленный код: 1 для временного объекта, 0 для постоянного.

Управление временными объектами LOB

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

Встроенные операции LOB

Семантика SQL

Возможности, упомянутые в предыдущем разделе, Oracle называет «поддержкой семантики SQL для LOB ». С точки зрения разработчика PL/SQL это означает, что с LOB можно работать на уровне встроенных операторов (вместо отдельного пакета).

Следующий пример демонстрирует некоторые возможности семантики SQL:

Маленький фрагмент кода в этом примере содержит несколько интересных моментов:

Семантика SQL может создавать временные объекты LOB

Чтобы получить описание местонахождения водопада в верхнем регистре, сохранив возможность обновления исходного описания, необходимо получить два локатора LOB :

Влияние семантики SQL на быстродействие

А теперь представьте, сколько времени потребуется для создания копии каждого объекта CLOB для его преобразования к верхнему регистру, для выделения и освобождения пространства временных объектов CLOB во временном пространстве и для посимвольного поиска данных в CLOB средним объемом в 1 Гбайт. Конечно, такие запросы навлекут на вас гнев администратора базы данных.

Oracle Text и семантика SQL

За дополнительной информацией о CONTAINS и индексах Oracle Text, игнорирующих регистр символов, обращайтесь к документации Oracle Text Application Developer’s Guide.

Функции преобразования объектов LOB

Oracle предоставляет в распоряжение программиста несколько функций преобразования больших объектов. Перечень этих функций приведен в табл. 2.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *