Monday 24 October 2016

Trying to log into OATS–404 once again

OATS is often on struggle street,  open up the interface from your favourites and  http://localhost:8088/otm/ – you get a wonderful 404!

Error 404--Not Found

From RFC 2068 Hypertext Transfer Protocol -- HTTP/1.1:
10.4.5 404 Not Found

The server has not found anything matching the Request-URI. No indication is given of whether the condition is temporary or permanent.

If the server does not wish to make this information available to the client, the status code 403 (Forbidden) can be used instead. The 410 (Gone) status code SHOULD be used if the server knows, through some internally configurable mechanism, that an old resource is permanently unavailable and has no forwarding address.

Great, we know that OATs runs on weblogic and is tightly integrated with the database.  We also know that you can use openScript completely independently of the local database.  You can record any number of scripts locally on a machine, as long as the TestManager or LoadTesting software can see where you have recorded all of your scripts – they can do the coordination.

Anyway, back to the problem.

search for *.log in your OATS install directory and you’ll get a bunch of red herrings:

image

Standard messages about not being able to connect to the database, arrgghhh.

####<18/10/2016 3:26:24 PM EST> <Info> <EJB> <devsoe-PC> <AdminServer> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <oats> <BEA1-00002F17E612A743959C> <> <1476764784913> <WL-010227> <EJB Exception occurred during invocation from home or business: weblogic.ejb.container.internal.StatelessEJBHomeImpl@152942e threw exception: javax.persistence.PersistenceException: Exception [EclipseLink-7060] (Eclipse Persistence Services - 2.3.1.v20111018-r10243): org.eclipse.persistence.exceptions.ValidationException
Exception Description: Cannot acquire data source [OATS_common_DS].
Internal Exception: javax.naming.NameNotFoundException: Unable to resolve 'OATS_common_DS'. Resolved ''; remaining name 'OATS_common_DS'>
####<18/10/2016 3:26:24 PM EST> <Error> <HTTP> <devsoe-PC> <AdminServer> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1476764784932> <WL-101216> <Servlet: "struts-action" failed to preload on startup in Web application: "olt".
javax.ejb.EJBException: EJB Exception: ; nested exception is:
    javax.persistence.PersistenceException: Exception [EclipseLink-7060] (Eclipse Persistence Services - 2.3.1.v20111018-r10243): org.eclipse.persistence.exceptions.ValidationException
Exception Description: Cannot acquire data source [OATS_common_DS].

Load up the Database config utility from the start menu, or run C:\OracleATS\bin\DbConfig.bat

image

you’ll eventually get a java screen with the local database connection information (sorry, might not be local)

image

Choose save and it’ll try the connection and give you a MASSIVE hint as to the problem, password expiry!  Wow, that is a painful policy / feature.

image

http://shannonscncjdeblog.blogspot.com.au/2014/10/oracle-accounts-expired-dont-let-it.html

Above link will show you what to do, I’ll do the heavy lifting though, save you some work.

sqlplus / as sysdba

select username, account_status, expiry_date, profile from dba_users;

image

You’ll get a pile of locked accounts as above

select resource_name,limit from dba_profiles;

image

alter the profile limit and see the results:

alter profile default limit password_life_time unlimited ;

image

okay, the limit is changed, but we need to unlock the accounts, as they still fail to log in:

image

Even though I execute an “alter user account unlock”, The password is still expired.

ALTER USER otm identified by XXXX;

ALTER USER oats identified by XXXX;

ALTER USER olt identified by XXXX;

ALTER USER OTM account unlock;

ALTER user OATS account unlock;

ALTER user OLT account unlock;

So, now you need to remember the password you assigned to administrator when you installed oats (well I did), and then “alter user otm identified by XXXXX”;

This triggered the correct change to the profile to get everything working

 

You should then restart your OATs machine (or just the services) and everything should come up working!

image

Yay!

1 comment:

Shae said...

Awesome work on this Shannon, another tip for you.
you Can reset the password to the same using the HASH or serial of the password
see http://stackoverflow.com/questions/5521766/change-oracle-user-account-status-from-expiregrace-to-open
but basically
Depending on your version and setup, one of these queries will probably get you the password hash:

select spare4 from sys.user$ where name='[user name]';
select password from dba_users where username = '[user name]';
Then use this to reset it:

alter user [user name] identified by values '[result from above query]';