Summary
Restoring JIRA Cloud to Server generating an java.sql.SQLSyntaxErrorException: ORA-00972: identifier is too long
Environment
- Migrating JIRA Cloud to Server
- JIRA Cloud instance was using Portfolio
- JIRA Server is connected to an Oracle database
Steps to Reproduce
- Generate a Cloud backup of a JIRA instance with Portfolio
- Restore this XML backup to a current JIRA Server 7.3.6
Expected Results
Backup restores as expected
Actual Results
Restoration reached 90% before generating this ORA-00972 error:
2017-05-22 23:27:11,455 JiraImportTaskExecutionThread-1 INFO sysadmin 1318x155x1 1f5k3vc 10.21.38.230 /secure/admin/XmlRestore.jspa [c.a.j.bc.dataimport.DefaultDataImportService] Importing data is 89% complete... 2017-05-22 23:28:03,817 JiraImportTaskExecutionThread-1 INFO sysadmin 1318x155x1 1f5k3vc 10.21.38.230 /secure/admin/XmlRestore.jspa [c.a.j.bc.dataimport.DefaultDataImportService] Importing data is 90% complete... 2017-05-22 23:28:39,074 JiraImportTaskExecutionThread-1 INFO sysadmin 1318x155x1 1f5k3vc 10.21.38.230 /secure/admin/XmlRestore.jspa [c.a.j.bc.dataimport.DefaultDataImportService] Finished storing Generic Values. 2017-05-22 23:28:39,169 JiraImportTaskExecutionThread-1 DEBUG sysadmin 1318x155x1 1f5k3vc 10.21.38.230 /secure/admin/XmlRestore.jspa [c.a.activeobjects.osgi.ActiveObjectsServiceFactory] startCleaning 2017-05-22 23:28:39,240 JiraImportTaskExecutionThread-1 DEBUG sysadmin 1318x155x1 1f5k3vc 10.21.38.230 /secure/admin/XmlRestore.jspa [c.a.activeobjects.osgi.ActiveObjectsServiceFactory] stopCleaning 2017-05-22 23:29:11,467 JiraImportTaskExecutionThread-1 ERROR sysadmin 1318x155x1 1f5k3vc 10.21.38.230 /secure/admin/XmlRestore.jspa [c.a.j.bc.dataimport.DefaultDataImportService] Error during ActiveObjects restore com.atlassian.activeobjects.spi.ActiveObjectsImportExportException: There was an error during import/export with <unknown plugin> (table AO_D9132D_SCENARIO_TEAM_EXCLUDED_SPRINTS):Error executing update for SQL statement 'ALTER TABLE "AO_D9132D_SCENARIO_TEAM_EXCLUDED_SPRINTS" DISABLE ALL TRIGGERS' at com.atlassian.activeobjects.backup.ImportExportErrorServiceImpl.newImportExportSqlException(ImportExportErrorServiceImpl.java:26) at com.atlassian.activeobjects.backup.SqlUtils.onSqlException(SqlUtils.java:46) at com.atlassian.activeobjects.backup.SqlUtils.executeUpdate(SqlUtils.java:37) at com.atlassian.activeobjects.backup.SqlUtils.executeUpdate(SqlUtils.java:53) at com.atlassian.activeobjects.backup.OracleSequencesAroundImporter.disableAllTriggers(OracleSequencesAroundImporter.java:75) at com.atlassian.activeobjects.backup.OracleSequencesAroundImporter.doBefore(OracleSequencesAroundImporter.java:60) at com.atlassian.activeobjects.backup.OracleSequencesAroundImporter.before(OracleSequencesAroundImporter.java:43) at com.atlassian.dbexporter.importer.AbstractImporter.importNode(AbstractImporter.java:41) at com.atlassian.dbexporter.DbImporter.importData(DbImporter.java:69) at com.atlassian.activeobjects.backup.ActiveObjectsBackup.restore(ActiveObjectsBackup.java:151) at com.atlassian.jira.bc.dataimport.DefaultDataImportService.restoreActiveObjects(DefaultDataImportService.java:583) at com.atlassian.jira.bc.dataimport.DefaultDataImportService.performImport(DefaultDataImportService.java:757) at com.atlassian.jira.bc.dataimport.DefaultDataImportService.doImport(DefaultDataImportService.java:331) at com.atlassian.jira.web.action.setup.DataImportAsyncCommand.call(DataImportAsyncCommand.java:60) at com.atlassian.jira.web.action.setup.DataImportAsyncCommand.call(DataImportAsyncCommand.java:28) at com.atlassian.jira.task.ImportTaskManagerImpl$TaskCallableDecorator.call(ImportTaskManagerImpl.java:157) at com.atlassian.jira.task.ImportTaskManagerImpl$TaskCallableDecorator.call(ImportTaskManagerImpl.java:133) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Caused by: java.sql.SQLSyntaxErrorException: ORA-00972: identifier is too long
Notes
- It appears that this error is cause by Portfolio creating a table name that is too long to be valid in an Oracle database.
- This is a similar error to the JSD bug JSDSERVER-4438
- Oracle documentation on table name / object name limitations: Schema Object Names and Qualifiers
Workaround
- Create a Postgres database for JIRA server to use and import the Cloud backup to that instance instead.
- is related to
-
JRASERVER-30237 Upgrading JIRA get index error: ORA-00972: identifier is too long when running JIRA with Oracle
- Closed
-
JSDSERVER-4438 Service Desk Reports Plugin causes ORA-00972
- Closed