Category Archives: Oracle

Simple solution for ORA-12638: Credential retrieval failed

If the Oracle client was installed using the domain administrator account instead of the local administrator, the following message could be displayed when trying to connect:

ORA-12638: Credential retrieval failed

From the wording of the error message one could think that this error means that he is using the wrong password but this is not the case. To solve this:

1) Go to /oracle home/network/admin and open sqlnet.ora

2) Search for  SQLNET.AUTHENTICATION_SERVICES= (NTS) and change it to
SQLNET.AUTHENTICATION_SERVICES= (NONE)

3) Save the file and try to connect, this should work

MSVCR71.DLL is in use during Oracle patch installation

If you are trying to upgrade the Oracle Client and an error message is displayed telling you that  msvcr71.dll is in use, try the following:

1) Verify that all Oracle services are stopped.

2) Stop the Distributed Transaction Coordinator – In most cases this will solve the issue.

3) Run Process Explorer

a) In the Find menu, click on “Find Handle or DLL” (CTRL F)

b) Type msvcr71.dll and click on Search

c) Go through the list and close the listed applications

What to do when Enterprise Manager is not able to connect to the database instance (ORA-28001)

If you are trying to connect to the Oracle enterprise Manger and you get the following errors:

Enterprise Manager is not able to connect to the database instance.

And in the “Agent connection to instance” section:

Status: Failed
Details: ORA-28001: the password has expired (DBD ERROR: OCISessionBegin)

One of the reasons could be that the password for the SYSMAN user is expired. However, changing the password alone will not solve this issue. Several additional steps are required in order to make Oracle Enterprise Manager connect:

Before you start: Verify that ORACLE_HOME, ORACLE_SID environment variables are set. – If not, set them using as  environment variables or open a command line and type SET ORACLE_SID=<The database SID>

1. Stop the dbconsole: emctl stop dbconsole (dos and Unix) or  using the windows services stop the OrcleDBConsole<The database SID>.

2. Connect to the database as a user with DBA privilege with SQL*Plus
and run the following command:

alter user sysman identified by <the new password> ;

3. Verify that the new password works
SQL> connect sysman/<the new password>

4. Go to ORACLE_HOME/<HostName_SID>/sysman/config and save a backup of the emoms.properties file.

a) Open the file emoms.properties and search for:
oracle.sysman.eml.mntr.emdRepPwd=<some encrypted value>

Replace the encrypted value with the new password value

b) Search for oracle.sysman.eml.mntr.emdRepPwdEncrypted=TRUE
and change TRUE to FALSE

c) Save and close emoms.properties

5. Restart the dbconsole:

emctl start dbconsole (dos and Unix) or  using the windows services start the OrcleDBConsole<The database SID>.

6. Open  emoms.properties again and Search for:
a)oracle.sysman.eml.mntr.emdRepPwd=
verify  that the password is encrypted

b) oracle.sysman.eml.mntr.emdRepPwdEncrypted=
verify  that the value is set to  TRUE

7. Refresh Oracle Enterprise Manager

Simple Solution to ORA-12520 on Oracle XE

If you get the following error on Oracle XE:

ORA-12520: TNS:listener could not find available handler for requested type of server

This is probably because the value for the processes parameter is too low.

For some reason, Oracle set the default value of the processes parameter on Oracle XE  to 40. If your application opens many process or  several queries are executed at the same time, the ORA-12520 could be displayed.

The solution for this issue is simple.  All you need to do is give the processes parameter an higher value.

open sql plus (All Programs -> Oracle Database 10g Express Edition -> Run SQL Command Line) and run the following command:
Alter system set processes=100 scope=spfile;

Restart the DB:
shutdown immediate
Startup

if needed, an higher number can be provided.

Possible solutions for ORA-00600

If you get the following error:

ORA-00600:Internal error code, arguments: [15610],[],[],[],[],[]
This could be due to Oracle bug 4648181.
This error is usually manifested on Oracle 10g R1 systems (10.1.0.4 and 10.1.0.5) and on earlier version of Oracle 10g R2 (10.2.0.1 and 10.2.0.2) when performing a join.
According to Oracle this is an  Optimizer related bug and it is fixed in Oracle 10.2.0.3 and in 11.1.0.6. patch set  so the best solution would be to upgrade to these version.

This issue was also slated to be fixed in a 10.1.0.6 patch set that was expected mid 2007 but it looks like this fix is delayed. However,  if you have a justified business reason, it is possible to ask Oracle for interim fix.

If any of the options above is not suitable to your needs there are several workaround that you can try:
1) Since this issue is related to the cost based optimizer a simple solution can be to change the query. If you change even a simple thing like the order of the tables in the FROM clause of the query it will force the optimizer to analyze the query differently and may avoid the problem.
of course, this solution can make it perform slower and not always work but it could be a quick and dirty short run solution.
2) Turn off the optimizer cost base transformation by modifying init.ora

set “_optimizer_cost_based_transformation”=off;

This change can be done in the session level as well:

alter session set “_optimizer_cost_based_transformation”=off;

Note: it is usually not recommended to change Oracle underscore _ “hidden settings” but Oracle published this solution in Metalink so I assume it should be OK.

3) Force oracle to use earlier versions optimizer features by modifying init.ora
OPTIMIZER_FEATURES_ENABLE = 10.1.0

This setting will force Oracle to use the optimizer that was used in version 10.1.0 or any other version you provide (rule based).  Any optimizer features that were added after this version will be disabled.