![]() |
Outerjoin über zwei Datenbankinstanzen in Oracle
Ich brauche einen Outerjoin über 2 Datenbankinstanzen und die Möglichkeit, wie ich diesen von Delphi aus absetze. :wall:
|
Re: Outerjoin über zwei Datenbankinstanzen in Oracle
liegen die DB-Instanzen auf der gleichen Maschine?
|
Re: Outerjoin über zwei Datenbankinstanzen in Oracle
Ja, auf dem gleichen Server!
|
Re: Outerjoin über zwei Datenbankinstanzen in Oracle
Mit DB Links ist das ziemlich easy. ;)
DB liegt auf anderer Maschine:
SQL-Code:
Auf der gleichen Maschine reicht das:
CREATE DATABASE LINK ServiceName.Domain.de
CONNECT TO CURRENT_USER USING 'ServiceName';
SQL-Code:
Bei beiden Schnipseln wird mit dem gleichen Username/password des aktuellen Schemas eine Anmeldung auf die Remote DB gemacht.
CREATE DATABASE LINK ServiceName
CONNECT TO CURRENT_USER; ServiceName ist der Service Name der Remote DB Domain.de muss mit der richtigen Domäne ersetzt werden
SQL-Code:
Mit Shared DB Links geht die Netzwerk Performance auch bei vielen parallelen sessions nicht in die Knie.
SELECT emp.ename, emp.DeptNo, dept.loc
FROM scott.emp emp ,scott.dept@DeinDBLink dept WHERE emp.DeptNo = dept.DeptNo Zitat:
|
Re: Outerjoin über zwei Datenbankinstanzen in Oracle
Wir erstellen unseren Link folgendermaßen:
SQL-Code:
Dieser Befehl funktioniert auch, aber die Abfrage liefert nur die Teilmenge einer Spalte, und in der anderen 'NULL'.
create public database link test connect to dbdoku identified by "dbdoku" using 'DBTEST';
Abfrage:
SQL-Code:
oder:
SELECT T.Tabellenname, A.Table_name FROM All_Tables A, TTabellen@Test T WHERE T.Tabellenname = A.Table_name(+) and owner = 'DBTEST';
SQL-Code:
Wo liegt der Fehler in unseren SQL-Befehlen?
Select T.Tabellenname, A.Table_name FROM All_Tables A right join TTabellen@Test T ON T.Tabellenname = A.Table_name;
Schon jetzt, danke für die Mühe. |
Re: Outerjoin über zwei Datenbankinstanzen in Oracle
Das sieht so schon OK aus...
Frage: Ist DBTest wirklich ein User, der die Tabellen besitzt? Wenn ja, hat der User DBDoku darauf SELECT-Rechte? (Nur dann sind sie in all_Tables aufgelistet) |
Re: Outerjoin über zwei Datenbankinstanzen in Oracle
DBTEST ist eine DB-Instanz.
DBDOKU hat auf DB-Instanz 'DBBE' Rechte zum auslesen der eigenen Tabellen. |
Re: Outerjoin über zwei Datenbankinstanzen in Oracle
Das Problem scheint ganz einfach...
SQL-Code:
.. zu sein.
And Owner = 'DBTEST';
Du fragst ja damit die Tabellen in dem USER DBTEST ab. |
Re: Outerjoin über zwei Datenbankinstanzen in Oracle
Die Abfrage ist in sofern falsch, weil sie bei einer Abfrage bei der Tabelle A (Tabelle von OuterJoin, die mehr Werte liefern soll) richtige Werte bringt, aber bei Tabelle B (Tabelle, die nur übereinstimmende Werte liefern darf) immer nur 'NULL' zurückliefert!
Dadurch ist natürlich kein Vergleich möglich. Liegt das am SQL-Befehl, oder am Datenbank-Link? |
Re: Outerjoin über zwei Datenbankinstanzen in Oracle
Was bekommst du denn dabei?
SQL-Code:
Hast du dann alle Tabellen?
SELECT T.Tabellenname
FROM TTabellen@Test T |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz