Java-Codebeispiel zum Erfassen und Anzeigen von DBLINK-Quell- und Zieldaten in Oracle Database mithilfe von DBLINK

Dies ist ein Beispiel-Java-Code, der die DBLINK-Quell- und Zieldaten in Oracle Database mithilfe von DBLINK abruft und anzeigt. Als ich gefragt wurde "Gibt es eine Quelle (Informationsquelle)?" In einer bestimmten Frage in einem bestimmten Chat wurde es "Gununu". Also schrieb ich es. 彡 (゜) (゜)

1. Umgebung und Konfiguration

Ich habe versucht, mit der folgenden Konfiguration zu überprüfen.

Java → (JDBC) → User_A → (DBLINK) → User_B

Die Umgebung verwendet die folgende Umgebung von Virtualbox. Es ist einfach einzurichten, da es von Anfang an enthalten ist. 彡 (゜) (゜)

Erstellen Sie mühelos eine Oracle DB 19c-Umgebung mit einem OTN VirtualBox-Image https://qiita.com/ora_gonsuke777/items/b41f37637e59319796b4

2. User_A erstellen und Daten einfügen

Erstellen Sie zunächst User_A und fügen Sie die Daten ein.

export ORACLE_HOME=/u01/app/oracle/product/version/db_1
export PATH=${PATH}:${ORACLE_HOME}/bin

sqlplus /nolog

CONNECT SYS/oracle@ORCL AS SYSDBA

CREATE USER USER_A IDENTIFIED BY USER_A
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;

GRANT CREATE SESSION TO USER_A;
GRANT CREATE TABLE TO USER_A;
ALTER USER USER_A QUOTA UNLIMITED ON USERS;

CONNECT USER_A/xxxxxxxx@orcl;

CREATE TABLE TBL_A(
  COL1 NUMBER
);
INSERT INTO TBL_A VALUES(100);
COMMIT;


Connected.

User created.

Grant succeeded.

Grant succeeded.

User altered.

Connected.

Table created.

1 row created.

Commit complete.

3. Erstellen Sie User_B und fügen Sie Daten ein

Erstellen Sie dann User_B und fügen Sie die Daten ein. Was zu tun ist, ist mit User_A 彡 (゚) (゚)

export ORACLE_HOME=/u01/app/oracle/product/version/db_1
export PATH=${PATH}:${ORACLE_HOME}/bin

sqlplus /nolog

CONNECT SYS/oracle@ORCL AS SYSDBA

CREATE USER USER_B IDENTIFIED BY USER_B
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;

GRANT CREATE SESSION TO USER_B;
GRANT CREATE TABLE TO USER_B;
ALTER USER USER_B QUOTA UNLIMITED ON USERS;

CONNECT USER_B/xxxxxxxx@orcl;

CREATE TABLE TBL_B(
  COL1 NUMBER
);
INSERT INTO TBL_B VALUES(200);
COMMIT;


Connected.

User created.

Grant succeeded.

Grant succeeded.

User altered.

Connected.

Table created.

1 row created.

Commit complete.

4. DBLINK-Erstellung und Funktionsprüfung

Erstellen Sie DBLINK in User_A und überprüfen Sie den Vorgang. Sie sehen, dass das für User_B erstellte TBL_B nur über DBLINK referenziert werden kann.


export ORACLE_HOME=/u01/app/oracle/product/version/db_1
export PATH=${PATH}:${ORACLE_HOME}/bin

sqlplus /nolog

CONNECT SYS/oracle@ORCL AS SYSDBA

GRANT CREATE DATABASE LINK TO USER_A;

CONNECT USER_A/xxxxxxxx@orcl;

CREATE DATABASE LINK DBL_USER_B
CONNECT TO USER_B IDENTIFIED BY xxxxxxxx
USING 'ORCL';

SELECT * FROM TBL_A;

SELECT * FROM TBL_B;

SELECT * FROM USER_B.TBL_B;

SELECT * FROM TBL_B@DBL_USER_B;

Connected.

Grant succeeded.

Connected.

Database link created.

      COL1
----------
       100

              *
ERROR at line 1:
ORA-00942: table or view does not exist

                     *
ERROR at line 1:
ORA-00942: table or view does not exist

      COL1
----------
       200

5. Java-Codebeispiel

Dies ist ein Beispiel, das eine Verbindung mit User_A und SELECTs herstellt und TBL_A und TBL_B (über DBLINK) anzeigt.

import java.sql.*;

public class GetDblinkData {
    public static void main(String[] args) {
        final String path = "jdbc:oracle:thin:@localhost:1521/orcl";
        final String id = "USER_A";  //ID
        final String pw = "xxxxxxxx";  //password

        try (
            Connection conn  = DriverManager.getConnection(path, id, pw);
            Statement  stmt  = conn.createStatement();
            ResultSet  rs    = stmt.executeQuery("SELECT COL1 FROM TBL_A");
            Statement  stmt2 = conn.createStatement();
            ResultSet  rs2   = stmt2.executeQuery("SELECT COL1 FROM TBL_B@DBL_USER_B");
        ) {
            while (rs.next()) {
                int i = rs.getInt("COL1");
                System.out.println("TBL_A COL1 => " + i);
            }
            while (rs2.next()) {
                int j = rs2.getInt("COL1");
                System.out.println("TBL_B COL1 => " + j);
            }
        } catch(SQLException ex) {
            ex.printStackTrace();  //Error
        }
    }
}

5. Kompilieren und ausführen

Nun, endlich kompilieren und ausführen. Wenn Sie den folgenden Befehl ausführen ... 彡 (゚) (゚)

javac GetDblinkData.java

java -classpath /u01/app/oracle/product/version/db_1/jdbc/lib/ojdbc8.jar:. GetDblinkData

TBL_A COL1 => 100
TBL_B COL1 => 200

Die DBLINK-Originaldaten (TBL_A) und DBLINK-Zieldaten (TBL_B) konnten erfasst und angezeigt werden! 彡 (^) (^)

6. Zusammenfassung

Ich konnte bestätigen, dass die Daten der DBLINK-Quelle und des DBLINK-Ziels mit einer einzigen DB-Verbindung erfasst werden können. DBLINK ist jedoch ein zweischneidiges Schwert. Es ist ein eng gekoppelter Mechanismus, also missbrauchen Sie ihn nicht. 彡 (゜) (゜)

Recommended Posts

Java-Codebeispiel zum Erfassen und Anzeigen von DBLINK-Quell- und Zieldaten in Oracle Database mithilfe von DBLINK
Java-Quellbeispiel für SELECT und Anzeige von CLOB (Oracle Database + Java)
Beispielcode zum Abrufen der Werte der wichtigsten SQL-Typen in Java + Oracle Database 12c
Beispielcode zum Serialisieren und Deserialisieren von Java Enum-Enumerationen und JSON in Jackson
Beispielcode zum Konvertieren von List in List <String> in Java Stream
[Für Anfänger] Mindestbeispiel für die Anzeige von RecyclerView in Java
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
Beispielcode zum Parsen von Datum und Uhrzeit mit Java SimpleDateFormat
Quelle zur Anzeige des Zeichenarrays mit numberPicker in Android Studio (Java)
[Android] Konvertieren Sie Map in JSON mit GSON mit Kotlin und Java
Beispielcode zum Aufrufen der Yahoo! Local Search API in Java
Firestore-Daten in RecyclerView [Java] anzeigen
Java 9 neue Funktionen und Beispielcode
Beispielcode mit Minio aus Java
Versuchen Sie, mit MyBatis im Micronaut + Kotlin-Projekt Daten aus der Datenbank abzurufen
Verwenden von Hystrix und Sentinel im Codebeispiel
[Java] Fluss vom Quellcode zur Ausführung
Beispiel zum Entpacken einer gz-Datei in Java
Von Java nach C und von C nach Java in Android Studio
Beispielquellcode zum Ermitteln des minimalen gemeinsamen Vielfachen mehrerer Werte in Java
Beispielcode zum Abrufen der wichtigsten SQL-Typwerte in Java + MySQL 8.0
Techniken zum Lesen von Java-Quellcode in Eclipse
So zeigen Sie eine Webseite in Java an
Code zum Escapezeichen von JSON-Zeichenfolgen in Java
[Java] Konvertieren Sie DB-Code mit enum in einen Codewert
Versuchen Sie es mit Sourcetrail (Win-Version) mit Java-Code
Versuchen Sie es mit Sourcetrail (MacOS-Version) mit Java-Code
Zeigen Sie "Hello World" im Browser mit Java an
Zeigen Sie "Hello World" im Browser mit Java an
Rufen Sie eine gespeicherte Prozedur in der CallableStatement-Oberfläche von Java auf, um die Spalten PROGRAM und MODULE in V $ ACTIVE_SESSION_HISTORY anzuzeigen. (Oracle Database + Java)