> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dqlabs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Oracle Setup

> Prerequisites, authentication options, and step-by-step instructions for connecting Oracle to Prizm.

<script type="application/ld+json">
  {`{
            "@context": "https://schema.org",
            "@type": "TechArticle",
            "headline": "Oracle Setup",
            "description": "Prerequisites, authentication options, and step-by-step instructions for connecting Oracle to Prizm.",
            "url": "https://docs.dqlabs.ai/sources/oracle/setup",
            "publisher": {
              "@type": "Organization",
              "name": "DQLabs Inc",
              "logo": "https://media.brand.dev/332adc35-5bc4-4d2b-bf78-256aa4a5e414.svg"
            }
            }`}
</script>

## Prerequisites

Create a dedicated Prizm connection user in Oracle and grant it the minimum required privileges before connecting.

```sql theme={null}
-- Create the Prizm connection user
CREATE USER prizm_svc IDENTIFIED BY "<password>";
GRANT CREATE SESSION TO prizm_svc;

-- Read access to the data dictionary
GRANT SELECT_CATALOG_ROLE TO prizm_svc;
-- Or, where SELECT_CATALOG_ROLE is restricted:
-- GRANT SELECT ANY DICTIONARY TO prizm_svc;

-- Freshness detection
GRANT SELECT ON SYS.ALL_TAB_MODIFICATIONS TO prizm_svc;

-- Performance and usage metrics
GRANT SELECT ON V_$SQL TO prizm_svc;
GRANT SELECT ON V_$SQLAREA TO prizm_svc;
GRANT SELECT ON V_$SESSION TO prizm_svc;

-- Extended historical performance metrics (only if Diagnostics Pack / AWR is licensed)
GRANT SELECT ON SYS.DBA_HIST_SQLSTAT TO prizm_svc;

-- Quality rule execution (scan-based checks) — grant per schema/table in scope
GRANT SELECT ON <schema>.<table> TO prizm_svc;
```

<Warning>
  `SELECT ON SYS.DBA_HIST_SQLSTAT` requires the Oracle Diagnostics Pack license. If it isn't licensed, skip this grant — the connector falls back to `V$SQL`/`V$SESSION` only and shows an advisory in the Prizm integration health dashboard rather than failing.
</Warning>

### Required Privileges Reference

| Privilege                                        | Purpose                                              |
| :----------------------------------------------- | :--------------------------------------------------- |
| `SELECT_CATALOG_ROLE` or `SELECT ANY DICTIONARY` | Read access to `ALL_*`/`DBA_*` data dictionary views |
| `SELECT` on `ALL_TAB_MODIFICATIONS`              | Freshness detection                                  |
| `SELECT` on `V$SQL`, `V$SQLAREA`, `V$SESSION`    | Performance and usage metrics                        |
| `SELECT` on `DBA_HIST_SQLSTAT` (if AWR licensed) | Extended historical performance metrics              |
| `SELECT` on target application tables            | Quality rule execution (scan-based checks)           |
| `CREATE SESSION`                                 | Basic connection privilege                           |

## Connector Setup

<Steps>
  <Step title="Open the connector wizard">
    Navigate to **Source** and click the **+** icon next to the source list. Search for and select **Oracle** from the connector grid.
  </Step>

  <Step title="Enter source details">
    | Field               | Description                                                                                               |
    | :------------------ | :-------------------------------------------------------------------------------------------------------- |
    | Connection Name     | A label for this instance (e.g., `oracle-prod-demo`)                                                      |
    | Description         | Optional notes about what this connection covers                                                          |
    | Server              | Hostname of the Oracle server (e.g., `oracle.example.com`)                                                |
    | Port                | Listener port — defaults to `1521`                                                                        |
    | Database            | Database name, used to scope the catalog                                                                  |
    | Authentication Type | **Service Name** or **SID** — determines which identifier field appears next                              |
    | Service Name / SID  | The Oracle service name (e.g., `ORCLPDB1`) or legacy SID, matching the Authentication Type selected above |
  </Step>

  <Step title="Provide credentials">
    Toggle **Use Vault** to retrieve credentials from a vault instead of entering them directly.

    <Tabs>
      <Tab title="Username & Password (default)">
        | Field    | Description                              |
        | :------- | :--------------------------------------- |
        | Username | The Oracle user created in Prerequisites |
        | Password | Stored encrypted in DQLabs Vault         |
      </Tab>

      <Tab title="Use Vault">
        | Field        | Description                                                                                                                               |
        | :----------- | :---------------------------------------------------------------------------------------------------------------------------------------- |
        | Select Vault | Choose from the vault instances already configured for your organization (e.g., AWS Vault, Azure Vault, or a named HashiCorp integration) |
        | Key          | The key/path within that vault where the Oracle credential is stored                                                                      |

        Credentials retrieved this way are never entered directly into the connector form and are not persisted outside the vault itself.
      </Tab>
    </Tabs>
  </Step>

  <Step title="Save and verify">
    Click **Next**. Prizm validates the connection at this point — there's no separate "Test Connection" step. If validation fails, a message appears identifying the problem (for example, `Credential validation failed: [Errno -5] No address associated with hostname` for an unreachable host). Once validation succeeds, Prizm runs an initial catalog crawl and assets appear in the catalog within a few minutes.

    Navigate to **Settings → Connectors → Logs** to monitor scan progress.
  </Step>
</Steps>

## Next Steps

<CardGroup cols={2}>
  <Card title="What We Collect" icon="database" href="/sources/oracle/what-we-collect">
    See the full field-level breakdown of every metadata object Prizm extracts.
  </Card>

  <Card title="FAQ" icon="circle-question" href="/sources/oracle/faq">
    Common questions about credentials, scoping, and permissions.
  </Card>

  <Card title="Troubleshooting" icon="wrench" href="/help/troubleshooting">
    Diagnose connection failures, permission errors, and timeouts.
  </Card>
</CardGroup>
