建立豐富歷史記錄資料庫

本主題包含的資訊可協助您指定 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 InfrastructureOracle Database Classic Cloud Service) 來建立豐富的歷史記錄資料庫。您可以使用 Oracle Blockchain Platform 主控台,提供存取和寫入 Oracle 資料庫的連線字串和證明資料。請注意,您提供的認證是資料庫的認證,而 Oracle Blockchain Platform 則無法管理。建立連線之後,您可以選取要包含在豐富歷史記錄資料庫中的分類帳資料通道。請參閱啟用及設定 Rich History 資料庫

您可以使用標準表格或區塊鏈表格來儲存豐富的歷史記錄資料庫。區塊鏈表格是防竄改的僅附加表格,可作為安全分類帳使用,同時也可用於其他表格的交易與查詢。如需詳細資訊,請參閱 Oracle Blockchain 表格

您可以使用任何分析工具 (例如 Oracle Analytics CloudOracle 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 連線所需的資訊。

  1. 從「基礎架構主控台」中,按一下左上角的導覽功能表,然後按一下資料庫

  2. 找出您要連線的資料庫並記錄公用 IP 位址。

  3. 按一下您要連線的資料庫名稱,並在下列欄位中記錄值:

    • 資料庫唯一名稱

    • 主機網域名稱

    • 連接埠

  4. 尋找具備從此資料庫讀取權限之資料庫使用者的使用者名稱和密碼,並記下這些資訊。例如,使用者 SYSTEM。

透過連接埠 1521 啟用資料庫存取

新增傳入規則,讓豐富歷史記錄資料庫能夠透過連接埠 1521 存取資料庫。

  1. Oracle Cloud Infrastructure 首頁中,按一下導覽圖示,然後在資料庫下按一下資料庫系統

  2. 按一下您要連線的資料庫。

  3. 按一下虛擬雲端網路連結。

  4. 瀏覽至適當的子網路,然後在安全清單下,按一下 < 目標資料庫 > 的預設安全清單

    「安全清單」頁面便會顯示。

  5. 按一下編輯所有規則

  6. 新增傳入規則,以允許來自公用網際網路的任何傳入流量在此資料庫節點上連線連接埠 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

確定資料庫使用者具有正確的權限

為了讓豐富的歷史記錄功能能夠管理其資料庫階段作業以及從暫時資料庫或網路停止工作時間復原,請確定在 Oracle Blockchain Platform 註冊的資料庫使用者具有下列兩項權限:
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 資料庫的每個通道,都必須至少包含一個對等節點。

  1. 輸入您要用來儲存豐富歷史記錄資訊的 Oracle 資料庫連線和證明資料資訊。
    1. 移至主控台並按一下選項按鈕,然後按一下設定 Rich History 。此按鈕位於列上方,其中包含您用來瀏覽至節點、通道和鏈碼的頁籤。
      設定 Rich History 對話方塊便會顯示。
    2. 輸入存取 Oracle 資料庫所需的使用者名稱和密碼。
    3. 連線字串欄位中,輸入要用來儲存豐富歷史記錄資料的資料庫連線字串。您在此處輸入的內容取決於您使用的 Oracle 資料庫。
      • 如果您使用 Oracle Autonomous Data Warehouse ,則會輸入類似 <username>adw_high 的項目。若要尋找 Oracle Autonomous Data Warehouse 的連線資訊,請移至其證明資料公事包 ZIP 檔案並開啟其 TNS 檔案。
      • 如果您使用 Oracle Database Classic Cloud Service 搭配 Oracle Cloud Infrastructure ,請參閱建立 Oracle Database Classic Cloud Service 連線字串
      • 如果您使用的是非自治式 Oracle 資料庫 (未使用證明資料公事包的資料庫),並且想要使用 sys 使用者連線至資料庫,則必須將 ?as=sys[dba|asm|oper] 附加至連線字串。例如,123.123.123.123:1521/example.oraclevcn.com?as=sysdba
    4. 如果您使用 Oracle Cloud 自治式資料庫執行處理 (例如 Oracle Autonomous Data WarehouseOracle Autonomous Transaction Processing),請使用公事包封裝檔案欄位上傳所需的證明資料公事包 ZIP 檔案。此檔案包含從屬端證明資料,並且是從 Oracle 自治式資料庫產生。

      附註:

      設定 Rich History 之後,再次開啟設定 Rich History 對話方塊時,不會顯示公事包檔案名稱。如果更新其他設定值,您必須先重新上傳公事包 ZIP 檔案,再按一下儲存。如果在未顯示公事包檔案名稱時按一下儲存,就會更新組態,而不使用公事包檔案。
    5. 若要使用區塊鏈表格來儲存豐富的歷史記錄資料庫,請選取使用資料庫區塊鏈表格
      基礎資料庫必須支援區塊鏈表格。如需詳細資訊,請參閱 Oracle Blockchain 表格
      • 若要指定保留表格和資料列的天數,請選取基本組態,然後輸入保留表格和資料列的天數。輸入 0 以永久保留表格或資料列。若要避免進一步變更保留值,請選取已鎖定
      • 若要使用資料定義語言 (DDL) 敘述句來指定表格和資料列保留,請選取進階組態查詢,然後輸入 DDL 敘述句。
    6. 按一下「儲存」
  2. 在包含您要寫入豐富歷史記錄資料庫之鏈碼資料的通道上啟用豐富歷史記錄。
    1. 移至主控台並選取通道頁籤。
    2. 尋找包含您要寫入豐富歷史記錄資料庫之鏈碼資料的通道。按一下其其他選項按鈕,然後選取設定 Rich History
      隨即顯示設定 Rich History 對話方塊。
    3. 按一下啟用 Rich History 核取方塊。若要將專用資料收集儲存在 RTF 歷史記錄資料庫中,請輸入專用資料收集名稱清單 (使用逗號區隔)。如需有關專用資料收集的詳細資訊,請參閱何謂專用資料收集?。若要新增異動詳細資料至豐富記錄資料庫,請選取您要新增的詳細資料。按一下「儲存」
系統會設定豐富歷史記錄資料庫,但不會立即在資料庫中建立表格。發生下一個相關的交易或分類帳變更時,表格會建立在 RTF 歷史記錄資料庫中。

修改豐富歷史記錄資料庫的連線

您可以變更豐富歷史記錄資料庫的連線資訊。

在資料庫中建立通道的表格之後,即使您按一下儲存之後,修改通道的豐富歷史記錄組態也沒有作用,除非您變更使用者名稱和密碼或連線字串。如果您變更使用者名稱與密碼,會在同一個資料庫中建立表格。如果您變更連線字串和證明資料,則會設定不同的資料庫,並在下次相關的交易或分類帳變更之後建立表格。您無法將 RTF 歷史記錄資料庫從標準表格變更為區塊鏈表格,除非您也變更證明資料或連線字串,否則無法變更保留時間。
  1. 移至主控台並按一下選項按鈕,然後按一下設定 Rich History 。此按鈕位於列上方,其中包含您用來瀏覽至節點、通道和鏈碼的頁籤。
  2. 如有需要,請更新存取 Oracle 資料庫所需的使用者名稱和密碼。
  3. 如有需要,請在連線字串欄位中,修改將用來儲存豐富歷史記錄資料的資料庫連線字串。您在此處輸入的內容取決於您使用的 Oracle 資料庫。
    • 如果您使用 Oracle Autonomous Data Warehouse ,則會輸入類似 <username>adw_high 的項目。若要尋找 Oracle Autonomous Data Warehouse 的連線資訊,請移至其證明資料公事包 ZIP 檔案並開啟其 TNS 檔案。
    • 如果您使用 Oracle Database Classic Cloud Service 搭配 Oracle Cloud Infrastructure ,請參閱建立 Oracle Database Classic Cloud Service 連線字串
    • 如果您使用的是非自治式 Oracle 資料庫 (未使用證明資料公事包的資料庫),並且想要使用 sys 使用者連線至資料庫,則必須將 ?as=sys[dba|asm|oper] 附加至連線字串。例如,123.123.123.123:1521/example.oraclevcn.com?as=sysdba
  4. 如果您使用 Oracle Cloud 自治式資料庫執行處理 (例如 Oracle Autonomous Data WarehouseOracle Autonomous Transaction Processing),請使用公事包封裝檔案欄位上傳或重新上傳所需的證明資料公事包檔案。此檔案包含從屬端證明資料,並且從 Oracle 自治式資料庫產生。

    附註:

    設定 Rich History 之後,再次開啟設定 Rich History 對話方塊時,不會顯示公事包檔案名稱。如果更新其他設定值,您必須先重新上傳公事包 ZIP 檔案,再按一下儲存。如果在未顯示公事包檔案名稱時按一下儲存,就會更新組態,而不使用公事包檔案。
  5. 若要使用區塊鏈表格來儲存豐富的歷史記錄資料庫,請選取使用資料庫區塊鏈表格
    基礎資料庫必須支援區塊鏈表格。
    • 若要指定保留表格和資料列的天數,請選取基本組態,然後輸入保留表格和資料列的天數。輸入 0 以永久保留表格或資料列。若要避免進一步變更保留值,請選取已鎖定
    • 若要使用資料定義語言 (DDL) 敘述句來指定表格和資料列保留,請選取進階組態查詢,然後輸入 DDL 敘述句。
  6. 按一下「儲存」

設定將資料寫入 Rich History 資料庫的通道

您可以讓通道將鏈碼分類帳資料寫入 RTF 歷史記錄資料庫,也可以停止將資料寫入 RTF 歷史記錄資料庫的通道。您也可以設定個別通道,使用與全域設定不同的豐富歷史記錄資料庫組態。

您必須先指定全域資訊以連線至 Rich History 資料庫,才能選取寫入 Rich History 資料庫的通道。請參閱啟用及設定 Rich History 資料庫

在資料庫中建立通道的表格之後,即使您按一下儲存之後,修改通道的豐富歷史記錄組態也沒有作用,除非您變更使用者名稱和密碼或連線字串。如果您變更使用者名稱與密碼,會在同一個資料庫中建立表格。如果您變更連線字串和證明資料,則會設定不同的資料庫,並在下次相關的交易或分類帳變更之後建立表格。您無法將 RTF 歷史記錄資料庫從標準表格變更為區塊鏈表格,除非您也變更證明資料或連線字串,否則無法變更保留時間。

  1. 移至主控台並選取通道頁籤。
  2. 尋找您要修改其存取權的管道。按一下其其他選項按鈕,然後選取設定 Rich History
    隨即顯示設定 Rich History 對話方塊。
  3. 若要啟用通路的豐富歷史記錄資料集合,請選取啟用豐富歷史記錄核取方塊。若要停用通路的豐富歷史記錄資料收集,請清除啟用豐富歷史記錄核取方塊。
  4. 若要設定通道以使用不同的資料庫或不同的設定值收集豐富歷史記錄資料,請選取使用通道層次組態,然後指定要使用的設定值。
    如需豐富歷史記錄設定值的詳細資訊,請參閱啟用並設定豐富歷史記錄資料庫
  5. 按一下「儲存」

監督豐富歷史記錄狀態

設定 Rich History 資料庫之後,您可以使用主控台來監督 Rich History 複製狀態。

  1. 移至主控台並選取通道頁籤。
  2. 在通道表格中,按一下您要監督之通道的其他動作按鈕,然後按一下 Rich History Status
    此時會顯示 Rich History Status 對話方塊,其中包含有關複製和組態狀態的詳細資訊。
  3. 按一下重新整理以顯示最新狀態。

限制豐富歷史記錄的存取權

您可以使用通道原則和存取控制清單 (ACL) 來限制可設定豐富歷史記錄資料庫及擷取豐富歷史記錄狀態或組態資訊的組織。

依照預設,具有通道管理存取權的所有組織都可以設定豐富的歷史記錄收集,並可擷取豐富的歷史記錄狀態和組態詳細資訊。若要限制此存取權,例如創辦人組織,您可以建立通道原則,並將原則套用至控制存取權的資源。
  1. 移至主控台並選取通道頁籤。
    隨即顯示通道頁籤。通道表格包含您網路上所有通道的清單。
  2. 在通道表格中,按一下您要限制存取的通道名稱。
  3. 按一下通道原則,然後建立包含將存取豐富歷史記錄函數之組織成員的簽章原則。
    如需有關通道原則的詳細資訊,請參閱使用通道原則和 ACL
    例如,建立僅包含創始組織識別的原則,而非任何參與者組織的識別。
  4. 按一下 ACL
  5. 在「資源 (Resources)」表格中,找出要更新的資源,以使用新的原則。按一下資源的展開,然後選取要指派給資源的原則
    下表顯示控制豐富歷史記錄存取權的資源。
    資源 存取控制
    obpadmin/ConfigureRichHistoryChannel 控制設定、啟用及停用通道的豐富歷史記錄。
    obpadmin/GetRichHistoryChannelStatus 控制擷取通道的豐富歷史記錄複寫狀態。
    obpadmin/GetRichHistoryChannelConfig 控制擷取通道目前的豐富歷史記錄組態。
  6. 按一下更新 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 讀取作業以及實際的鏈碼命名空間作業。