建立 Rich History 資料庫
本主題包含的資訊可協助您指定 Oracle 資料庫連線,並選擇建立 Rich History 資料庫的通道。您將使用此資料庫對分類帳的活動進行分析報表和視覺化。
豐富的歷史資料庫是什麼?
豐富的歷史記錄資料庫是 Oracle Blockchain Platform 外部,並包含區塊鏈分類帳在您所選管道上的交易相關資料。您可以使用此資料庫來建立分類帳活動的分析報表和視覺化。
例如,使用豐富的歷史記錄資料庫,您可以建立分析來瞭解銀行中在一段時間間隔內所有客戶的平均餘額,或將商品從批發商出貨給零售商所花費的時間。
在內部,Oracle Blockchain Platform 使用 Hyperledger Fabric 歷史記錄資料庫來管理分類帳,並在主控台中向您呈現分類帳交易資訊。只有鏈碼可以存取此歷史記錄資料庫,且您無法將 Hyperledger Fabric 歷史記錄資料庫顯示為分析查詢的資料來源。豐富的歷史記錄資料庫使用外部 Oracle 資料庫,而且包含許多在通道上確認之每個交易的詳細資訊。此層次的資料收集使豐富的歷程資料庫成為分析的絕佳資料來源。如需豐富歷史記錄資料庫所收集資料的相關資訊,請參閱 Rich History 資料庫表格和資料欄。
您只能使用 Oracle 資料庫 (例如 Oracle Autonomous Data Warehouse 或搭配 Oracle Cloud Infrastructure 的 Oracle Database Classic Cloud Service) 來建立豐富的歷史記錄資料庫。您可以使用 Oracle Blockchain Platform 主控台來提供存取和寫入 Oracle 資料庫的連線字串和證明資料。請注意,您提供的證明資料是資料庫的證明資料,而 Oracle Blockchain Platform 則不會管理這些證明資料。建立連線之後,您將選取包含要包含在 Rich History 資料庫中之分類帳資料的管道。請參閱啟用和設定 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 連線所需的資訊。
-
從「基礎架構主控台」中,按一下左上角的導覽功能表,然後按一下資料庫。
-
找到您要連線的資料庫,並記錄 Public IP 位址。
-
按一下您要連線的資料庫名稱,並在這些欄位中記錄值:
-
資料庫唯一名稱
-
主機網域名稱
-
連接埠
-
-
尋找具有從此資料庫讀取之權限的資料庫使用者的使用者名稱和密碼,並記下這些資訊。例如使用者 SYSTEM。
啟用透過連接埠 1521 進行資料庫存取
新增傳入規則,讓豐富的歷史記錄資料庫能夠透過連接埠 1521 存取資料庫。
-
在 Oracle Cloud Infrastructure 首頁中,按一下導覽圖示,然後在資料庫底下按一下資料庫系統。
-
按一下您要連線的資料庫。
-
按一下虛擬雲端網路連結。
-
瀏覽至適當的子網路,然後在安全清單下,按一下 < 目標資料庫 > 的預設安全清單。
「安全清單」頁面便會顯示。
-
按一下編輯所有規則 (Edit All Rules) 。
-
新增傳入規則,以允許來自公用網際網路的任何傳入流量透過下列設定值連線此資料庫節點上的連接埠 1521:
-
來源 CIDR :0.0.0.0/0
-
IP 協定:TCP
-
SOURCE PORT RANGE :全部
-
目的地連接埠範圍:1521
-
允許:以下連接埠的 TCP 流量:1521
-
建立連線字串
啟用 Oracle 資料庫的存取之後,請使用您收集的資訊,在設定 Rich History 對話方塊中建立連線字串。
使用下列語法建構連線字串: <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 資料庫
使用主控台提供資料庫連線資訊,並選取具有您要寫入豐富歷史記錄資料庫之鏈碼分類帳資料的通道。依預設,無法將資料寫入 RTF 歷史記錄資料庫。
請注意下列資訊:
-
每個區塊鏈網路成員都會設定自己的豐富歷史記錄資料庫。
-
您必須使用 Oracle 資料庫。不支援其他資料庫類型。
-
寫入 Rich History 資料庫的每個通道至少必須包含一個對等節點。
- 輸入您要用來儲存豐富歷史記錄資訊的 Oracle 資料庫之連線和證明資料資訊。
- 在包含您要寫入豐富歷史記錄資料庫之鏈碼資料的通道上啟用豐富的歷史記錄。
修改 Rich History 資料庫的連線
您可以變更 Rich History 資料庫的連線資訊。
設定將資料寫入 Rich History 資料庫的通道
您可以讓通路將鏈碼分類帳資料寫入豐富的歷史記錄資料庫,也可以停止通路將資料寫入豐富的歷史記錄資料庫。您也可以將個別通道設定為使用與全域設定不同的 Rich History 資料庫組態。
在資料庫中建立通道的表格之後,即使您按一下儲存,修改通道的 Rich History 組態也不會有任何作用,除非您變更使用者名稱和密碼或連線字串。如果您變更使用者名稱與密碼,便會在相同的資料庫中建立表格。如果您變更連線字串與證明資料,則會設定不同的資料庫,並在下一個相關交易或分類帳變更之後建立表格。您無法將豐富的歷史記錄資料庫從標準表格變更為區塊鏈表格,而且除非您也變更證明資料或連線字串,否則無法變更保留時間。
限制 Rich History 的存取
您可以使用通道原則和存取控制清單 (ACL),限制可設定豐富歷史記錄資料庫及擷取豐富歷史記錄狀態或組態資訊的組織。
豐富歷史記錄資料庫表格和資料欄
豐富的歷史記錄資料庫包含每個通道的三個表格:歷史記錄、狀態以及最新高度。當您建立鏈碼分類帳交易的分析時,將會查詢歷史記錄與狀態表格。如果您在啟用 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 資料庫的目前方式,以及所有鏈碼交易是否都記錄在 Rich History 資料庫中。您無法查詢此資料庫進行分析。
異動明細表格
<instanceName><channelName> _more 表格包含與確認的交易相關的屬性。啟用 Rich History 資料庫時,您可以選取要在此表格中記錄哪些這些屬性。交易詳細資訊表格只會擷取關於背書交易的資訊,不會擷取組態交易或任何其他種類的 Hyperledger Fabric 交易。
欄 | 資料類型 |
---|---|
鏈碼 ID | VARCHAR2 (256) |
區塊號碼 | NUMBER |
交易平台 | NUMBER |
交易平台 | VARCHAR2(128) |
交易時間戳記 | TIMESTAMP |
提交者 | VARCHAR2(512) |
提交者組織 | VARCHAR2(512) |
提交者 | VARCHAR2(512) |
鏈結類型 | VARCHAR2(32) |
驗證代碼名稱 | VARCHAR2(32) |
背書 | CLOB |
輸入 | CLOB |
事件 | CLOB |
回應狀態 | 數目 (0) |
RESPONSEPAYLOAD | VARCHAR2(1024) |
RWSET | CLOB |
招商加盟 | VARCHAR2(512) |
布拉瓦海岸 | VARCHAR2(512) |
區塊建立者 | VARCHAR2(512) |
組態區塊編號 | 數目 (0) |
組態區塊建立者 | VARCHAR2(512) |
CONFIGBLOCKCREATORORG | VARCHAR2(512) |
組態區塊建立者 | VARCHAR2(512) |
附註:
- 組織 (ORG) 和組織單位 (OU) 是由識別憑證驅動,這表示它們可以指派給多個值。它們在表格值中會被擷取為以逗點分隔的清單。
- 為了識別,表格僅包含與憑證的「主旨」部分有關的資訊,而非「發照者」。
RWSET
資料欄包含背書期間執行之所有鏈碼 (在相同的分類帳中) 的作業。因此,您通常會看到 lscc 讀取作業和實際的鏈碼命名空間作業。