BEFORE UPDATE
ON clob_content
FOR EACH ROW
BEGIN
DBMS_OUTPUT.PUT_LINE ( ' clob_content changed’ );
DBMS_OUTPUT.PUT_LINE (
‘ Length = ‘ || DBMS_L0B.GETLENGTH(:new.clob_column)
); END before_clob_content_update;
/
В следующем примере производится подключение обновления таблицы
clob_content, что вызывает срабатывание триггера:
Большие объекты 541
□ UPDATE clob_content
SET clob_column = ‘ Creeps in this petty pace’
WHERE id = 1;
clob_content changed
Length = 25
Усовершенствования LOB, появившиеся в базе данных
Oracle 11g
В этом разделе вы ознакомитесь со следующими улучшениями, которые
были сделаны для больших объектов в базе данных Oracle 1 lg:
■ шифрование данных BLOB, CL0B и NCL0B, что предотвращает несанкционированный
просмотр и изменение данных;
■ компрессия (сжатие) для уменьшения размера данных BLOB, CL0B и
NCL0B;
■ дедубликация данных BLOB, CL0B и NCL0B для автоматического обнаружения
и удаления повторяющихся данных.
Шифрование данных L0B
Вы можете замаскировать свои данные при помощи шифрования таким
образом, что неавторизованные пользователи не смогут их просмотреть
или изменить. Следует шифровать важные данные, такие как номера кредитных
карточек, номера социального страхования и т.п.
Перед тем, как вы сможете начать шифровать данные, либо вы, либо
администратор базы данных должны создать электронный «бумажник»
(wallet) для хранения сведений безопасности. Данные в электронном бумажнике
включают частный ключ для шифрования и дешифрования данных.
В этом разделе вы увидите, как создать электронный бумажник, зашифровать
данные L0B и зашифровать данные обычных столбцов.
Создание электронного бумажника
Чтобы создать электронный бумажник, вам сначала нужно создать папку по
имени wallet в каталоге $ORACLE_BASE\admin\$ORACLE_SID, где 0RACLE_
BASE является базовым каталогом, в который установлено программное
обеспечение базы данных Oracle, a ORACLE_SID является системным идентификатором
для базы данных, в которой должен быть создан бумажник. Например,
на компьютере под управлением Windows ХР и для базы данных
Oracle 1 lg автор создал папку бумажника в C:\oracle_l lg\admin\orcl.
После того, как папка электронного бумажника создана, вам нужно запустить
SQI?Plus, подключиться к базе данных с использованием привилегированной
учётной записи (например, system) и выполнить команду ALTER
SYSTEM, чтобы установить пароль для ключа шифрования электронного бумажника,
как показано ниже:
□ SQL> CONNECT system/manager
SQL> ALTER SYSTEM SET ENCRYPTION KEY IDENTIFIED BY “ testpassword123” ;
System altered.
542 Глава 14
Как только это сделано, в папке электронного бумажника появляется
файл по имени ewallet.pl2, а база данных автоматически открывает бумажник.
Пароль ключа шифрования хранится в бумажнике и используется для
шифрования и дешифрования данных в фоновом режиме.
Автор разместил сценарий SQITPlus по имени lob_schema3. sql в папке
SQL. Этот сценарий может быть запущен в базе данных Oracle 1 lg. Сценарий
создаёт пользователя по имени lob_user3 с паролем lob_password, а
также таблицы, которые используются далее в этом разделе. После того,
как сценарий будет выполнен, вы будете загружены под пользователем
lob_user3.
Ш и фрование данных LO B
Вы можете зашифровать данные, которые хранятся в BLOB, CL0B или NCL0B,
чтобы предотвратить несанкционированный доступ к этим данным. Вы не
можете зашифровать BFILE, потому что сам файл хранится за пределами
базы данных.
Для шифрования данных вы можете использовать следующие алгоритмы.
■ 3DES168 Алгоритм Тройной-DES (Data Encryption Standard) с длиной
ключа 168 бит.
■ AES128 Алгоритм AES (Advanced Encryption Standard) с длиной ключа
128 бит. Алгоритмы AES были созданы для замены более старых
алгоритмов, основанных на DES.
■ AES192 Алгоритм AES с длиной ключа 192 бит.
■ AES256 Алгоритм AES с длиной ключа 256 бит. Это наиболее безопасный
алгоритм шифрования, который поддерживается базой
данных Oracle.
Следующее выражение создаёт таблицу с CL0B, содержимое которой
должно быть зашифровано при помощи алгоритма AES128. Обратите внимание
на использование ключевых слов ENCRYPT и 8ECUREFILE, которые обязательны
при шифровании данных:
□ CREATE TABLE clob_content (
id INTEGER PRIMARY KEY,
clob_column CLOB ENCRYPT USING ‘ AES128’
) LOB(clob_column) STORE AS SECUREFILE (
CACHE
);
Как вы видите, содержимое clob_column будет зашифровано с использованием
алгоритма AES128. Если вы опустите ключевое слово USING и алгоритм,
то будет использован алгоритм по умолчанию — AES192.
Ключевое слово CACHE в выражении CREATE TABLE показывает, что база