
- •Табличное пространство
- •Internal – специальный привилегированный псевдоним для пользователя sys, который используется, как правило, для запуска и остановки экземпляра бд Oracle.
- •Idle_time 30 --Кол-во мин. Простоя
- •17. Что такое словарь данных Oracle? Для чего он необходим.
- •Кто эту привилегию может назначать?
- •Кто эту привилегию может назначать?
- •Pl/sql: курсоры (неявные и явные)
- •Isopen - Открыт курсор (для неявных всегда false)
- •10. Перечислите типы lob и объясните их назанчение и способ хранения данных.
- •11. Объясните назначение следующих параметров lob:
Pl/sql: курсоры (неявные и явные)
Курсор Oracle – указатель на область в PGA (контекстная область) в которой хранится: 1)строки запроса, 2)число строк, 2)указатель на разобранный запрос в общем пуле.
(Курсор - механизм, позволяющий обрабатывать отдельные строки полученные в результате select-запроса. Курсор - область памяти сервера, предназначенная для хранения и обработки результата select-запросаи характеризующаяся атрибутами. Неявный курсор - курсор не требующий объявления.)
Что такое атрибут курсора? Перечислите все атрибуты курсора и объясните их назначение.
Атрибут курсора - это параметр, который позволяет отследить состояние курсора.
FOUND - статус выборки (TRUE - данный найдены, FALSE - данные не найдены)
Isopen - Открыт курсор (для неявных всегда false)
NOTFOUND - статус выборки (TRUE - данный не найдены, FALSE - данные найдены)
ROWCOUNT - количество обработанных строк
В чем отличие явного и неявного курсоров.
Неявные курсоры вызываются всякий раз, когда в PL/SQL используется оператор SELECT. Они могут использоваться только в операторах, которые возвращают не более одной строки. Не явные курсоры не требуют объявления и открытия, в то время как явные курсоры нужно объявить, открыть, считать и закрыть. Но явные курсоры позволяют обрабатывать запрос, возвращающий несколько строк.
Объясните схему работы с явным курсором в PL/SQL-блоке.
declare -объявили курсор, open - открыли курсор, fetch - считали данные, close - закрыли курсор
Что происходит по команде OPEN курсора?
Определяются строки, которые доступны в курсоре и делаются доступными для PL/SQL
Объясните особенность применения FOR-цикла при работе с явным курсором.
Особ-сть этого цикла закл-тся в том, что в цикле необходимо указать только сам курсор и переменную, в которую будет проводится считывание, а операции open, fetch и close цикл выполнит самостоятельно.
Для чего применяются параметры курсора?
Параметры курсора применяются для того, чтобы в курсор можно было передать какой-то параметр как
в функцию, что позволяет динамически задавать условие запроса, который выполняет курсор.
Что такое курсорная переменная? Как ее можно объявить?
Курсорная переменная - это переменyая, к которой можно присвоить курсор.
сначала объявить тип
declare type tlesson_type is ref cursor return tlesson%rowtype;
потом саму переменную
cur_var tlesson_type;
Объясните назначение конструкции RETURNING в операторах INSERT, DELETE, UPDATE.
Позволяет получить данные, которые были вставлены, удалены или изменены соответствующим оператором.
Открытие курсора – создание контекстной области PGA (создается моментальный снимок (snapshot) данных запроса).
WHERE CURRENT OF – определяет только что считанную строку.
ROWID-двухбайтовая величина, которая соответствует физическому положению любой строки БД. (ROWID (зашиф-й 64-битовым ключом уникальный адрес строки таблицы) - логический адрес записи)
ROWNUM-используется для ограничения кол-ва выводимых записей.
ROWNUM - логический номер записи. Позволяет управлять порядком и количеством извлекаемых записей. SELECT * FROM employees WHERE ROWNUM < 10;
Процедуры. Функции.
create or replace
PROCEDURE AAA
IS
BEGIN
dbms_output.put_line('Text from AAA');
END AAA;
create or replace
function bbb
return number
is
begin
return 1;
end bbb;
Перечислите числовые встроенные функции, исследованные в лабораторной работе.
CEIL - Округлить в большую сторону
FLOOR - Округлить в меньшую сторону
MOD - Остаток от деления
POWER - Взять в степень
SIGN - получить -1 или 1
GREATEST - получить самое большее из всех чисел
32. Перечислите встроенные функции для работы с датами, исследованные в лабораторной работе.
SYSDATE - Получить системную дату
LOCALTIMESTAMP - Получить дату в формате LOCALTIMESTAMP
TO_DATE - Преобразовать строку или дату к дате с заданным форматом
TO_CHAR - Преобразовать дату в строку (можно не только дату)
NEXT_DAY - Получить ближайшую дату заданного деня недели
LAST_DAY - Получить поледнее число месяца
SYS_EXTRACT_UTC - извлечь дату в формате UTC
ROUND - Округлить дату по заданной части (день, месяц, год и т.д)
33. Перечислите встроенные функции конвертации, исследованные в лабораторной работе.
TO_DATE - Преобразовать строку или дату к дате с заданным форматом
TO_CHAR - Преобразовать дату в строку (можно не только дату)
TO_NUMBER - Преобразовать в число
34. Объясните назначение встроенных функций sqlcode и sqlerrm.
SQLCODE - Возвращает код ошибки
SQLERRM - Возвращает ссобщение произошедшей ошибки
35. Что такое PL/SQL-тип данных запись? Перечислите способы создания, и принцип применения.
PL/SQL-тип данных запись - это тип данных, инкапсулирующий в себе несколько переменных одного или нескольких типов.
Можно самостоятельно объявить используя оператор TYPE, а можно копировать структуру строки таблицы используя функцию ROWTYPE
36. Что такое локальные процедуры и функции PL/SQL?
Локальные процедуры и функции - это такие процедуры и функции, которые создаются во время выполнения программы. (Объявляются в области DECLARE)
37. Перечислите типы PL/SQL-коллекций. Объясните чем они отличаются. Перечислите основные методы коллекций.
Коллекции: ассоциативные массивы = индексные таблицы (массивы, доступ к которым осуществляется не по индексу, а по ключу),
вложенные таблицы - таблицы, содержащие в себе строки, являющиеся объектами(в отличие от массивов переменной длины размер не ограничен сверху),
массивы переменной длины - объект, содержащий какое-то количество объектов одного типа (размер ограничен сверху
т.е. нужно его указать зарание).
38. Что такое исключение? встроенное исключение? пользовательское исключение?
Объясните назначение и принцип применения оператора RAISE и функции RAISE_APPLICATION_ERROR.
Объясните принцип распространения исключения.
Исключение - прерывание, которое возникает при наступлении какого-либо события.
Встроенное исключение - исключение, которое определено в субд.
пользовательское исключение - исключение, которое определил пользователь.
функция raise генерирует исключение (аналог throw в C-подобных языках) RAISE_APPLICATION_ERROR - сгенерировать исключение,
которое должено отловить блок others
39. Что такое динамический SQL? Объясните принцип его применения.
Динамический SQL - это SQL, который генерируется и выполняется в блоке PL/SQL. Применяется для написания кода,
адаптирующегося к структуре таблиц.
40. Чем отличаются процедуры от функций? Что такое локальные процедуры и функции?
Что такое параметрическая, позиционная и смешанная формы передачи параметров?
Объясните действие опций AUHIUD CURRENT_USER/DEFINER.
Процедура выполняет какое-то действие над переданным параметром изменяя его или не изменяя не возвращая никаких значений,
а функция должна возвращать значение. параметрическая форма передачи параметров - это такая передача параметров, в которой
указывется какому параметру какой соответствует, а позиционная - это такая форма, в которой параметры указываются в том
порядке, который был указан при объявлении функции или процедуры.
41. Перечислите основные ограничения на применение функций в операторе SELECT.
- SELECT не может модифицировать таблицы;
- функция должна быть хранимой: нельзя использовать локальные функции;
- параметры только IN: нельзя OUT, IN OUT;
- формальные параметры: имеют тип базы данных или CREATE TYPE;
- возвращаемый тип: тип базы данных или CREATE TYPE.
42. Что значит «пакет сохраняет состояние переменных, объявленных в спецификации, на время сессии»?.
Это значит, что данные, которые объявлены в пакете не теряют своего значения до конца текущей сессии.
Динамический SQL. Триггер. Временная таблица.
CREATE OR REPLACE TRIGGER BAO_1 AFTER INSERT ON AAA
BEGIN
DBMS_OUTPUT.PUT_LINE('BAO_1');
END;
CREATE OR REPLACE TRIGGER BAS_1 BEFORE INSERT ON AAA FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE('BAS_1');
END;
CREATE OR REPLACE TRIGGER BAO_1 AFTER INSERT OR UPDATE OR DELETE ON AAA
BEGIN
IF INSERTING THEN
DBMS_OUTPUT.PUT_LINE('BAO_1 INSERTING');
ELSIF UPDATING THEN
DBMS_OUTPUT.PUT_LINE('BAO_1 UPDATING');
ELSIF DELETING THEN
DBMS_OUTPUT.PUT_LINE('BAO_1 DELETING');
END IF;
END;
Объясните способ создания временных таблиц Oracle и принципы работы с ними.
Временные таблицы можно создать командой CREATE GLOBAL TEMPORARY TABLE <ИМЯ> <ОПЦИЯ> AS SELECT * FROM <ИМЯ_ТАБЛИЦЫ>Все они являются шабонами таблиц. Каждому пользователю выделяется собственный сегмент в его TEMP-TABLESPACE и он видит только свои записи
24. Объясните назначение опций временных таблиц: ON COMMIT PRESERVE ROWS, ON COMMIT DELETE ROWS.
ON COMMIT PRESERVE ROWS - Сохраняет данные на время сеанса
ON COMMIT DELETE ROWS - Сохраняет данные на время транзакции (Любой COMMIT или ROLLBACK очистит таблицу)
25. Перечислите типы триггеров поддерживаемых Oracle.
Типы триггеров: DML – триггеры, триггеры замещения (instead-of), системные триггеры.
26. Можно выполнять TCL-операторы в триггерах Oracle. Если да, то при каких условиях?
может только, если в теле триггера автономная транзакция, может выдавать RAISE_SPPLICATION_ERROR.
27. Поясните правило: триггер является частью транзакции.
DML-триггер – это часть транзакции: не может выдавать COMMIT/ROLBACK
(может только, если в теле триггера автономная транзакция),может выдавать RAISE_SPPLICATION_ERROR.
28. Перечислите привилегии необходимые для работы с триггерами.
Привилегии на триггер: назначаются напрямую USERу, а не через роль.
? CREATE TRIGGER (создавать, удалять изменять в своей подсхеме);
? CREATE ANY TRIGGER (создать любой триггер в любой схеме, кроме SYS, не рекомендуется для словаря, не разрешает менять текст триггера);
? ALTER ANY TRIGGER (разрешать, запрещать, изменять, компилировать, любые, кроме SYS-триггеров, триггеры) ;
? DROP ANY TRIGGER (удалять любой триггер, кроме SYS-триггеров);
? ADMINISTER DATABASE TRIGGER (создавать, изменять, удалять системные триггеры, должен иметь привилегию CREATE TRIGGER или CREATE ANY TRIGGER).
29. Перечислите события, на которые могут срабатывать DML-триггеры.
INSERT, DELETE, UPDAТE
30. Объясните, что такое BEFORE-триггеры и AFTER-триггеры.
В каких случаях нельзя обойтись только BEFORE-триггерами или только AFTER-триггерами.
BEFORE - Это тип триггера, который выполняется до наступления события.
AFTER - Это тип триггера, который выополняется после фиксации события.
31. Перечислите уровни срабатывания триггеров.
FOR EACH ROW (для каждой строки)
ПО УМОЛЧАНИЮ (операторный уровень).
32. Поясните принцип применения INSTEAD OF-триггеров в Oracle.
Применяются только на уровне строки. Используются чтобы не допускать программиста к таблице или для фиксациисобытий извне.
XML
create table report
(
id_report number(6) not null,
xml_report xmltype not null,
constraint pk_report primary key (id_report)
);
Что такое XML?
XML (англ. eXtensible Markup Language — расширяемый язык разметки) — текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией между программами, а также для создания на его основе более специализированных языков разметки (например, XHTML). XML является упрощённым подмножеством языка SGML.
Для чего необходим тип XMLTYPE.
тип XML. Дает возможность сообщить БД, что заносимый текст – это не просто строка, а строка документа XML.
Назначение функции XMLTYPE (конструктор).
служит для создания таблицы объектов типа XMLTYPE, «таблицы документов XML».
Назначение функции EXTRACTVALUE.
извлекает значения элемента из документа XML.
Назначение функции EXISTSNODE.
дает возможность использовать в SQL условие отбора XPath (язык отбора, принятый в технологиях XML).
Назначение XML-метода GETSTRING.
извлекает строку из документа XML.
Назначение XML-метода GETROOTELEMENT.
извлекает корневой элемент из документа XML.
Назначение функции XMLELEMENT.
создаёт в XML новый элемент и помещает значение из таблицы
Назначение функции XMLATTRIBUTES.
создаёт в XML новый атрибут и помещает значение из таблицы
Назначение функции XMLAGG.
агрегирующая функция, допускающая использование в запросах группировку GROUP BY
LOB
create table teacher
(
teacher char(20 char),
teacher_name varchar2(200),
pulpit char(20),
foto blob,
doc bfile
)
lob (foto) store as blob_sg
(
tablespace TES_T_RICRO_LOB
);
create directory RICROSCAPE as 'D:\LAB14';
insert into teacher values ('ШМНД', 'Шиман Дмитрий Васильевич', 'ИСиТ', EMPTY_BLOB(), BFILENAME('AAA', 'ШМНД.doc'));
select * from teacher;
declare
src_file bfile;
dst_file blob;
lgh_file binary_integer;
begin
src_file := BFILENAME('RICROSCAPE', 'No mans land.jpg');
dbms_lob.fileopen(src_file, dbms_lob.file_readonly);
lgh_file := dbms_lob.getlength(src_file);
select foto into dst_file from teacher where teacher = 'RICRO' for update;
dbms_lob.loadfromfile(dst_file, src_file, lgh_file);
update teacher set foto = dst_file where teacher = 'RICRO';
commit;
dbms_lob.fileclose(src_file);
end;
Для каких целей применяются большие объекты Oracle (LOB).
Хранение файлов, больших текстов, картинок, мультимедиа и т.д. в базе данных