Converting Oracle based MSU UNX to SSU fails with "driver could not be loaded error"

Symptom

When you launch a MSU to SSU conversion on a universe based on an Oracle ODBC connection. 
  1. On WebPatform 2023.1.1 : 
    1. The task ends in success
    2. When you retrieve the - Converted universe, you have an empty Data foundation
  2. On WebPlatform 2023.2 and later:
    1. The task ends in warning with "Could not convert table due to DB error : Specified driver could not be loaded due to system error  5: Access is denied."
On all versions, if you open the agent.log file in SemanticLayerAgent/logs folder, you find : 

  1. com.businessobjects.connectionserver.DBDError: Specified driver could not be loaded due to system error  5: Access is denied. (Oracle in instantclient_21_9, {path}\SQORA32.dll).
  2. at com.sap.connectivity.cs.library.JNIRDBMSDictionary.createDictionary(Native Method) ~[?:?]
  3. at com.sap.connectivity.cs.library.JNIRDBMSDictionary.<init>(JNIRDBMSDictionary.java:47) ~[?:?]
  4. at com.sap.connectivity.cs.library.RDBMSDictionary.<init>(RDBMSDictionary.java:39) ~[?:?]
  5. at com.sap.connectivity.cs.library.ConnectionServer.getDictionary(ConnectionServer.java:307) ~[?:?]
  6. at com.sap.connectivity.cs.core.ConnectionServer.CreateDictionary(ConnectionServer.java:234) ~[?:?]
  7. at com.sap.connectivity.cs.api.trace.EnvironmentLogger.CreateDictionary(EnvironmentLogger.java:1727) ~[?:?]
  8. at com.sap.connectivity.cs.extended.ConnectionServer.CreateDictionary(ConnectionServer.java:1090) ~[?:?]
  9. at com.sap.connectivity.cs.api.trace.EnvironmentLogger.CreateDictionary(EnvironmentLogger.java:1727) ~[?:?]
  10. at com.businessobjects.mds.services.relational.CsService.createSafeDictionary(CsService.java:913) ~[com.businessobjects.mds.services.jar:?]
  11. at com.businessobjects.mds.services.relational.CsService.createDictionary(CsService.java:876) ~[com.businessobjects.mds.services.jar:?]
  12. at com.businessobjects.mds.services.relational.SolverCsProvider.getDictionary(SolverCsProvider.java:95) ~[com.businessobjects.mds.services.jar:?]
  13. at com.businessobjects.mds.services.relational.CsService.getConnectionInfo(CsService.java:1212) ~[com.businessobjects.mds.services.jar:?]
  14. at com.businessobjects.mds.services.relational.CsService.getCurrentQualifier(CsService.java:1291) ~[com.businessobjects.mds.services.jar:?]
  15. at com.gbs.three60.suite.semanticlayeragent.business.msu.datafoundation.TablesConverter.convert(TablesConverter.java:71) ~[SemanticLayerAgent-2023.2-157-SNAPSHOT.jar:?]
  16. at com.gbs.three60.suite.semanticlayeragent.business.msu.DataFoundationConverter.convert(DataFoundationConverter.java:80) ~[SemanticLayerAgent-2023.2-157-SNAPSHOT.jar:?]
  17. at com.gbs.three60.suite.semanticlayeragent.business.MultiSourceUniverseConverterBusiness.convertDataFoundation(MultiSourceUniverseConverterBusiness.java:205) ~[SemanticLayerAgent-2023.2-157-SNAPSHOT.jar:?]
  18. at com.gbs.three60.suite.semanticlayeragent.business.MultiSourceUniverseConverterBusiness.convertUnivers(MultiSourceUniverseConverterBusiness.java:158) ~[SemanticLayerAgent-2023.2-157-SNAPSHOT.jar:?]
  19. at com.gbs.three60.suite.semanticlayeragent.business.MultiSourceUniverseConverterBusiness.call(MultiSourceUniverseConverterBusiness.java:94) ~[SemanticLayerAgent-2023.2-157-SNAPSHOT.jar:?]
  20. at com.gbs.three60.suite.semanticlayeragent.business.MultiSourceUniverseConverterBusiness.call(MultiSourceUniverseConverterBusiness.java:52) ~[SemanticLayerAgent-2023.2-157-SNAPSHOT.jar:?]
  21. at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_341]
  22. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_341]
  23. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_341]
  24. at java.lang.Thread.run(Thread.java:838) ~[?:1.8.0_341]
     

Environment
  • 360Univ 2023.1.1 and later
  • Oracle and ODBC connections
  • Windows
Resolution

Open the SemanticLayerAgent service by double clicking on 
Switch to "log on" tab.
This tab defines the user who runs the 360 Semantic Layer Agent service : 


Check the user that is selected (default is Local Service Account) and give read access to the folder containing the Oracle ODBC server to this user. By default you need to give the access to LocalService account.
For example, the given security would be like : 

Last updated about 1 year ago