СТАТЬЯ
19.03.01

предыдущая часть | содержание | следующая часть

Сводка информации о типах данных ORACLE

Для удобства справок, следующая таблица суммирует важную информацию о каждом из типов данных ORACLE.

Табл.3-2

Сводка информации о типах данных ORACLE
Тип данных
Описание
CHAR(размер)
Символьные данные фиксированной длины. Максимальный размер - 255 байт. Умалчиваемый размер - 1 байт.
VARCHAR2 (размер)
Символьные данные переменной длины. Максимальный размер - 2000 байт. Умалчиваемый размер - 1 байт.
NUMBER(p,s)
Числовые данные переменной длины. Точность p (общее количество цифр) может задаваться от 1 до 38. Масштаб s (число цифр после десятичной точки) может быть от -84 до 127
FLOAT(p)
Числовые данные с плавающей точкой с двоичной точностью p. FLOAT без точности считается заданным как FLOAT(126).
DATE

Значение даты и времени фиксированной длины в интервале от 1 января 4712 г. до н.э. до 31 декабря 4712 г. н.э. Умалчиваемый формат определяется параметром NLS_DATE_FORMAT или командой ALTER SESSION.

LONG

Символьные данные переменной длины. Максимальная длина - до двух гигабайт.

RAW(размер)

Двоичные данные переменной длины. Должен быть указан максимальный размер (до 255).

LONG RAW

Двоичные данные переменной длины. Максимальная длина - до двух гигабайт.

ROWID

Двоичные данные, представляющие адреса строк.

MLSLABEL

Двоичные данные переменной длины (от 2 до 5 байт), отображающие метки операционной системы. Предназначены для использования в Trusted ORACLE.

Тип данных MLSLABEL

Trusted ORACLE предоставляет новый тип данных: MLSLABEL. В стандартном ORACLE также можно объявлять столбцы с типом данных MLSLABEL, для совместимости с приложениями Trusted ORACLE.

Тип данных MLSLABEL служит для хранения двоичного представления метки операционной системы. Максимальная ширина столбца MLSLABEL составляет 255 байт.

В столбец MLSLABEL могут вставляться любые метки, действительные в вашей операционной системе. Когда вы вставляете метку в столбец MLSLABEL, Trusted ORACLE неявно конвертирует ее данные в двоичный формат метки.

Словарный обзор ALL_LABELS

Обзор словаря данных ALL_LABELS перечисляет все метки, которые когда-либо были сохранены в базе данных, включая значения DBHIGH и DBLOW. Любая метка, когда-либо сохраненная в столбце MLSLABEL (включая столбец ROWLABEL), автоматически добавляется в этот обзор.

Заметьте, что этот обзор не обязательно содержит лишь метки, действительные в базе данных, потому что для Trusted ORACLE действительной является любая метка, действительная в операционной системе, в любом допустимом формате. Заметьте также, что этот обзор может содержать метки, недействительные в базе данных (если такие метки однажды использовались в базе данных, но больше не являются действительными).

Добавление новых меток

Если метка еще не представлена в обзоре ALL_LABELS, и она является действительной меткой операционной системы, то эта метка автоматически вставляется в словарь данных как действительная метка, когда вы специфицируете ее в предложении INSERT или UPDATE.

Например, если единственными метками в обзоре ALL_LABELS являются TRULY_SENSITIVE:ALPHA, SENSITIVE и UNCLASSIFIED, то вы можете ввести в столбец типа MLSLABEL значение SENSITIVE:ALPHA, при условии, что SENSITIVE:ALPHA является действительной меткой в вашей операционной системе. Однажды вставленная, эта метка автоматически становится действительной меткой в Trusted ORACLE, и будет выдаваться в обзоре ALL_LABELS.

Столбец ROWLABEL

Столбец ROWLABEL автоматически добавляется в любую таблицу базы данных Trusted ORACLE во время создания этой таблицы. Этот столбец содержит метку типа данных MLSLABEL для каждой строки таблицы.

В режиме OS MAC, при том, что таблица может содержать строки лишь под одной меткой, значения этого столбца всегда одни и те же внутри таблицы (и внутри одной базы данных).

В режиме DBMS MAC, значения этого столбца могут варьироваться внутри одной таблицы от DBHIGH до DBLOW (в рамках любых ограничений, определенных для данной таблицы).

Извлечение меток строк

Столбец ROWLABEL не возвращается автоматически как часть запроса. Чтобы извлечь метку строки, вы должны явно выбрать столбец ROWLABEL.

Например, чтобы извлечь метку строки из таблицы или обзора, специфицируйте столбец ROWLABEL в предложении SELECT:

SELECT rowlabel, ename FROM emp
WHERE ename = 'JASUJA'  

Этот запрос может возвратить следующую информацию:

ROWLABEL                         ENAME
-------------------------------- ---------- 
SENSITIVE                        JASUJA  

Вы можете также специфицировать псевдостолбец ROWLABEL в фразе WHERE предложения SELECT, например:

SELECT rowlabel, ename FROM emp  
WHERE rowlabel = 'SENSITIVE'  

Этот запрос может возвратить следующую информацию:

ROWLABEL                         ENAME
-------------------------------- ----------
SENSITIVE                        JASUJA  
SENSITIVE                        ASHER  

Извлечение всех меток из таблицы

Заметьте, что, когда вы выбираете все столбцы из таблицы (используя обозначение SELECT *), столбец ROWLABEL не возвращается. Вы должны явно указать в запросе, что вы хотите извлечь этот столбец, чтобы получить его. Например, чтобы извлечь из таблицы DEPT все столбцы, включая столбец ROWLABEL, введите:

SELECT rowlabel, dept.*  
FROM dept  

Это предусмотрено для совместимости с более старыми приложениями (например, для ORACLE RDBMS версии 6), или с приложениями, предназначенными для выполнения как в одноуровневом, так и в многоуровневом окружениях. Однако в режиме MAC (обязательного контроля доступа) значения ROWLABEL всегда задействованы, и их всегда можно извлекать и выдавать в Trusted ORACLE, если необходимо.

Извлечение меток из множественных таблиц

Извлекая метки из более чем одной таблицы или обзора, вы должны префиксовать столбец ROWLABEL именем соответствующей таблицы или обзора.

Например, чтобы извлечь столбец ROWLABEL из таблиц EMP и DEPT, соответствующих друг другу по номеру отдела, введите:

SELECT emp.rowlabel, dept.rowlabel 
       FROM emp, dept 
       WHERE emp.deptno = dept.deptno  

Если специфицировать имена таблиц становится слишком утомительно, вы можете создать синонимы для имен таблиц в самом запросе. Например, следующий запрос идентичен приведенному выше:

SELECT emp.rowlabel, dept.rowlabel
       FROM emp e, dept d 
       WHERE e.deptno = d.deptno  

Модификация меток строк

Как говорилось в секции "Добавление новых меток", вы можете в столбце ROWLABEL специфицировать любую действительную метку операционной системы.

В режиме OS MAC вы можете выполнять вставки и обновления столбца ROWLABEL при некоторых ограничениях. В режиме DBMS MAC вы можете модифицировать столбец ROWLABEL лишь в том случае, если имеете соответствующие привилегии MAC.

Для детальной информации о модификации столбцов ROWLABEL обратитесь к вашему документу Trusted ORACLE7 Server Administrator's Guide.

Вывод вашей метки DBMS

Ваша метка DBMS - это метка, под которой вы соединены с Trusted ORACLE. В режиме OS MAC это всегда эквивалентно метке базы данных, с которой вы соединены, и всегда эквивалентно метке вашей сессии в операционной системе. В режиме DBMS MAC, это метка, под которой вы соединены с Trusted ORACLE; поскольку доверенные пользователи могут изменять свои метки DBMS, это не обязательно совпадает с меткой вашей сессии в операционной системе.

Вы можете выдать вашу метку DBMS любым из следующих способов:

Вывод вашей метки с помощью функции USERENV

Чтобы извлечь вашу метку DBMS в любом из интерактивных инструментов ORACLE (включая SQL*Plus и SQL*DBA), используйте параметр LABEL функции USERENV.

Например, предположим, что вы подключены к базе данных как SENSITIVE. Чтобы определить вашу метку DBMS, введите:

SELECT USERENV('label') FROM dual  

Этот запрос возвратит следующую информацию:

ROWLABEL 
-------------------------------- SENSITIVE

Вывод вашей метки с помощью команды SHOW в SQL*DBA

Чтобы выдать вашу метку в SQL*DBA, введите:

SQLDBA> SHOW LABEL  

Эта команда возвратит следующую информацию:

Label           SENSITIVE 

 

предыдущая часть | содержание | следующая часть

Дополнительную информацию Вы можете получить в компании Interface Ltd.

Обсудить на форуме Oracle
Отправить ссылку на страницу по e-mail


Interface Ltd.

Ваши замечания и предложения отправляйте автору
По техническим вопросам обращайтесь к вебмастеру
Документ опубликован: 19.03.01