· СНAR – фиксированные текстовые строки до 2000 байт. Значение типа CHAR дополняется до указанной длины пробелами.
· VARCHAR 2 — текстовые строки переменной длины до 4000 байт.
· NUMBER — числовые данные.
· DECIMAL — числовые данные
· DATE — используется для хранения дат.
· RAW — используется для хранения двоичных данных до 2000 байт.
· LONG — используется для хранения текстовых данных длиной до 2 ГБ
· LONG RAW — используется для хранения двоичных данных до 2 ГБ
· ROWID — используется для хранения идентификаторов ROWID базы данных Oracle в специальном формате (адреса строк таблицы).
· BLOB — сохраняется до 4 ГБ двоичных данных. Данные этого типа хранятся вне таблицы, а в таблице Oracleнаходятся лишь указатели на объекты
· CLOB, NCLOB — сохраняется до 4 ГБ текстовых данных. NCLOB – это тип данных NLS большой фиксированной длины (NLS означает National Language Set – набор для национальных языков – и используется для работы вOracle на языках, отличных от английского. В английском для хранения одного символа нужен 1 байт, а в некоторых языках мира с наборами больших символов (японском, китайском, корейском), языках, где текст читается справа налево (арабский, иврит) для хранения одного символа требуется несколько байт). Данные этого типа хранятся вне таблицы, а в таблице находятся лишь указатели на объекты.
· BFILE — сохраняется до 4 ГБ неструктурированных данных, причем в файлах операционной системы (внешние файлы).
Таблица: типы (HEAP/INDEX), назначение, основные параметры, необходимые привилегии, операторы создания, модификации и удаления, представления словаря. Дополнительные параметры: PCTTHRESHOLD, PCTFREE, PCTUSED, PCTINCREASE, BUFFER_POOL, INITTRANS.
Таблицы состоят из множества поименованных столбцов или атрибутов. Множество допустимых значений атрибута называют доменом значений или просто доменом. Множество допустимых значений столбца также может быть уточнено с помощью статических ограничений целостности. Таблицы могут быть связаны между собой отношениями ссылочной целостности.
Таблица может быть пустой или состоять из одной или более строк значений атрибутов. Строки значений атрибутов таблицы называются также кортежами. Для однозначной идентификации строки в таблице служит идентификатор (ROWID) — указатель, имеющий специальный формат. В Oracle 8 появились вложенные таблицы (NESTED TABLES), которые позволяют объявить таблицу как тип значения столбца родительской таблицы. Для повышения скорости доступа к данным таблица может быть индексно организована (INDEX-ORGANIZED TABLE). Физическое пространство для хранения данных таблицы выделяется частями, называемыми экстентами. Размеры начального и дополнительных экстентов определяются при создании таблицы.
Представление –образ таблицы или набора таблиц, определённых оператором select.
with read only – опция, запрещающая операции обновления, удаления и вставки данных базовой таблицы через представление.
with check option – режим, при котором добавлять или обновлять можно только строки, доступные в представлении.
Материализованное представление – таблица, хранящая в себе результат sql запроса к таблице или группе таблиц.
INITRANS-минимальное кол-во транзакций которое может изменять строки в данном блоке.
MAXTRANS-максимальное число транзакций которые могут изменять строки в данном блоке.
PCTFREE-процент памяти блока, резервируемой для возможных обновлений строк уже содержащихся в блоке(под update)
PCTUSED-процент памяти блока, до которого должно снизиться занятое место, для возможности выполнять insert
INITIAL-размер первого экстета
NEXT-размер следующего экстета
MINEXTENTS-количество экстетов выделяемых при создании
MAXEXTENTS-максимальное кол-во экстетов
PCTINCREASE-на сколько процентов новый экстет больше предыдущего
FREELISTS-кол-во списков свободных блоков в каждой группе
BUFFER_POOL-указание как хранить значения полученные при запросе(default, keep, recycle)
Кластер: назначение, типы, основные параметры, необходимые привилегии, операторы создания, модификации и удаления, представления словаря. Оператор создания таблиц с кластеризованными столбцами.
Кластер –специализированный объект БД, инкапсулируемый для физически совместного хранения одинаковых строк нескольких таблиц, которые часто используются.
grant create cluster to KVCORE
DBA_CLUSTERS, DBA_SEGMENTS
GRANT CREATE CLUSTER TO RL_KVCORE
CREATE CLUSTER ABC
(
X NUMBER(10),
V VARCHAR(12),
C DATE
)
HASHKEYS 200;
CREATE TABLE A
(
VX NUMBER(10),
VA VARCHAR(12),
VC DATE
)
CLUSTER ABC(VX, VA, VC);
CREATE TABLE B
(
XB NUMBER(10),
VB VARCHAR(12),
BC DATE
)
CLUSTER ABC(XB, VB, BC);
CREATE TABLE C
(
XC NUMBER(10),
VC VARCHAR(12),
CC DATE
)
CLUSTER ABC(XC, VC, CC);
SELECT * FROM DBA_CLUSTERS WHERE OWNER LIKE '%KV%';
SELECT * FROM DBA_SEGMENTS WHERE OWNER LIKE '%KV%';
SELECT * FROM DBA_CLU_COLUMNS WHERE OWNER LIKE '%KV%'; --Соответствие столбцов таблиц столбцам кластера
16. Индекс: назначение, типы (B*,bitmap), основные параметры, необходимые привилегии, операторы создания, модификации и удаления, представления словаря.
Индекс-объект БД, создаваемый с целью повышения производительности выполнения запросов.
grant index(create any index) to KVCORE
Хэш-функция – функция преобразующая ключ в область оперативной памяти.
Хэш-таблица – структура данных, реализующая интерфейс ассоциативного массива, а именно она позволяет хранить пары(ключ или индекс, значение)
· прямая адресация – в массиве хранятся списки пар
· открытая адресация – хэш-списков нет, все записи хранятся в самой хэш-таблице
B* индекс -сбалансированное дерево, упорядоченных ключей.(хороши для данных с высокой координальностью, занимают много места, быстро обновляются)
Bitmap- матрица в которой хранятся ключи и значения блоков(блоки и их значения).(хороши для данных с низкой координальностью, занимают мало места, плохо обновляются).DBA_INDEXES
GRANT CREATE ANY INDEX TO RL_KVCORE; --от SYSTEM
REVOKE CREATE ANY INDEX FROM RL_KVCORE; --от SYSTEM
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE LIKE '%KV%'
DROP INDEX IDXA_A;
CREATE INDEX IDXA_A ON A(VX);
DROP INDEX IDXB_XB;
CREATE UNIQUE INDEX IDXB_XB ON B(XB);
DROP INDEX IDXC_XC;
CREATE BITMAP INDEX IDXC_XC ON C(XC);
SELECT OWNER, INDEX_NAME, INDEX_TYPE, TABLE_NAME, UNIQUENESS FROM DBA_INDEXES WHERE OWNER LIKE '%KV%';