Home » Server Options » Text & interMedia » DRG-50901 error which cannot be reproduced (oracle text, oracle 10.2.4)
DRG-50901 error which cannot be reproduced [message #483224] Fri, 19 November 2010 05:25 Go to next message
kastania
Messages: 19
Registered: May 2007
Junior Member
In the clients enviroment DRG-50901 is produced.
The error cannot be reproduced on our enviroments.

Let me describe our configuration.

We need to search many tables and many columns on those tables.

We use seven queries and seven Oracle text indexes.

The word they try to search is dokter. Note that the search fails in the search of any keyword.

The queries run through java code.

From the logs I can see that six of the seven queries are successfully executed with no results found and the last query fails with DRG-50901.

It does not fail every time in the same query of the seven queries.

Also I asked from the client to run the queries in sqldeveloper and the queries are executed successfully.

Stack trace :
weblogic.transaction.internal.AppSetRollbackOnlyException
at weblogic.transaction.internal.TransactionImpl.setRollbackOnly(TransactionImpl.java:553)
at weblogic.transaction.internal.TransactionManagerImpl.setRollbackOnly(TransactionManagerImpl.java:319)
at weblogic.transaction.internal.TransactionManagerImpl.setRollbackOnly(TransactionManagerImpl.java:312)
at org.hibernate.ejb.AbstractEntityManagerImpl.markAsRollback(AbstractEntityManagerImpl.java:421)
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:576)
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614)
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:76)
at eu.europa.ec.eqf.dao.impl.SimpleSearchDaoImpl.documentsSearch(SimpleSearchDaoImpl.java:463)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at

The line that fails is
final List<Object[]> docList = q.getResultList();

I can sent you the index configuration but I CANNOT imagine that this is the reason it fails.

The last time this occured it was resolved by redeploying the application.

Our configuration is below:
STORAGE PREFERENCE

begin
  ctx_ddl.create_preference('INDEX_STORAGE', 'BASIC_STORAGE');
  ctx_ddl.set_attribute('INDEX_STORAGE', 'I_TABLE_CLAUSE',
  'tablespace eqf_dev_idx_tbs storage (initial 1K)');
  ctx_ddl.set_attribute('INDEX_STORAGE', 'K_TABLE_CLAUSE',
  'tablespace eqf_dev_idx_tbs storage (initial 1K)');
  ctx_ddl.set_attribute('INDEX_STORAGE', 'R_TABLE_CLAUSE',
  'tablespace eqf_dev_data_tbs storage (initial 1K) lob
  (data) store as (disable storage in row cache)');
  ctx_ddl.set_attribute('INDEX_STORAGE', 'N_TABLE_CLAUSE',
  'tablespace eqf_dev_idx_tbs storage (initial 1K)');
  ctx_ddl.set_attribute('INDEX_STORAGE', 'I_INDEX_CLAUSE',
  'tablespace eqf_dev_idx_tbs storage (initial 1K) compress 2');
  ctx_ddl.set_attribute('INDEX_STORAGE', 'P_TABLE_CLAUSE',
  'tablespace eqf_dev_idx_tbs storage (initial 1K)');
end;


LEXER PREFERENCE:
exec ctx_ddl.create_preference('EQF_LEXER', 'world_lexer');


ALL the indexes are created using the following statement:

CREATE INDEX sections_ot_idx ON section_trans(title) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS('SYNC(ON COMMIT) STORAGE INDEX_STORAGE filter ctxsys.null_filter section group ctxsys.html_section_group lexer EQF_LEXER');


In case the search is needed to be performed in mulltiple columns a user datastore preference is created which uses a procedure that concatenates columns for example like the one below

create or replace
PROCEDURE CONTENT_TRANS_PROC( p_id in rowid, p_lob IN OUT clob)
IS
BEGIN
    FOR c1 IN (SELECT main_text||' '||title data FROM content_trans WHERE ROWID = p_id) 
    LOOP
        dbms_lob.copy( p_lob, c1.data, 
                       dbms_lob.getlength( c1.data ));
    END LOOP;
END;

BEGIN
ctx_ddl.create_preference( 'content_trans_datastore', 'user_datastore' );
ctx_ddl.set_attribute( 'content_trans_datastore', 'procedure', 'CONTENT_TRANS_PROC' );
END;
/



And then the index create statement is:

CREATE INDEX content_trans_ot_idx ON content_trans(ORACLE_TEXT_COLUMN)
INDEXTYPE IS ctxsys.CONTEXT PARAMETERS ('datastore content_trans_datastore SYNC(ON COMMIT) STORAGE INDEX_STORAGE filter ctxsys.null_filter section group ctxsys.html_section_group lexer EQF_LEXER')



[Updated on: Fri, 19 November 2010 07:09]

Report message to a moderator

Re: DRG-50901 error which cannot be reproduced [message #483239 is a reply to message #483224] Fri, 19 November 2010 07:29 Go to previous messageGo to next message
kastania
Messages: 19
Registered: May 2007
Junior Member
We have restarted the application server and the problem was solved.
This is the second time it happens.

So the problem is not in Oracle Text configuration or the queries we run.

Does anyone have the same problem?
Does any strange connection remain with the database server when a new war is deployed on the application server?

And why is the problem only in oracle text queries and the rest of the application works fine?

I know that the problem may not be an Oracle problem, but it is related...

Re: DRG-50901 error which cannot be reproduced [message #483252 is a reply to message #483239] Fri, 19 November 2010 08:47 Go to previous message
kastania
Messages: 19
Registered: May 2007
Junior Member
More disappointing news.
The search, works only the first time after the deployment.
The second search fails again.
Previous Topic: Oracle Text Index Problem
Next Topic: Using Near clause for text search (2 Merged)
Goto Forum:
  


Current Time: Fri Dec 27 00:01:59 CST 2024