Creación de la base de datos de historial enriquecido

Este tema contiene información que le ayudará a especificar una conexión de base de datos Oracle y a seleccionar canales para crear la base de datos de historial enriquecido. Utilizará esta base de datos para realizar informes analíticos y visualizaciones de las actividades de su libro mayor.

¿Cuál es la base de datos de historia enriquecida?

La base de datos de historial enriquecido es externa a Oracle Blockchain Platform y contiene datos sobre las transacciones del libro mayor de blockchain en los canales que seleccione. Esta base de datos se utiliza para crear informes de análisis y visualizar las actividades del libro mayor.

Por ejemplo, con la base de datos de historial enriquecido, puede crear análisis para conocer el saldo medio de todos los clientes de su banco durante un intervalo de tiempo, o cuánto tiempo tardó en enviar la mercancía de un mayorista a un minorista.

Internamente, Oracle Blockchain Platform utiliza la base de datos de historial de Hyperledger Fabric para gestionar el libro mayor y presentar la información de transacciones del libro mayor en la consola. Solo los códigos de cadenas pueden acceder a esta base de datos de historial y no puede exponer la base de datos de historial de Hyperledger Fabric como origen de datos para consultas analíticas. La base de datos de historial enriquecido utiliza una base de datos Oracle externa y contiene muchos detalles sobre cada transacción confirmada en un canal. Este nivel de recopilación de datos hace que la base de datos de historial enriquecido sea una excelente fuente de datos para el análisis. Para obtener información sobre los datos que recopila la base de datos de historial enriquecido, consulte Tablas y columnas de base de datos de historial enriquecido.

Solo puede utilizar una base de datos de Oracle como Oracle Autonomous Data Warehouse o Oracle Database Classic Cloud Service con Oracle Cloud Infrastructure para crear su base de datos de historial enriquecido. Puede utilizar la consola de Oracle Blockchain Platform para proporcionar la cadena de conexión y las credenciales para acceder a la base de datos Oracle y escribir en ella. Tenga en cuenta que las credenciales que proporciona son las credenciales de la base de datos y que Oracle Blockchain Platform no las gestiona. Después de crear la conexión, seleccionará los canales que contienen los datos del libro mayor que desea incluir en la base de datos de historial enriquecido. Consulte Activación y configuración de la base de datos de historial enriquecido.

Puede utilizar tablas estándar o tablas de blockchain para almacenar la base de datos de historial enriquecido. Las tablas de blockchain son tablas de solo apéndice a prueba de alteraciones, que se pueden utilizar como un libro mayor seguro al tiempo que están disponibles para transacciones y consultas con otras tablas. Para obtener más información, consulte Tabla de Oracle Blockchain.

Puede utilizar cualquier herramienta de análisis, como Oracle Analytics Cloud u Oracle Data Visualization Cloud Service, para acceder a la base de datos de historial enriquecido y crear informes de análisis o visualizaciones de datos.

Creación de la cadena de conexión de Oracle Database Classic Cloud Service

Debe recopilar información de Oracle Database Classic Cloud Service desplegada en Oracle Cloud Infrastructure para crear la cadena de conexión necesaria para la base de datos de historial enriquecido. También debe activar el acceso a la base de datos mediante el puerto 1521.

Búsqueda y registro de información de Oracle Database Classic Cloud Service

La información necesaria para crear una conexión a Oracle Database Classic Cloud Service está disponible en la consola de Oracle Cloud Infrastructure.

  1. En la consola de Infrastructure, haga clic en el menú de navegación de la esquina superior izquierda y, a continuación, en Base de datos.

  2. Localice la base de datos a la que desea conectarse y registre la dirección IP pública.

  3. Haga clic en el nombre de la base de datos a la que desea conectarse y registre los valores en estos campos:

    • Nombre Único de la Base de Datos

    • Nombre de Dominio de Host

    • Puerto

  4. Busque un nombre de usuario y una contraseña de un usuario de base de datos con permisos para leer en esta base de datos y anote estos. Por ejemplo, el usuario SYSTEM.

Activación de acceso a la base de datos mediante el puerto 1521

Agregue una regla de entrada que permita a la base de datos de historial enriquecido acceder a la base de datos a través del puerto 1521.

  1. En la página inicial de Oracle Cloud Infrastructure, haga clic en el icono de navegación y, a continuación, en Bases de datos, haga clic en Sistemas de base de datos.

  2. Haga clic en la base de datos a la que desea conectarse.

  3. Haga clic en el enlace de Red virtual en la nube.

  4. Vaya a la subred adecuada y, a continuación, en Listas de seguridad, haga clic en Lista de seguridad por defecto para la base de datos de <Destino>.

    Aparecerá la página Lista de seguridad.

  5. Haga clic en Editar todas las reglas.

  6. Agregue una regla de entrada para permitir cualquier tráfico entrante de Internet pública a través del puerto 1521 en este nodo de base de datos, con los siguientes valores:

    • CIDR DE ORIGEN: 0.0.0.0/0

    • PROTOCOLO IP: TCP

    • Rango de puertos de origen: Todos

    • RANGO DE PUERTO DE DESTINO: 1521

    • Permite: tráfico TCP para los puertos: 1521

Creación de la cadena de conexión

Después de activar el acceso a la base de datos Oracle, utilice la información recopilada para crear la cadena de conexión en el cuadro de diálogo Configurar historial enriquecido.

Cree la cadena de conexión con la siguiente sintaxis: <publicIP>:<portNumber>/<nombre único de base de datos>.<nombre de dominio de host>

Por ejemplo, 192.0.2.0:1521/CustDB_iad1vm.sub05031027070.customervcnwith.oraclevcn.example.com

Asegúrese de que el usuario de la base de datos tiene privilegios adecuados

Para que la funcionalidad de historial enriquecido pueda gestionar sus sesiones de base de datos y recuperarse del tiempo de inactividad de la red o la base de datos temporal, asegúrese de que el usuario de base de datos registrado con Oracle Blockchain Platform tenga los dos privilegios siguientes:
grant select on v_$session to <user>;
grant alter system to <user>;
Además, si la base de datos de historial enriquecido utiliza Oracle Autonomous Data Warehouse, el usuario de la base de datos debe tener el siguiente privilegio:
grant unlimited tablespace to <user>;
Si el usuario de la base de datos no tiene esos privilegios, el administrador de la base de datos del sistema los debe otorgar.

Sin estos privilegios, Oracle Blockchain Platform se puede replicar en la base de datos, pero no se puede recuperar de situaciones que conducen a una sesión de base de datos dañada, lo que evita que el historial enriquecido se ponga al día con las transacciones recientes durante un período prolongado. Sin estos privilegios en Oracle Autonomous Data Warehouse, no se guardan datos de historial enriquecidos.

Activación y configuración de la base de datos de historial enriquecido

Utilice la consola para proporcionar información de conexión a la base de datos y seleccione los canales con los datos del libro mayor de código de cadenas que desea escribir en la base de datos de historial enriquecido. Por defecto, los canales no están activados para escribir datos en la base de datos de historial enriquecido.

Tenga en cuenta la siguiente información:

  • Cada miembro de la red de blockchain configura su propia base de datos de historial enriquecido.

  • Debe utilizar una base de datos Oracle. No se admite ningún otro tipo de base de datos.

  • Cada canal que escribe en la base de datos de historial enriquecido debe contener al menos un nodo peer.

  1. Introduzca la información de conexión y credencial de la base de datos Oracle que desea utilizar para almacenar información de historial enriquecida.
    1. Vaya a la consola, haga clic en el botón Opciones y haga clic en Configurar historial enriquecido. Este botón se encuentra encima de la barra que contiene los separadores que se utilizan para navegar a los nodos, canales y códigos de cadenas.
      Se muestra el cuadro de diálogo Configurar historial enriquecido.
    2. Introduzca el nombre de usuario y la contraseña necesarios para acceder a la base de datos Oracle.
    3. En el campo Cadena de conexión, introduzca la cadena de conexión para la base de datos que utilizará para almacenar datos de historial enriquecidos. Lo que introduzca aquí dependerá de la base de datos Oracle que esté utilizando.
      • Si utiliza Oracle Autonomous Data Warehouse, introducirá algo similar a <username>adw_high. Para buscar la información de conexión de Oracle Autonomous Data Warehouse, vaya a su archivo ZIP de cartera de credenciales y abra su archivo TNS.
      • Si utiliza Oracle Database Classic Cloud Service con Oracle Cloud Infrastructure, consulte Creación de la cadena de conexión de Oracle Database Classic Cloud Service.
      • Si utiliza una base de datos Oracle no autónoma (una base de datos que no utiliza una cartera de credenciales) y desea utilizar el usuario sys para conectarse a la base de datos, debe agregar ?as=sys[dba|asm|oper] a la cadena de conexión. Por ejemplo, 123.123.123.123:1521/example.oraclevcn.com?as=sysdba
    4. Si utiliza una instancia de base de datos autónoma de Oracle Cloud (por ejemplo, Oracle Autonomous Data Warehouse u Oracle Autonomous Transaction Processing), utilice el campo Archivo de paquete de cartera para cargar el archivo ZIP de cartera de credenciales necesario. Este archivo contiene credenciales de cliente y se genera a partir de la base de datos autónoma de Oracle.

      Note:

      Al abrir de nuevo el cuadro de diálogo Configurar historial enriquecido después de configurar el historial enriquecido, no se muestra el nombre del archivo de cartera. Si actualiza otros valores, debe volver a cargar el archivo ZIP de cartera antes de hacer clic en Guardar. Si hace clic en Guardar mientras no se muestra ningún nombre de archivo de cartera, la configuración se actualiza para no utilizar un archivo de cartera.
    5. Para utilizar tablas de cadena de bloques para almacenar la base de datos de historial enriquecido, seleccione Usar tabla de cadena de bloques de base de datos.
      La base de datos subyacente debe soportar tablas de blockchain. Para obtener más información, consulte Tabla de Oracle Blockchain.
      • Para especificar el número de días que se conservarán las tablas y filas, seleccione Configuración Básica y, a continuación, introduzca el número de días que se conservarán las tablas y filas. Introduzca 0 para retener tablas o filas de forma permanente. Para evitar más cambios en los valores de retención, seleccione Bloqueado.
      • Para especificar la retención de tablas y filas mediante una sentencia de lenguaje de definición de datos (DDL), seleccione Consulta de Configuración Avanzada y, a continuación, introduzca la sentencia DDL.
    6. Haga clic en Guardar.
  2. Active el historial enriquecido en los canales que contienen los datos de código de cadenas que desea escribir en la base de datos de historial enriquecido.
    1. Vaya a la consola y seleccione el separador Canales.
    2. Busque el canal que contiene los datos de código de cadenas que desea escribir en la base de datos de historial enriquecido. Haga clic en el botón Más opciones y seleccione Configurar historial enriquecido.
      Se muestra el cuadro de diálogo Configurar historial enriquecido.
    3. Haga clic en la casilla de control Activar historial enriquecido. Para almacenar recopilaciones de datos privadas en la base de datos de historial enriquecido, introduzca una lista de nombres de recopilación de datos privados, separados por comas. Para obtener más información sobre las recopilaciones de datos privados, consulte ¿Qué son las recopilaciones de datos privados?. Para agregar detalles de transacción a la base de datos de historial enriquecido, seleccione los detalles que desea agregar. Haga clic en Guardar.
La base de datos de historial enriquecido está configurada, pero las tablas no se crean en la base de datos inmediatamente. Cuando se produce la siguiente transacción o cambio de contabilidad relevante, las tablas se crean en la base de datos de historial enriquecido.

Modificación de la conexión a la base de datos de historial enriquecido

Puede cambiar la información de conexión de la base de datos de historial enriquecido.

Una vez creadas las tablas en la base de datos para un canal, la modificación de la configuración del historial enriquecido para el canal no tiene ningún efecto, incluso después de hacer clic en Guardar, a menos que cambie el nombre de usuario y la contraseña o la cadena de conexión. Si cambia el nombre de usuario y la contraseña, las tablas se crean en la misma base de datos. Si cambia la cadena de conexión y las credenciales, se configura una base de datos diferente y se crean tablas después de la siguiente transacción o cambio de libro mayor relevante. No puede cambiar una base de datos de historial enriquecido de tablas estándar a tablas de blockchain y no puede cambiar los tiempos de retención, a menos que también cambie las credenciales o la cadena de conexión.
  1. Vaya a la consola, haga clic en el botón Opciones y haga clic en Configurar historial enriquecido. Este botón se encuentra encima de la barra que contiene los separadores que se utilizan para navegar a los nodos, canales y códigos de cadenas.
  2. Si es necesario, actualice el nombre de usuario y la contraseña necesarios para acceder a la base de datos Oracle.
  3. Si es necesario, en el campo Cadena de conexión, modifique la cadena de conexión para la base de datos que utilizará para almacenar datos de historial enriquecidos. Lo que introduzca aquí dependerá de la base de datos Oracle que esté utilizando.
    • Si utiliza Oracle Autonomous Data Warehouse, introducirá algo similar a <username>adw_high. Para buscar la información de conexión de Oracle Autonomous Data Warehouse, vaya a su archivo ZIP de cartera de credenciales y abra su archivo TNS.
    • Si utiliza Oracle Database Classic Cloud Service con Oracle Cloud Infrastructure, consulte Creación de la cadena de conexión de Oracle Database Classic Cloud Service.
    • Si utiliza una base de datos Oracle no autónoma (una base de datos que no utiliza una cartera de credenciales) y desea utilizar el usuario sys para conectarse a la base de datos, debe agregar ?as=sys[dba|asm|oper] a la cadena de conexión. Por ejemplo, 123.123.123.123:1521/example.oraclevcn.com?as=sysdba
  4. Si utiliza una instancia de base de datos autónoma de Oracle Cloud (por ejemplo, Oracle Autonomous Data Warehouse u Oracle Autonomous Transaction Processing), utilice el campo Archivo de paquete de cartera para cargar o volver a cargar el archivo de cartera de credenciales necesario. Este archivo contiene credenciales de cliente y se genera a partir de la base de datos autónoma de Oracle.

    Note:

    Al abrir de nuevo el cuadro de diálogo Configurar historial enriquecido después de configurar el historial enriquecido, no se muestra el nombre del archivo de cartera. Si actualiza otros valores, debe volver a cargar el archivo ZIP de cartera antes de hacer clic en Guardar. Si hace clic en Guardar mientras no se muestra ningún nombre de archivo de cartera, la configuración se actualiza para no utilizar un archivo de cartera.
  5. Para utilizar tablas de cadena de bloques para almacenar la base de datos de historial enriquecido, seleccione Usar tabla de cadena de bloques de base de datos.
    La base de datos subyacente debe soportar tablas de blockchain.
    • Para especificar el número de días que se conservarán las tablas y filas, seleccione Configuración Básica y, a continuación, introduzca el número de días que se conservarán las tablas y filas. Introduzca 0 para retener tablas o filas de forma permanente. Para evitar más cambios en los valores de retención, seleccione Bloqueado.
    • Para especificar la retención de tablas y filas mediante una sentencia de lenguaje de definición de datos (DDL), seleccione Consulta de Configuración Avanzada y, a continuación, introduzca la sentencia DDL.
  6. Haga clic en Guardar.

Configuración de los canales que escriben datos en la base de datos de historial enriquecido

Puede activar los canales para escribir datos del libro mayor de código de cadenas en la base de datos de historial enriquecido, y puede evitar que los canales escriban datos en la base de datos de historial enriquecido. También puede configurar un canal individual para que utilice una configuración de base de datos de historial enriquecido diferente a la configuración global.

Debe especificar la información global para conectarse a la base de datos de historial enriquecido antes de seleccionar canales que escriban en la base de datos de historial enriquecido. Consulte Activación y configuración de la base de datos de historial enriquecido.

Una vez creadas las tablas en la base de datos para un canal, la modificación de la configuración del historial enriquecido para el canal no tiene ningún efecto, incluso después de hacer clic en Guardar, a menos que cambie el nombre de usuario y la contraseña o la cadena de conexión. Si cambia el nombre de usuario y la contraseña, las tablas se crean en la misma base de datos. Si cambia la cadena de conexión y las credenciales, se configura una base de datos diferente y se crean tablas después de la siguiente transacción o cambio de libro mayor relevante. No puede cambiar una base de datos de historial enriquecido de tablas estándar a tablas de blockchain y no puede cambiar los tiempos de retención, a menos que también cambie las credenciales o la cadena de conexión.

  1. Vaya a la consola y seleccione el separador Canales.
  2. Busque el canal para el que desea modificar el acceso. Haga clic en el botón Más opciones y seleccione Configurar historial enriquecido.
    Se muestra el cuadro de diálogo Configurar historial enriquecido.
  3. Para activar la recopilación de datos de historial enriquecidos para el canal, active la casilla de control Activar historial enriquecido. Para desactivar la recopilación de datos de historial enriquecidos para el canal, desactive la casilla de control Activar historial enriquecido.
  4. Para configurar el canal para recopilar datos de historial enriquecidos mediante una base de datos diferente o valores diferentes, seleccione Usar configuración de nivel de canal y, a continuación, especifique los valores que se van a utilizar.
    Para obtener más información sobre los valores del historial enriquecido, consulte Activación y configuración de la base de datos de historial enriquecido.
  5. Haga clic en Guardar.

Supervisión del estado del historial enriquecido

Después de configurar la base de datos de historial enriquecido, puede utilizar la consola para supervisar el estado de replicación del historial enriquecido.

  1. Vaya a la consola y seleccione el separador Canales.
  2. En la tabla de canales, haga clic en el botón Más acciones del canal que desea supervisar y, a continuación, haga clic en Estado de historial enriquecido.
    Se muestra el cuadro de diálogo Estado de historial enriquecido, que incluye detalles sobre la replicación y el estado de configuración.
  3. Haga clic en Actualizar para mostrar el último estado.

Limitar el acceso al historial enriquecido

Puede utilizar políticas de canal y listas de control de acceso (ACL) para limitar las organizaciones que pueden configurar la base de datos de historial enriquecido y recuperar información de configuración o estado de historial enriquecido.

Por defecto, todas las organizaciones que tienen acceso administrativo a un canal pueden configurar una recopilación de historial enriquecida y recuperar detalles de configuración y estado de historial enriquecido. Para limitar este acceso, por ejemplo, a la organización fundadora, debe crear una política de canal y aplicar la política a los recursos que controlan el acceso.
  1. Vaya a la consola y seleccione el separador Canales.
    Se muestra el separador Canales. La tabla de canales contiene una lista de todos los canales de la red.
  2. En la tabla de canales, haga clic en el nombre del canal en el que desea limitar el acceso.
  3. Haga clic en Políticas de canal y, a continuación, cree una política de firma que incluya los miembros de la organización que accederán a las funciones de historial enriquecido.
    Para obtener más información sobre las políticas de canal, consulte Trabajo con políticas de canal y ACL.
    Por ejemplo, cree una política que incluya solo la identidad de la organización fundadora, no la identidad de las organizaciones participantes.
  4. Haga clic en ACL.
  5. En la tabla Recursos, busque el recurso que desea actualizar para utilizar la nueva política. Haga clic en Ampliar para el recurso y, a continuación, seleccione la política que desea asignar al recurso
    En la siguiente tabla, se muestran los recursos que controlan el acceso al historial enriquecido.
    Recurso Control de Acceso
    obpadmin/ConfigureRichHistoryChannel Controla la configuración, la activación y la desactivación del historial enriquecido para un canal.
    obpadmin/GetRichHistoryChannelStatus Controla la recuperación del estado de replicación de historial enriquecido para un canal.
    obpadmin/GetRichHistoryChannelConfig Controla la recuperación de la configuración del historial enriquecido actual para un canal.
  6. Haga clic en Actualizar ACL.
El rico acceso a la historia ahora está controlado por la nueva política. Los miembros de la organización que no estén incluidos en la nueva política recibirán un mensaje de error cuando intenten acceder a un recurso controlado por la política.

Tablas y columnas de base de datos de historial enriquecido

La base de datos de historial enriquecida contiene tres tablas para cada canal: historial, estado y última altura. Consultará las tablas de historial y estado al crear análisis sobre las transacciones del libro mayor de los códigos de cadenas. Si ha seleccionado alguno de los detalles de transacción al activar el historial enriquecido, se creará una tabla adicional con los detalles de transacción.

Tabla de Historial

La tabla <instanceName><channelName>_hist contiene el historial del libro mayor. Los datos de esta tabla indican el ID de código de cadena, la clave utilizada, si la transacción era válida, el valor asignado a la clave, etc.

Tenga en cuenta que las columnas value y valueJson se utilizan de manera mutuamente excluyente. Es decir, cuando un valor de clave es json válido, el valor se define en la columna valueJson. De lo contrario, el valor se establece en la columna value. La columna valueJson se configura como una columna json en la base de datos, lo que significa que los usuarios pueden consultar esa columna mediante las extensiones habituales específicas de Oracle JSON.

Si se configura, los datos privados también se almacenan en esta tabla. Para datos privados, el ID de código de cadena utiliza el siguiente formato: <chaincodeName>$$<collectionName>.

Columna Tipo de dato
chaincodeId VARCHAR2 (256)
clave VARCHAR2 (1024)
txnIsValid     NÚMERO (1)
value VARCHAR2 (4000)
valueJson CLOB
blockNo NÚMERO NO NULO
NÚMERO DE txnNo NOT NULL
txnId VARCHAR2 (128)  
txnTimestamp TIMESTAMP
txnIsDelete NÚMERO (1)

Tabla de Estado

La tabla <instanceName><channelName>_state contiene valores de datos replicados desde la base de datos de estado. Al crear análisis sobre el estado del libro mayor, consultará la tabla de estados.

Tenga en cuenta que las columnas value y valueJson se utilizan de manera mutuamente excluyente. Es decir, cuando un valor de clave es json válido, el valor se define en la columna valueJson. De lo contrario, el valor se establece en la columna value. La columna valueJson se configura como una columna json en la base de datos, lo que significa que los usuarios pueden consultar esa columna mediante las extensiones habituales específicas de Oracle JSON.

Columna Tipo de dato
chaincodeId VARCHAR2 (256)
clave VARCHAR2 (1024)
value VARCHAR2 (4000) 
valueJson CLOB
blockNo NUMBER
txnNo NUMBER

Tabla de última altura

The <instanceName><channelName>_last table is used internally by Oracle Blockchain Platform to track the block height recorded in the rich history database. Determina la actualidad de la base de datos de historial enriquecido y si todas las transacciones de código de cadenas se registraron en la base de datos de historial enriquecido. No puede consultar esta base de datos para análisis.

Tabla Detalles de Transacción

La tabla <instanceName><channelName>_more contiene atributos relacionados con transacciones confirmadas. Al activar la base de datos de historial enriquecido, puede seleccionar cuáles de estos atributos desea registrar en esta tabla. La tabla de detalles de transacción solo captura información sobre transacciones de endosador, no transacciones de configuración ni ningún otro tipo de transacciones de Hyperledger Fabric.

Columna Tipo de dato
ID DE CÓDIGO DE CADENA VARCHAR2 (256)
BLOQUEO NUMBER
TXNNO NUMBER
ID de transacción VARCHAR2(128)
REGISTRO DE HORA DE TRANSACCIÓN TIMESTAMP
NÚMERO DE REMITENTE VARCHAR2(512)
ORGANIZACIÓN DE ENVÍO VARCHAR2(512)
REMITENTE VARCHAR2(512)
TIPO DE CÓDIGO DE CADENAS VARCHAR2(32)
NOMBRE DE CÓDIGO DE VALIDACIÓN VARCHAR2(32)
APROBACIÓN CLOB
ENTRADAS CLOB
EVENTOS CLOB
RESPONSESTATUS NÚMERO (0)
CARGA ÚTIL DE RESPUESTA VARCHAR2(1024)
RWSET CLOB
CREADOR DE BLOQUES VARCHAR2(512)
BLOCKCREATORORG VARCHAR2(512)
BLOQUEADOR VARCHAR2(512)
NÚMERO DE BLOQUE DE CONFIGURACIÓN NÚMERO (0)
CONFIGBLOCKCREATORCN VARCHAR2(512)
CONFIGBLOCKCREATORORG VARCHAR2(512)
CONFIGBLOCKCREATOROU VARCHAR2(512)

Note:

  • La organización (ORG) y la unidad de organización (OU) están controladas por certificados de identidad, lo que implica que se pueden asignar a varios valores. Se capturan como una lista separada por comas en los valores de la tabla.
  • Para las identidades, la tabla incluye información solo sobre la parte "Asunto" de los certificados, no sobre la parte "Emisor".
  • La columna RWSET contiene operaciones en todos los códigos de cadenas (en el mismo libro mayor) realizadas durante el endoso. Como tal, normalmente verá tanto las operaciones de lectura de lscc como las operaciones reales de espacio de nombres de código de cadena.