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