Criar o Banco de Dados de Histórico Rico

Este tópico contém informações que ajudam a especificar uma conexão do Oracle Database e a escolher canais para criar o banco de dados de histórico avançado. Você usará esse banco de dados para fazer relatórios de análise e visualizações das atividades do seu razão.

O que é o Rich History Database?

O banco de dados de histórico avançado é externo ao Oracle Blockchain Platform e contém dados sobre as transações do razão blockchain nos canais selecionados. Você usa esse banco de dados para criar relatórios analíticos e visualização sobre as atividades do razão.

Por exemplo, usando o banco de dados de histórico avançado, você pode criar análises para aprender o saldo médio de todos os clientes em seu banco em algum intervalo de tempo ou quanto tempo levou para enviar mercadorias de um atacadista para um varejista.

Internamente, o Oracle Blockchain Platform usa o banco de dados de histórico do Hyperledger Fabric para gerenciar o razão e apresentar informações de transação do razão para você no console. Somente os chaincodes podem acessar esse banco de dados de histórico, e você não pode expor o banco de dados de histórico do Hyperledger Fabric como uma fonte de dados para consultas analíticas. O banco de dados de histórico avançado usa uma cópia externa do Oracle Database e contém muitos detalhes sobre cada transação submetida a commit em um canal. Esse nível de coleta de dados torna o banco de dados de histórico avançado uma excelente fonte de dados para análise. Para obter informações sobre os dados que o banco de dados de histórico avançado coleta, consulte Tabelas e Colunas do Banco de Dados de Histórico Rico.

Você só pode usar um banco de dados como o Oracle Autonomous AI Lakehouse ou o Oracle Base Database Service com o Oracle Cloud Infrastructure para criar seu banco de dados de histórico avançado. Você usa a console do Oracle Blockchain Platform para fornecer a string de conexão e as credenciais para acessar e gravar no banco de dados. Observe que as credenciais fornecidas são as credenciais do banco de dados e o Oracle Blockchain Platform não as gerencia. Depois de criar a conexão, você selecionará os canais que contêm os dados do razão que deseja incluir no banco de dados de histórico avançado. Consulte Ativar e Configurar o Rich History Database.

Você pode usar tabelas padrão ou tabelas blockchain para armazenar o banco de dados de histórico avançado. As tabelas Blockchain são tabelas somente anexadas à prova de adulteração, que podem ser usadas como um razão seguro, além de estarem disponíveis para transações e consultas com outras tabelas.

Você pode usar qualquer ferramenta de análise, como o Oracle Analytics Cloud ou o Oracle Data Visualization Cloud Service, para acessar o banco de dados de histórico avançado e criar relatórios de análise ou visualizações de dados.

Criar a String de Conexão do Oracle Base Database Service

Você deve coletar informações do Oracle Base Database Service implantado no Oracle Cloud Infrastructure para criar a string de conexão exigida pelo banco de dados de histórico avançado. Você também deve ativar o acesso ao banco de dados pela porta 1521.

Localizar e Registrar Informações do Oracle Base Database Service

As informações necessárias para criar uma conexão com o Oracle Base Database Service estão disponíveis na Console do Oracle Cloud Infrastructure.

  1. Na Console do Infrastructure, selecione Banco de Dados no menu de navegação.
  2. Localize o banco de dados ao qual deseja se conectar e registre o endereço IP Público.
  3. Selecione o nome do banco de Dados ao qual deseja se conectar e registre os valores nestes campos:
    • Nome Exclusivo do Banco de Dados
    • Nome do Domínio do Host
    • Porta
  4. Localize o nome e senha de um usuário (por exemplo, SYSTEM) do banco de dados com as permissões para ler e anote-os.

Ativar Acesso ao Banco de Dados por meio da Porta 1521

Adicione uma regra de entrada que permita ao banco de dados de histórico avançado acessar o banco de dados pela porta 1521.

  1. Na home page do Oracle Cloud Infrastructure, selecione o ícone de navegação e, em Bancos de Dados, selecione Sistemas de BD.
  2. Selecione o banco de dados ao qual deseja se conectar.
  3. Selecione o link Virtual Cloud Network.
  4. Navegue até a sub-rede apropriada e, em Listas de Segurança, selecione Lista de Segurança Padrão para o <Banco de Dados de Destino>.

    A página Lista de Segurança será exibida.

  5. Selecione Editar Todas as Regras.
  6. Adicione uma regra de entrada para permitir que qualquer tráfego recebido da internet pública acesse a porta 1521 neste nó de banco de dados, com as seguintes definições:
    • CIDR DE ORIGEM: 0.0.0.0/0

    • PROTOCOLO IP: TCP
    • SOURCE PORT RANGE: Tudo
    • INTERVALO DE PORTAS DE DESTINO: 1521
    • Permite: Tráfego TCP para as portas: 1521

Crie a String de Conexão

Depois de ativar o acesso ao Oracle Database, use as informações coletadas anteriormente para criar a string de conexão na caixa de diálogo Configurar Histórico Rich.

Construa a string de conexão usando a seguinte sintaxe: <publicIP>:<portNumber>/<database unique name>.<host domain name>

A seguinte string de conexão é um exemplo: 192.0.2.0:1521/CustDB_iad1vm.sub05031027070.customervcnwith.oraclevcn.example.com

Verificar Privilégios de Usuário do Banco de Dados

Para que a funcionalidade de histórico avançado possa gerenciar suas sessões de banco de dados e se recuperar de um período de indisponibilidade temporário do banco de dados ou da rede, certifique-se de que o usuário do banco de dados registrado no Oracle Blockchain Platform tenha os dois privilégios a seguir:
grant select on v_$session to <user>;
grant alter system to <user>;
Além disso, se o banco de dados de histórico avançado usar o Oracle Autonomous AI Lakehouse, o usuário do banco de dados deverá ter o seguinte privilégio:
grant unlimited tablespace to <user>;
Se o usuário do banco de dados ainda não tiver esses privilégios, ele deverá ser concedido pelo administrador do banco de dados do sistema.

Sem esses privilégios, o Oracle Blockchain Platform pode replicar para o banco de dados, mas não pode se recuperar de situações que levam a uma sessão de banco de dados danificada, o que impede que o histórico avançado acompanhe as transações recentes por um período prolongado. Sem esses privilégios no Oracle Autonomous AI Lakehouse, nenhum dado de histórico avançado é salvo.

Ativar e Configurar o Banco de Dados de Histórico Avançado

Use a console para fornecer informações de conexão do banco de dados e selecionar os canais com os dados do razão chaincode que você deseja gravar no banco de dados rich history. Por padrão, os canais não estão ativados para gravar dados no banco de dados de histórico avançado.

  • Cada membro da rede blockchain configura seu próprio banco de dados de histórico avançado.
  • Você deve usar o Oracle Database. Nenhum outro tipo de banco de dados é suportado.
  • Cada canal que grava no banco de dados de histórico avançado deve conter pelo menos um nó de mesmo nível.
  1. Especifique informações de conexão e credencial para a instância do Oracle Database a ser usada para armazenar informações do histórico avançado.
    1. Vá para a console e selecione Opções e, em seguida, selecione Configurar Histórico Avançado.
      A caixa de diálogo Configurar Histórico Rico é exibida.
    2. Informe o nome do usuário e senha necessários para acessar o Oracle Database.
    3. No campo String de Conexão, informe a string de conexão do banco de dados que você usará para armazenar dados históricos avançados. O que você digita aqui depende do banco de dados que está usando.
      • Se você estiver usando o Oracle Autonomous AI Lakehouse, digitará algo semelhante a <username>adw_high. Para localizar as informações de conexão do Oracle Autonomous AI Lakehouse, vá para o arquivo ZIP da wallet de credenciais e abra o arquivo TNS.
      • Se você estiver usando o Oracle Base Database Service com o Oracle Cloud Infrastructure (OCI), consulte Criar a String de Conexão do Oracle Base Database Service.
      • Se você estiver usando um banco de dados não autônomo (um banco de dados que não usa uma wallet de credenciais) e quiser usar o usuário sys para estabelecer conexão com o banco de dados, anexe ?as=sys[dba|asm|oper] à string de conexão. Por exemplo, 203.0.113.0:1521/oraclevcn.example.com?as=sysdba
    4. Se você estiver usando uma instância do OCI autonomous database (por exemplo, Oracle Autonomous AI Lakehouse ou Oracle Autonomous AI Transaction Processing), use o campo Arquivo de Pacote de Wallet para fazer upload do arquivo .zip da wallet de credenciais necessária. Esse arquivo contém credenciais de cliente e é gerado pelo banco de dados.

      Observação:

      Quando você abre a caixa de diálogo Configurar Histórico Avançado novamente depois de configurar o histórico avançado, o nome do arquivo da wallet não é exibido. Se você atualizar outras definições, deverá fazer upload do arquivo .zip da wallet novamente antes de selecionar Salvar. Se você selecionar Salvar enquanto nenhum nome de arquivo de wallet for exibido, a configuração será atualizada para não usar um arquivo de wallet.
    5. Para usar tabelas de blockchain para armazenar o banco de dados de histórico avançado, selecione Usar Tabela de Blockchain do Banco de Dados.
      O banco de dados subjacente deve suportar tabelas de blockchain.
      • Para especificar o número de dias para reter tabelas e linhas, selecione Configuração Básica e informe o número de dias para reter tabelas e linhas. Insira 0 para reter tabelas ou linhas permanentemente. Para evitar mais alterações nos valores de retenção, selecione Bloqueado.
      • Para especificar a retenção de tabela e linha usando uma instrução DDL (Data Definition Language), selecione Consulta de Configuração Avançada e informe a instrução DDL.
    6. Selecione Salvar.
  2. Ative o histórico avançado nos canais que contêm os dados de chaincode que você deseja gravar no banco de dados de histórico avançado.
    1. Vá para a console e selecione a guia Canais.
    2. Localize o canal que contém os dados de chaincode que você deseja gravar no banco de dados rich history. Selecione Mais Opções e, em seguida, Configurar Histórico Avançado.
      A caixa de diálogo Configurar Histórico Rico é exibida.
    3. Selecione Enable Rich History. Para armazenar coletas de dados privadas no banco de dados de histórico avançado, informe uma lista de nomes de coleta de dados privados, separados por vírgulas. Para obter mais informações sobre coletas de dados privadas, consulte O Que São Coletas de Dados Privadas?. Para adicionar detalhes da transação ao banco de dados de histórico avançado, selecione os detalhes que deseja adicionar. Selecione Salvar.
O banco de dados de histórico avançado é configurado, mas as tabelas não são criadas no banco de dados imediatamente. Quando a próxima transação relevante ou alteração no livro contábil ocorrer, as tabelas serão criadas no banco de dados de rich history.

Modificar a Conexão com o Banco de Dados de Histórico Avançado

Você pode alterar as informações de conexão do banco de dados de histórico avançado.

Depois que as tabelas são criadas no banco de dados para um canal, a modificação da configuração do histórico avançado para o canal não tem efeito, mesmo depois de selecionar Salvar, a menos que você altere o nome de usuário e a senha ou a string de conexão. Se você alterar o nome de usuário e a senha, as tabelas serão criadas no mesmo banco de dados. Se você alterar a string de conexão e as credenciais, um banco de dados diferente será configurado e as tabelas serão criadas após a próxima transação ou alteração do razão relevante. Não é possível alterar um banco de dados de histórico avançado de tabelas padrão para tabelas blockchain e não é possível alterar os tempos de retenção, a menos que você também altere as credenciais ou a string de conexão.
  1. Vá para a console e selecione Opções e, em seguida, selecione Configurar Histórico Avançado.
  2. Atualize o nome de usuário e a senha conforme necessário para acessar o banco de dados.
  3. Se necessário, no campo String de Conexão, modifique a string de conexão do banco de dados que você usará para armazenar dados históricos avançados. O que você digita aqui depende do banco de dados que está usando.
    • Se você estiver usando o Oracle Autonomous AI Lakehouse, digitará algo semelhante a <username>adw_high. Para localizar as informações de conexão do Oracle Autonomous AI Lakehouse, vá para o arquivo .zip da wallet de credenciais e abra o arquivo TNS.
    • Se você estiver usando o Oracle Base Database Service com o Oracle Cloud Infrastructure (OCI), consulte Criar a String de Conexão do Oracle Base Database Service.
    • Se você estiver usando um banco de dados não autônomo (um banco de dados que não usa uma wallet de credenciais) e quiser usar o usuário sys para estabelecer conexão com o banco de dados, anexe ?as=sys[dba|asm|oper] à string de conexão. Por exemplo, 203.0.113.0:1521/oraclevcn.example.com?as=sysdba
  4. Se você estiver usando uma instância do OCI autonomous database (por exemplo, Oracle Autonomous AI Lakehouse ou Oracle Autonomous AI Transaction Processing), use o campo Arquivo de Pacote de Wallet para fazer upload ou upload novamente do arquivo da wallet de credenciais necessário. Esse arquivo contém credenciais de cliente e é gerado pelo banco de dados.

    Observação:

    Quando você abre a caixa de diálogo Configurar Histórico Avançado novamente depois de configurar o histórico avançado, o nome do arquivo da wallet não é exibido. Se você atualizar outras definições, deverá fazer upload do arquivo .zip da wallet novamente antes de selecionar Salvar. Se você selecionar Salvar enquanto nenhum nome de arquivo de wallet for exibido, a configuração será atualizada para não usar um arquivo de wallet.
  5. Para usar tabelas de blockchain para armazenar o banco de dados de histórico avançado, selecione Usar Tabela de Blockchain do Banco de Dados.
    O banco de dados subjacente deve suportar tabelas de blockchain.
    • Para especificar o número de dias para reter tabelas e linhas, selecione Configuração Básica e informe o número de dias para reter tabelas e linhas. Insira 0 para reter tabelas ou linhas permanentemente. Para evitar mais alterações nos valores de retenção, selecione Bloqueado.
    • Para especificar a retenção de tabela e linha usando uma instrução DDL (Data Definition Language), selecione Consulta de Configuração Avançada e informe a instrução DDL.
  6. Selecione Salvar.

Configurar os Canais que Gravam Dados no Banco de Dados de Histórico Rico

Você pode permitir que os canais gravem dados do razão chaincode no banco de dados de histórico avançado e pode impedir que os canais gravem dados no banco de dados de histórico avançado. Você também pode configurar um canal individual para usar uma configuração de banco de dados de histórico avançado diferente da definição global.

Especifique as informações globais para estabelecer conexão com o banco de dados de histórico avançado antes de selecionar os canais que gravam no banco de dados de histórico avançado. Consulte Ativar e Configurar o Rich History Database.

Depois que as tabelas forem criadas no banco de dados para um canal, a modificação da configuração do histórico avançado do canal não terá efeito, mesmo depois que você clicar em Salvar, a menos que altere o nome de usuário e a senha ou a string de conexão. Se você alterar o nome de usuário e a senha, as tabelas serão criadas no mesmo banco de dados. Se você alterar a string de conexão e as credenciais, um banco de dados diferente será configurado e as tabelas serão criadas após a próxima transação relevante ou alteração no razão. Você não pode alterar um banco de dados de histórico avançado de tabelas padrão para tabelas de blockchain e não pode alterar os tempos de retenção, a menos que também altere as credenciais ou a string de conexão.

  1. Vá para a console e selecione a guia Canais.
  2. Localize o canal cujo acesso você deseja modificar. Clique no botão Mais Opções e selecione Configurar Histórico Avançado.
    A caixa de diálogo Configurar Histórico Rico é exibida.
  3. Para ativar a coleta de dados do histórico avançado para o canal, marque a caixa de seleção Ativar Histórico Avançado. Para desativar a coleta de dados do histórico avançado para o canal, desmarque a caixa de seleção Ativar Histórico Avançado.
  4. Para configurar o canal para coletar dados históricos avançados usando outro banco de dados ou definições diferentes, selecione Usar configuração no nível do canal e especifique as definições a serem usadas.
    Para obter mais informações sobre as definições do histórico avançado, consulte Ativar e Configurar o Banco de Dados do Histórico Avançado.
  5. Clique em Salvar.

Monitorar o Status do Histórico Rico

Depois de configurar o banco de dados de histórico avançado, você pode usar a console para monitorar o status de replicação do histórico avançado.

  1. Vá para a console e selecione a guia Canais.
  2. Na tabela de canais, clique no botão Mais Ações do canal que você deseja monitorar e, em seguida, clique em Status do Histórico Rico.
    A caixa de diálogo Status do Histórico Rico é exibida, que inclui detalhes sobre replicação e status de configuração.
  3. Clique em Atualizar para exibir o status mais recente.

Limitar acesso ao histórico avançado

Você pode usar políticas de canal e listas de controle de acesso (ACLs) para limitar as organizações que podem configurar o banco de dados de histórico avançado e recuperar informações de configuração ou status de histórico avançado.

Por padrão, todas as organizações que têm acesso administrativo a um canal podem configurar a coleta de histórico avançado e recuperar o status do histórico avançado e os detalhes da configuração. Para limitar esse acesso, por exemplo, à organização fundadora, crie uma política de canal e aplique a política aos recursos que controlam o acesso.
  1. Vá para a console e selecione a guia Canais.
    A guia Canais é exibida. A tabela de canais contém uma lista de todos os canais da sua rede.
  2. Na tabela de canais, clique no nome do canal no qual você deseja limitar o acesso.
  3. Clique em Políticas de Canal e crie uma política de assinatura que inclua os membros da organização que acessarão as funções avançadas do histórico.
    Para obter mais informações sobre políticas de canal, consulte Trabalhar com Políticas de Canal e ACLs.
    Por exemplo, crie uma política que inclua apenas a identidade da organização fundadora, não a identidade de qualquer organização participante.
  4. Clique em ACLs.
  5. Na tabela Recursos, localize o recurso que você deseja atualizar para usar a nova política. Clique em Expandir para o recurso e selecione a política a ser designada ao recurso
    A tabela a seguir mostra os recursos que controlam o acesso ao histórico avançado.
    Recurso Controle de acesso
    obpadmin/ConfigureRichHistoryChannel Controla a configuração, a ativação e a desativação do histórico avançado de um canal.
    obpadmin/GetRichHistoryChannelStatus Controla a recuperação do status de replicação do histórico avançado de um canal.
    obpadmin/GetRichHistoryChannelConfig Controla a recuperação da configuração do histórico avançado atual de um canal.
  6. Clique em Atualizar ACLs.
O acesso à história rica é agora controlado pela nova política. Os membros da organização que não estiverem incluídos na nova política receberão uma mensagem de erro quando tentarem acessar um recurso controlado pela política.

Tabelas e Colunas do Banco de Dados de Histórico Rico

O banco de dados de histórico avançado contém três tabelas para cada canal: histórico, estado e altura mais recente. Você consultará as tabelas de histórico e estado ao criar análises sobre as transações do razão de seus códigos de cadeia. Se você tiver optado por selecionar qualquer um dos detalhes da transação ao ativar o histórico avançado, uma tabela adicional será criada com os detalhes da transação.

Tabela do Histórico

A tabela <instanceName><channelName>_hist contém o histórico do razão. Os dados desta tabela informam o ID chaincode, a chave usada, se a transação era válida, o valor atribuído à chave e assim por diante.

Observe que as colunas value e valueJson são usadas de maneira mutuamente exclusiva. Ou seja, quando um valor de chave é json válido, o valor é definido na coluna valueJson. Caso contrário, o valor será definido na coluna valor. A coluna valueJson é configurada como uma coluna json no banco de dados, o que significa que os usuários podem consultar essa coluna usando as extensões específicas usuais do Oracle JSON.

Se configurado, os dados privados também serão armazenados nesta tabela. Para dados privados, o ID do chaincode usa o seguinte formato: <chaincodeName>$$<collectionName>.

Coluna Tipo de dados
chaincodeId VARCHAR2 (256)
chave   VARCHAR2 (1024)
txnIsValid     NÚMERO (1)
valor VARCHAR2 (4000)
valueJson CLOB
blockNo NÚMERO NÃO NULO
txnNo NÚMERO NOT NULL
txnId VARCHAR2 (128)  
txnTimestamp TIMESTAMP
txnIsDelete NÚMERO (1)

Tabela Estado

A tabela <instanceName><channelName>_state contém valores de dados replicados do banco de dados de estado. Você consultará a tabela de estado ao criar análises sobre o estado do razão.

Observe que as colunas value e valueJson são usadas de maneira mutuamente exclusiva. Ou seja, quando um valor de chave é json válido, o valor é definido na coluna valueJson. Caso contrário, o valor será definido na coluna valor. A coluna valueJson é configurada como uma coluna json no banco de dados, o que significa que os usuários podem consultar essa coluna usando as extensões específicas usuais do Oracle JSON.

Coluna Tipo de dados
chaincodeId VARCHAR2 (256)
chave VARCHAR2 (1024)
valor VARCHAR2 (4000) 
valueJson CLOB
blockNo NUMBER
txnNo NUMBER

Tabela de Altura Mais Recente

A tabela <instanceName><channelName>_last é usada internamente pelo Oracle Blockchain Platform para rastrear a altura do bloco registrada no banco de dados de histórico avançado. Ele determina o quão atual é o banco de dados de histórico avançado e se todas as transações de chaincode foram registradas no banco de dados de histórico avançado. Não é possível consultar este banco de dados para análise.

Tabela de Detalhes da Transação

A tabela <instanceName><channelName>_more contém atributos relacionados a transações submetidas a commit. Ao ativar o banco de dados de histórico avançado, você pode selecionar quais desses atributos deseja registrar nesta tabela. A tabela de detalhes da transação captura apenas informações sobre transações do aprovador - não transações de configuração ou qualquer outro tipo de transações do Hyperledger Fabric.

Coluna Tipo de dados
CHAINCODEID VARCHAR2 (256)
BLOQUEAR NO NUMBER
TXNNO NUMBER
TXNID VARCHAR2(128)
CARIMBO DE DATA/HORA DA TRANSAÇÃO TIMESTAMP
SUBMETIDO VARCHAR2(512)
ORGANIZAÇÃO DO EMISSOR VARCHAR2(512)
SUBMETIDO VARCHAR2(512)
CHAINCODETYPE VARCHAR2(32)
NOME DO CÓDIGO DE VALIDAÇÃO VARCHAR2(32)
APROVAÇÕES CLOB
ENTRADAS CLOB
EVENTOS CLOB
STATUS DA RESPOSTA NÚMERO (0)
RESPONSEPAYLOAD VARCHAR2(1024)
BOLSA CLOB
CRIADOR DE BLOCOS VARCHAR2(512)
PORTUGUÊS DO BRASIL VARCHAR2(512)
CRIADOR DE BLOCOS VARCHAR2(512)
NÚMERO DO BLOCO DE CONFIGURAÇÃO NÚMERO (0)
CONFIGBLOCKCREATORCN VARCHAR2(512)
CONFIGBLOCKCREATORORG VARCHAR2(512)
CONFIGBLOCKCREATOROU VARCHAR2(512)

Observação:

  • A organização (ORG) e a unidade organizacional (OU) são orientadas por certificados de identidade, o que implica que eles podem ser atribuídos a vários valores. Eles são capturados como uma lista separada por vírgulas nos valores da tabela.
  • Para identidades, a tabela inclui informações apenas sobre a parte "Assunto" dos certificados, não a parte "Emissor".
  • A coluna RWSET contém operações em todos os chaincodes (no mesmo razão) executadas durante o endosso. Como tal, você normalmente verá as operações de leitura de lscc e as operações reais de namespace de chaincode.