Troubleshoot Oracle data source issues
This document provides solutions to common issues you may encounter when configuring or using the Oracle data source. For configuration instructions, refer to Configure the Oracle data source.
Licensing issues
These errors occur when the Enterprise plugin license is missing, expired, or incorrectly configured.
“Invalid license for the enterprise plugin”
Symptoms:
- Error message: “Invalid license for the enterprise plugin—license does not include a Grafana Enterprise subscription”.
- The plugin appears in the UI but can’t be configured or used.
- Plugin health check fails with a license error.
Possible causes and solutions:
Plugin not visible in the Grafana UI
Symptoms:
- The Oracle plugin doesn’t appear when searching in Plugins and data > Plugins.
- Other Enterprise plugins are visible but Oracle is missing.
Solutions:
Grafana Cloud: Verify your plan includes the Oracle plugin at Grafana pricing. The plugin is not available on the free tier.
Self-managed: Install the plugin using the Grafana CLI:
grafana cli plugins install grafana-oracle-datasourceThen restart Grafana. If the install command fails with a license error, ensure your
GF_ENTERPRISE_LICENSE_TEXTenvironment variable or license file is correctly configured.Self-managed (airgapped): Download the plugin ZIP from your Grafana account and extract it to the plugins directory (default
/var/lib/grafana/plugins/).
Upgrade from v2.x to v3.x
Plugin version 3.0 replaced the Oracle Instant Client driver with a pure Go driver (go-ora). This change simplifies deployment but introduces breaking changes for some connection methods.
Warning
If you use TNSNames, Oracle Wallet, or LDAP-based authentication, review this section before upgrading to v3.x.
“no address passed in connection string”
Symptoms:
- Save & test fails with “no address passed in connection string” after upgrading to v3.x.
- Previously working TNSNames connections stop functioning.
Cause:
The new go-ora driver handles TNS connection strings differently than Oracle Instant Client. In some cases, the TNSName field is silently cleared during the upgrade (fixed in v3.3.3).
Solutions:
- Re-enter the TNSName value in the data source settings and click Save & test.
- If using a simple host/port/service connection, switch from TNSNames Entry to Host with TCP Port as the connection method. Enter the hostname, port, and service name directly.
- Ensure you’re running plugin version 3.3.3 or later, which fixes the TNSName field regression.
“ORA-12154: TNS could not resolve the connect identifier specified”
Symptoms:
- Connection fails with ORA-12154 after upgrading to v3.x.
- The
tnsnames.orafile is correctly configured and was working with v2.x.
Solutions:
Verify the
ORACLE_HOMEenvironment variable is set and points to the directory containingnetwork/admin/tnsnames.ora.Pass the full TNS descriptor directly in the TNSName field instead of a short name:
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle-db1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=FREEPDB1)(SERVER=DEDICATED)))As a workaround, switch to Host with TCP Port and enter the hostname, port, and database name directly.
“unknown URL option: wallet_location”
Symptoms:
- Connection fails with “unknown URL option:
wallet_location” after upgrading to v3.x.
Cause:
Oracle Wallet authentication (wallet_location parameter) is not supported by the go-ora driver used in v3.x.
Solution:
Switch to Host with TCP Port with Basic authentication (username and password). Oracle Wallet-based authentication is not compatible with plugin v3.x.
LDAP-based TNS resolution not working
Symptoms:
- TNS connections that rely on
ldap.oraand$TNS_HOMEfor LDAP directory-based name resolution fail in v3.x. - The same configuration worked in v2.x with Oracle Instant Client.
Cause:
The go-ora driver does not support LDAP-based TNS name resolution (sqlnet.ora/ldap.ora with directory servers). This feature depended on Oracle Instant Client libraries which are no longer bundled.
Solutions:
- Switch to Host with TCP Port and enter the hostname, port, and service name directly.
- Pass the full TNS descriptor in the TNSName field instead of relying on LDAP resolution.
- For Grafana Cloud, use Private data source connect (PDC) with the TCP connection method.
Summary of v3.x breaking changes
Connection errors
These errors occur when Grafana can’t reach the Oracle database. Before investigating specific errors, verify basic connectivity from the Grafana server.
Connectivity checklist:
- From the Grafana server, test TCP connectivity:
nc -zv <oracle-host> 1521ortelnet <oracle-host> 1521. - Verify DNS resolution:
nslookup <oracle-host>ordig <oracle-host>. - Check that no network policies or security groups are blocking the connection.
- For Grafana Cloud, confirm PDC is configured and the PDC agent is running.
You can also test with Oracle’s sqlplus client:
sqlplus <USER>/<PASSWORD>@<IP_ADDRESS>:<PORT>/<DB_NAME>Refer to the official Oracle documentation for sqlplus installation:
dial tcp: connect: connection timed out
Symptoms:
- Save & test fails with
dial tcp <ip>:1521: connect: connection timed out. - Connection works from other machines but not from Grafana.
Possible causes and solutions:
“connection reset by peer”
Symptoms:
- Save & test or queries fail with “connection reset by peer”.
- Intermittent connection failures.
Possible causes and solutions:
HTTP proxy not supported
Symptoms:
- The Oracle plugin ignores configured HTTP proxy settings (
HTTP_PROXY,HTTPS_PROXY). - Connections fail in environments that require proxy for external access.
Cause:
The Oracle plugin uses a raw TCP connection to communicate with the database (Oracle Net Protocol), not HTTP. Standard HTTP proxy settings have no effect on TCP database connections.
Solutions:
- For Grafana Cloud connecting to private databases, use Private data source connect (PDC).
- For self-managed Grafana behind a firewall, configure network routing or firewall rules to allow direct TCP traffic on port
1521from the Grafana server to the Oracle database. - If you use the Secure Socks Proxy feature (available when the
secureSocksDSProxyEnabledfeature toggle is enabled), you can route the connection through a SOCKS5 proxy.
PDC connection issues
Symptoms:
- “Plugin health check failed” when using Private data source connect.
- Save & test times out even though PDC is configured.
Solutions:
- Verify the PDC agent is running and healthy. Check the agent logs for connection errors.
- Confirm the PDC agent can reach the Oracle database from its network:
nc -zv <oracle-host> 1521. - Ensure the PDC agent version is up to date.
- In the Grafana Cloud data source settings, verify you’ve selected the correct PDC network from the drop-down.
- Check that the hostname and port in the data source configuration are correct from the PDC agent’s network perspective (use internal/private hostnames, not public ones).
For PDC setup instructions, refer to Configure Private data source connect.
“DB connection error”
Symptoms:
- Save & test fails with a “DB connection error” message.
- Queries return connection error messages.
Possible causes and solutions:
Connection timeout
Symptoms:
- Queries fail with timeout errors.
- Save & test takes a long time and then fails.
Caution
The Grafana timeout is client-side only. When Grafana times out, it does not send a cancellation to the Oracle database. Long-running queries continue executing on the database server even after Grafana reports a timeout. Use Oracle-side resource limits (profiles,
RESOURCE_LIMIT) to prevent runaway queries from consuming database resources.
Solutions:
Increase the Dataproxy Timeout in the data source settings to a higher value. The default is 120 seconds.
For self-managed Grafana, set the
GF_DATAPROXY_TIMEOUTenvironment variable:export GF_DATAPROXY_TIMEOUT=300Optimize your query. Large or complex queries may take longer to execute. Consider adding indexes.
Set Oracle-side query limits to prevent long-running queries from impacting the database:
ALTER PROFILE grafana_profile LIMIT CPU_PER_CALL 30000; ALTER USER grafana_user PROFILE grafana_profile;
“ORA-01000: maximum open cursors exceeded”
Symptoms:
- Queries fail with “ORA-01000: maximum open cursors exceeded”.
- Errors occur under high dashboard concurrency or frequent refresh.
Possible causes and solutions:
“ORA-03137: malformed TTC packet”
Symptoms:
- Queries intermittently fail with “ORA-03137: malformed TTC packet received”.
Cause:
This error typically indicates a protocol incompatibility between the go-ora driver and the Oracle database version, or network corruption.
Solutions:
- Ensure your Oracle database is patched to the latest patch set for your version.
- Upgrade the Oracle plugin to the latest version (driver compatibility fixes are included in updates).
- If using network appliances (load balancers, firewalls), verify they aren’t modifying TCP packets on port 1521.
TNSNames connection issues
Symptoms:
- Connection fails when using the TNSNames Entry connection method.
Note
TNSNames is not supported in Grafana Cloud.
Possible causes and solutions:
Refer to Kerberos integration for detailed file location information.
Authentication errors
These errors occur when credentials are invalid, missing, or lack the required permissions.
Kerberos authentication issues
Symptoms:
- Kerberos authentication fails or times out.
- Save & test returns authentication errors when using Kerberos.
Note
Kerberos authentication is not supported in Grafana Cloud.
Possible causes and solutions:
Refer to Kerberos integration for detailed configuration instructions.
Query errors
These errors occur when executing queries against the Oracle database.
“Query result too large”
Symptoms:
- Error message: “Query result too large (MAX 16Mb)”.
- Large queries fail even though they execute successfully in SQL tools.
Cause:
The Oracle plugin enforces a maximum response size for gRPC messages. The default is 16 MB, with a maximum configurable limit of 512 MB.
Warning
Increasing the response size limit can significantly impact Grafana server memory usage. Large result sets can consume 60%+ of available memory on the Grafana node. Use aggregation and filtering to reduce data volume where possible.
Solutions:
Add aggregation to reduce data volume:
SELECT $__timeGroup(sample_time, '5m') AS time, AVG(value) as value FROM large_table WHERE $__timeFilter(sample_time) GROUP BY $__timeGroup(sample_time, '5m') ORDER BY timeLimit results using a
ROWNUMorFETCH FIRSTclause:SELECT * FROM your_table WHERE ROWNUM <= 1000For self-managed Grafana, increase the max response size (default
16, maximum512, in MB):export GF_PLUGINS_ORACLE_DATASOURCE_MAX_RESPONSE_SIZE=32
Row limit exceeded
Symptoms:
- Query returns fewer rows than expected.
- Results appear silently truncated without an error message.
- No explicit
ROWNUMclause is in the query.
Cause:
The Row Limit setting (default 1,000,000 rows) limits the maximum number of rows returned per query. Results are truncated without a warning when this limit is reached. This setting was introduced in plugin version 3.4.0.
Solutions:
Increase the Row Limit value in the data source configuration settings.
Add aggregation or filtering to reduce the row count below the limit.
For provisioned data sources, set
rowLimitinjsonData:jsonData: rowLimit: 2000000
Caution
Very large result sets consume significant memory on the Grafana server. If you increase the row limit substantially, monitor Grafana server memory usage and consider increasing available resources.
“type is not supported” (unsupported Oracle data types)
Symptoms:
- Error:
error converting sql rows to dataframe: type "LongVarChar" is not supported. - Similar errors for other unsupported column types.
Cause:
The Oracle plugin supports standard SQL types and a limited set of Oracle-specific types. The following Oracle types require explicit conversion in your query:
Supported Oracle-specific types (handled automatically):
IBFloat(BINARY_FLOAT)—converted to float32IBDouble(BINARY_DOUBLE)—converted to float64IntervalYM_DTY(INTERVAL YEAR TO MONTH)—converted to int64IntervalDS_DTY(INTERVAL DAY TO SECOND)—converted to int64- Standard types:
NUMBER,VARCHAR2,DATE,TIMESTAMP,TIMESTAMP WITH TIME ZONE
Example—casting LONG to VARCHAR2:
SELECT
id,
CAST(long_column AS VARCHAR2(4000)) as description
FROM your_table
WHERE ROWNUM <= 100Macro errors
Symptoms:
- Queries containing macros fail with “macro_error()” or similar messages.
Possible causes and solutions:
Refer to Oracle query editor for the complete macro reference.
Timezone issues
Symptoms:
- Data appears shifted by several hours.
- Timestamps are incorrect or misaligned.
$__timeFrom()and$__timeTo()don’t match the dashboard timezone.
Cause:
All time macros ($__timeFrom(), $__timeTo(), $__timeFilter()) output values in the timezone configured on the data source settings (default UTC). They do not use the dashboard or browser timezone. This is by design because the database connection operates in a fixed timezone.
Solutions:
Ensure the Timezone setting in the data source configuration matches your Oracle server’s timezone.
Use the timezone-aware macros
$__timeFilterTZand$__timeGroupTZ:SELECT $__timeGroupTZ(timestamp_column, '5m') as time, value FROM your_table WHERE $__timeFilterTZ(timestamp_column) GROUP BY $__timeGroupTZ(timestamp_column, '5m') ORDER BY timeIf your data is stored in a local timezone, convert the macro output to match:
SELECT * FROM events WHERE event_time BETWEEN FROM_TZ(CAST($__timeFrom() AS TIMESTAMP), 'UTC') AT TIME ZONE 'America/New_York' AND FROM_TZ(CAST($__timeTo() AS TIMESTAMP), 'UTC') AT TIME ZONE 'America/New_York'Alternatively, convert your stored column to UTC for comparison:
WHERE FROM_TZ(CAST(event_time AS TIMESTAMP), 'America/New_York') AT TIME ZONE 'UTC' BETWEEN $__timeFrom() AND $__timeTo()
Refer to Oracle query editor: timezone conversion for more examples.
No data returned
Symptoms:
- Query executes without error but returns no data.
- Charts display “No data” message.
Possible causes and solutions:
Performance issues
These issues relate to slow queries or resource exhaustion.
Slow queries
Symptoms:
- Queries take a long time to execute.
- Dashboard panels load slowly.
Solutions:
- Add database indexes on columns used in
WHEREandGROUP BYclauses. - Increase the Prefetch Row Size setting to buffer more rows per fetch request.
- Adjust the Connection Pool Size for high-concurrency environments. The default is
50. - Narrow the time range or use aggregation to reduce the data volume.
Connection pool exhaustion
Symptoms:
- Queries fail intermittently with connection errors under high load.
Solutions:
Increase the Connection Pool Size in the data source settings or use the environment variable:
export GF_PLUGINS_ORACLE_DATASOURCE_POOLSIZE=100Reduce the dashboard refresh rate or query frequency.
Consolidate multiple Oracle data sources pointing to the same database.
Platform limitations
These are known limitations of the Oracle data source plugin.
ARM64 architecture not supported
Symptoms:
- The plugin fails to load on ARM64 systems (for example, Apple Silicon M1/M2 Macs).
Solution:
The Oracle plugin doesn’t support ARM64 architecture. Use an x64/amd64 system instead.
Features not available in Grafana Cloud
Symptoms:
- TNSNames or Kerberos options aren’t working in Grafana Cloud.
Solution:
TNSNames and Kerberos authentication are not supported in Grafana Cloud. Use the Host with TCP Port connection method with Basic authentication.
For connecting to private databases, use Private data source connect (PDC).
Debug logging
For advanced troubleshooting, enable debug logging to get detailed information about plugin behavior.
Add the following to your Grafana configuration file (grafana.ini) or set as environment variables:
[log]
level = debug
filters = oracle-datasource:debug
[plugins]
enable_alpha = trueOr using environment variables:
export GF_LOG_LEVEL=debug
export GF_LOG_FILTERS=oracle-datasource:debug
export GF_DATAPROXY_LOGGING=trueReview the Grafana server logs for Oracle-related messages. On Linux systems, logs are typically at /var/log/grafana/grafana.log.
Reset the log level to info after troubleshooting to avoid excessive log volume.
Get additional help
If you’ve tried the solutions above and still encounter issues:
- Check the Grafana community forums for similar issues and solutions.
- Review the Oracle data source documentation for additional configuration options.
- Consult the Oracle Database documentation for service-specific guidance.
- Contact Grafana Support if you’re an Enterprise, Cloud Pro, or Cloud contracted customer.
When reporting issues, include:
- Grafana version and Oracle plugin version
- Oracle Database version and edition
- Connection method (Host with TCP Port or TNSNames Entry)
- Authentication method (Basic or Kerberos)
- Error messages (redact sensitive information)
- Steps to reproduce the issue
- Relevant configuration (redact credentials)
- Sample query (if applicable)


