Posted by Nitin Pai
December 10th, 2008


I recently saw a PSOPRDEFN table of a client where there were couple
of users whose ACCTLOCK was 1 but their values in FAILEDLOGINS was
less than what is defined as the maximum login attempts(PSSECOPTIONS.LOGINATTEMPTS)in the system.

In what scenarios, can a user’s account be locked even if number of
unsuccesful logins is less than max defined?

If you need more information, please let me know.

Thanks in advance.

Thanks for posting your question!

§ It is possible that the user accounts were manually locked

§ There is a possibility of some customization / automation which might have
triggered user accounts to be locked

Please let us know additional details (listed below).

§ Can you replicate the scenario where the account gets locked?

§ Did the accounts get locked while performing any task?

might have some clues.


Nitin Pai

I need help in clearing my concept about self joins and why we need
more than one join to the same table from the same business
Thanks in advance.

Thanks for posting your question!

This is used when you want to reference the same table to retrieve required data.
The most common example is that of retrieving Employee Name and Manager Name.
Here is an example of the code ( ).

SELECT e1.ename||' works for '||e2.ename "Employees and
their Managers" 
  FROM emp e1, emp e2
 WHERE e1.mgr = e2.empno;


Self joins is a useful technique (depending on how it is used of course) that comes in handy when there is a need to get different views of information from the same table. Just to give a basic example is to list all the employees that belong to the zipcode of a given employee.

Consider the table structure of (EmplID, Name, Zipcode etc.). Now in order to list all the employee who belongs to the same zipcode of say Employee 100.

We can use the self joining technique to achieve this  by joining employee table to itself (of course the same result can be achieved by other means also).

Select b.employee,, b.zipcode from employee a, employee b where a.employee = 100 and a.zipcode = b.zipcode

This can also be written as:

Select a.employee, from employee a where exists (select ‘a’ from employee b where b.zipcode = a.zipcode and b.employee = 100)


Nitin Pai

Rajkumar Sundaramoorthi

Comments (0)