Wednesday, April 24, 2013

Websphere Application server-Transaction across two base servers fails

During a brokerage solution implementation, we have faced a issue of connecting two Websphere application servers. In "SystemOut.log" files, the following error appears.


org.omg.CORBA.TRANSACTION_ROLLEDBACK: 
>> SERVER (id=4773e3aa, host=ICAPNT17) TRACE START:
>>    org.omg.CORBA.TRANSACTION_ROLLEDBACK: javax.transaction.TransactionRolledbackException:  ; nested exception is: 
com.ibm.websphere.csi.CSITransactionRolledbackException:   vmcid: 0x0  minor code: 0  completed: No
>> at com.ibm.ejs.csi.TranStrategy.commit(TranStrategy.java:988)
>> at com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:259)
>> at com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:570)
>> at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:4558)
>> at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:4372)
>> at com.mubasher.connectors.web.session.EJSRemoteStatelessWebConnectorFacade_415e6c0a.createOrder(Unknown Source)
>> at com.mubasher.connectors.web.session._EJSRemoteStatelessWebConnectorFacade_415e6c0a_Tie.createOrder(_EJSRemoteStatelessWebConnectorFacade_415e6c0a_Tie.java:369)
>> at com.mubasher.connectors.web.session._EJSRemoteStatelessWebConnectorFacade_415e6c0a_Tie._invoke(_EJSRemoteStatelessWebConnectorFacade_415e6c0a_Tie.java:168)
>> at com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:622)
>> at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:475)
>> at com.ibm.rmi.iiop.ORB.process(ORB.java:504)
>> at com.ibm.CORBA.iiop.ORB.process(ORB.java:1571)
>> at com.ibm.rmi.iiop.Connection.respondTo(Connection.java:2771)
>> at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2640)
>> at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:63)
>> at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:118)
>> at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1646)
>> SERVER (id=4773e3aa, host=ICAPNT17) TRACE END.
  vmcid: 0x0  minor code: 0  completed: No In class: class com.directfn.tradeweb.plugins.trade.service.CreateOrderService
com.directfn.tradeweb.system.exceptions.ServiceException: javax.transaction.TransactionRolledbackException: CORBA TRANSACTION_ROLLEDBACK 0x0 No; nested exception is:


 I found that this is happening because of  global security enabled default behavior is for transaction protocol messages, e.g. prepare, commit, rollback to be secured. This prevents malicious completion of global transactions.

What we Did

1) Global transaction on WAS requires the two servers to "trust" each other. I solved the problem by importing server A's LTPA key into server B and vice-versa.

2) If you run in an environment where security is not a concern, or the servers are secured by another means, this behavior can be disabled by unchecking the Enable protocol security check box on the transaction
service panel in the admin console

Thursday, May 5, 2011

How To Set Your Oracle Database to ARCHIVELOG Mode

1) Connect to Database as SYSDBA

 bash$ sqlplus "/as sysdba"

2) Shutdown the Database

SQL> shutdown immediate;

3) Mount the Database.

SQL> startup mount;

4) Set the Database to ARCHIVELOG mode.

SQL> alter database archivelog;

5) Open your Database.

SQL> alter database open;

6) Check the setting areOK

SQL> archive log list;

You will get a output like following.

Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /archive/arc
Oldest online log sequence     2
Next log sequence to archive   4
Current log sequence           4

Wednesday, April 27, 2011

Create a file with Back dated time stamp in solaris

To ceate a file with back dated time stamp, use thefollowing command.

touch -t 201001011030 timestamp-test


This will create a file name as "timestamp-test " with the last modified date as
 2010-01(January)-01 10.30 AM.

Wednesday, October 27, 2010

Automate the FTP in Solaris , Linux environment

Here i am writing a sample script which was very helpful for me.

There was a requirment to FTP some files Daily which were generated Daily in our live server to Billing servers in Maldives.

I used following small script to automate this process.

======================================================================
root@oracle-R-D # vi ftp-automate (Use your own name)

HOST=(Remote Server IP address)
FTPUSER=(FTP User id in remote server)
FTPPASSWORD=(FTP User Password)
ftp -n $HOST << -EOF
user $FTPUSER $FTPPASSWORD
lcd /(File location path in local server)
cd /(Directory path where you want to put th file in remote server)
bin
prompt off
mput (Or mget)
bye
EOF



Make sure thet you give the Execution permission to script file.

PowerDesk Pro 6.0
Using Ftp (User Friendly Reference)
The TCP/IP Guide: A Comprehensive, Illustrated Internet Protocols Reference

Wednesday, October 20, 2010

ORA-29280 , ORA-06512

I got following Error when i try to run a SQL script in Oracle 10g in Solaris 10 x86.
This runs in Oracle 9i which installed in Solaris 10 SPARC perfectly.

ERROR at line 1:
ORA-29280: invalid directory path
ORA-06512: at "SYS.UTL_FILE", line 33
ORA-06512: at "SYS.UTL_FILE", line 436
ORA-06512: at line 16


I did the following to overcome from this problem.


SQL> show parameter utl_file_dir;

NAME                                 TYPE                         VALUE
------------------------------
------------------------------------ --------------------------------
utl_file_dir                         string                          *


SQL> ALTER SYSTEM SET UTL_FILE_DIR='' scope=spfile;

Then i restarted the database. Then i issued the following command.

SQL> show parameter utl_file_dir;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
 
utl_file_dir                         string      /ora10g/ora10g/



After these changes, the script worked perfectly.

http://download.oracle.com/docs/cd/B28359_01/server.111/b28320/initparams255.htm
http://forums.oracle.com/forums/thread.jspa?threadID=590335

Monday, August 23, 2010

How to get all the table names in oracle database

*) To get the Current User table names and the Details,

SELECT * FROM USER_TABLES;

*) To get All user Table names and the Details,

SELECT * FROM ALL_TABLES;

Monday, August 2, 2010

ORA-02097 and ORA-16018

1) Issues ARCHIVE LOG LIST to see destination.



SQL> archive log list

Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 215
Next log sequence to archive 217
Current log sequence 217



2)Check your current archival location by issuing, show parameter DB_RECOVERY_FILE_DEST


SQL> show parameter DB_RECOVERY_FILE_DEST


NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /oradata2

db_recovery_file_dest_size big integer 30G



3) Now you want to set log_archive_dest.



SQL> alter system set log_archive_dest='/oradata1';

alter system set log_archive_dest='/oradata1'

*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n or
DB_RECOVERY_FILE_DEST



4)If you want to set log_archive_dest first reset DB_RECOVERY_FILE_DEST and then set .


SQL> alter system set DB_RECOVERY_FILE_DEST='';

System altered.


SQL> alter system set log_archive_dest='/oradata1';

System altered.


SQL> archive log list

Database log mode Archive Mode
Automatic archival Enabled
Archive destination /oradata1
Oldest online log sequence 215
Next log sequence to archive 217
Current log sequence 217



5)Also if you now want to set DB_RECOVERY_FILE_DEST ORA-16019: will occur.



SQL> alter system set DB_RECOVERY_FILE_DEST='/oradata2';



alter system set DB_RECOVERY_FILE_DEST='/oradata2'

*

ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16019: cannot use db_recovery_file_dest with LOG_ARCHIVE_DEST or
LOG_ARCHIVE_DUPLEX_DEST



6)To set DB_RECOVERY_FILE_DEST first reset LOG_ARCHIVE_DEST.

SQL> alter system set log_archive_dest='';

System altered.


SQL> alter system set DB_RECOVERY_FILE_DEST='/oradata2';

System altered.


SQL> archive log list

Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 215
Next log sequence to archive 217
Current log sequence 217



7)To set multiple location of archival destination set another log_archive_dest_n parameter like,



SQL> alter system set log_archive_dest_3='LOCATION=/oradata2';

System altered.