Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Anmelden für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch die Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Datenbanklinks aus Autonomous Database mit vom Kunden verwalteter heterogener Konnektivität zu Microsoft SQL Server auf einem privaten Endpunkt erstellen
Einführung
In einer Organisation werden Daten in mehreren Datenbanken gespeichert, und Sie arbeiten oft an einer Datenbank, die Sie für den Zugriff auf Objekte in einer anderen Datenbank benötigen. Hier kann Oracle Database Link helfen. Ein Datenbanklink ist ein Schemaobjekt in einer Datenbank, mit dem Sie auf Objekte in einer anderen Datenbank zugreifen können. Die andere Datenbank muss kein Oracle Database-System sein. Für den Zugriff auf Nicht-Oracle-Systeme müssen Sie jedoch Oracle Heterogeneous Services verwenden.
In diesem Tutorial wird erläutert, wie Sie auf eine Microsoft SQL Server-Datenbank (Nicht-Oracle-Datenbank) zugreifen können, die sich auf einem privaten Endpunkt von Oracle Autonomous Database Serverless (ADB-S) auf einem privaten Endpunkt befindet. Für den Zugriff auf Nicht-Oracle-Datenbanken von ADB-S müssen Sie Datenbanklinks von Autonomous Database zu Oracle Database Gateway erstellen.
Es gibt zwei Optionen, Datenbanklinks von Autonomous Database zu Oracle Database Gateway zu erstellen, um auf Nicht-Oracle-Datenbanken zuzugreifen, die sich auf einem privaten Endpunkt befinden:
• Datenbanklinks mit vom Kunden verwalteter heterogener Konnektivität zu Microsoft SQL Server-Datenbank auf einem privaten Endpunkt ohne Wallet (TLS) erstellen
• Datenbanklinks mit vom Kunden verwalteter heterogener Konnektivität zu Microsoft SQL Server-Datenbank auf einem privaten Endpunkt mit einem Wallet (TCPS) erstellen
Ziele
Erstellen Sie Datenbanklinks aus Autonomous Database mit vom Kunden verwalteter heterogener Konnektivität zu Microsoft SQL Server (nicht Oracle Database) auf einem privaten Endpunkt.
Voraussetzungen
- Lesen Sie das Dokument Datenbanklinks mit vom Kunden verwalteten heterogenen Verbindungen zu Nicht-Oracle-Datenbanken auf einem privaten Endpunkt erstellen
- Prüfen Sie die im Dokument genannten Voraussetzungen
- ADB-S - Autonomous Transaction Processing 19c auf privatem Endpunkt
- Nicht-Oracle Database - Microsoft SQL Server 2019 Express Edition, Database Name - AdventureWorks, Port TCP (1433), die auf Windows VM auf einem privaten Endpunkt ausgeführt wird
- Windows-VM-Betriebssystem - Windows Server 2019
- Oracle Database Gateway - Oracle Database Gateway for SQL Server, Port - TCP (1521), TCPS (2484)
- Laden Sie Oracle Database-Gateways hier herunter, und installieren und konfigurieren Sie Oracle Database Gateway for SQL Server.
Um dies zu vereinfachen, haben wir Oracle Database Gateway for SQL Server und Microsoft SQL Server 2019 auf derselben OCI-VM-Instanz mit Windows Server 2019 installiert.
Architektur
Im Folgenden finden Sie eine Beispielarchitektur auf hoher Ebene der Lösung
Beschreibung der Abbildung adb-s-db-link-to-mssql.png
Option 1: Datenbanklinks ohne Wallet erstellen (TLS)
Aufgabe 1.1: Oracle Database Gateway for SQL Server konfigurieren
Bevor wir beginnen, müssen wir sicherstellen, dass Oracle Database Gateway for SQL Server richtig konfiguriert ist. Während der Installation von Oracle Database Gateway for SQL Server konfigurieren Sie ORACLE_HOME, notieren Sie sich das Verzeichnis ORACLE_HOME. Für dieses Tutorial lautet der Speicherort 'C:\app\oracle\product\19.0.0\tghome_1'.
Es gibt vier wichtige Dateien, die Sie sicherstellen müssen, dass sie korrekt konfiguriert sind.
- ORACLE_HOME\dg4msql\admin\initdg4msql.ora
- ORACLE_HOME\network\admin\listener.ora
- ORACLE_HOME\network\admin\sqlnet.ora
- ORACLE_HOME\network\admin\tnsnames.ora
So sehen die Dateien in unserer Testumgebung für dieses Tutorial aus.
ORACLE_HOME\dg4msql\admin\initdg4msql.ora
# This is a customized agent init file that contains the HS parameters
# that are needed for the Database Gateway for Microsoft SQL Server
#
# HS init parameters
#
HS_FDS_CONNECT_INFO=mssqlvm1:1433//AdventureWorks
HS_FDS_TRACE_LEVEL=ODBC
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
ORACLE_HOME\network\admin\listener.ora
# listener.ora Network Configuration File: C:\app\oracle\product\19.0.0\tghome_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = mssqlvm1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCPS)(HOST = mssqlvm1)(PORT = 2484))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=dg4msql)
(ORACLE_HOME=C:\app\oracle\product\19.0.0\tghome_1)
(PROGRAM=dg4msql)
)
)
ORACLE_HOME\network\admin\sqlnet.ora
# sqlnet.ora Network Configuration File: C:\app\oracle\product\19.0.0\tghome_1\NETWORK\ADMIN\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NONE)
NAMES.DIRECTORY_PATH= (TNSNAMES)
ORACLE_HOME\network\admin\tnsnames.ora
dg4msql=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
(CONNECT_DATA=(SID=dg4msql))
(HS=OK)
)
Starten Sie den Oracle Database Gateway-Service neu. Für dieses Tutorial lautet er mit der Services-Konsole (Services.msc
) "OracleOraGTW19Home1TNSListener".
Sie können den Listener-Status mit dem Befehl lsnrctl status
prüfen:
C:\Users\opc>lsnrctl status
LSNRCTL for 64-bit Windows: Version 19.0.0.0.0 - Production on 19-JUL-2023 11:45:54
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=mssqlvm1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 19.0.0.0.0 - Production
Start Date 19-JUL-2023 09:14:23
Uptime 0 days 2 hr. 31 min. 32 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File C:\app\oracle\product\19.0.0\tghome_1\network\admin\listener.ora
Listener Log File C:\app\oracle\diag\tnslsnr\MSSQLVM1\listener\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=MSSQLVM1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=MSSQLVM1)(PORT=2484)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
Services Summary...
Service "dg4msql" has 1 instance(s).
Instance "dg4msql", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
Aufgabe 1.2: Datenbanklink aus einer Autonomous Database-Instanz ohne Wallet erstellen
-
Erstellen Sie eine Anmeldung bei MS SQL Server, die Zugriff auf die MS SQL Server-Datenbank hat. Beispiel: Sie haben eine SQL-Anmeldung
ORACLE
auf MS SQL Server erstellt, die Zugriff auf die MS SQL Server-DatenbankAdventureWorks
hat. -
Stellen Sie eine Verbindung zu Autonomous Database her, und erstellen Sie Zugangsdaten für den Zugriff auf die MS SQL Server-Datenbank. Der Benutzername und das Kennwort, die Sie mit
DBMS_CLOUD.CREATE_CREDENTIAL
angeben, sind die Zugangsdaten für die MS SQL Server-Datenbank, die im Datenbanklink verwendet werden. Für dieses Tutorial wurden Zugangsdaten für die SQL-AnmeldungORACLE
bereitgestellt.BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DB_LINK_CRED', username => 'ORACLE', --Ensure username is in UPPERCASE password => 'USER_PASSWORD' ); END; /
-
Erstellen Sie nun den Datenbanklink in Autonomous Database zu Oracle Database Gateway for SQL Server mit DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.
BEGIN DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK( db_link_name => 'MSSQLLINK', hostname => 'gatewayhostname', port => '1521', service_name => 'dg4msql', ssl_server_cert_dn => NULL, credential_name => 'DB_LINK_CRED', directory_name => NULL, private_target => TRUE, gateway_link => TRUE, gateway_params => NULL); END; /
Hinweis: Der Parameter
private_target
muss auf TRUE gesetzt sein, wenn sich die Ziel-Nicht-Oracle Database auf einem privaten Endpunkt befindet. -
Fragen Sie die MS SQL Server-Datenbank mit dem Oracle DB-Link ab.
SELECT * FROM HumanResources.Employee@MSSQLLINK;
Sie können die MS SQL Server-Datenbank, die sich auf einem privaten Endpunkt befindet, mit Oracle DB Link ohne Wallet von ADB-S abfragen.
Option 2: Datenbanklinks mit einem Wallet (TCPS) erstellen
Aufgabe 2.1: Oracle Database Gateway for SQL Server konfigurieren
Bevor Sie nun die Datenbanklinks mit der vom Kunden verwalteten heterogenen Konnektivität zu Microsoft SQL Server Database auf einem privaten Endpunkt mit einem Wallet erstellen, müssen Sie ein Wallet erstellen. Sie können ein selbstsigniertes Wallet mit orapki erstellen.
Wir erstellen das Server- und Client-Wallet auf demselben Rechner, auf dem Oracle Database Gateway for SQL Server installiert ist. Da das Gateway auf diesem Rechner installiert wurde, ist orapki
bereits hier vorhanden: C:\app\oracle\product\19.0.0\tghome_1\bin.
Erstellen Sie zwei Ordner für Server- und Client-Wallet:
-
C:\app\oracle\product\19.0.0\tghome_1\walletserver
-
C:\app\oracle\product\19.0.0\tghome_1\walletclient
Befehle zum Erstellen eines Server-Wallets und Hinzufügen eines Serverzertifikats:
orapki wallet create -wallet C:\app\oracle\product\19.0.0\tghome_1\walletserver -pwd Password@123 -auto_login
orapki wallet add -wallet C:\app\oracle\product\19.0.0\tghome_1\walletserver -pwd Password@123 -dn "CN=windows" -keysize 1024 -self_signed -validity 3650 -sign_alg sha256
Befehle zum Erstellen eines Client-Wallets und Hinzufügen eines Clientzertifikats:
orapki wallet create -wallet C:\app\oracle\product\19.0.0\tghome_1\walletclient -pwd Password@123 -auto_login
orapki wallet add -wallet C:\app\oracle\product\19.0.0\tghome_1\walletclient -pwd Password@123 -dn "CN=mssqlvm1client" -keysize 1024 -self_signed -validity 3650 -sign_alg sha256
Jetzt müssen Sie die Zertifikate aus dem Server-Wallet exportieren und in das Client-Wallet importieren sowie die Zertifikate aus dem Client-Wallet exportieren und in das Server-Wallet importieren.
Befehle zum Exportieren der Zertifikate aus den Wallets:
orapki wallet export -wallet C:\app\oracle\product\19.0.0\tghome_1\walletserver -pwd Password@123 -dn "CN=windows" -cert C:\app\oracle\product\19.0.0\tghome_1\walletserver\server.crt
orapki wallet export -wallet C:\app\oracle\product\19.0.0\tghome_1\walletclient -pwd Password@123 -dn "CN=mssqlvm1client" -cert C:\app\oracle\product\19.0.0\tghome_1\walletclient\client.crt
Befehle zum Importieren der Zertifikate in die Wallets:
orapki wallet add -wallet C:\app\oracle\product\19.0.0\tghome_1\walletserver -pwd Password@123 -trusted_cert -cert C:\app\oracle\product\19.0.0\tghome_1\walletclient\client.crt
orapki wallet add -wallet C:\app\oracle\product\19.0.0\tghome_1\walletclient -pwd Password@123 -trusted_cert -cert C:\app\oracle\product\19.0.0\tghome_1\walletserver\server.crt
Stellen Sie nun sicher, dass die folgenden vier Dateien korrekt aktualisiert werden:
-
ORACLE_HOME\dg4msql\admin\initdg4msql.ora
-
ORACLE_HOME\network\admin\listener.ora
-
ORACLE_HOME\network\admin\sqlnet.ora
-
ORACLE_HOME\network\admin\tnsnames.ora
So sehen die Dateien in unserer Testumgebung für dieses Tutorial aus.
ORACLE_HOME\dg4msql\admin\initdg4msql.ora
# This is a customized agent init file that contains the HS parameters
# that are needed for the Database Gateway for Microsoft SQL Server
#
# HS init parameters
#
HS_FDS_CONNECT_INFO=mssqlvm1:1433//AdventureWorks
HS_FDS_TRACE_LEVEL=ODBC
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
ORACLE_HOME\network\admin\listener.ora
# listener.ora Network Configuration File: C:\app\oracle\product\19.0.0\tghome_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
WALLET_LOCATION =
(SOURCE =
(METHOD = File)
(METHOD_DATA =
(DIRECTORY=C:\app\oracle\product\19.0.0\tghome_1\walletserver)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = mssqlvm1)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCPS)(HOST = mssqlvm1)(PORT = 2484))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=dg4msql)
(ORACLE_HOME=C:\app\oracle\product\19.0.0\tghome_1)
(PROGRAM=dg4msql)
)
)
ORACLE_HOME\network\admin\sqlnet.ora
# sqlnet.ora Network Configuration File: C:\app\oracle\product\19.0.0\tghome_1\NETWORK\ADMIN\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SSL_SERVER_DN_MATCH= (ON)
WALLET_LOCATION =
(SOURCE =
(METHOD = File)
(METHOD_DATA =
(DIRECTORY=C:\app\oracle\product\19.0.0\tghome_1\walletserver)
)
)
SQLNET.AUTHENTICATION_SERVICES= (NONE)
NAMES.DIRECTORY_PATH= (TNSNAMES)
ORACLE_HOME\network\admin\tnsnames.ora
dg4msql=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
(CONNECT_DATA=(SID=dg4msql))
(ADDRESS=(PROTOCOL=tcps)(HOST=localhost)(PORT=2484))
(CONNECT_DATA=(SID=dg4msql))
(HS=OK)
)
Aufgabe 2.2: Datenbanklink aus einer Autonomous Database-Instanz mit Wallet erstellen
-
Erstellen Sie eine Anmeldung bei MS SQL Server, die Zugriff auf die MS SQL Server-Datenbank hat. Beispiel: Sie haben eine SQL-Anmeldung
ORACLE
auf MS SQL Server erstellt, die Zugriff auf die MS SQL Server-DatenbankAdventureWorks
hat. -
Kopieren Sie das Client-Wallet (
cwallet.sso
) ausC:\app\oracle\product\19.0.0\tghome_1\walletclient
in den OCI-Objektspeicher. -
Stellen Sie eine Verbindung zu Autonomous Database her, und erstellen Sie Zugangsdaten für den Zugriff auf den Objektspeicher, in den Sie die Datei
cwallet.sso
kopiert haben.-
Unter CREATE_CREDENTIAL finden Sie Informationen zu den Parametern für Benutzername und Kennwort für verschiedene Object Storage-Services.
-
Informationen zu den erforderlichen Parametern finden Sie unter Erforderliche Schlüssel und OCIDs.
BEGIN DBMS_CLOUD.CREATE_CREDENTIAL ( credential_name => 'OCI_KEY_CRED', user_ocid => 'ocid1.user.oc1..aaaa.....7igkq', tenancy_ocid => 'ocid1.tenancy.oc1..aaaa....xo3da', private_key => 'MIIEvgIBA.........S0EOOYN4ijczB', fingerprint => 'f2:db:f9:18:a4:..:..:..:f4:f6:6c:39:96:16:aa:27'); END; /
-
-
Jetzt erstellen wir ein Verzeichnis in Autonomous Database für die Wallet-Datei
cwallet.sso
.CREATE DIRECTORY dblink_wallet_dir AS 'wallet_dir';
-
Wir laden mit DBMS_CLOUD.GET_OBJECT das selbstsignierte Wallet des Zielgateways in das Verzeichnis hoch, das Sie im vorherigen Schritt
DBLINK_WALLET_DIR
erstellt haben.BEGIN DBMS_CLOUD.GET_OBJECT( credential_name => 'OCI_KEY_CRED', object_uri => 'https://objectstorage.us-ashburn-1.oraclecloud.com/n/<namespace>/b/<bucketname>/o/cwallet.sso', directory_name => 'dblink_wallet_dir'); END;
Informationen zum Abrufen der
object_uri
finden Sie unter URI-Formate für Cloud Object Storage. -
Zugangsdaten für den Zugriff auf die MS SQL Server-Datenbank erstellen. Der Benutzername und das Kennwort, die Sie mit
DBMS_CLOUD.CREATE_CREDENTIAL
angeben, sind die Zugangsdaten für die MS SQL Server-Datenbank, die im Datenbanklink verwendet werden. In diesem Tutorial wurden Zugangsdaten für die SQL-Anmeldung "ORACLE" bereitgestellt.BEGIN DBMS_CLOUD.CREATE_CREDENTIAL( credential_name => 'DB_LINK_CRED', username => 'ORACLE', --Ensure username is in UPPERCASE password => 'USER_PASSWORD' ); END; /
-
Erstellen Sie nun den Datenbanklink in Autonomous Database zu Oracle Database Gateway for SQL Server mit DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK.
BEGIN DBMS_CLOUD_ADMIN.CREATE_DATABASE_LINK( db_link_name => 'MSSQLLINKWW', hostname => 'mssqlvm1', port => '2484', service_name => 'dg4msql', ssl_server_cert_dn => 'CN=windows', credential_name => 'DB_LINK_CRED', directory_name => 'dblink_wallet_dir', gateway_link => TRUE, private_target => TRUE, gateway_params => NULL); END; /
-
Fragen Sie jetzt die MS SQL Server-Datenbank mit dem Oracle DB-Link ab.
SELECT * FROM HumanResources.Employee@MSSQLLINKWW;
Nächste Schritte
In diesem Tutorial erfahren Sie, wie Sie Datenbanklinks aus einer Autonomous Database mit vom Kunden verwalteter heterogener Konnektivität zu Microsoft SQL Server (Nicht-Oracle Database) auf einem privaten Endpunkt konfigurieren. Wir untersuchten beide Optionen, d.h. ohne Wallet (TLS) und mit einem Wallet (TCPS).
Ähnliche Schritte können für andere Nicht-Oracle-Datenbanken verwendet werden. Sie müssen sicherstellen, dass Sie Oracle Database Gateway entsprechend konfiguriert haben.
Bestätigungen
- Autor - Deviprasad Moolya (Principal Cloud Architect)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem die Website education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Produktdokumentation finden Sie im Oracle Help Center.
Create database links from Autonomous Database with Customer-Managed Heterogeneous Connectivity to Microsoft SQL Server on a Private Endpoint
F84999-01
August 2023
Copyright © 2023, Oracle and/or its affiliates.