СТАТЬЯ |
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. |
Trusted ORACLE предоставляет новый тип данных: MLSLABEL. В стандартном ORACLE также можно объявлять столбцы с типом данных MLSLABEL, для совместимости с приложениями Trusted ORACLE.
Тип данных MLSLABEL служит для хранения двоичного представления метки операционной системы. Максимальная ширина столбца MLSLABEL составляет 255 байт.
В столбец MLSLABEL могут вставляться любые метки, действительные в вашей операционной системе. Когда вы вставляете метку в столбец MLSLABEL, Trusted ORACLE неявно конвертирует ее данные в двоичный формат метки.
Обзор словаря данных 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 автоматически добавляется в любую таблицу базы данных 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 - это метка, под которой вы соединены с 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.Отправить E-Mail http://www.interface.ru |
|
Ваши замечания и предложения отправляйте
автору По техническим вопросам обращайтесь к вебмастеру Документ опубликован: 19.03.01 |