技術專欄

Oracle Database 23ai 新功能技術介紹- 系列(一)- Blockchain table

Oracle 甲骨文 企業軟體供應商
2024/09/20

Blockchain table 功能初始於 Oracle 21c 版本上發佈,隨後向前部署至 Oracle 19c 版本 (19.10),並在後續 Oracle 23ai 版本上進行了問題的修復與功能的增強。

Blockchain table 的主要用途是提供防篡改、僅能附加資料的表格 (Insert-Only)。 Blockchain table 中的每一筆資料行會透過加密雜湊 (hash) 的機制與前一筆資料行進行鏈結,因此可達到防篡改的機制。 如下圖所示,每一資料行都包含一個基於該行資料和鏈中前一行的雜湊值的加密雜湊值。

Blockchain table 與傳統的表格不同之處在於傳統表格可讓您進行修改或刪除資料,因此開發人員要使用稽核表和稽核追蹤等技術協助追蹤資料歷程。雖然這些方法可行,但開發人員需要自訂開發,且需要負擔責任以確保資料的正確性。 而 Blockchain table 只能進行資料的插入,所以可提供開發人員完整的資料歷程,且其資料不可變更並可進行驗證,這表示您可以信任資料的正確性。

Blockchain table 非常適合需要記錄完整變更歷程的資料,例如:

以下實際演示其基本功能:

drop table bct_v2;

 

create blockchain table bct_v2 (

  id            number,

  fruit         varchar2(20),

  quantity      number,

  created_date  date,

  constraint bct_pk primary key (id)

)

no drop until 16 days idle --此子句表示在 16 天內只要有新資料的插入,則該表格不能夠被刪除

no delete until 16 days after insert --此子句表示每一筆新增的資料行,在 16 天內不能夠被刪除

hashing using "SHA2_512" version "v2"; --使用雜湊演算法SHA2_512,並指定有具功能增強的 Blockchain table V2 版本。

SQL> insert into bct_v2 (id, fruit, quantity, created_date) values (1, 'apple', 20, sysdate);

 

SQL> commit;

SQL> update bct_v2 set quantity = 10 where id=1;

 

SQL Error: ORA-05715: operation not allowed on the blockchain or immutable table

SQL> delete from bct_v2 where id = 1;

 

SQL Error: ORA-05715: operation not allowed on the blockchain or immutable table

SQL> drop table bct_v2;

 

ORA-05723: dropping BCT_V2, which is a non-empty blockchain or immutable table, is not allowed

SQL> truncate table bct_v2;

 

ORA-05715: operation not allowed on the blockchain or immutable table

 

這裡說明在使用 blockchain table 時需要考慮的事項:

https://docs.oracle.com/en/database/oracle/oracle-database/23/admin/managing-tables.html#GUID-0DA3BECF-737A-4218-A486-11BA204C3966

https://docs.oracle.com/en/database/oracle/oracle-database/23/admin/managing-tables.html#GUID-B04E12A4-7BA5-4C05-A539-A62CDDA62EC3

以下為總結使用 Blockchain table 的優勢:

 

聯絡 我們