Szenario: IoT-Daten in Object Storage archivieren
Archivieren Sie ältere Schemadaten der IoT-Domaindatenbank aus der autonomen KI-Datenbank in Object Storage, nachdem das Livedatenaufbewahrungsfenster abgelaufen ist, sodass Sie auf die Daten zugreifen können, nachdem das Livedatenaufbewahrungsfenster abgelaufen ist.
Verwenden Sie dieses Szenario, um eine Aufbewahrungsgrenze für das IoT-Domain-Datenbankschema zu definieren. Exportieren Sie Daten, die nicht mehr in der aktiven autonomen KI-Datenbankumgebung verbleiben müssen. Bewahren Sie das Archiv für einen langfristigen Zugriff oder eine langfristige Wiederherstellung in Object Storage auf. Das Live-Schema konzentriert sich weiterhin auf aktuelle Telemetrie, Dashboards und Fehlerbehebung, während Object Storage ältere Datensätze außerhalb der Liveumgebung behält. Exportieren Sie historisierte Daten in einem abfragefreundlichen Textformat, wie z.B. Parquet. Exportieren Sie Raw- und abgelehnte Daten als Data Pump-Dumpdateien, wenn Sie die BLOB-Spalte content beibehalten müssen.
Aufgaben
- Bevor Sie beginnen.
- Schritt 1: Datenaufbewahrung und -archivierung planen.
- Schritt 2: Archivformat auswählen.
- Schritt 3: Historische Daten in Object Storage archivieren.
- Schritt 4: Raw- oder abgelehnte Daten in Object Storage archivieren.
- Schritt 5: Archivierungsobjekte prüfen.
- Optional. Schritt 6: Data Pump-Archiv in eine Tabelle laden.
Bevor Sie beginnen
Sie benötigen die Systemberechtigungen, die zum Lesen und Schreiben in DATA_PUMP_DIR erforderlich sind. Informationen hierzu finden Sie unter Data Pump verwenden. Um dieses Szenario abzuschließen, benötigen Sie Zugriff auf die autonome KI-Datenbank, das Datenbankschema der IoT-Domain und den Objektspeicher-Bucket, der die Archivdateien empfängt.
Stellen Sie sicher, dass Folgendes für Ihren Benutzer eingerichtet ist:
- Erstellen oder wählen Sie einen vorhandenen Object Storage-Bucket für die exportierten Dateien aus. Weitere Informationen finden Sie unter Daten in Object Storage einfügen.Ihr Benutzer muss Mitglied einer bestimmten Benutzergruppe mit Berechtigungen sein, um einen Bucket zu erstellen. Mit dieser Policy kann die angegebene Benutzergruppe alle Aktionen mit Buckets und den zugehörigen Objekten ausführen.
Allow group <user-group-in-customer-tenancy> to manage objects in compartment <bucket-compartment> where target.bucket.name = '<bucket-name>' - Bestätigen Sie, dass der Datenbankbenutzer das Quell-IoT-Schema abfragen kann:
<domain-short-id>__IOTMit einer IoT-Policy können Sie einer Benutzergruppe vollständigen Zugriff auf die IoT-Ressourcen in einem bestimmten Compartment erteilen.
Allow group <group-name> to manage iot-family in compartment <compartment-name>.Sie können diese Policy auch verwenden, damit eine Gruppe von Benutzern schreibgeschützten Zugriff auf IoT-Ressourcen in einem bestimmten Compartment hat.
Allow group <group-name> to read iot-family in compartment <compartment-name>. - Erstellen Sie Datenbankzugangsdaten für Object Storage, oder verwenden Sie vorhandene Zugangsdaten, die in den Bucket in Object Storage schreiben können. Informationen hierzu finden Sie unter Zugangsdaten und Standortparameter für Objektspeicher einrichten.
Verwenden Sie diese Anweisung, um Datenbankzugangsdaten zu erstellen. Ersetzen Sie Ihre Benutzer-OCID, die Mandanten-ID durch Ihren IoT-Servicemandanten und den OCI-API-Schlüssel durch Ihren OCI-API-Schlüssel:
BEGIN dbms_cloud.create_credential( credential_name => 'IOT_OBJ_STORE_CRED', user_ocid => 'ocid1.user.oc1..<>', tenancy_ocid => 'ocid1.tenancy.oc1..<>', private_key => '-----BEGIN PRIVATE KEY----- <> -----END PRIVATE KEY----- OCI_API_KEY', fingerprint => '<>' ); EXCEPTION WHEN OTHERS THEN dbms_output.put_line('Credential IOT_OBJ_STORE_CRED creation error.'); END; /
Schritt 1: Datenaufbewahrung und -archivierung planen
Die Datenaufbewahrung definiert, wie lange IoT-Datensätze im Live-Datenbankschema der IoT-Domain verbleiben. Behalten Sie aktuelle Daten live, wenn Anwendungen, Dashboards, Betriebsanalysen oder Workflows zur Fehlerbehebung Zugriff mit geringer Latenz benötigen. Wenn Datensätze außerhalb des Aufbewahrungsfensters liegen, archivieren Sie sie in Object Storage, bevor Sie sie aus dem Liveschema entfernen. Dieser Ansatz begrenzt das Wachstum in der Betriebsdatenbank und behält ältere Telemetrie, Roh-Payloads und abgelehnte Nachrichten für Audit, Untersuchung, Offlineanalysen oder Wiederherstellung bei. Weitere Informationen finden Sie unter Datenaufbewahrung einer IoT-Domain aktualisieren.
Wählen Sie den Bindungshorizont aus Ihren Geschäfts-, Berichts- und Complianceanforderungen. Verwenden Sie denselben Cutoff-Wert in der Exportabfrage und in einem späteren Bereinigungsprozess, damit die Archivgrenze klar ist. Zeitstempelspalten wie time_observed für historisierte Daten und time_received für Raw- oder abgelehnte Daten sind typische Aufbewahrungsschlüssel. Zeichnen Sie den Bucket, das Objektpräfix, das Exportformat, den Zugangsdatennamen, die Quelltabelle und den Zeitraum für jedes Archivset auf, damit Sie die Daten später suchen und neu laden können.
Schritt 2: Wählen Sie das Archivformat
Nachdem Sie den Aufbewahrungs-Cutoff definiert haben, wählen Sie das Exportformat basierend auf der IoT-Domain-Datenbanktabelle, die Sie archivieren möchten, und ob Sie BLOB-Daten beibehalten müssen.
- Historische Daten
- Verwenden Sie
DBMS_CLOUD.EXPORT_DATAmit einem Textformat wie Parquet, CSV, JSON oder XML. Parkett ist nützlich, wenn ältere Daten außerhalb der Live-IoT-Umgebung abfragbar bleiben sollen. - Rohdaten oder abgelehnte Daten
- Verwenden Sie
DBMS_CLOUD.EXPORT_DATAim Data Pump-Format, wenn die Tabelle die BLOB-Spaltecontententhält und Sie die vollständige ursprüngliche Payload beibehalten müssen.
Schritt 3: Historische Daten in Object Storage archivieren
Historische Daten werden bereits von der IoT-Plattform interpretiert. Exportieren Sie historisierte Zeilen, die im Liveaufbewahrungsfenster veraltet sind, in einem abfragefreundlichen Format, sodass Reporting- oder Offlineanalysen das Archiv aus Object Storage lesen können.
In diesem Beispiel werden Datensätze, die älter als drei Monate sind, in ein Parquet-Objekt in Object Storage exportiert.
begin dbms_cloud.export_data( credential_name => 'IOT_OBJ_STORE_CRED', file_uri_list => 'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket>/o/iot-archive/historized/historized_data_older_than_3_months.parquet', format => json_object( 'type' value 'parquet' ), query => q'[ select * from <domain-short-id>__IOT.HISTORIZED_DATA where time_observed < add_months(systimestamp, -3) ]' ); end; /Um das Parquet-Archiv später in eine Zieltabelle zu laden, erstellen Sie eine kompatible Zieltabelle, und verwenden Sie
DBMS_CLOUD.COPY_DATA.begin dbms_cloud.copy_data( table_name => 'HISTORIZED_DATA_ARCHIVE', credential_name => 'IOT_OBJ_STORE_CRED', file_uri_list => 'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket>/o/iot-archive/historized/historized_data_older_than_3_months.parquet', format => json_object( 'type' value 'parquet' ) ); end; /
Schritt 4: Raw- oder abgelehnte Daten in Object Storage archivieren
Raw- und abgelehnte Daten können die BLOB-Spalte content enthalten. Verwenden Sie einen Data Pump-Export, wenn der Aufbewahrungsprozess diese Zeilen aus der Liveumgebung verschiebt und Sie die vollständige Zeile, einschließlich BLOB-Inhalt, beibehalten müssen. Um IoT-Datenbanktabellen zu archivieren, verwenden Sie Daten aus der autonomen KI-Datenbank in den Objektspeicher oder in andere Oracle-Datenbanken exportieren.
Rohdaten exportieren:
begin dbms_cloud.export_data( credential_name => 'IOT_OBJ_STORE_CRED', file_uri_list => 'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket>/o/iot-archive/raw/raw_data_older_than_3_months.dmp', format => json_object( 'type' value 'datapump', 'compression' value 'HIGH', 'version' value 'LATEST' ), query => q'[ select * from <domain-short-id>__IOT.RAW_DATA where time_received < add_months(systimestamp, -3) ]' ); end; /Abgelehnte Daten exportieren:
begin dbms_cloud.export_data( credential_name => 'IOT_OBJ_STORE_CRED', file_uri_list => 'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket>/o/iot-archive/rejected/rejected_data_older_than_3_months.dmp', format => json_object( 'type' value 'datapump', 'compression' value 'HIGH', 'version' value 'LATEST' ), query => q'[ select * from <domain-short-id>__IOT.REJECTED_DATA where time_received < add_months(systimestamp, -3) ]' ); end; /
Verwenden Sie
DBMS_CLOUD.COPY_DATA für Textformate wie Parquet, CSV, JSON oder XML. Verwenden Sie für Data Pump-Dumpdateien Data Pump-Import, wenn Sie die archivierten Daten wiederherstellen müssen.Schritt 5: Archivierungsobjekte prüfen
Mit dem Object Storage-CLI-Befehl oci os object list können Sie prüfen, ob die Archivdateien in den Object Storage-Bucket geschrieben wurden. Weitere Informationen finden Sie unter Object Storage-Buckets auflisten und Object Storage-Objekte in einem Bucket auflisten.
oci os object list \
--namespace <namespace> \
--bucket-name <bucket> \
--prefix iot-archive/
Nachdem Sie die Archivdateien geprüft haben, führen Sie den genehmigten Bereinigungsprozess für die Aufbewahrung aus, um den archivierten Zeitraum aus dem Live-IoT-Schema zu entfernen.
Optionaler 6. Schritt: Data Pump-Archiv in eine Tabelle laden
Verwenden Sie diese Kopierprozedur, wenn Sie archivierte Raw- oder abgelehnte Zeilen aus Object Storage zurück in eine autonome AI-Datenbanktabelle zur Untersuchung, Validierung oder gezielten Wiederherstellung lesen müssen. Die Prozedur liest die Data Pump-Dumpdatei aus Object Storage und lädt sie in die angegebene Zieltabelle. Sie macht das Archiv nicht zum Teil des Live-IoT-Aufnahmepfads. Um eine vollständige Wiederherstellung auf Schemaebene durchzuführen, verwenden Sie Data Pump Import. Weitere Informationen hierzu finden Sie unter Dumpdateien herunterladen, Data Pump-Import ausführen und Objektspeicher bereinigen.
Laden Sie die Dumpdatei aus Object Storage in eine Zielarchivtabelle:
begin
dbms_cloud.copy_data(
table_name => 'RAW_DATA_ARCHIVE',
credential_name => 'IOT_OBJ_STORE_CRED',
file_uri_list => 'https://objectstorage.<region>.oraclecloud.com/n/<namespace>/b/<bucket>/o/iot-archive/raw/raw_data_older_than_3_months.dmp',
format => json_object(
'type' value 'datapump',
'rejectlimit' value 0
)
);
end;
/
Häufig gestellte Fragen (FAQ)
In dieser FAQ werden die Object Storage-Archivbenutzerberichte in diesem Szenario beschrieben.
- Welche Daten sollten im Live-IoT-Datenbankschema bleiben?
- Bewahren Sie die Daten auf, die Anwendungen, Dashboards, Betriebsanalysen und Workflows zur Fehlerbehebung für den Zugriff mit geringer Latenz benötigen. Archivieren Sie ältere Datensätze, bevor sie außerhalb des Aufbewahrungszeitraums liegen, das Sie in Schritt 1: Aufbewahrung und Archivierung von Plandaten definieren.
- Muss ich für jede IoT-Tabelle das gleiche Archivformat verwenden?
- Nein. Verwenden Sie ein abfragefreundliches Textformat wie Parquet für historisierte Daten, wenn Sie ältere Datensätze außerhalb der Liveumgebung prüfen oder analysieren möchten. Verwenden Sie das Data Pump-Format für Raw- oder abgelehnte Daten, wenn Sie die vollständige Zeile beibehalten müssen, einschließlich der BLOB-Spalte
content. - Kann ich archivierte IoT-Daten später abfragen?
- Ja. Laden Sie für Parquet-, CSV-, JSON- oder XML-Archive das Objekt in eine kompatible Zieltabelle mit
DBMS_CLOUD.COPY_DATA, oder verwenden Sie einen Berichtsworkflow, der das exportierte Format lesen kann. Verwenden Sie für Data Pump-Dumpdateien Data Pump Import oder die in Optional Schritt 6: Data Pump-Archiv in eine Tabelle laden gezeigte Kopierprozedur, wenn Sie archivierte Zeilen in einer Datenbanktabelle prüfen müssen. - Was sollte ich für jedes Archivset aufzeichnen?
- Zeichnen Sie die Quelltabelle, den Aufbewahrungszeitraum, den Zeitraum, den Objektspeicher-Bucket, das Objektpräfix, das Exportformat, den Zugangsdatennamen und das Verifizierungsergebnis auf. Mit diesen Metadaten können Sie das richtige Archivobjekt finden und die Daten später erneut laden.
- Warum verwendet der optionale Wiederherstellungsschritt
DBMS_CLOUD.COPY_DATA? - Verwenden Sie
DBMS_CLOUD.COPY_DATA, wenn Sie einen gezielten Ladevorgang aus einem Object Storage-Archiv in eine Datenbanktabelle zur Validierung, Untersuchung oder teilweisen Wiederherstellung benötigen. Verwenden Sie Data Pump Import, wenn Sie einen vollständigen Data Pump-Wiederherstellungsworkflow benötigen.
Nächste Schritte
Nachdem Sie IoT-Daten archiviert und verifiziert haben, fahren Sie mit den Aufbewahrungs- und Wiederherstellungsaufgaben für Ihre Umgebung fort.
- Aktualisieren Sie die Datenaufbewahrungseinstellung oder den Bereinigungsprozess der IoT-Domain, sodass das Liveschema nur das erforderliche Betriebsfenster beibehält.
- Wenden Sie die Aufbewahrungs-, Lebenszyklus- und Zugriffssteuerungsanforderungen für Object Storage auf den Archiv-Bucket und die Präfixe an.
- Dokumentieren Sie den Archivspeicherort, die Quelltabelle, den Zeitraum, das Format und das Verifizierungsergebnis für zukünftige Audit- oder Wiederherstellungsanforderungen.
- Mit
DBMS_CLOUD.COPY_DATAoder Data Pump Import können Sie archivierte Daten neu laden, wenn Sie ältere Datensätze prüfen oder wiederherstellen müssen.