AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Outerjoin über zwei Datenbankinstanzen in Oracle
Thema durchsuchen
Ansicht
Themen-Optionen

Outerjoin über zwei Datenbankinstanzen in Oracle

Ein Thema von -tobi- · begonnen am 26. Mär 2004 · letzter Beitrag vom 1. Apr 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von -tobi-
-tobi-

Registriert seit: 24. Mär 2004
53 Beiträge
 
Delphi 7 Professional
 
#1

Outerjoin über zwei Datenbankinstanzen in Oracle

  Alt 26. Mär 2004, 09:10
Ich brauche einen Outerjoin über 2 Datenbankinstanzen und die Möglichkeit, wie ich diesen von Delphi aus absetze.
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#2

Re: Outerjoin über zwei Datenbankinstanzen in Oracle

  Alt 26. Mär 2004, 09:32
liegen die DB-Instanzen auf der gleichen Maschine?
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von -tobi-
-tobi-

Registriert seit: 24. Mär 2004
53 Beiträge
 
Delphi 7 Professional
 
#3

Re: Outerjoin über zwei Datenbankinstanzen in Oracle

  Alt 26. Mär 2004, 09:43
Ja, auf dem gleichen Server!
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Outerjoin über zwei Datenbankinstanzen in Oracle

  Alt 26. Mär 2004, 10:06
Mit DB Links ist das ziemlich easy.

DB liegt auf anderer Maschine:
SQL-Code:
CREATE DATABASE LINK ServiceName.Domain.de
CONNECT TO CURRENT_USER
   USING 'ServiceName';
Auf der gleichen Maschine reicht das:

SQL-Code:
CREATE DATABASE LINK ServiceName
CONNECT TO CURRENT_USER;
Bei beiden Schnipseln wird mit dem gleichen Username/password des aktuellen Schemas eine Anmeldung auf die Remote DB gemacht.

ServiceName ist der Service Name der Remote DB
Domain.de muss mit der richtigen Domäne ersetzt werden


SQL-Code:
SELECT emp.ename, emp.DeptNo, dept.loc
FROM scott.emp emp
      ,scott.dept@DeinDBLink dept
WHERE emp.DeptNo = dept.DeptNo
Mit Shared DB Links geht die Netzwerk Performance auch bei vielen parallelen sessions nicht in die Knie.


Zitat von Oracle Doku -> Managing a Distributed Database:
...
Shared database links are not useful in all situations. Assume that only one user accesses the remote server. If this user defines a shared database link and 10 shared server processes exist in the local database, then this user can require up to 10 network connections to the remote server. Because the user can use each shared server process, each process can establish a connection to the remote server.

Clearly, a non-shared database link is preferable in this situation because it requires only one network connection. Shared database links lead to more network connections in single-user scenarios, so use shared links only when many users need to use the same link. Typically, shared links are used for public database links, but can also be used for private database links when many clients access the same local schema (and therefore the same private database link).

Creating Shared Database Links
To create a shared database link, use the keyword SHARED in the CREATE DATABASE LINK statement:

CREATE SHARED DATABASE LINK dblink_name
[CONNECT TO username IDENTIFIED BY password]|[CONNECT TO CURRENT_USER]
AUTHENTICATED BY schema_name IDENTIFIED BY password
[USING 'service_name'];


The following example creates a fixed user, shared link to database SALES, connecting as SCOTT and authenticated as JANE:

CREATE SHARED DATABASE LINK link2sales
CONNECT TO scott IDENTIFIED BY tiger
AUTHENTICATED BY keith IDENTIFIED BY richards
USING 'sales';


Whenever you use the keyword SHARED, the clause AUTHENTICATED BY is required. The schema specified in the AUTHENTICATED BY clause is only used for security reasons and can be considered a dummy schema. It is not affected when using shared database links, nor does it affect the users of the shared database link. The AUTHENTICATED BY clause is required to prevent unauthorized clients from masquerading as a database link user and gaining access to privileges information.
...
  Mit Zitat antworten Zitat
Benutzerbild von -tobi-
-tobi-

Registriert seit: 24. Mär 2004
53 Beiträge
 
Delphi 7 Professional
 
#5

Re: Outerjoin über zwei Datenbankinstanzen in Oracle

  Alt 31. Mär 2004, 07:49
Wir erstellen unseren Link folgendermaßen:

create public database link test connect to dbdoku identified by "dbdoku" using 'DBTEST'; Dieser Befehl funktioniert auch, aber die Abfrage liefert nur die Teilmenge einer Spalte, und in der anderen 'NULL'.

Abfrage:

SELECT T.Tabellenname, A.Table_name FROM All_Tables A, TTabellen@Test T WHERE T.Tabellenname = A.Table_name(+) and owner = 'DBTEST'; oder:

Select T.Tabellenname, A.Table_name FROM All_Tables A right join TTabellen@Test T ON T.Tabellenname = A.Table_name; Wo liegt der Fehler in unseren SQL-Befehlen?

Schon jetzt, danke für die Mühe.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: Outerjoin über zwei Datenbankinstanzen in Oracle

  Alt 31. Mär 2004, 08:21
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)
  Mit Zitat antworten Zitat
Benutzerbild von -tobi-
-tobi-

Registriert seit: 24. Mär 2004
53 Beiträge
 
Delphi 7 Professional
 
#7

Re: Outerjoin über zwei Datenbankinstanzen in Oracle

  Alt 31. Mär 2004, 08:56
DBTEST ist eine DB-Instanz.
DBDOKU hat auf DB-Instanz 'DBBE' Rechte zum auslesen der eigenen Tabellen.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#8

Re: Outerjoin über zwei Datenbankinstanzen in Oracle

  Alt 31. Mär 2004, 09:28
Das Problem scheint ganz einfach...
 And Owner = 'DBTEST'; .. zu sein.

Du fragst ja damit die Tabellen in dem USER DBTEST ab.
  Mit Zitat antworten Zitat
Benutzerbild von -tobi-
-tobi-

Registriert seit: 24. Mär 2004
53 Beiträge
 
Delphi 7 Professional
 
#9

Re: Outerjoin über zwei Datenbankinstanzen in Oracle

  Alt 31. Mär 2004, 09:37
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?
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#10

Re: Outerjoin über zwei Datenbankinstanzen in Oracle

  Alt 31. Mär 2004, 09:40
Was bekommst du denn dabei?

SQL-Code:
SELECT T.Tabellenname
FROM TTabellen@Test T
Hast du dann alle Tabellen?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz