Таблицы Oracle – предотвращение удаления и уничтожения (таблицы блокчейна)

В версии 19c представила очень интересную функцию, предоставив администратору возможность создавать таблицы, в которых разрешены только операции вставки, а удаление строк запрещено или может быть ограничено на определенный период времени, а также можно ограничить удаление из таблицы.

Важно добавить, что для использования этой функции необходимо, чтобы база данных была версии 19.10, был установлен патч 32431413, а параметр COMPATIBLE базы данных был установлен на версию 19.10.0 или выше. Начиная с версии 19.11 патч не требуется, если изменен параметр COMPATIBLE.

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

Существует ряд пунктов, которые можно добавить в команду и которые определяют конечное состояние наших таблиц «Blockchain».

Пункты CREATE BLOCKCHAIN TABLE:
* NO DROP определяет время, в течение которого наша таблица защищена от команды удаления «drop».

NO DROP [ UNTIL number DAYS IDLE ]

  • NO DROP : Таблица не может быть удалена.
  • NO DROP UNTIL number DAYS IDLE : Таблица не может быть удалена до тех пор, пока не будут вставлены новые строки в течение указанного количества дней.ифицированных.

* NO DELETE определяет период времени, в течение которого строки не могут быть удалены.

NO DELETE { [ LOCKED ] | (UNTIL number DAYS AFTER INSERT [ LOCKED ]) }

  • NO DELETE  ИЛИ DELETE LOCKED: Строки не могут быть удалены.
  • NO DELETE UNTIL number DAYS AFTER INSERT: Строки не могут быть удалены до X количества дней, в течение которых строки были вставлены, можно изменить срок хранения с помощью команды ALTER TABLE
  • NO DELETE UNTIL x DAYS AFTER INSERT LOCKED: Строки не могут быть удалены до X количества дней, в течение которых строки были вставлены, и невозможно изменить срок хранения с помощью команды ALTER TABLE. Минимальное количество дней составляет 16, в противном случае вы получите ошибку при выполнении команды.

*HASHING USING sha2_512 VERSION v1

Пункт формата алгоритма хеширования.

Пример:
Создадим тестовую таблицу в соответствии с описанными выше спецификациями:

В нашем случае мы создали таблицу «oracleconraul», оставили возможность ее удаления, поскольку это тестовая среда, и указали, что должно пройти 16 дней, прежде чем мы сможем удалить данные из таблицы, это минимально возможное значение.

Вставляем тестовые значения.

Проверяем, что записи вставлены правильно:

При попытке удалить данные мы получаем сообщение о том, что в нашей таблице невозможно удалить данные.



ALTER для таблицы BLOCKCHAIN

В нашем примере мы могли бы выполнить drop для таблицы, которую мы создали, как мы увидим ниже, поскольку таблица была создана с предложением «NO DROP UNTIL 0 DAYS IDLE», что для тестовой среды может быть самым разумным.

Выполнение команды для нашей таблицы с текущими значениями:


В нашем случае, чтобы избежать удаления таблицы, мы выполняем следующую команду:

Выполняем проверки, чтобы убедиться, что все работает в соответствии с установленными требованиями. Попробуем удалить записи, которые не должны быть разрешены, вставим новые данные в таблицу, с чем у нас не должно быть никаких проблем, и в качестве окончательной проверки попытаемся удалить таблицу, что после alter не должно быть возможно.

Выполнения:

insert into raul.oracleconraul values(200,’RAUL’);
1 row created.
commit;


SQL> delete raul.oracleconraul where test_id=200;
delete raul.oracleconraul where test_id=200
*
ERROR at line 1:
ORA-05715: operation not allowed on the blockchain or immutable table

SQL> drop table raul.oracleconraul;
drop table raul.oracleconraul
*
ERROR at line 1:
ORA-05723: drop blockchain or immutable table ORACLECONRAUL not allowed

Чтобы убедиться, что все в порядке, мы можем запустить следующий запрос:
В нем мы можем определить, какие таблицы у нас созданы как «blockchain» tables и их характеристики.


В конечном итоге, начиная с версии 19.10, Oracle предлагает новую функциональность, которая позволяет внедрять блокчейн-приложения или предоставляет администратору дополнительный инструмент безопасности для предотвращения проблем с удалением или искажением аудитов в отношении некоторых «основных» таблиц, которые не могут быть изменены в базе данных. Перед применением этой функции очень важно продумать ее правильное использование, поскольку, как уже было указано, возможно, что таблица, которая изначально была задумана как не подлежащая удалению/изменению, впоследствии, в связи с развитием приложения, ресурсов и т. д., должна быть удалена/изменена, и выполнить это действие будет невозможно.

Tags:
Oracle ACE Associate