Jira fails to connect to Oracle 19c after upgrade to version 10.3.5+
Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.
Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.
*Except Fisheye and Crucible
Summary
Jira fails at startup after upgrade to 10.3.5+
Environment
Jira 10.3.5 or later
Oracle 19c
Diagnosis
The following errors appear in the startup logs:
2025-05-18 12:19:02,323+0000 JIRA-Bootstrap ERROR [c.a.c.internal.bootstrap.DefaultAtlassianBootstrapManager] Could not successfully test your database:
java.sql.SQLRecoverableException: Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:774)
at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:688)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:691)
at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
at com.atlassian.config.internal.bootstrap.DefaultAtlassianBootstrapManager.getTestDatabaseConnection(DefaultAtlassianBootstrapManager.java:286)
at com.atlassian.jira.config.database.JdbcDatasource.getConnection(JdbcDatasource.java:246)
at com.atlassian.jira.health.checks.database.Oracle23aiHealthCheck$DatabaseConfigurationSummary.getConnection(Oracle23aiHealthCheck.java:135)
at com.atlassian.jira.health.checks.database.Oracle23aiHealthCheck$DatabaseConfigurationSummary.isOracle23Ai(Oracle23aiHealthCheck.java:131)
at com.atlassian.jira.health.checks.database.Oracle23aiHealthCheck.performCheck(Oracle23aiHealthCheck.java:77)
at com.atlassian.jira.health.checks.database.Oracle23aiHealthCheck.doPerform(Oracle23aiHealthCheck.java:70)
at com.atlassian.jira.health.HealthCheckTemplate.perform(HealthCheckTemplate.java:23)
at com.atlassian.jira.health.DefaultHealthCheckExecutor.runCheck(DefaultHealthCheckExecutor.java:76)
at com.atlassian.jira.health.DefaultHealthCheckExecutor.lambda$applyAndCollectExceptions$1(DefaultHealthCheckExecutor.java:55)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Unknown Source)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(Unknown Source)
at java.base/java.util.Iterator.forEachRemaining(Unknown Source)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.copyInto(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Unknown Source)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Unknown Source)
at java.base/java.util.stream.AbstractPipeline.evaluate(Unknown Source)
at java.base/java.util.stream.ReferencePipeline.forEach(Unknown Source)
at com.atlassian.jira.health.DefaultHealthCheckExecutor.applyAndCollectExceptions(DefaultHealthCheckExecutor.java:55)
at com.atlassian.jira.health.DefaultHealthCheckExecutor.performHealthChecks(DefaultHealthCheckExecutor.java:44)
at com.atlassian.jira.health.HealthChecks.executeChecksAndRecordResults(HealthChecks.java:164)
at com.atlassian.jira.health.HealthChecks.runHealthChecks(HealthChecks.java:154)
at com.atlassian.jira.health.HealthChecks.runHealthChecks(HealthChecks.java:66)
at com.atlassian.jira.startup.BootstrapContainerLauncher.start(BootstrapContainerLauncher.java:32)
at com.atlassian.jira.startup.DefaultJiraLauncher.preDbLaunch(DefaultJiraLauncher.java:123)
at com.atlassian.jira.startup.DefaultJiraLauncher.lambda$start$0(DefaultJiraLauncher.java:108)
at com.atlassian.jira.util.devspeed.JiraDevSpeedTimer.run(JiraDevSpeedTimer.java:31)
at com.atlassian.jira.startup.DefaultJiraLauncher.start(DefaultJiraLauncher.java:107)
at com.atlassian.jira.startup.LauncherContextListener.initSlowStuff(LauncherContextListener.java:162)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor
at oracle.net.ns.NSProtocolNIO.negotiateConnection(NSProtocolNIO.java:271)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:317)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1438)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:518)
... 36 more
2025-05-18 12:19:02,372+0000 JIRA-Bootstrap ERROR [c.a.jira.health.HealthChecks] JIRA couldn't connect to your database
2025-05-18 12:19:02,372+0000 JIRA-Bootstrap ERROR [c.a.jira.health.HealthChecks] JIRA failed to establish a connection to your database.
This could be because:
- Your database isn't running
- The configuration of your dbconfig.xml file is incorrect (user, password, or database URL etc.)
- There is a network issue between JIRA and your database (e.g. firewall, database doesn't allow remote access etc.)
There are several other solutions you can try, review our documentation and see what works for you.
As mentioned by the log message, the error ORA-12514 can happen for different reasons, once you confirm the database is up and running and there are no network issues between Jira and your DB, you can continue with checking the information you have in dbconfig.xml
.
The error coming from Oracle indicate that the server could not identify the service name, so our attention goes to the database URL in dbconfig.xml
.
While checking the dbconfig.xml
, you notice the file has been changed, a new database URL has been applied:
<url>jdbc:oracle:thin:@//localhost:1521/SIDNAME?oracle.jdbc.sendBooleanAsNativeBoolean=false</url>
The “?oracle.jdbc.sendBooleanAsNativeBoolean=false” property is being automatically added by Jira during startup, this is the expected behavior since Jira 10.3.5:
2025-05-18 12:19:01,958+0000 JIRA-Bootstrap WARN [c.a.j.config.database.DatabaseConfigHandler] oracle.jdbc.sendBooleanAsNativeBoolean property was not set to false, setting up. Check https://confluence.atlassian.com/x/rJ8WWw for more details.
Cause
This new URL format can be a problem if you are using an old version of the Oracle JDBC driver, such as 12.2.0.1.0
. The jdbc driver will append the connection property to the service name, causing Oracle to not recognize the service, throwing ORA-12514 in return.
How do I know if I am being impacted by this problem?
Checking the Jira startup log, you can look for this:
2025-05-18 11:44:39,122+0000 JIRA-Bootstrap INFO [o.o.c.entity.jdbc.DatabaseUtil] Database Driver Version is 12.2.0.1.0
Solution
Upgrade JDBC driver to a supported version
The recommended version for Jira 10.3.x and Oracle 19c is 19.3 (ojdbc8) driver listed here.
Download the latest ojdbc8 driver
Stop Jira
Replace the
ojdbc8.jar
from <jira-install>/lib with the new oneIf you prefer, you can move the old driver to a different location outside Jira, but do not leave it in your lib directory, even if you rename it
Start Jira
The startup should now show you have the 19.3.0 version in place
Was this helpful?