Herstellen einer Verbindung zu Oracle Server (FireDAC)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Datenbankkonnektivität (FireDAC)

In diesem Thema wird beschrieben, wie eine Verbindung zu Oracle Server hergestellt wird.

Unterstützte Versionen

Der native FireDAC-Treiber unterstützt die Servereditionen Oracle Enterprise, Standard (ehemals Workgroup) und Express (ehemals Personal) Version 8.0.3 und höher. Eine detaillierte Beschreibung der Verwendung von Oracle in FireDAC für Delphi-Anwendungen finden Sie im Kapitel "Verwenden von Oracle mit FireDAC".

Hinweis: Da die in Delphi erstellte Anwendung 64 Bit sein muss, damit der 64-Bit-Instant-Client verwendet wird, und da die IDE 32 Bit ist, zeigt die IDE einen Fehler ("OCI ist auf diesem Computer nicht ordnungsgemäß installiert...") an, wenn nur der 64-Bit-Instant-Client verfügbar ist. In diesem Fall müssen Parameter außerhalb des Verbindungseditors, entweder im Code oder direkt durch Festlegen von Eigenschaften in der Komponente TFDConnection angegeben werden.

Client-Software

Windows-Client-Software

Für FireDAC muss einer der folgenden x86- oder x64-Client-Softwaretypen von Oracle auf dem Arbeitsplatz-Computer installiert sein:

  • "Fat" Oracle Client (Details (EN)) -- Erfordert die Standardinstallation. Der Treiber verwendet den Client, der im primären Standardinstallationsverzeichnis (Oracle Home) installiert ist, falls nichts anderes angegeben ist.
  • "Thin" Oracle Instant Client (Details (EN)) -- Der Treiber verwendet den Client, der entweder in einen in PATH angegebenen Ordner oder in den Anwendungs-EXE-Ordner kopiert wurde, falls nichts anderes angegeben ist. Siehe "Verwenden von Instant Client" weiter unten.

Wenn die Oracle-Client-Software nicht ordnungsgemäß installiert wurde, wird beim Verbindungsversuch eine Exception ausgelöst:

[FireDAC][Phys][Ora]-1309. OCI is not properly installed on this machine (NOE1/INIT)

Verwenden von Instant Client

Um Instant Client zu installieren, laden Sie das Oracle Instant-x86- oder x64-Clientarchiv herunter, entpacken es und kopieren:

  • oci.dll
  • oraocci11.dll
  • oraociei11.dll
  • orasql11.dll
  • oraons.dll

in Ihren Anwendungs-EXE-Ordner oder in einen in PATH angegebenen Ordner.

Wenn Sie TNS-Namen verwenden, speichern Sie die Datei tnsnames.ora im selben Ordner, oder setzen Sie die Eigenschaft TFDPhysOracleDriverLink.TNSAdmin auf einen Pfad zu einem Ordner, in dem tnsnames.ora enthalten ist, oder verwenden Sie den Treiberkonfigurationsparameter TNSAdmin.

Setzen Sie TFDPhysOracleDriverLink.NLSLang auf den erforderlichen Wert, oder verwenden Sie den Treiberkonfigurationsparameter NLSLang.

macOS-Client-Software

FireDAC benötigt:

  • die x86-Client-Bibliothek libclntsh.dylib.

Sie können sie als Instant Client für macOS (hier) herunterladen.

Zur Installation auf Linux, lesen Sie die folgenden Artikel:

Linux-Client-Software

Um die Linux-Client-Bibliothek zu installieren:

  1. Installieren Sie die libaio-Bibliothek:
    • Auf Ubuntu Server 16.04 LTS, führen Sie aus:
      sudo apt-get install libaio1
    • Auf Red Hat Enterprise Linux 7, führen Sie aus:
      sudo yum install libaio
  2. Installieren Sie Instant Client für Linux wie in den folgenden Artikeln beschrieben wird:

Treibereinbindung

So binden Sie den Treiber ein:

Verbindungsdefinitionsparameter

Für eine Verbindung mit einem Oracle-DBMS ist für die meisten Anwendungen die Angabe von DriverID, Database, User_Name, und Password erforderlich (weitere Details finden Sie unter Definieren von Verbindungen (FireDAC)).

DriverID=Ora

Parameter Beschreibung Beispielwert
Database

Der Wert kann Folgendes sein:

  • TNS-Aliasname -- legt fest, zu welcher Datenbank eine Verbindung hergestellt werden soll.
  • TNS-Verbindungs-Deskriptor -- wie in TNSNames.ora.
  • Oracle-Verbindungsstring -- wie in SQL*Plus.
  • Oracle-String für eine einfache Verbindung -- wie hier (EN) beschrieben.
  • OraSrv
  • (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = OraSrv)(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl)))
  • scott/tiger@OraSrv
  • system/manager@OraSrv as sysdba
  • OraSrv:1521/orcl
OSAuthent Geben Sie Yes für die OS-Authentifizierung und No für die DBMS-Authentifizierung an. No
User_Name Der Oracle-Benutzername, wenn OSAuthent=No Scott
Password Das Oracle-Passwort, wenn OSAuthent=No tiger
AuthMode

Der Oracle-Authentifizierungsmodus:

  • Normal -- Der Oracle-Authentifizierungsmodus:
  • SysDBA -- Benutzer mit Datenbankadministratorrechten
  • SysOper -- Benutzer mit Datenbankoperatorrechten.
  • SysASM -- Benutzer mit Datenbankadministratorrechten für Oracleinstanzen Automatic Storage Management (EN).
  • SysBackup -- Benutzer mit Datenbankadministratorrechten für Backup and Recovery (EN)-Operationen.
  • SysDG -- Benutzer mit Datenbankadministratorrechten für Oracleoperationen Data Guard (EN).
  • SysKM -- Benutzer mit Datenbankadministratorrechten für Transparent Data Encryption (EN)-Keystore-Operationen.
Note: Weitere Informationen unter Oracle Database Administrator's Guide (EN)
Normal
ReadTimeout Legt den Wert der Zeitüberschreitung in Millisekunden für Erhalt- oder Leseoperationen fest.

Das Festlegen von Null bedeutet keine Zeitüberschreitung.

Hinweis: Verwenden Sie diesen Parameter in Umgebungen, in denen Clients gelegentlich geschlossen werden, entweder gewollt oder vorzeitig. Andernfalls kann der Datenbank-Server auf Daten von den Clients warten, die geschlossen werden können oder denen Probleme auftreten können.
WriteTimeout Legt den Wert der Zeitüberschreitung in Millisekunden für den Datenbank-Server fest, um um eine Sendeoperation an die Clients abzuschließen.

Das Festlegen von Null bedeutet keine Zeitüberschreitung.

Hinweis: Verwenden Sie diesen Parameter in Umgebungen, in denen Clients gelegentlich geschlossen werden, entweder gewollt oder vorzeitig. Andernfalls kann der Datenbank-Server weiterhin Antworten an die nicht verfügbaren Clients schicken.
CharacterSet Der Zeichensatz für die Verbindung. Wird diese Angabe weggelassen, wird der Wert der Variable NLS_LANG verwendet.
  • UTF8
  • cl8mswin1251
BooleanFormat

Definiert, wie boolesche Werte dargestellt werden sollen:

  • Choose -- verwendet dem Boolischen-Typ, um boolische PL/SQL-Parameter darzustellen. Dies ist der Standardmodus.
    Hinweis: Dieser Wert ist für Oracle 12c oder höher. Für frühere Versionen von Oracle wird der Integer-Typ verwendet, wenn Choose ausgewählt ist.
  • Integer -- verwendet den Integer-Typ, um boolesche PL/SQL-Parameter darzustellen, in denen False = 0 und True = 1 ist.
  • String -- verwendet den String-Typ, um boolesche PL/SQL -Parameter darzustellen, in denen False = 'F' und True = 'T' ist.
Choose
ApplicationName Name der Anwendung. Wenn angegeben, wird dieser Wert in der V$SESSION-Spalte MODULE gespeichert. AllBooks
OracleAdvanced Zusätzliche Oracle-Sitzungsoptionen. Einzelheiten dazu finden Sie im Kapitel ALTER SESSION SET (EN), im Abschnitt "Initialization Parameters and ALTER SESSION". Ein Wertformat ist - <option>=<value>[;...].
NewPassword Gibt das neue Oracle-Benutzerpasswort an. FireDAC stellt eine Verbindung zu der DB mit dem alten Passwort her und ändert es sofort in das neue. tiger2
MetaDefSchema Gibt das Standardschema für die Anwendung an. Im Entwurfszeitcode wird der Schemaname im Objektnamen weggelassen, wenn er MetaDefSchema entspricht. SCOTT

Anwendungsfälle

  • Herstellen einer Verbindung zu einer Datenbank mit dem vordefinierten TNS-Namen (in tnsnames.ora gespeichert):


DriverID=Ora
Database=ORA_920_APP
User_Name=ADDemo
Password=a
  • Herstellen einer Verbindung zu einer Datenbank mit Host-, Port- und Instanznamen-Infos:


DriverID=Ora
Database=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = OraSrv)(PORT = 1521)))
(CONNECT_DATA = (SERVER =    DEDICATED)(SERVICE_NAME = orcl)))
User_Name=ADDemo
Password=a
  • Herstellen einer Verbindung zu einer lokalen Datenbank als sysdba:


DriverID=Ora
User_Name=sys
AuthMode=sysdba
  • Herstellen einer Verbindung zu einer Datenbank mit dem TNS-Namen und Ändern des Passworts:


DriverID=Ora
Database=ORA_920_APP
User_Name=ADDemo
Password=a
NewPassword=b
  • Herstellen einer Verbindung zu einer Datenbank mit dem String für eine einfache Verbindung:


DriverID=Ora
Database=OraSrv:1521/orcl
User_Name=ADDemo
Password=a

Siehe auch