Reputation: 761
I have implemented function based unique index.
CREATE UNIQUE INDEX "UK_ACCOUNT_TYPE" ON "ACCOUNT" (
CASE "ACTIVE"
WHEN '1'
THEN "FK_PARTNERID"
ELSE NULL
END,
CASE "ACTIVE"
WHEN '1'
THEN "TYPE"
ELSE NULL
END
);
[Note: FK_PARTNERID is foreign key. Basically we want to keep only 1 record active for specific type of user(FK_PARTNERID) and specific type of account(TYPE).]
After that, if I try to delete a record from this table, it disconnects from server and gives such error: "No more data to read from socket. Commit failed."
I have to reconnect the client to server. This issue occurs when I try to delete record from coding also.
Insert/Update/Select statements work normally.
If I drop this index, deletion works fine.
Oracle server version is 11g (11.2.0.3)
Here is log showing in SQL Developer:
Here is listener alert log: (from path: /opt/oracle/product/diag/tnslsnr/dev-vm/listener/alert)
<msg time='2013-10-04T14:43:04.079+00:00' org_id='oracle' comp_id='tnslsnr'
type='UNKNOWN' level='16' host_id='dev-vm'
host_addr='192.168.56.101'>
<txt>04-OCT-2013 14:43:04 * service_update * ORCL * 0
</txt>
</msg>
<msg time='2013-10-04T14:43:20.365+00:00' org_id='oracle' comp_id='tnslsnr'
type='UNKNOWN' level='16' host_id='dev-vm'
host_addr='192.168.56.101'>
<txt>04-OCT-2013 14:43:20 * (CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=glassfish))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.101)(PORT=45602)) * establish * orcl * 0
</txt>
</msg>
<msg time='2013-10-04T14:44:01.112+00:00' org_id='oracle' comp_id='tnslsnr'
type='UNKNOWN' level='16' host_id='dev-vm'
host_addr='192.168.56.101'>
<txt>04-OCT-2013 14:44:01 * service_update * ORCL * 0
</txt>
</msg>
<msg time='2013-10-04T14:44:04.115+00:00' org_id='oracle' comp_id='tnslsnr'
type='UNKNOWN' level='16' host_id='dev-vm'
host_addr='192.168.56.101'>
<txt>04-OCT-2013 14:44:04 * service_update * ORCL * 0
</txt>
</msg>
<msg time='2013-10-04T14:44:34.128+00:00' org_id='oracle' comp_id='tnslsnr'
type='UNKNOWN' level='16' host_id='dev-vm'
host_addr='192.168.56.101'>
<txt>04-OCT-2013 14:44:34 * service_update * ORCL * 0
</txt>
</msg>
Alert log:
Mon Oct 07 07:38:12 2013
Time drift detected. Please check VKTM trace file for more details.
Mon Oct 07 13:30:09 2013
Exception [type: SIGSEGV, Address not mapped to object] [ADDR:0x6] [PC:0x8A7767C, evakdustoopn()+76] [flags: 0x0, count: 1]
Errors in file /opt/oracle/product/diag/rdbms/orcl/ORCL/trace/ORCL_ora_12500.trc (incident=104683):
ORA-07445: exception encountered: core dump [evakdustoopn()+76] [SIGSEGV] [ADDR:0x6] [PC:0x8A7767C] [Address not mapped to object] []
Incident details in: /opt/oracle/product/diag/rdbms/orcl/ORCL/incident/incdir_104683/ORCL_ora_12500_i104683.trc
Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
Mon Oct 07 13:30:12 2013
Dumping diagnostic data in directory=[cdmp_20131007133012], requested by (instance=1, osid=12500), summary=[incident=104683].
Mon Oct 07 13:30:13 2013
Sweep [inc][104683]: completed
Sweep [inc2][104683]: completed
Upvotes: 1
Views: 9793
Reputation: 191285
The ORA-03113
error indicates that the server process that was handling your update died unexpectedly. There can be many reasons for that, and the server alert log has shown the ORA-07445
that the back-end process got in this case.
Searching the Oracle support site reveals a bug, 13649540, which seems to match what you're seeing. I'm not allowed to reproduce material from that site here, so you or your DBA, or someone with access and a customer support identifier, will need to investigate further.
You might be able to get a patch for your platform, but there doesn't seem to be a workaround, so I don't think you'll be able to fix this in code. Raising a service request with Oracle might lead to some options that aren't published on their support site though. The alert log has some information to help your DBA package and report the incident.
Ultimately it's something your DBA will need to look at and deal with. There doesn't seem to be anything you can do about it as a developer.
Upvotes: 2