Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Der Amazon Athena-Connector für Oracle ermöglicht es Amazon Athena, SQL-Abfragen für Daten auszuführen, die in Oracle gespeichert sind und lokal oder auf Amazon EC2 oder Amazon RDS ausgeführt werden. Sie können den Konnektor auch verwenden, um Daten auf Oracle Exadata
Dieser Konnektor kann nicht als Verbundkatalog bei Glue Data Catalog registriert werden. Dieser Konnektor unterstützt keine in Lake Formation definierten Datenzugriffskontrollen auf Katalog-, Datenbank-, Tabellen-, Spalten-, Zeilen- und Tagebene. Dieser Konnektor verwendet Glue Connections, um die Konfigurationseigenschaften in Glue zu zentralisieren.
Voraussetzungen
Stellen Sie den Konnektor für Ihr AWS-Konto mithilfe der Athena-Konsole oder AWS Serverless Application Repository bereit. Weitere Informationen finden Sie unter Erstellen Sie eine Datenquellenverbindung oder Verwenden Sie den AWS Serverless Application Repository , um einen Datenquellenconnector bereitzustellen.
Einschränkungen
-
Schreiboperationen wie DDL werden nicht unterstützt.
-
In einem Multiplexer-Setup werden der Überlauf-Bucket und das Präfix von allen Datenbank-Instances gemeinsam genutzt.
-
Alle relevanten Lambda-Grenzwerte. Weitere Informationen finden Sie unter Lambda quotas (Lambda-Kontingente) im AWS Lambda -Entwicklerhandbuch.
-
Nur Oracle-Datenbanken der Version 12.1.0.2 werden unterstützt.
-
Wenn der Oracle-Konnektor keine Glue-Verbindung verwendet, werden die Datenbank-, Tabellen- und Spaltennamen vom Konnektor in Großbuchstaben umgewandelt.
Wenn der Oracle-Konnektor eine Glue-Verbindung verwendet, werden die Datenbank-, Tabellen- und Spaltennamen vom Konnektor nicht standardmäßig in Großbuchstaben geschrieben. Fügen Sie Objektnamen in doppelte Anführungszeichen („) ein, um die Groß- und Kleinschreibung beizubehalten. Um dieses Verhalten bei der Groß- und Kleinschreibung zu ändern, ändern Sie die Umgebungsvariable Lambda by
casing_mode
nachlower
Bedarf aufupper
oder.
Bedingungen
Die folgenden Begriffe beziehen sich auf den Oracle-Konnektor.
-
Datenbank-Instance — Jede Instance einer Datenbank, die vor Ort, auf Amazon EC2 oder auf Amazon RDS bereitgestellt wird.
-
Handler – Ein Lambda-Handler, der auf Ihre Datenbank-Instance zugreift. Ein Handler kann für Metadaten oder für Datensätze verwendet werden.
-
Metadaten-Handler – Ein Lambda-Handler, der Metadaten von Ihrer Datenbank-Instance abruft.
-
Record Handler – Ein Lambda-Handler, der Datensätze aus Ihrer Datenbank-Instance abruft.
-
Composite Handler – Ein Lambda-Handler, der sowohl Metadaten als auch Datensätze aus Ihrer Datenbank-Instance abruft.
-
Eigenschaft oder Parameter – Eine Datenbankeigenschaft, die von Handlern zum Extrahieren von Datenbankinformationen verwendet wird. Sie konfigurieren diese Eigenschaften als Lambda-Umgebungsvariablen.
-
Verbindungszeichenfolge – Eine Textzeichenfolge, die verwendet wird, um eine Verbindung zu einer Datenbank-Instance herzustellen.
-
Katalog — Ein nicht bei Athena registrierter AWS Glue Katalog, der ein erforderliches Präfix für die
connection_string
Immobilie ist. -
Multiplex-Handler – Ein Lambda-Handler, der mehrere Datenbankverbindungen akzeptieren und verwenden kann.
Parameter
Verwenden Sie die Parameter in diesem Abschnitt, um den Oracle-Konnektor zu konfigurieren.
Anmerkung
Athena-Datenquellenconnectors, die am 3. Dezember 2024 und später erstellt wurden, verwenden AWS Glue Verbindungen.
Die unten aufgeführten Parameternamen und Definitionen beziehen sich auf Athena-Datenquellenconnectors, die vor dem 3. Dezember 2024 erstellt wurden. Diese können sich von ihren entsprechenden AWS Glue Verbindungseigenschaften unterscheiden. Verwenden Sie ab dem 3. Dezember 2024 die folgenden Parameter nur, wenn Sie eine frühere Version eines Athena-Datenquellenconnectors manuell bereitstellen.
Verbindungszeichenfolge
Verwenden Sie eine JDBC-Verbindungszeichenfolge im folgenden Format, um eine Verbindung zu einer Datenbank-Instance herzustellen.
oracle://${
jdbc_connection_string
}
Anmerkung
Wenn Ihr Passwort Sonderzeichen enthält (z. B. some.password
), schließen Sie Ihr Passwort in doppelte Anführungszeichen ein, wenn Sie es an die Verbindungszeichenfolge übergeben (z. B. "some.password"
). Wenn Sie dies nicht tun, kann dies zu einem Fehler Angabe einer ungültigen Oracle-URL
führen.
Verwenden eines Multiplexing-Handlers
Sie können einen Multiplexer verwenden, um mit einer einzigen Lambda-Funktion eine Verbindung zu mehreren Datenbank-Instances herzustellen. Anfragen werden anhand des Katalognamens weitergeleitet. Verwenden Sie die folgenden Klassen in Lambda.
Handler | Klasse |
---|---|
Composite Handler | OracleMuxCompositeHandler |
Metadaten-Handler | OracleMuxMetadataHandler |
Record Handler | OracleMuxRecordHandler |
Multiplex-Handler-Parameter
Parameter | Beschreibung |
---|---|
$ |
Erforderlich Eine Verbindungszeichenfolge einer Datenbank-Instance. Stellen Sie der Umgebungsvariablen den Namen des in Athena verwendeten Katalogs voran. Wenn zum Beispiel der bei Athena registrierte Katalog myoraclecatalog ist, dann lautet der Name der Umgebungsvariablen myoraclecatalog_connection_string . |
default |
Erforderlich Die standardmäßige Verbindungszeichenfolge. Diese Zeichenfolge wird verwendet, wenn der Katalog verwendet wird lambda:${ AWS_LAMBDA_FUNCTION_NAME } . |
Die folgenden Beispieleigenschaften gelten für eine Oracle MUX Lambda-Funktion, die zwei Datenbankinstanzen unterstützt: oracle1
(die Standardeinstellung) und oracle2
.
Eigenschaft | Wert |
---|---|
default |
oracle://jdbc:oracle:thin:${Test/RDS/Oracle1}@//oracle1.hostname:port/servicename |
oracle_catalog1_connection_string |
oracle://jdbc:oracle:thin:${Test/RDS/Oracle1}@//oracle1.hostname:port/servicename |
oracle_catalog2_connection_string |
oracle://jdbc:oracle:thin:${Test/RDS/Oracle2}@//oracle2.hostname:port/servicename |
Bereitstellen von Anmeldeinformationen
Um einen Benutzernamen und ein Kennwort für Ihre Datenbank in Ihrer JDBC-Verbindungszeichenfolge anzugeben, können Sie Eigenschaften von Verbindungszeichenfolgen oder AWS Secrets Manager verwenden.
-
Verbindungszeichenfolge – Ein Benutzername und ein Kennwort können als Eigenschaften in der JDBC-Verbindungszeichenfolge angegeben werden.
Wichtig
Als bewährte Sicherheitsmethode sollten Sie keine fest kodierten Anmeldeinformationen in Ihren Umgebungsvariablen oder Verbindungszeichenfolgen verwenden. Informationen zum Verschieben von hartcodierten Geheimnissen nach AWS Secrets Manager finden Sie AWS Secrets Manager im AWS Secrets Manager Benutzerhandbuch unter Verschieben von hartcodierten Geheimnissen nach.
-
AWS Secrets Manager— Um die Athena Federated Query-Funktion verwenden zu können AWS Secrets Manager, muss die mit Ihrer Lambda-Funktion verbundene VPC über Internetzugang
oder einen VPC-Endpunkt verfügen, um eine Verbindung zu Secrets Manager herzustellen. Sie können den Namen eines Geheimnisses in AWS Secrets Manager Ihre JDBC-Verbindungszeichenfolge eingeben. Der Konnektor ersetzt den geheimen Namen durch
username
- undpassword
-Werte von Secrets Manager.Für Amazon RDS-Datenbank-Instances ist diese Unterstützung eng integriert. Wenn Sie Amazon RDS verwenden, empfehlen wir dringend, eine Rotation der Anmeldeinformationen zu verwenden AWS Secrets Manager . Wenn Ihre Datenbank Amazon RDS nicht verwendet, speichern Sie die Anmeldeinformationen als JSON im folgenden Format:
{"username": "${username}", "password": "${password}"}
Anmerkung
Wenn Ihr Passwort Sonderzeichen enthält (z. B. some.password
), setzen Sie Ihr Passwort in doppelte Anführungszeichen, wenn Sie es in Secrets Manager speichern (z. B. "some.password"
). Wenn Sie dies nicht tun, kann dies zu einem Fehler Angabe einer ungültigen Oracle-URL
führen.
Beispiel einer Verbindungszeichenfolge mit einem geheimen Namen
Die folgende Zeichenfolge hat den geheimen Namen ${Test/RDS/Oracle}
.
oracle://jdbc:oracle:thin:${Test/RDS/Oracle}@//hostname:port/servicename
Der Konnektor verwendet den geheimen Namen, um Secrets abzurufen und den Benutzernamen und das Kennwort bereitzustellen, wie im folgenden Beispiel gezeigt.
oracle://jdbc:oracle:thin:username/password@//hostname:port/servicename
Derzeit erkennt der Oracle-Konnektor die UID
- und PWD
-JDBC-Eigenschaften.
Verwenden eines einzelnen Verbindungs-Handlers
Sie können die folgenden Einzelverbindungsmetadaten und Record Handler verwenden, um eine Verbindung zu einer einzelnen Oracle-Instance herzustellen.
Handler-Typ | Klasse |
---|---|
Composite Handler | OracleCompositeHandler |
Metadaten-Handler | OracleMetadataHandler |
Record Handler | OracleRecordHandler |
Parameter für Einzelverbindungs-Handler
Parameter | Beschreibung |
---|---|
default |
Erforderlich Die standardmäßige Verbindungszeichenfolge. |
IsFIPSEnabled |
Optional. true Wird auf eingestellt, wenn der FIPS-Modus aktiviert ist. Der Standardwert ist false . |
Die Einzelverbindungs-Handler unterstützen eine Datenbank-Instance und müssen einen default
-Verbindungszeichenfolgenparameter bereitstellen. Alle anderen Verbindungszeichenfolgen werden ignoriert.
Der Konnektor unterstützt SSL-basierte Verbindungen zu Amazon RDS-Instances. Die Unterstützung ist auf das Transport Layer Security (TLS)-Protokoll und auf die Authentifizierung des Servers durch den Client beschränkt. Gegenseitige Authentifizierung wird in Amazon RDS nicht unterstützt. Die zweite Zeile in der folgenden Tabelle zeigt die Syntax für die Verwendung von SSL.
Die folgende Beispieleigenschaft gilt für eine einzelne Oracle-Instance, die von einer Lambda-Funktion unterstützt wird.
Eigenschaft | Wert |
---|---|
default |
oracle://jdbc:oracle:thin:${Test/RDS/Oracle}@//hostname:port/servicename |
oracle://jdbc:oracle:thin:${Test/RDS/Oracle}@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)
(HOST=<HOST_NAME>)(PORT=))(CONNECT_DATA=(SID=))(SECURITY=(SSL_SERVER_CERT_DN=))) |
Überlauf-Parameter
Das Lambda-SDK kann Daten an Amazon S3 übertragen. Alle Datenbank-Instances, auf die mit derselben Lambda-Funktion zugegriffen wird, werden an denselben Speicherort verschoben.
Parameter | Beschreibung |
---|---|
spill_bucket |
Erforderlich Überlauf-Bucket-Name. |
spill_prefix |
Erforderlich Schlüssel-Prefix für den Überlauf-Bucket. |
spill_put_request_headers |
(Optional) Eine JSON-codierte Zuordnung von Anforderungsheadern und Werten für die Amazon-S3-putObject -Anforderung, die für den Überlauf verwendet wird (z. B. {"x-amz-server-side-encryption" :
"AES256"} ). Weitere mögliche Header finden Sie PutObjectin der Amazon Simple Storage Service API-Referenz. |
Gehäuse
Sie können den folgenden Gehäuseparameter verwenden, um verschiedene Gehäusemodi einzustellen. Sie können den Standard-Gehäusemodus in den Lambda-Umgebungsvariablen für Ihren Connector unabhängig von einer Klebeverbindung ändern.
-
casing_mode — (Optional) Gibt an, wie die Groß- und Kleinschreibung für Schema- und Tabellennamen behandelt wird. Der
casing_mode
Parameter verwendet die folgenden Werte, um das Verhalten der Groß- und Kleinschreibung zu spezifizieren:-
lower — Alle angegebenen Schema- und Tabellennamen werden in Kleinbuchstaben geschrieben. Dies ist die Standardeinstellung für Steckverbinder, denen eine Klebeverbindung zugeordnet ist.
-
groß — Alle angegebenen Schema- und Tabellennamen werden in Großbuchstaben geschrieben. Dies ist die Standardeinstellung für Steckverbinder, denen keine Klebeverbindung zugeordnet ist.
-
case_insensitive_search — Führt Suchen in Schema- und Tabellennamen in Oracle durch, bei denen Groß- und Kleinschreibung nicht berücksichtigt wird. Verwenden Sie diesen Wert, wenn Ihre Abfrage Schema- oder Tabellennamen enthält, die nicht mit der Standard-Groß- und Kleinschreibung für Ihren Connector übereinstimmen.
-
Datentypunterstützung
Die folgende Tabelle zeigt die entsprechenden Datentypen für JDBC, Oracle und Arrow.
JDBC | Oracle | Arrow |
---|---|---|
Boolesch | boolesch | Bit |
Ganzzahl | N/A | Tiny |
Short | smallint | Smallint |
Ganzzahl | Ganzzahl | Int |
Long | bigint | Bigint |
float | float4 | Float4 |
Double | float8 | Float8 |
Datum | date | DateDay |
Zeitstempel | Zeitstempel | DateMilli |
String | Text | Varchar |
Bytes | bytes | Varbinary |
BigDecimal | numeric(p,s) | Dezimal |
ARRAY | N.z. (siehe Hinweis) | Auflisten |
Partitionen und Splits
Partitionen werden verwendet, um zu bestimmen, wie Splits für den Konnektor generiert werden. Athena konstruiert eine synthetische Säule vom Typ varchar
, die das Partitionierungsschema für die Tabelle darstellt, das dem Konnektor beim Generieren von Splits hilft. Der Konnektor ändert nicht die eigentliche Tabellendefinition.
Leistung
Oracle unterstützt native Partitionen. Der Athena-Oracle-Konnektor kann Daten von diesen Partitionen parallel abrufen. Wenn Sie sehr große Datenmengen mit einheitlicher Partitionsverteilung abfragen möchten, wird eine native Partitionierung dringend empfohlen. Die Auswahl einer Teilmenge von Spalten beschleunigt die Abfragelaufzeit erheblich und reduziert die gescannten Daten. Der Oracle-Konnektor ist aufgrund der Gleichzeitigkeit widerstandsfähig gegenüber Drosselung. Allerdings sind die Abfragelaufzeiten in der Regel lang.
Der Athena-Oracle-Konnektor führt einen Prädikat-Pushdown durch, um die von der Abfrage durchsuchten Daten zu reduzieren. Einfache Prädikate und komplexe Ausdrücke werden an den Konnektor übertragen, um die Menge der gescannten Daten zu reduzieren und die Laufzeit der Abfrageausführung zu verkürzen.
Prädikate
Ein Prädikat ist ein Ausdruck in der WHERE
-Klausel einer SQL-Abfrage, der einen booleschen Wert ergibt und Zeilen auf der Grundlage mehrerer Bedingungen filtert. Der Athena-Oracle-Konnektor kann diese Ausdrücke kombinieren und sie direkt an Oracle weiterleiten, um die Funktionalität zu erweitern und die Menge der gescannten Daten zu reduzieren.
Die folgenden Athena-Oracle-Konnektor-Operatoren unterstützen Prädikat-Pushdown:
-
Boolean: UND, ODER, NICHT
-
Gleichheit: GLEICH, NICHT GLEICH, WENIGER_ALS, WENIGER_ODER_GLEICH, GRÖSSER_ALS, GRÖSSER_ODER_GLEICH, IST_NULL
-
Arithmetik: ADDIEREN, SUBTRAHIEREN, MULTIPLIZIEREN, DIVIDIEREN, NEGIEREN
-
Andere: WIE_MUSTER, IN
Beispiel für einen kombinierten Pushdown
Kombinieren Sie für erweiterte Abfragefunktionen die Pushdown-Typen wie im folgenden Beispiel:
SELECT *
FROM my_table
WHERE col_a > 10
AND ((col_a + col_b) > (col_c % col_d))
AND (col_e IN ('val1', 'val2', 'val3') OR col_f LIKE '%pattern%');
Passthrough-Abfragen
Der Oracle-Connector unterstützt Passthrough-Abfragen. Passthrough-Abfragen verwenden eine Tabellenfunktion, um Ihre vollständige Abfrage zur Ausführung an die Datenquelle weiterzuleiten.
Um Passthrough-Abfragen mit Oracle zu verwenden, können Sie die folgende Syntax verwenden:
SELECT * FROM TABLE(
system.query(
query => 'query string
'
))
Mit der folgenden Beispielabfrage wird eine Abfrage an eine Datenquelle in Oracle weitergeleitet. Die Abfrage wählt alle Spalten in der customer
Tabelle aus.
SELECT * FROM TABLE(
system.query(
query => 'SELECT * FROM customer'
))
Lizenzinformationen
Durch die Verwendung dieses Connectors erklären Sie sich mit der Einbindung von Komponenten von Drittanbietern einverstanden. Eine Liste dieser Komponenten finden Sie in der Datei pom.xml
Weitere Ressourcen
Die neuesten Informationen zur JDBC-Treiberversion finden Sie in der Datei pom.xml
Weitere Informationen zu diesem Connector finden Sie auf GitHubder entsprechenden Website