建立豐富歷史記錄資料庫
本主題包含的資訊可協助您指定 Oracle 資料庫連線,並選擇建立豐富歷史記錄資料庫的通道。您可以使用此資料庫來製作分類帳活動的分析報表和視覺化。
什麼是豐富的歷史資料庫?
這個豐富的歷史記錄資料庫是 Oracle Blockchain Platform 外部資料庫,其中包含您所選通道上區塊鏈分類帳交易的相關資料。您可以使用此資料庫來建立分類帳活動的分析報表和視覺化。
例如,使用豐富的歷史記錄資料庫,您可以建立分析來瞭解銀行中所有客戶在某個時間間隔內的平均餘額,或將商品從批發商運送到零售商所需的時間。
在內部,Oracle Blockchain Platform 會使用 Hyperledger Fabric 歷史記錄資料庫來管理分類帳,並在主控台中將分類帳交易資訊呈現給您。只有鏈碼可以存取此歷史記錄資料庫,而且您無法將 Hyperledger Fabric 歷史記錄資料庫顯示為分析查詢的資料來源。這個豐富的歷史記錄資料庫使用外部 Oracle 資料庫,並包含許多關於在通道上確認之每個交易的詳細資訊。此層次的資料收集可讓豐富的歷史資料庫成為絕佳的分析資料來源。如需豐富歷史記錄資料庫收集之資料的相關資訊,請參閱 Rich History Database Tables and Columns 。
您只能使用 Oracle 資料庫 (例如 Oracle Autonomous Data Warehouse 或搭配 Oracle Cloud Infrastructure 的 Oracle Database Classic Cloud Service) 來建立豐富的歷史記錄資料庫。您可以使用 Oracle Blockchain Platform 主控台,提供存取和寫入 Oracle 資料庫的連線字串和證明資料。請注意,您提供的認證是資料庫的認證,而 Oracle Blockchain Platform 則無法管理。建立連線之後,您可以選取要包含在豐富歷史記錄資料庫中的分類帳資料通道。請參閱啟用及設定 Rich History 資料庫。
您可以使用標準表格或區塊鏈表格來儲存豐富的歷史記錄資料庫。區塊鏈表格是防竄改的僅附加表格,可作為安全分類帳使用,同時也可用於其他表格的交易與查詢。如需詳細資訊,請參閱 Oracle Blockchain 表格。
您可以使用任何分析工具 (例如 Oracle Analytics Cloud 或 Oracle Data Visualization Cloud Service) 來存取豐富的歷史記錄資料庫,並建立分析報表或資料視覺化。
建立 Oracle Database Classic Cloud Service 連線字串
您必須從 Oracle Cloud Infrastructure 上部署的 Oracle Database Classic Cloud Service 收集資訊,以建立豐富歷史記錄資料庫所需的連線字串。您也必須啟用透過連接埠 1521 存取資料庫的功能。
尋找並記錄 Oracle Database Classic Cloud Service 資訊
您可以從 Oracle Cloud Infrastructure 主控台取得建立 Oracle Database Classic Cloud Service 連線所需的資訊。
-
從「基礎架構主控台」中,按一下左上角的導覽功能表,然後按一下資料庫。
-
找出您要連線的資料庫並記錄公用 IP 位址。
-
按一下您要連線的資料庫名稱,並在下列欄位中記錄值:
-
資料庫唯一名稱
-
主機網域名稱
-
連接埠
-
-
尋找具備從此資料庫讀取權限之資料庫使用者的使用者名稱和密碼,並記下這些資訊。例如,使用者 SYSTEM。
透過連接埠 1521 啟用資料庫存取
新增傳入規則,讓豐富歷史記錄資料庫能夠透過連接埠 1521 存取資料庫。
-
在 Oracle Cloud Infrastructure 首頁中,按一下導覽圖示,然後在資料庫下按一下資料庫系統。
-
按一下您要連線的資料庫。
-
按一下虛擬雲端網路連結。
-
瀏覽至適當的子網路,然後在安全清單下,按一下 < 目標資料庫 > 的預設安全清單。
「安全清單」頁面便會顯示。
-
按一下編輯所有規則。
-
新增傳入規則,以允許來自公用網際網路的任何傳入流量在此資料庫節點上連線連接埠 1521,設定如下:
-
來源 CIDR :0.0.0.0/0
-
IP 協定:TCP
-
SOURCE PORT RANGE :全部
-
目標連接埠範圍:1521
-
允許:以下連接埠的 TCP 流量:1521
-
建立連線字串
啟用 Oracle 資料庫的存取之後,請使用您收集的資訊,在設定豐富歷史記錄對話方塊中建立連線字串。
使用下列語法建構連線字串: <publicIP> : <portNumber> / <database unique name>。<host domain name>
例如,192.0.2.0:1521/CustDB_iad1vm.sub05031027070。customervcnwith.oraclevcn.example.com
確定資料庫使用者具有正確的權限
grant select on v_$session to <user>;
grant alter system to <user>;
此外,如果豐富的歷史資料庫使用 Oracle Autonomous Data Warehouse ,則資料庫使用者必須具有下列權限:grant unlimited tablespace to <user>;
如果資料庫使用者尚未擁有這些權限,則必須由系統管理員授予這些權限。如果沒有這些權限,Oracle Blockchain Platform 可以複製到資料庫,但無法從導致資料庫階段作業受損的情況下復原,這可防止豐富的歷史記錄在一段期間內追趕最近的交易。如果沒有 Oracle Autonomous Data Warehouse 的這些權限,就不會儲存豐富歷史記錄資料。
啟用並設定豐富歷史記錄資料庫
使用主控台來提供資料庫連線資訊,並選取具有您要寫入豐富歷史記錄資料庫之鏈碼分類帳資料的通道。預設通道無法將資料寫入 Rich History 資料庫。
請注意下列資訊:
-
每個區塊鏈網路成員都會設定自己的豐富歷史記錄資料庫。
-
您必須使用 Oracle 資料庫。不支援其他資料庫類型。
-
寫入 Rich History 資料庫的每個通道,都必須至少包含一個對等節點。
- 輸入您要用來儲存豐富歷史記錄資訊的 Oracle 資料庫連線和證明資料資訊。
- 在包含您要寫入豐富歷史記錄資料庫之鏈碼資料的通道上啟用豐富歷史記錄。
修改豐富歷史記錄資料庫的連線
您可以變更豐富歷史記錄資料庫的連線資訊。
設定將資料寫入 Rich History 資料庫的通道
您可以讓通道將鏈碼分類帳資料寫入 RTF 歷史記錄資料庫,也可以停止將資料寫入 RTF 歷史記錄資料庫的通道。您也可以設定個別通道,使用與全域設定不同的豐富歷史記錄資料庫組態。
在資料庫中建立通道的表格之後,即使您按一下儲存之後,修改通道的豐富歷史記錄組態也沒有作用,除非您變更使用者名稱和密碼或連線字串。如果您變更使用者名稱與密碼,會在同一個資料庫中建立表格。如果您變更連線字串和證明資料,則會設定不同的資料庫,並在下次相關的交易或分類帳變更之後建立表格。您無法將 RTF 歷史記錄資料庫從標準表格變更為區塊鏈表格,除非您也變更證明資料或連線字串,否則無法變更保留時間。
限制豐富歷史記錄的存取權
您可以使用通道原則和存取控制清單 (ACL) 來限制可設定豐富歷史記錄資料庫及擷取豐富歷史記錄狀態或組態資訊的組織。
豐富歷史記錄資料庫表格和資料欄
Rich History 資料庫包含每個通道的三個表格:歷史記錄、狀態以及最新的高度。當您建立鏈碼分類帳交易的相關分析時,將會查詢歷史記錄與狀態表格。如果您選擇在啟用 RTF 歷史記錄時選取任何交易明細,將會建立含有交易明細的其他表格。
歷史記錄表格
<instanceName><channelName> _hist 表格包含分類帳歷史記錄。此表格中的資料會告訴您鏈碼 ID、使用的關鍵碼、異動是否有效、指派給關鍵碼的值等等。
請注意,值和 valueJson 資料欄是以互斥的方式使用。亦即,索引鍵值為有效的 json 時,該值會設為 valueJson 資料欄。否則,該值會在值欄中設定。valueJson 資料欄在資料庫中設為 json 資料欄,這表示使用者可以使用一般 Oracle JSON 特定擴充功能來查詢該資料欄。
若設定,專用資料也會儲存在此表格中。針對私人資料,鏈碼 ID 使用下列格式: <chaincodeName> $$ <collectionName> 。
欄 | 資料類型 |
---|---|
chaincodeId | VARCHAR2 (256) |
金鑰 | VARCHAR2 (1024) |
txnIsValid | 數字 (1) |
value | VARCHAR2 (4000) |
valueJson | CLOB |
blockNo | 數字不是空值 |
txnNo 編號 | NOT NULL |
txnId | VARCHAR2 (128) |
txnTimestamp | TIMESTAMP |
txnIsDelete | 數字 (1) |
狀態表格
<instanceName><channelName> _state 表格包含從狀態資料庫複製的資料值。當您建立分類帳狀態的相關分析時,將會查詢狀態表格。
請注意,值和 valueJson 資料欄是以互斥的方式使用。亦即,索引鍵值為有效的 json 時,該值會設為 valueJson 資料欄。否則,該值會在值欄中設定。valueJson 資料欄在資料庫中設為 json 資料欄,這表示使用者可以使用一般 Oracle JSON 特定擴充功能來查詢該資料欄。
欄 | 資料類型 |
---|---|
chaincodeId | VARCHAR2 (256) |
索引鍵 | VARCHAR2 (1024) |
value | VARCHAR2 (4000) |
valueJson | CLOB |
blockNo | NUMBER |
txnNo | NUMBER |
最新高度表格
<instanceName><channelName> _last 表格由 Oracle Blockchain Platform 內部使用,以追蹤 Rich History 資料庫中記錄的區塊高度。它會判斷 RTF 歷史記錄資料庫的目前程度,以及是否所有鏈碼交易都記錄在 RTF 歷史記錄資料庫中。您無法查詢此資料庫以進行分析。
交易詳細資訊表格
<instanceName><channelName> _more 表格包含與已確認交易相關的屬性。啟用 RTF 歷史記錄資料庫時,您可以選取要在此表格中記錄的這些屬性。交易詳細資訊表格只會擷取背書交易的相關資訊,不會擷取組態交易或任何其他類型的 Hyperledger Fabric 交易。
欄 | 資料類型 |
---|---|
鏈碼 ID | VARCHAR2 (256) |
區塊號碼 | NUMBER |
繁體中文 | NUMBER |
交易平台 | VARCHAR2(128) |
交易時間戳記 | TIMESTAMP |
提交者 CN | VARCHAR2(512) |
提交者組織 | VARCHAR2(512) |
提交者 | VARCHAR2(512) |
鏈碼型態 | VARCHAR2(32) |
驗證代碼名稱 | VARCHAR2(32) |
印記簽署 | CLOB |
輸入 | CLOB |
事件 | CLOB |
回應狀態 | 數字 (0) |
RESPONSEPAYLOAD | VARCHAR2(1024) |
RWSET | CLOB |
招商加盟 | VARCHAR2(512) |
BLOCKCREATORORG | VARCHAR2(512) |
BLOCKCREATOROU | VARCHAR2(512) |
組態區塊編號 | 數字 (0) |
CONFIGBLOCKCREATORCN | VARCHAR2(512) |
CONFIGBLOCKCREATORORG | VARCHAR2(512) |
CONFIGBLOCKCREATOROU | VARCHAR2(512) |
附註:
- 組織 (ORG) 和組織單位 (OU) 是由識別憑證驅動,這表示它們可以指派給多個值。它們會被擷取為表格值中以逗點分隔的清單。
- 對於識別,表格只包含憑證之「主旨」部分的資訊,不包含「發行者」部分的資訊。
RWSET
資料欄包含背書期間執行之所有鏈碼 (在相同分類帳中) 的作業。因此,您通常會看到 lscc 讀取作業以及實際的鏈碼命名空間作業。