婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Oracle 區塊鏈表創建過程詳解

Oracle 區塊鏈表創建過程詳解

熱門標簽:西藏地圖標注改進點 地圖標注什么軟件好用 如何辦理400客服電話 外呼系統怎樣才能不封號 安陽手機自動外呼系統原理是什么 地圖標注專員入駐 地圖標注百度競價 神行者百貨商場地圖標注 外呼系統線路經常出問題嗎

大家好!我是只談技術不剪發的 Tony 老師。

Oracle 21c 增加了一個非常強大的新功能:原生的區塊鏈表(Blockchain Table)。Oracle 區塊鏈表是一個具有防篡改功能的表,只能插入數據,同時提供了表級和行級的保留期限。區塊鏈表中的所有行構成了一個數據鏈,每一行存儲了當前數據和前一個哈希值的哈希值。

Oracle 區塊鏈技術可以有效防范數據庫欺詐,利用區塊鏈的防篡改特性,用戶可以為金融交易、監管鏈、法定保全、托管服務、審計日志以及許多其他使用場景下的集中式總賬提供安全保護。

本文給大家一下如何創建和使用 Oracle 區塊鏈表,以及相關的注意事項。如果覺得文章有用,歡迎評論📝、點贊👍、推薦🎁

📝Oracle 區塊鏈表功能也可以在 Oracle 19.10 版本中使用,不過需要應用 patch 32431413 補丁,并且將 COMPATIBLE 參數設置為 19.10。從 Oracle 19.11 版本開始不再需要應用補丁。

創建區塊鏈表

我們可以使用 CREATE BLOCKCHAIN TABLE 命令創建區塊鏈表,同時可以指定三個選項。

其中,NO DROP 子句決定了什么時候允許刪除區塊鏈表,如果表中沒有任何數據的話可以被刪除。與初始版本的區塊鏈表不同,從 Oracle 19.11 和 Oracle 21.3 開始 NO DROP 子句也可以阻止通過 DROP USER … CASCADE 命令刪除區塊鏈表。

NO DROP [ UNTIL number DAYS IDLE ]

  • NO DROP,不允許刪除表。創建測試表時小心使用該選項。
  • NO DROP UNTIL number DAYS IDLE,不允許刪除表,直到指定天數之內都沒有插入新的數據行。測試時可以設置為 0 或者 1 天。

NO DELETE 子句決定了數據的保留期限,存在時間超過這個期限的數據才允許刪除。

NO DELETE { [ LOCKED ] | (UNTIL number DAYS AFTER INSERT [ LOCKED ]) }
  • NO DELETE,數據永久保留。雖然沒有指定 LOCKED 關鍵字,但并不意味著可以使用 ALTER TABLE 命令修改保留期限,因為保留期限只能增加,不能減少。
  • NO DELETE LOCKED,數據永久保留,和 NO DELETE 一樣。
  • NO DELETE UNTIL number DAYS AFTER INSERT,數據至少存在指定天數之后才能被刪除,可以使用 ALTER TABLE 命令增加保留期限。保留期限最少 16 天。
  • NO DELETE UNTIL number DAYS AFTER INSERT LOCKED,數據至少存在指定天數之后才能被刪除,不能使用 ALTER TABLE 命令增加保留期限。保留期限最少 16 天。

HASHING 子句用于指定區塊鏈哈希算法和數據格式,當前版本只能使用固定值,將來可能允許其他的設置。

HASHING USING sha2_512 VERSION v1

以下是一個創建區塊鏈表的完整示例:

--drop table bct_t1 purge;

create blockchain table bct_t1 (
  id            number,
  fruit         varchar2(20),
  quantity      number,
  created_date  date,
  constraint bct_t1_pk primary key (id)
)
no drop until 0 days idle
no delete until 16 days after insert
hashing using "SHA2_512" version "v1";

📝在學習區塊鏈表時,注意不要設置太長的保留期限,否則需要等待很長時間之后才能刪除測試表。

查詢 USER_TAB_COLS 視圖可以看到數據庫為我們增加了一些不可見的字段。

set linesize 120 pagesize 50
column column_name format a30
column data_type format a27
column hidden_column format a13

select internal_column_id,
       column_name,
       data_type,
       data_length,
       hidden_column
FROM   user_tab_cols       
WHERE  table_name = 'BCT_T1'
ORDER BY internal_column_id;

INTERNAL_COLUMN_ID COLUMN_NAME                    DATA_TYPE                   DATA_LENGTH HIDDEN_COLUMN
------------------ ------------------------------ --------------------------- ----------- -------------
                 1 ID                             NUMBER                               22 NO
                 2 FRUIT                          VARCHAR2                             25 NO
                 3 QUANTITY                       NUMBER                               22 NO
                 4 CREATED_DATE                   DATE                                  7 NO
                 5 ORABCTAB_INST_ID$              NUMBER                               22 YES
                 6 ORABCTAB_CHAIN_ID$             NUMBER                               22 YES
                 7 ORABCTAB_SEQ_NUM$              NUMBER                               22 YES
                 8 ORABCTAB_CREATION_TIME$        TIMESTAMP(6) WITH TIME ZONE          13 YES
                 9 ORABCTAB_USER_NUMBER$          NUMBER                               22 YES
                10 ORABCTAB_HASH$                 RAW                                2000 YES
                11 ORABCTAB_SIGNATURE$            RAW                                2000 YES
                12 ORABCTAB_SIGNATURE_ALG$        NUMBER                               22 YES
                13 ORABCTAB_SIGNATURE_CERT$       RAW                                  16 YES
                14 ORABCTAB_SPARE$                RAW                                2000 YES

14 rows selected.

{CDB|DBA|ALL|USER}_BLOCKCHAIN_TABLES 視圖包括了區塊鏈表的相關信息,它們是基于 SYS.BLOCKCHAIN_TABLE$ 系統表的視圖。

column row_retention format a13
column row_retention_locked format a20
column table_inactivity_retention format a26
column hash_algorithm format a14

SELECT row_retention,
       row_retention_locked, 
       table_inactivity_retention,
       hash_algorithm  
FROM   user_blockchain_tables 
WHERE  table_name = 'BCT_T1';

ROW_RETENTION ROW_RETENTION_LOCKED TABLE_INACTIVITY_RETENTION HASH_ALGORITHM
------------- -------------------- -------------------------- --------------
           16 NO                                            0 SHA2_512

修改區塊鏈表

官方文檔告訴我們只要不是減少保留期限,就可以使用 ALTER TABLE 命令修改 NO DROP 子句。不過目前如果我們將 NO DROP UNTIL 0 DAYS IDLE 修改為更長的期限,數據庫將會返回錯誤。

alter table bct_t1 no drop until 100 days idle;

Error report -
ORA-05732: retention value cannot be lowered

以上語法沒有問題,可能是系統的一個 bug。如果創建表時使用的是 NO DROP UNTIL 1 DAYS IDLE 獲取其他期限就沒有問題。

無論當前的保留期限是多少,如果將 NO DROP 修改為永久保留的話都會返回 ORA-00600 錯誤:

alter table bct_t1 no drop;

Error starting at line : 1 in command -
alter table bct_t1 no drop
Error report -
ORA-00600: internal error code, arguments: [atbbctable_1], [0], [], [], [], [], [], [], [], [], [], []

這可能是一個問題,因為大多數人可能想從保留期限為 0 天開始嘗試,然后再增加保留期限。從保留期限為 1 天開始可能會導致一定的風險,因為想要刪除測試表的唯一辦法就是刪除整個模式。

如果沒有指定 LOCKED 選項,我們可以使用 ALTER TABLE 命令修改 NO DELETE 子句,當然只能增加保留期限。我們的測試表目前的數據保留期限為 16 天,下面我們將它修改為 32 天:

-- 增加到 32 天
alter table bct_t1 no delete until 32 days after insert;

Table BCT_T1 altered.


-- 減少到 16 天時返回錯誤
alter table bct_t1 no delete until 16 days after insert;

Error report -
ORA-05732: retention value cannot be lowered

當前版本中,如果嘗試將數據保留期限修改為 NO DELETE(增加保留期限)將會導致 ORA-00600 錯誤,應該也是一個 bug。

alter table bct_t1 no delete;

Error report -
ORA-00600: internal error code, arguments: [atbbctable_1], [0], [], [], [], [], [], [], [], [], [], []

阻止 DML 和 DDL 語句

區塊鏈表只支持數據的插入,所有導致數據修改或刪除的 DML 和 DDL 語句都會返回錯誤。例如:

-- INSERT
insert into bct_t1 (id, fruit, quantity, created_date ) values (1, 'apple', 20, sysdate);

1 row inserted.

SQL> commit;

Commit complete.


-- UPDATE
update bct_t1 set quantity = 10 where id = 1;

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


-- DELETE
delete from bct_t1 where id = 1;

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

導致數據變化的 DDL 語句同樣會返回錯誤,以下是一個 TRUNCATE 語句示例:

truncate table bct_t1;

Error report -
ORA-05715: operation not allowed on the blockchain table

我們可以擴展已有字段的長度,但是不能增加字段或者刪除已有字段:

-- 修改字段長度
alter table bct_t1 modify (fruit varchar2(25));

Table BCT_T1 altered.


-- 增加字段
alter table bct_t1 add (additional_info varchar2(50));

Error report -
ORA-05715: operation not allowed on the blockchain table


-- 刪除字段
alter table bct_t1 drop column quantity;

Error report -
ORA-05715: operation not allowed on the blockchain table

DBMS_BLOCKCHAIN_TABLE

系統程序包DBMS_BLOCKCHAIN_TABLE 可以用于維護區塊鏈表。

其中,存儲過程 DELETE_EXPIRED_ROWS 可以用于刪除超過保留期限的數據行,這些數據無法使用正常的 DELETE 語句進行刪除。

set serveroutput on
declare
  l_rows  number;
begin
  dbms_blockchain_table.delete_expired_rows(
    schema_name            => 'admin',
    table_name             => 'bct_t1',
    before_timestamp       => null,
    number_of_rows_deleted => l_rows);

  dbms_output.put_line('Rows Deleted=' || l_rows);
end;
/
Rows Deleted=0

PL/SQL procedure successfully completed.

另外,我們也可以增加一個日期限制,只有超過保留期限并且滿足日期要求的數據行才會被刪除。

set serveroutput on
declare
  l_rows  number;
begin
  dbms_blockchain_table.delete_expired_rows(
    schema_name            => 'testuser1',
    table_name             => 'it_t1',
    before_timestamp       => systimestamp - 60,
    number_of_rows_deleted => l_rows);

  dbms_output.put_line('Rows Deleted=' || l_rows);
end;
/
Rows Deleted=0

PL/SQL procedure successfully completed.

存儲過程 VERIFY_ROWS 可以用于檢查數據行擁有一致性哈希值,以及用戶簽名(如果使用了的話)。

set serveroutput on
declare
  l_rows      number;
  l_verified  number;
begin
  select count(*)
  into   l_rows
  from   admin.bct_t1;

  dbms_blockchain_table.verify_rows(
    schema_name             => 'admin',
    table_name              => 'bct_t1',
    number_of_rows_verified => l_verified);

  dbms_output.put_line('Rows=' || l_rows || '  Verified Rows=' || l_verified);
end;
/
Rows=1  Verified Rows=1

PL/SQL procedure successfully completed.

注意事項

在使用區塊鏈表之前需要考慮以下問題:

  • 目前區塊鏈表的功能還存在一些問題,某些功能并不完全像官方文檔描述。
  • 區塊鏈表比普通表的性能差一些,因為它需要執行更多的操作,例如計算哈希值。
  • 區塊鏈表可以像其他表一樣支持索引和分區。
  • 區塊鏈表的導入導出還存在一些限制。
  • 區塊鏈表的使用限制。
  • Oracle 推薦將每個區塊鏈的當前哈希算法和相應的序列號存儲在數據庫之外,這樣就可以將存儲的值和表中的數據進行比較,提供額外的安全保護。
  • 在 data guard 配置中,Oracle 推薦使用最大保護模式或者最大高可用性模式同步區塊鏈表。
  • DBMS_USER_CERTS 程序包中的 ADD_CERTIFICATE 存儲過程可以用于增加用戶證書,然后使用 DBMS_BLOCKCHAIN_TABLE 程序包中的 SIGN_ROW 存儲過程將其應用到已有的數據行。

以上就是Oracle 一個集中式的區塊鏈平臺的詳細內容,更多關于Oracle區塊鏈平臺的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • Oracle多表查詢中間表的創建實例教程
  • Oracle數據庫scott用戶創建view視圖權限的操作方法
  • Navicat Premium中Oracle創建主鍵自增的方法
  • Navicat for oracle創建數據庫的方法
  • Oracle數據庫創建存儲過程的示例詳解
  • 通過PLSQL Developer創建Database link,DBMS_Job,Procedure,實現Oracle跨庫傳輸數據的方法(推薦)
  • oracle創建dblink方法示例
  • Oracle 給rac創建單實例dg并做主從切換功能
  • Oracle創建設置查詢權限用戶的方法
  • Oracle創建新undo表空間最佳實踐(包含段檢查)
  • 使用sqlplus命令行工具為oracle創建用戶和表空間
  • Oracle創建只讀賬號的詳細步驟

標簽:雞西 酒泉 衡水 貴港 AXB 萍鄉 張掖 阜陽

巨人網絡通訊聲明:本文標題《Oracle 區塊鏈表創建過程詳解》,本文關鍵詞  Oracle,區塊,鏈表,創建,過程,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Oracle 區塊鏈表創建過程詳解》相關的同類信息!
  • 本頁收集關于Oracle 區塊鏈表創建過程詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲精品乱码久久久久久日本蜜臀| 狠狠色狠狠色合久久伊人| 午夜伊人狠狠久久| 欧美视频三区在线播放| 国产精品天干天干在线综合| 日韩电影在线免费观看| 欧美人妖巨大在线| 亚洲自拍偷拍av| 欧美日韩一区视频| 亚洲高清免费一级二级三级| 色欧美88888久久久久久影院| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 国产成人a级片| 中文字幕一区二区三| 欧美一级片在线| 中文字幕欧美激情| 国内久久婷婷综合| 亚洲主播在线播放| 亚洲视频一区在线| 亚洲乱码国产乱码精品精98午夜 | 黄色日韩网站视频| 国产精品一区二区三区四区| 欧美日韩一级黄| 色综合一个色综合亚洲| 亚洲成av人**亚洲成av**| 午夜精品成人在线| 99久久精品免费看| 亚洲在线视频一区| 欧美日韩精品系列| 欧美一区二区三区四区五区 | 午夜一区二区三区在线观看| 天天色天天爱天天射综合| 麻豆精品视频在线| 成人美女视频在线观看| 色天使色偷偷av一区二区| 日韩女优视频免费观看| 国产精品视频一二三区| 亚洲资源在线观看| 国产成人精品免费| 在线免费亚洲电影| 久久久久久久久久久黄色| 亚洲六月丁香色婷婷综合久久 | 国产成人aaaa| 欧美午夜精品免费| 中文字幕 久热精品 视频在线 | 天堂一区二区在线| 欧美午夜电影网| 精品国精品国产尤物美女| 亚洲综合丁香婷婷六月香| 国产精品一区免费在线观看| 欧美巨大另类极品videosbest | 国产亚洲一区二区三区在线观看| 亚洲黄色录像片| 91影院在线免费观看| 国产欧美综合在线| 国产麻豆成人精品| 久久免费偷拍视频| 国产乱码精品一品二品| 日韩免费在线观看| 精品亚洲国产成人av制服丝袜| 欧美日韩国产免费| 五月天欧美精品| 欧美一区二区三区喷汁尤物| 日本欧美在线看| 欧美精品一区二区三区视频| 精品一区二区三区不卡| 精品美女在线观看| 国产精品一区二区免费不卡 | 日韩av一级电影| 欧美日韩综合在线| 人禽交欧美网站| 久久综合久久99| 国产精品77777| 国产精品国产三级国产普通话蜜臀| 成人av手机在线观看| 亚洲综合免费观看高清完整版| 欧美日韩www| 国产一区二区三区在线观看免费 | 狠狠狠色丁香婷婷综合激情| 欧美日韩亚洲丝袜制服| 亚洲午夜av在线| 欧美大片日本大片免费观看| 不卡的av中国片| 亚洲二区视频在线| 在线视频国内自拍亚洲视频| 国产一区二区调教| 免费av网站大全久久| 中文字幕日韩一区二区| 日韩精品中文字幕一区二区三区| 蜜桃av一区二区在线观看| 亚洲精品国产无套在线观| 精品国产免费一区二区三区四区 | 在线播放一区二区三区| 成人免费毛片片v| 国产资源在线一区| 国内成人自拍视频| 九色|91porny| 久久99精品久久久久久久久久久久| 樱桃视频在线观看一区| 国产精品初高中害羞小美女文| 精品国产乱码久久久久久夜甘婷婷| 欧美日韩aaaaaa| 欧美一区二区视频在线观看 | 美国av一区二区| 美女视频免费一区| 秋霞影院一区二区| 日本欧美一区二区三区| 亚洲国产人成综合网站| 亚洲国产精品久久不卡毛片| 亚洲宅男天堂在线观看无病毒| 亚洲色图欧美在线| 亚洲精品成a人| 日韩**一区毛片| 国产精品亚洲一区二区三区在线 | 91色视频在线| 欧美视频在线不卡| 日韩三级中文字幕| 精品国产1区2区3区| 成人福利视频网站| 99久久综合国产精品| 91极品美女在线| 欧美一级电影网站| 中文无字幕一区二区三区| 有坂深雪av一区二区精品| 亚洲aaa精品| 国产精品主播直播| 欧美综合欧美视频| 久久久久88色偷偷免费| 一区二区三区免费观看| 精品一区二区三区欧美| 色婷婷一区二区三区四区| 久久免费精品国产久精品久久久久| 亚洲欧美另类在线| 国产成+人+日韩+欧美+亚洲| 欧美亚洲高清一区二区三区不卡| 亚洲精品在线免费观看视频| 亚洲不卡一区二区三区| 东方欧美亚洲色图在线| 日韩免费性生活视频播放| 一区精品在线播放| 国产91精品一区二区| 欧美片在线播放| 国产日本亚洲高清| 国产福利精品一区二区| 欧美片在线播放| 婷婷亚洲久悠悠色悠在线播放| 色视频成人在线观看免| 中文字幕第一区| 成人免费高清视频在线观看| 久久久精品黄色| 国产91丝袜在线观看| 国产日韩欧美a| 国产大陆亚洲精品国产| 国产精品拍天天在线| 国产91在线|亚洲| 中文字幕一区二区三区色视频| 成人毛片视频在线观看| 亚洲视频精选在线| 3atv在线一区二区三区| 老司机免费视频一区二区三区| 精品久久人人做人人爽| 国产伦精品一区二区三区免费迷 | 国内精品伊人久久久久影院对白| 777色狠狠一区二区三区| 日韩精品一区第一页| 精品国产乱码久久久久久久久| 国产在线精品一区二区| 国产成人日日夜夜| 亚洲国产日韩精品| 久久九九影视网| 在线观看免费视频综合| 免费看黄色91| 1区2区3区国产精品| 日韩欧美亚洲国产另类| 播五月开心婷婷综合| 奇米影视7777精品一区二区| 中国av一区二区三区| 日韩小视频在线观看专区| 成人99免费视频| 伦理电影国产精品| 亚洲色图视频网站| 亚洲精品一区二区三区精华液| 91免费国产在线| 成人午夜视频在线| 久久er99热精品一区二区| 性做久久久久久久久| 亚洲男人天堂av| 亚洲精品午夜久久久| 中文字幕一区二区三区四区不卡| 国产视频亚洲色图| 国产欧美视频一区二区三区| 日韩欧美在线网站| 久久中文字幕电影| 国产亚洲欧美在线| 国产欧美日韩另类视频免费观看| 26uuu精品一区二区| 亚洲国产激情av| 亚洲人吸女人奶水| 亚洲成人手机在线| 日本怡春院一区二区|