Connect to Oracle Server (FireDAC)

From RAD Studio
Jump to: navigation, search

Go Up to Database Connectivity (FireDAC)

This topic describes how to connect to Oracle Server.

Supported Versions

The FireDAC native driver supports Oracle Enterprise, Standard (ex Workgroup), and Express (ex Personal) server editions version 8.0.3 and later. For detailed discussion on Oracle usage in FireDAC for the Delphi application, read the "Using Oracle with FireDAC" chapter.

Note: Since the application created in Delphi must be 64-bit to use the 64-bit instant client, and since the IDE is 32-bit, the IDE will show an error ("OCI is not properly installed...") if only the 64-bit instant client is available. In this case, parameters need to be specified outside of the connection editor, either in code or directly setting properties in the TFDConnection component

Client Software

Windows Client Software

FireDAC requires one of the following Oracle x86 or x64 client software types to be installed on the workstation:

  • "Fat" Oracle Client (details) -- It requires the standard install procedure. The driver uses the client that is installed in the primary Oracle Home, if not specified explicitly.
  • "Thin" Oracle Instant Client (details) -- The driver uses the client, which is either copied into a folder in the PATH or into the application EXE folder, if not specified explicitly. See "Using Instant Client" below.

If the Oracle client software has not been installed properly, an exception is raised when trying to connect:

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

Using Instant Client

To install Instant Client, download the Oracle Instant x86 or x64 client archive, unpack it and copy the files:

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

in your application EXE folder or in a folder in the PATH.

When you are using TNS names, put the tnsnames.ora file in the same folder or set the TFDPhysOracleDriverLink.TNSAdmin property value to a folder path with tnsnames.ora or use the TNSAdmin driver configuration parameter.

Set TFDPhysOracleDriverLink.NLSLang to the required value or use the NLSLang driver configuration parameter.

macOS Client Software

FireDAC requires:

  • the libclntsh.dylib x86 client library.

You can download it as Instant Client for macOS (here)

To install on Linux, read the following articles:

Linux Client Software

To install the Linux client library:

  1. Install the libaio library:
    • On Ubuntu Server 16.04 LTS, run:
      sudo apt-get install libaio1
    • On Red Hat Enterprise Linux 7, run:
      sudo yum install libaio
  2. Install the Instant Client for Linux as described in any of the following articles:

Driver Linkage

To link the driver:

Connection Definition Parameters

To connect to an Oracle DBMS, most applications require that you specify DriverID, Database, User_Name, and Password (see Defining Connection (FireDAC) for details).

DriverID=Ora

Parameter Description Example value
Database

The value can be one of the following:

  • TNS alias name -- specifying which database to connect to.
  • TNS connection descriptor -- as it is in TNSNames.ora
  • Oracle connection string -- as it is in SQL*Plus.
  • Oracle easy connect string -- as it is described here.
  • 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 Specify Yes to use OS authentification, and No to use the DBMS authentification. No
User_Name The Oracle user name, if OSAuthent=No Scott
Password The Oracle user password, if OSAuthent=No tiger
AuthMode

The Oracle authentification mode:

  • Normal -- standard user. Default value.
  • SysDBA -- user with database administrator privileges.
  • SysOper -- user with database operator privileges.
  • SysASM -- user with database administrative privileges for Oracle Automatic Storage Management instances.
  • SysBackup -- user with database administrative privileges for Backup and Recovery operations.
  • SysDG -- user with database administrative privileges for Oracle Data Guard operations.
  • SysKM -- user with database administrative privileges for Transparent Data Encryption keystore operations.
Note: Further information at Oracle Database Administrator's Guide
Normal
ReadTimeout Specifies the timeout value in milliseconds for the receive or read operations.

Specifying zero means no timeout.

Note: Use this parameter in environments where clients shut down on occasion, either deliberately or abnormally. Otherwise, the database server could be waiting for data from clients that may be shut down or experiencing difficulties.
WriteTimeout Specifies the timeout value in milliseconds for the database server to complete a send operation to clients.

Specifying zero means no timeout.

Note: Use this parameter in environments where clients shut down on occasion, either deliberately or abnormally. Otherwise, the database server may continue to send responses to unavailable clients.
CharacterSet The character set for the connection. If not specified, the NLS_LANG variable value is used.
  • UTF8
  • cl8mswin1251
BooleanFormat

Defines how to represent Boolean values:

  • Choose -- uses the Boolean type to represent PL/SQL Boolean parameters. This is the default mode.
    Note: This is valid for Oracle 12c or higher. For previous versions of Oracle, the Integer type is used when selecting Choose.
  • Integer -- uses the Integer type to represent PL/SQL Boolean parameters, where False = 0 and True = 1.
  • String -- uses the String type to represent PL/SQL Boolean parameters, where False = 'F' and True = 'T'.
Choose
ApplicationName Name of the application. If specified, this value is stored in the V$SESSION column MODULE. AllBooks
OracleAdvanced Additional Oracle session options. For details, see the ALTER SESSION SET chapter, the "Initialization Parameters and ALTER SESSION" paragraph. A value format is - <option>=<value>[;...].
NewPassword Specifies the new Oracle user password. FireDAC connects to the DB using the old password and immediately changes it to the new one. tiger2
MetaDefSchema Specifies the default schema for the application. The design time code omits the schema name in object names if it is equal to MetaDefSchema. SCOTT

Use Cases

  • Connect to a database using the predefined TNS name (stored in tnsnames.ora):
DriverID=Ora
Database=ORA_920_APP
User_Name=ADDemo
Password=a
  • Connect to a database using host, port, and instance name info:
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
  • Connect to a local database as sysdba:
DriverID=Ora
User_Name=sys
AuthMode=sysdba
  • Connect to a database using the TNS name and change the password:
DriverID=Ora
Database=ORA_920_APP
User_Name=ADDemo
Password=a
NewPassword=b
  • Connect to a database using the easy connect string:
DriverID=Ora
Database=OraSrv:1521/orcl
User_Name=ADDemo
Password=a

See Also