# Connecting SailPoint and Oracle Database

To connect SailPoint with Oracle Database, perform the following tasks:

## Adding the Source in SailPoint

To connect to SailPoint, perform the following steps. Once the connection is made, you can configure it to meet your company's needs.

> [!IMPORTANT]
>
> By default, the provisioning feature is **disabled**, and the connector only supports read-only operations. To support provisioning operations, you must manually enable the feature in the source configuration.

**To configure a new source:**

1. Sign in to SailPoint.
2. Go to **Admin \> Connections \> Sources**.
3. Select **Create New**.
4. Search for the connector by entering the name in the search box, and then select **Configure**.
5. In the **Source Name** field, enter a unique and descriptive name for your source. Source names cannot exceed 128 characters.
6. In the **Description** field, provide additional details about the source to help distinguish it from similar sources. This field allows a maximum of 2,000 characters.
7. In the **Source Owner** field, begin typing the name of an owner. Matches appear after you type two or more letters. For more information, refer to [Assigning a Source Owner](<https://documentation.sailpoint.com/saas/help/sources/index.html#assigning-a-source-owner>).
8. Under **Connection Type**, select **Direct Connection** or **Flat File**.

   - **Direct Connection** - A direct connection fetches data from the **Virtual Appliance Cluster** you choose as the application connector for the source. A direct connection configuration allows for real-time updates. For more information about configuring and deploying virtual appliances, refer to the [Virtual Appliance Reference Guide](<https://documentation.sailpoint.com/saas/help/va/index.html>).
   - **Flat File** - Select the flat file if no connector is available, or if another system restricts the connection. This option allows only reading and aggregating data as a generic/delimited application. Provisioning activity is unsupported, and additional configuration pages like connection settings and aggregation settings are unavailable.
9. If you selected **Direct Connection**, in **Virtual Appliance Cluster**, select the virtual appliance cluster that will be used as the application connector for the source.
10. (Optional) Select a governance group to grant its members [source](<https://documentation.sailpoint.com/saas/help/common/users/user_levels.html#source-sub-admin-user-level>) or [role](<https://documentation.sailpoint.com/saas/help/common/users/user_levels.html#role-sub-admin-user-level>) sub-admin level oversight of the source and its access. For more information, refer to [Creating and Managing Governance Groups](<https://documentation.sailpoint.com/saas/help/common/users/governance_groups.html>).
11. If this source represents a primary system containing your organization's personnel records, select the **Authoritative Source** checkbox. For more information, refer to [Creating Identity Profiles](<https://documentation.sailpoint.com/saas/help/setup/identity_profiles.html>).
12. Select **Continue**. The source is created, and you are navigated to the **Source Setup \> Base Configuration** page. Continue to configure your connected source there.

## Base Configuration

Provide the base configuration parameters. Information you entered in the Create New Source dialog is automatically entered into the fields in the Base Configuration page. You can edit this information if necessary.

1. Enter a unique name and description for the source.
2. In the **Source Owner** dropdown list, select the identity that owns this source.

   - To find a source owner, begin entering their name.
3. In the **Virtual Appliance Cluster** dropdown list, select the virtual appliance to use when communicating with your organization's systems. For more information, refer to [SailPoint Virtual Appliances](<https://documentation.sailpoint.com/saas/help/va/index.html>).
4. (Optional) If enabled for your organization, select the **Use a Credential Provider** checkbox to manage the source's authentication using a credential provider.

   > **Note**
   >
   > To add a credential provider, go to **Admin \> Connections \> Credential Providers**. For more information about credential providers, refer to [Credential Providers](<https://documentation.sailpoint.com/connectors/help/credential_providers.html>).
5. Configure the authentication to allow SailPoint to connect to the source. Refer to [Connection Settings](<#connection-settings>) for more information.
6. (Optional) In the **Governance Group for Source Management** dropdown list, select a governance group to associate with this source. For more information about governance groups, refer to [Associating Governance Groups with a Source](<https://documentation.sailpoint.com/saas/help/common/users/governance_groups.html#associating-a-governance-group-with-a-source>).
7. (Optional) Choose whether to enable or disable provisioning for the source. Provisioning is disabled by default.

   - **Enable Provisioning** - Set the toggle to **Enabled** to allow the source to create, update, and deactivate accounts in the connected source system.
   - **Disable Provisioning** - Set the toggle to **Disabled** to disable provisioning for the source. Disabling provisioning will prevent the creation, updating, or deactivating of accounts on this source.
8. Select **Save**.

#### Connector Files

> [!NOTE]
>
> **Screenshot**
>
> [![Connector Files](<https://documentation.sailpoint.com/connectors/oracle/database/va/help/img/oracle_base2.png>)](<https://documentation.sailpoint.com/connectors/oracle/database/va/help/img/oracle_base2.png>)

1. Upload the .jar file used for the source. The .jar file in this case, is the ojdbc8.jar file obtained from [Oracle Database 12.2.0.1 JDBC Driver &amp; UCP Downloads](<https://www.oracle.com/database/technologies/appdev/jdbc-ucp-183-downloads.html>). Any .jar uploaded must be compatible with JDK8.

   > **Warning**
   >
   > Ensure that the file you upload is not vulnerable or malicious.

   For mTLS authentication using Oracle Wallet mode, you need to upload the following JAR files: oraclepki.jar, osdt\_cert.jar, and osdt\_core.jar. For more information, refer to [Prerequisites for mTLS Authentication](<https://documentation.sailpoint.com/connectors/oracle/database/va/help/index.html#prerequisites-for-mtls-authentication>).
2. Select **Save**.

## Connection Settings

Provide the information required for SailPoint to connect and authenticate with the Oracle Database.

> [!NOTE]
>
> **Screenshot**
>
> [![Connection Settings](<https://documentation.sailpoint.com/connectors/oracle/database/va/help/img/connection_settings1.png>)](<https://documentation.sailpoint.com/connectors/oracle/database/va/help/img/connection_settings1.png>)

> [!NOTE]
>
> By default, SQL Authentication is selected as **Authentication Type**.

> [!NOTE]
>
> To connect using mTLS authentication, refer to [Connection Settings using mTLS Authentication](<#connection-settings-using-mtls-authentication>).

1. Select **Authentication Type** as SQL Authentication.
2. Enter the **User Name** and **Password** of the service account that has the required permissions and makes the connection to the database.
3. Enter the **Database URL** of your Oracle Database installation and the fully qualified name of the Oracle server. The URL format can be either of the following:

   ```text
   jdbc:oracle:thin:@<HOST>:<PORT>:<SID>
   jdbc:oracle:thin:@<DB_Server>:<PORT>:/SERVICE_NAME
   ```
4. In **Driver Class**, enter the detailed database driver that connects to the server. For example:

   ```text
   oracle.jdbc.driver.OracleDriver
   ```
5. In **Additional Connection Parameters**, specify the additional connection parameters and their values that must be passed in key value pair format. This is to support the network encryption and data integrity feature for the Oracle Database managed target system, which is recommended by the Oracle server as a part of standard security feature. If multiple parameters need to be specified, they should be entered in a new line. For example, you can enter the following:

   ```text
   oracle.net.encryption_client=ACCEPTED
   oracle.net.encryption_types_client=AES256
   ```
6. Select **Save**.

### Connection Settings Using Kerberos Authentication

Provide the information required for SailPoint to connect and authenticate with the Oracle Database using Kerberos.

The connector supports two credential modes for Kerberos authentication:

| Mode | Description |
| --- | --- |
| **Keytab** | Uses a keytab file and JAAS configuration to authenticate without a password. Recommended for production environments. |
| **Password** | Uses a Kerberos principal and password to authenticate. |

1. Select **Authentication Type** as Kerberos Authentication.
2. Select the **Credential Mode** you have configured for Kerberos authentication.

   > **Keytab**
   >
   > 1. In the **Configuration File Path** field, enter the directory path on the VA where the `krb5.config`, `OracleJDBCDriver.config`, and keytab files are located.
   >
   >    ```text
   >    /home/sailpoint/oracle-kerberos/
   >    ```
   >
   >    > **Note**
   >    >
   >    > Leave this field blank to use the default directory if the files are uploaded using the upload option on the [Base Configuration](<#base-configuration>) page.
   > 2. Select the **Kerberos Configuration Source**:
   >
   >    - **Configuration File (krb5.config)** - Uses the `krb5.config` file placed in the Configuration File Path. This is the recommended approach.
   >    - **Realm and KDC** - Enter the Kerberos realm and KDC hostname directly. Use this if you do not want to place a `krb5.config` file on the VA.
   > 3. If you selected **Realm and KDC**, enter the following:
   >
   >    - In **Kerberos Realm**, enter the realm name in uppercase. For example, `EXAMPLE.COM`.
   >    - In **KDC Hostname**, enter the fully qualified hostname of the Key Distribution Center. For example, `dc.example.com`.

   > **Password**
   >
   > 1. In the **Kerberos Principal** field, enter the principal in the format `username@REALM`.
   >
   >    ```text
   >    ora_kerb@EXAMPLE.COM
   >    ```
   > 2. In the **Kerberos Password** field, enter the Active Directory password for the Kerberos principal.
   > 3. In the **Configuration File Path** field, enter the directory path on the VA where the `krb5.config` and `OracleJDBCDriver.config` files are located.
   >
   >    ```text
   >    /home/sailpoint/oracle-kerberos/
   >    ```
   >
   >    > **Note**
   >    >
   >    > Leave this field blank to use the default directory if the files are uploaded using the upload option on the [Base Configuration](<#base-configuration>) page.
   > 4. Select the **Kerberos Configuration Source**:
   >
   >    - **Configuration File (krb5.config)** - Uses the `krb5.config` file placed in the Configuration File Path. This is the recommended approach.
   >    - **Realm and KDC** - Enter the Kerberos realm and KDC hostname directly.
   > 5. If you selected **Realm and KDC**, enter the following:
   >
   >    - In **Kerberos Realm**, enter the realm name in uppercase. For example, `EXAMPLE.COM`.
   >    - In **KDC Hostname**, enter the fully qualified hostname of the Key Distribution Center. For example, `dc.example.com`.
3. Enter the **Database URL** of your Oracle Database installation. Use the following format:

   ```text
   jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<host>)(PORT=<port>))(CONNECT_DATA=(SERVICE_NAME=<service_name>)))
   ```

   - `<host>` - IP address or fully qualified domain name (FQDN) of the Oracle server.
   - `<port>` - TCP listener port. The default is `1521`.
   - `<service_name>` - Oracle service name exactly as registered with the listener.

   > **Note**
   >
   > Ensure the Oracle server hostname is resolvable from the Virtual Appliance. If the hostname is not resolvable via DNS, configure a `hosts.yaml` file on the VA. Refer to [Configuring a hosts.yaml File](<https://documentation.sailpoint.com/saas/help/va/config_va.html#configuring-a-hostsyaml-file>).

   > **Note**
   >
   > Unlike mTLS authentication, Kerberos authentication uses the standard TCP protocol (not TCPS). The Kerberos token is exchanged at the application layer via the Oracle JDBC thin driver's built-in GSSAPI support.
4. In **Driver Class**, enter the detailed database driver that connects to the server. For example:

   ```text
   oracle.jdbc.driver.OracleDriver
   ```
5. In **Additional Connection Parameters**, specify the additional connection parameters and their values that must be passed in key value pair format. If multiple parameters need to be specified, they should be entered in a new line.
6. Select **Save**.

### Connection Settings Using mTLS Authentication

Provide the information required for SailPoint to connect and authenticate with the Oracle Database.

> [!NOTE]
>
> **Screenshot**
>
> [![Connection Settings using mTLS Authentication](<https://documentation.sailpoint.com/connectors/oracle/database/va/help/img/mtls.png>)](<https://documentation.sailpoint.com/connectors/oracle/database/va/help/img/mtls.png>)

1. Select **Authentication Type** as mTLS Authentication.
2. Select the **Authentication Mode** you have configured for mTLS authentication.

   > **Oracle Wallet**
   >
   > [![Oracle Wallet](<https://documentation.sailpoint.com/connectors/oracle/database/va/help/img/mtls_oracle.png>)](<https://documentation.sailpoint.com/connectors/oracle/database/va/help/img/mtls_oracle.png>)
   >
   > 1. In the **Oracle Wallet path** field, provide the filesystem path to the wallet directory on the VA.
   >
   >    ```text
   >    /home/sailpoint/oracle_wallet/
   >    ```
   > 2. In the **Oracle Wallet Password** field, provide the wallet password if `ewallet.p12` file is used.

   > **Java Keystore (JKS / PKCS12) Mode**
   >
   > [![Java Keystore (JKS / PKCS12) Mode](<https://documentation.sailpoint.com/connectors/oracle/database/va/help/img/mtls_java.png>)](<https://documentation.sailpoint.com/connectors/oracle/database/va/help/img/mtls_java.png>)
   >
   > 1. In the **Client Keystore Path** field, enter the file path to the client identity file (.p12 or .jks) that contains both the certificate and private key.
   >
   >    ```text
   >    /home/sailpoint/client/client.p12
   >    ```
   > 2. In the **Client Keystore Password** field, enter the password for the keystore file.
   > 3. In the **Client Key Password** field, enter the private key password if it is different from the keystore password. Leave this blank if the private key uses the same password as the keystore.
   > 4. In the **Client Truststore Path** field, enter the file path to the truststore (.jks or .p12) that contains the CA certificates used to validate the server.
   >
   >    ```text
   >    /home/sailpoint/client/client-truststore.jks
   >    ```
   > 5. In the **Client Truststore Password** field, enter the password for the client truststore file.
3. Enter the **Database URL** of your Oracle Database installation and the fully qualified name of the Oracle server. Use the following format:

   > **Note**
   >
   > When using mTLS authentication, the Database URL must use the TCPS protocol and include the Oracle server certificate's Subject DN for server identity verification.

   ```text
   jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=<host>)(PORT=<port>))(CONNECT_DATA=(SERVICE_NAME=<service_name>))(SECURITY=(SSL_SERVER_CERT_DN="<server_cert_dn>")))
   ```

   - `<host>` - IP address or fully qualified domain name (FQDN) of the Oracle server.
   - `<port>` - TCPS listener port. The default is `2484`.
   - `<service_name>` - Oracle service name exactly as registered with the listener.
   - `<server_cert_dn>` - Subject DN of the Oracle server certificate, for example: `CN=oracle-server.example.com,OU=Oracle,O=YourOrg,C=US`.

   > **Note**
   >
   > Ensure the hostname is resolvable from the Virtual Appliance. Refer to [Configuring a hosts.yaml File](<https://documentation.sailpoint.com/saas/help/va/config_va.html#configuring-a-hostsyaml-file>).
4. In **Driver Class**, enter the detailed database driver that connects to the server. For example:

   ```text
   oracle.jdbc.driver.OracleDriver
   ```
5. In **Additional Connection Parameters**, specify the additional connection parameters and their values that must be passed in key value pair format. This is to support the network encryption and data integrity feature for the Oracle Database managed target system, which is recommended by the Oracle server as a part of standard security feature. If multiple parameters need to be specified, they should be entered in a new line. For example, you can enter the following:

   ```text
   oracle.net.ssl_version=1.3
   ```
6. Select **Save**.

## Additional Settings

> [!NOTE]
>
> **Screenshot**
>
> [![Additional Settings](<https://documentation.sailpoint.com/connectors/oracle/database/va/help/img/oracle_add.png>)](<https://documentation.sailpoint.com/connectors/oracle/database/va/help/img/oracle_add.png>)

1. Select **Use Execute Query** to run the execute method for the selected Oracle Database statements while processing and returning the objects.
2. In the **Chunk To Fetch** field, you can specify the chunk size for all operations. This is a number of rows of result set.
3. Select **Save**.

## Review and Test

Perform a test to confirm the connection to SailPoint.

1. Go to **Review and Test**.
2. Confirm that the entries in each field are correct.

   If you note any mistakes, return to the section and make corrections.
3. Select **Test Connection**.

## SailPoint Application Onboarding

SailPoint application onboarding enables you to easily onboard new applications and create sources following the successful onboarding of a discovery source. To use this feature, continue to **Discovered Applications** in the SailPoint user interface.

For more information, refer to [Application Onboarding](<https://documentation.sailpoint.com/saas/help/ai/app_onboarding/index.html>) in the SailPoint SaaS documentation.
