1

Background

Using an Oracle 12c 64-bit client from Oracle client software (ODAC) version 12.1.0.1 64-bit from Oracle website.

Situation

I have just performed a data restoration from a higher to one of my lower environments within DTAP. Everything restored properly - after eyeball test within the TCM - and I have reset my publication targets in the CME specific to the new refreshed environment. However, when I begin to republish all or one piece of content I get this error:

Unable to publish item(s) with id
Error: Could not load file or assembly 'Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. The system cannot find the file specified.

I've looked online at some reasons why this is happening, but none seem to be specific to my scenario as when I compare environments. I am not missing/blocked files or .dlls and haven't found this to be tridion specific, yet..

When I view Setting up Oracle client software I see:

  1. Open a command prompt and access the bin\ subdirectory of the Oracle home directory or home directories and execute the following command: tnsping.exe myoracleserver- does not exist; but does not exist in any other environments either - tnsping

  2. Check the folder c:\Windows\assembly for the presence of a number of new assemblies called Oracle.DataAccess or Policy.2.111.Oracle.DataAccess (the number may differ) - these do not exist; but they do not exist in any other environments either

Has anyone ran into this kind of error before with Tridion? It only happens when I begin to publish.

Event Viewer:

Unable to Initialize TDSE object.
Could not load file or assembly 'Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies. The system cannot find the file specified.

Error Code:
0x80040000 (-2147221504)

Call stack:
Tridion.ContentManager.Data.AdoNet.Oracle.OracleDatabaseUtilities.GetConnection()
Tridion.ContentManager.Data.AdoNet.Oracle.OracleDatabaseUtilities..ctor()
Tridion.ContentManager.Data.AdoNet.Oracle.OracleDataSession..ctor()
System.RuntimeTypeHandle.CreateInstance(RuntimeType,Boolean,Boolean,Boolean&,RuntimeMethodHandleInternal&,Boolean&)
System.RuntimeType.CreateInstanceSlow(Boolean,Boolean,Boolean,StackCrawlMark&)
 System.RuntimeType.CreateInstanceDefaultCtor(Boolean,Boolean,Boolean,StackCrawlMark&)
System.Activator.CreateInstance(Type,Boolean)
System.Activator.CreateInstance(Type)
Tridion.ContentManager.Data.DataSessionFactory.CreateDataSession()
Tridion.ContentManager.Data.DataSessionFactory.CreateDataSession(UserData)
Tridion.ContentManager.Session.GetDataSession()
Tridion.ContentManager.Security.AuthorizationManager.LoadAccessToken(String,IEnumerable`1,IEnumerable`1)
Tridion.ContentManager.Security.AuthorizationManager.LoadAccessToken(String,String)
Tridion.ContentManager.Session..ctor(String,String)
Tridion.ContentManager.BLFacade.SystemFacade.InitializeUserContext(UserContext,String,String)
UtilitiesTDS.GetUserContext
TDSE.Initialize


Component: mscorlib
Errorcode: 0
User: XXX\MTSUSER
  • 1
    Do you have the Oracle.DataAccess.dll assembly in \web\WebUI\WebRoot\bin and is it version 4.112.3.0? – Peter Kjaer Jul 30 '15 at 8:18
  • Also, do you have any outscaled publishers running on a different machine? If it only happens when you publish, it could be because it's picked up on a different machine that happens to be missing this assembly now. – Peter Kjaer Jul 30 '15 at 8:19
  • @RajKumar I have viewed those 2 specific links prior to posting this here on TSE, so definitely good to know we are on the same page and I am headed down correct path. However; in an effort keep all environments identical, really wondering why I need to go that route.. My other restoration, in a even lower env were clean and did not require that..hmm – Andrew William Ross Jul 30 '15 at 16:20
  • 1
    If it's in the GAC you should not need it anywhere else. You could try using Fusion Log Viewer to see how the assembly is being accessed and by what. – Peter Kjaer Jul 31 '15 at 10:27
1

Tridion had a Legacy pack installed. Thus, Oracle ODAC 64-bit would not allow me to publish and (presumably) caused the error.
1. Removed Legacy pack from Tridion installation - after I installed and verified it would not work by simply installing the 32-bit ODAC Oracle client.
2. Then I removed both 32-bit & 64-bit versions of Oracle ODAC client via Universal uninstaller + and everything Oracle
3. Dropped schemas Tridionbroker_Live, Session, Stage
4. Reinstalled Oracle 64-bit ODAC
5. Re-ran .\Install Content Data Store.ps1successfully and rebuilt schemas Tridionbroker_Live, Session, Stage
6. Then uninstalled Tridion 2013 SP1
7. Reinstalled Tridion 2013 SP1
8. Installed HR1 and can now publish successfully!

  • 1
    Now that's a lot of work. The legacy pack does need 32 bit oracle, and there is a special order in which it needs to be installed - I think it's 32 bit first, then 64 bit, it's documented somewhere. Glad to hear it's working now! – Nuno Linhares Aug 25 '15 at 20:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.