# Oracle Database Provider

*Connect your Ivy application to Oracle Database with automatic Entity Framework configuration.*

## Overview

Oracle Database is a multi-model database management system developed by Oracle Corporation. It's widely used in enterprise environments and offers advanced features for mission-critical applications.

## Adding a Database Connection

To set up Oracle Database with Ivy, run the following command and choose `Oracle` when asked to select a DB provider:

```terminal
>ivy db add
```

You will be asked to name your connection, then prompted for a connection string. The connection string you provide should follow this format:

```text
Data Source=localhost:1521/FREEPDB1; User Id=user; Password=password;
```

Specifically, your connection string should contain the following information, in the form of semicolon-separated key-value pairs:

- **Data Source**: Database to connect to, specified by either an easy connect name (as shown above), a connect descriptor, or an Oracle net services name.
- **User Id** and **Password**: The credentials used to authenticate to the server.

For all connection options, see the [Oracle documentation](https://docs.oracle.com/en/database/oracle/oracle-database/19/odpnt/ConnectionConnectionString.html#GUID-DF4ED9A3-1AAF-445D-AEEF-016E6CD5A0C0__BABBAGJJ).

Your connection string will be stored in [.NET user secrets](../../02_Concepts/14_Secrets.md).

See [Database Overview](01_DatabaseOverview.md) for more information on adding database connections to Ivy.

## Configuration

Ivy automatically configures the **Oracle.EntityFrameworkCore** package for Oracle connections.

## Oracle-Specific Features

Key enterprise features Ivy can leverage:

- **Advanced Security** - encryption and access controls
- **Performance** - partitioning and indexing
- **PL/SQL** - stored procedures and functions

For complete features, see the [Oracle Database documentation](https://docs.oracle.com/en/database/oracle/oracle-database/index.html).

## Security Best Practices

- **Use encrypted connections** with SSL/TLS
- **Create dedicated database users** with minimal required privileges
- **Enable auditing** for sensitive operations
- **Use Oracle Advanced Security** features in production
- **Implement connection pooling** to optimize resource usage

## Troubleshooting

### Common Issues

**Authentication Failed**

- Check username/password and account status

For detailed troubleshooting, refer to [Oracle Database Error Messages](https://docs.oracle.com/en/database/oracle/oracle-database/19/errmg/index.html).

## Related Documentation

- [Database Overview](01_DatabaseOverview.md)
- [SQL Server Provider](02_SqlServer.md)
- [PostgreSQL Provider](02_PostgreSql.md)
- [Enterprise Features](../../../03_Hooks/02_Core/11_UseService.md)
- [Official Oracle Database Documentation](https://docs.oracle.com/en/database/oracle/oracle-database/index.html)
- [Oracle.EntityFrameworkCore Package](https://docs.oracle.com/en/database/oracle/oracle-data-access-components/19.3/odpnt/ODPEFCore.html)