Create context index problem
When I try to create a context index in a table I have the following error:
create index pruebaindex on pruebactx(TEXTO) indextype is ctxsys.context
2 ;
create index pruebaindex on pruebactx(TEXTO) indextype is ctxsys.context
ERROR en lmnea 1:
ORA-29855: se ha producido un error en la ejecucisn de la rutina
ODCIINDEXCREATE
ORA-20000: Error de interMedia Text:
DRG-50704: el listener de Net8 no se esta ejecutando o no puede iniciar
procedimientos externos
ORA-28575: no se ha podido abrir la conexisn RPC con el agente de procedimiento
externo
ORA-06512: en "CTXSYS.DRUE", lmnea 126
ORA-06512: en "CTXSYS.TEXTINDEXMETHODS", lmnea 54
ORA-06512: en lmnea 1
I ve tried to configure listener for call external procedures using the Ora Admin manual indications and I think that a second listener is running for RPC connections but the create index command give me the same error.
Thanks
The temp files should get deleted after each file is processed.
"Forever" is meaningless. How long does it take, and for how many documents? Text indexes do take a long time to create - can be measured in days in some situations.
The errors you're seeing in ctx_user_index_errors are probably caused by damaged documents - files that the filter thinks it recognizes, but then fails to process according to the expected layout for those documents. If there are only a few of these, then I wouldn't worry too much - if there are lots (> 1% of your total, perhaps) then it's definitely worth investigating further.
Scanned documents stored as images (jpegs, tiffs, etc) cannot be indexed. Generally the filters should recognize and skip such documents without errors.
Similar Messages
-
Why I can't create ConText index?
Hi everyone.
I install Oracle9i(v9.0.1.1) in my computer.
I create a table, insert a xml document into it, but I can't create ConText index
on it.
How can I solve this problem ?
Thank you.
SQL> create table xtest(doc sys.xmltype);
SQL> insert into xtest values (sys.xmltype.createxml('<A>simple</A>'));
SQL> alter session set query_rewrite_enabled = true;
SQL> alter session set query_rewrite_integrity = trusted;
SQL> create index xtestx on xtest(doc)
2 indextype is ctxsys.context;
ORA-29855: An error occur when execute ODCIINDEXCREATE
ORA-20000: Oracle Text error:
DRG-50857: oracle error in drixtab.create_index_tables
ORA-01031: insufficient privileges
ORA-06512: in "CTXSYS.DRUE", line 157
ORA-06512: in "CTXSYS.TEXTINDEXMETHODS", line 176I've solve this problem.
I ues PL/SQL Developer. When I connect as SYSDBA, create index fail.
But if I connect as normal, it succeed! -
Privileges require for a user to create CONTEXT indexes
Hi all,
RDBMS: 11.2.0.3
SO.......: OEL 6.3
What are the necessary privileges that have to be granted to a user to be able to create CONTEXT Indexes, for example. I have granted the CTXAPP to my user, but when i tryied to create the CONTEXT Index with the command bellow, i got an "insufficient privilege" error message.
CREATE INDEX USR_DOCS.IDX_CTX_TAB_DOCUMENTOS_01 ON USR_DOCS.TAB_DOCUMENTOS(DOCUMENTO) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('SYNC (ON COMMIT)');It depends on whether the user is trying to create the index on his own table in his own schema or on somebody else's table in somebody else's schema. The following demonstrates minimal privileges (quota could be smaller) for user usr_docs to create the index on his own table in his own schema and for my_user to create the index on usr_docs table in usr_docs schema.
SCOTT@orcl> -- version:
SCOTT@orcl> SELECT banner FROM v$version
2 /
BANNER
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
5 rows selected.
SCOTT@orcl> -- usr_docs privileges:
SCOTT@orcl> CREATE USER usr_docs IDENTIFIED BY usr_docs
2 /
User created.
SCOTT@orcl> ALTER USER usr_docs QUOTA UNLIMITED ON users
2 /
User altered.
SCOTT@orcl> GRANT CREATE SESSION, CREATE TABLE TO usr_docs
2 /
Grant succeeded.
SCOTT@orcl> -- my_user privileges:
SCOTT@orcl> CREATE USER my_user IDENTIFIED BY my_user
2 /
User created.
SCOTT@orcl> GRANT CREATE SESSION, CREATE ANY INDEX TO my_user
2 /
Grant succeeded.
SCOTT@orcl> -- user_docs:
SCOTT@orcl> CONNECT usr_docs/usr_docs
Connected.
USR_DOCS@orcl> CREATE TABLE tab_documentos (documento CLOB)
2 /
Table created.
USR_DOCS@orcl> INSERT ALL
2 INTO tab_documentos VALUES ('test data')
3 INTO tab_documentos VALUES ('other stuff')
4 SELECT * FROM DUAL
5 /
2 rows created.
USR_DOCS@orcl> CREATE INDEX USR_DOCS.IDX_CTX_TAB_DOCUMENTOS_01
2 ON USR_DOCS.TAB_DOCUMENTOS(DOCUMENTO)
3 INDEXTYPE IS CTXSYS.CONTEXT
4 PARAMETERS ('SYNC (ON COMMIT)')
5 /
Index created.
USR_DOCS@orcl> DROP INDEX usr_docs.idx_ctx_tab_documentos_01
2 /
Index dropped.
USR_DOCS@orcl> -- my_user:
USR_DOCS@orcl> CONNECT my_user/my_user
Connected.
MY_USER@orcl> CREATE INDEX USR_DOCS.IDX_CTX_TAB_DOCUMENTOS_01
2 ON USR_DOCS.TAB_DOCUMENTOS(DOCUMENTO)
3 INDEXTYPE IS CTXSYS.CONTEXT
4 PARAMETERS ('SYNC (ON COMMIT)')
5 /
Index created. -
Creating context index on blob-field
I'm running Oracle 8.1.6 on Suse Linux 6.4.
Trying to create an database via dbassist or dbassist created skripts
will fail, if try to include interMedia.
So used the possibility to copy a sample datebase from CD.
Who knows about a Solution for this?
So configured listener.ora und tnsnames.ora to use external procedures.
Creating an user with cxtapp-role works.
Creating ctx preferences works.
But.......
Creating an index on blob field will fail.
The Error Message tells :
create index doc_index on textdokument(text)
FEHLER in Zeile 1:
ORA-29855: Fehler bei Ausf|hrung der Routine ODCIINDEXCREATE
ORA-20000: interMedia Text-Fehler:
DRG-11206: Benutzerfilterbefehl /opt/oracle/product/8.1.5/ctx/bin/ctxhx
konnte
nicht ausgef|hrt werden
ORA-06512: in "CTXSYS.DRUE", Zeile 126
ORA-06512: in "CTXSYS.TEXTINDEXMETHODS", Zeile 54
ORA-06512: in Zeile 1
Funny, there is no directory $ORACLE_HOME/ctx/bin
and there there is no ctxhx anywhere!
Reinstalling InterMedia will not help.
Are there no Filters within the Linux-Release?
Whats the problem like ?
nullI encountered similar problem running Oracle 8.1.6.on Windows 2000 Prof. I created and then populated a table, by indexing one of the CLOB columns I got following error messages:
Create index system.AI on Tabel1(Text5) indextype is ctxsys.context
FEHLER in Zeile 1:
ORA-29855: Fehler bei Ausf|hrung der Routine ODCIINDEXCREATE
ORA-20000: interMedia Text-Fehler:
DRG-11440: Vorgang wird in der GERMAN Sprache nicht unterst|tzt
ORA-06512: in "CTXSYS.DRUE", Zeile 126
ORA-06512: in "CTXSYS.TEXTINDEXMETHODS", Zeile 54
ORA-06512: in Zeile 1
The error message tell me that something is not supported for German text so the indexing fails. Does it mean there is no German support in IMT? Does somebody know what's wrong? Any workaround & Where to look at? Thanks.
Lucy -
Rights issue when creating context index.
Hi,
We have two users, "app" and "appsys" . with most permissions granted through roles.
"app" has just enough permissions for the application to run. No update/delete/etc on most tables, just select and (on a select few) insert rights.
"appsys" is the "crew" user, with enough rights for basic day-to-day administration and most upgrade scripts that come with new code releases.
Other than that, it's a pretty much default EE 11.2.0.1.0.
Therefore, my first preference was to have 'appsys' create the desired text index for use by 'app':
CREATE INDEX app.table_text_ix ON app.table (xml)
INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS('SYNC (EVERY "TRUNC(SYSDATE + 1) + 03/24") TRANSACTIONAL');
Have also tried the bare:
CREATE INDEX app.table_text_ix ON app.table (xml)
INDEXTYPE IS CTXSYS.CONTEXT;
Both give the same result:
Error at Command Line:1 Column:19
Error report:
SQL Error: ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-20000: Oracle Text error:
DRG-50857: oracle error in drvxtab.create_index_tables
ORA-01031: insufficient privileges
ORA-06512: at "CTXSYS.DRUE", line 160
ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 366
29855. 00000 - "error occurred in the execution of ODCIINDEXCREATE routine"
*Cause: Failed to successfully execute the ODCIIndexCreate routine.
*Action: Check to see if the routine has been coded correctly.
When using user app (temporarily granting relevant privileges):
ERROR at line 1:
ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-20000: Oracle Text error:
DRG-50857: oracle error in drvddl.IndexCreate
ORA-27486: insufficient privileges
ORA-06512: at "CTXSYS.DRUE", line 160
ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 366
I've tried granting just about anything but the kitchen sink to either user, both direct and indirect, but it still won't let me. Even SYS seems to be missing something.
Or rather, I seem to be missing something. But what? I've read a few prior threads about this issue and tried most suggestions: still no go.
Things I've GRANTed, as per documentation:
- CTXAPP role
- execute on ctxsys.ctx_ddl
- RESOURCE
- CONNECT
Other privileges it already had OR that I've tried granting:
EXECUTE ANY PROCEDURE
CREATE SESSION
UNLIMITED TABLESPACE
CREATE TABLE
CREATE ANY TABLE
ALTER ANY TABLE
DROP ANY TABLE
CREATE CLUSTER
CREATE ANY INDEX
ALTER ANY INDEX
DROP ANY INDEX
CREATE SEQUENCE
CREATE PROCEDURE
CREATE ANY PROCEDURE
CREATE ANY JOBB
CREATE TRIGGER
CREATE ANY TRIGGER
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE
Have also tried the grant select on sys.all_users to public; solution from a previous thread.
So... I'm lost... what am I missing?I don't know if what you have posted is pseudo-code or what you actually ran. Table is not a valid name for a table. It is best to post a copy and paste of an actual run from SQL*Plus, including line numbers and errors. I suggest that you start with a very simple example, avoiding reserve names like table and xml, just creating a simple text index on a table with a varchar2 column, as the same user that owns the table, checking everything along the way. Once you get that working, then you can add the other things one at a time. I have provided a script for you to run and post the results of below, followed by a run of the script on my system to show what you should get.
-- script for you to run from SQL*Plus and post a copy and paste of the results of:
-- version:
SELECT * FROM v$version
-- check that ctxsys user exists:
SELECT username
FROM all_users
WHERE username = 'CTXSYS'
-- check that Oracle Text is installed properly:
SELECT *
FROM dba_registry
WHERE comp_id = 'CONTEXT'
-- create test user:
CREATE USER test IDENTIFIED BY test
-- grant privileges:
GRANT CONNECT, RESOURCE, CTXAPP TO test
-- connect:
CONNECT test/test
-- create table:
CREATE TABLE test.test_tab
(test_col VARCHAR2 (9))
-- insert test data:
INSERT INTO test.test_tab (test_col)
VALUES ('test data')
-- check that test data was inserted:
SELECT * FROM test.test_tab
-- create index:
CREATE INDEX test.test_idx
ON test.test_tab (test_col)
INDEXTYPE IS CTXSYS.CONTEXT
-- check for errors:
SELECT * FROM ctx_user_index_errors
-- check that index and domain index tables were created:
COLUMN object_name FORMAT A30
SELECT object_name, object_type
FROM user_objects
WHERE object_name LIKE '%TEST%'
-- check that tokens were created:
SELECT token_text FROM test.dr$test_idx$i
-- test query:
SELECT * FROM test.test_tab
WHERE CONTAINS (test_col, 'test data') > 0
/-- example of the results you should get:
SCOTT@orcl_11gR2> -- version:
SCOTT@orcl_11gR2> SELECT * FROM v$version
2 /
BANNER
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
5 rows selected.
SCOTT@orcl_11gR2> -- check that ctxsys user exists:
SCOTT@orcl_11gR2> SELECT username
2 FROM all_users
3 WHERE username = 'CTXSYS'
4 /
USERNAME
CTXSYS
1 row selected.
SCOTT@orcl_11gR2> -- check that Oracle Text is installed properly:
SCOTT@orcl_11gR2> SELECT *
2 FROM dba_registry
3 WHERE comp_id = 'CONTEXT'
4 /
COMP_ID
COMP_NAME
VERSION STATUS
MODIFIED NAMESPACE
CONTROL SCHEMA
PROCEDURE STARTUP
PARENT_ID
OTHER_SCHEMAS
CONTEXT
Oracle Text
11.2.0.1.0 VALID
30-MAR-2010 11:06:15 SERVER
SYS CTXSYS
VALIDATE_CONTEXT
1 row selected.
SCOTT@orcl_11gR2> -- create test user:
SCOTT@orcl_11gR2> CREATE USER test IDENTIFIED BY test
2 /
User created.
SCOTT@orcl_11gR2> -- grant privileges:
SCOTT@orcl_11gR2> GRANT CONNECT, RESOURCE, CTXAPP TO test
2 /
Grant succeeded.
SCOTT@orcl_11gR2> -- connect:
SCOTT@orcl_11gR2> CONNECT test/test
Connected.
TEST@orcl_11gR2> -- create table:
TEST@orcl_11gR2> CREATE TABLE test.test_tab
2 (test_col VARCHAR2 (9))
3 /
Table created.
TEST@orcl_11gR2> -- insert test data:
TEST@orcl_11gR2> INSERT INTO test.test_tab (test_col)
2 VALUES ('test data')
3 /
1 row created.
TEST@orcl_11gR2> -- check that test data was inserted:
TEST@orcl_11gR2> SELECT * FROM test.test_tab
2 /
TEST_COL
test data
1 row selected.
TEST@orcl_11gR2> -- create index:
TEST@orcl_11gR2> CREATE INDEX test.test_idx
2 ON test.test_tab (test_col)
3 INDEXTYPE IS CTXSYS.CONTEXT
4 /
Index created.
TEST@orcl_11gR2> -- check for errors:
TEST@orcl_11gR2> SELECT * FROM ctx_user_index_errors
2 /
no rows selected
TEST@orcl_11gR2> -- check that index and domain index tables were created:
TEST@orcl_11gR2> COLUMN object_name FORMAT A30
TEST@orcl_11gR2> SELECT object_name, object_type
2 FROM user_objects
3 WHERE object_name LIKE '%TEST%'
4 /
OBJECT_NAME OBJECT_TYPE
DR$TEST_IDX$I TABLE
DR$TEST_IDX$K TABLE
DR$TEST_IDX$N TABLE
DR$TEST_IDX$R TABLE
DR$TEST_IDX$X INDEX
TEST_IDX INDEX
TEST_TAB TABLE
7 rows selected.
TEST@orcl_11gR2> -- check that tokens were created:
TEST@orcl_11gR2> SELECT token_text FROM test.dr$test_idx$i
2 /
TOKEN_TEXT
DATA
TEST
2 rows selected.
TEST@orcl_11gR2> -- test query:
TEST@orcl_11gR2> SELECT * FROM test.test_tab
2 WHERE CONTAINS (test_col, 'test data') > 0
3 /
TEST_COL
test data
1 row selected.
TEST@orcl_11gR2> -
Hi,
Iam trying to create an context index in a table. After a logn run it gave an error. end-of-file on communication channel. How to resolve this error. And do i have any possibility to continue my index creation. How to recover it?
Urgent Help needed......
Thanks,
Sri"End of file on communication channel" nearly always means the Oracle background process has crashed, which means either an Oracle bug or a hardware issue.
You would need to look at the database alert logs to get more information about the crash.
You probably won't be able to resume the indexing job from where it crashed, but will need to drop the index and recreate it. -
desc test
no number(2) primary key
text varchar2(20)
create index tindex on test(text) indextype is ctxsys.context;
when a gave this command cpu usage is going to 100% and i waited up to 9 hr but i didn't get index create what is the problem there is no error.my table don't have any records.
my os is sun solaris intel and oracle version is 8.1.5
regars
chandrahasHi,
is it possible to give an example of how your data looks like? What are these special characters? Oracle Text includes option like printjoins and skipjoins which give special meanings to characters. So an example will guide us for helping you.
Herald ten Dam
http://htendam.wordpress.com -
Hi,
I want to create a context index on one column which contains large text. And the table contains millions of records and daily inserts happen into the same table. My question is
1.Do we need to run any procedures after inserting the records daily i.e synchronization??
2.Is there any problem from performace point of view creating context index on the table??
Thanks,
Srihi,
pls have a take a look this doc
http://docs.oracle.com/cd/B19306_01/text.102/b14217/ind.htm
http://stackoverflow.com/questions/1916244/how-to-sync-and-optimize-an-oracle-text-index
regards, -
Hi,
I want to create a context index on one column which contains large text. And the table contains millions of records and daily inserts happen into the same table. My question is
1.Do we need to run any procedures after inserting the records daily?
2.Is there any problem from performace point of view creating context index on the table
Thanks,
Srisri333 wrote:
Hi,
I want to create a context index on one column which contains large text. And the table contains millions of records and daily inserts happen into the same table. My question is
1.Do we need to run any procedures after inserting the records daily?Not for what you describe. But you didn't describe much. I guess you will do something with this table data later. It depends from that. But since you only mentioned that you insert. Then no there is nothing to do after that.
2.Is there any problem from performace point of view creating context index on the tableSure. Creating the index takes time. If the index is there new inserts will take more time.
Edited by: Sven W. on Oct 10, 2012 12:02 PM -
Cannot create text index in partition table on Oracle 10g
I try to create context index in a table with 15 millions records. The table is divided 5 partitions and each patition has 3 millions records. When I create the context index in the table, the same error always arised. The follow are my work:
--First create my own lexer
begin
ctx_ddl.createperference('my_chinese_lexer','chinese_lexer');
end;
--Second create index
create index idx_part_text3 on tb_test_part(text3)
indextype is ctxsys.context local (
partition p1_ix,
partition p2_ix,
partition p3_ix ,
partition p4_ix,
partition p5_ix)
parameters('lexer my_chinese_lexer') parallel;
--error message
create index idx_part_text3 on tb_test_part(text3)
Error in 1 line:
ORA-12801: Parellel Query Server P000 send error signal
ORA-29855: Error on execute ODCIINDEXCREATE program
ORA-06510: PL/SQL: User Defined Error
ORA-06512: In "CTXSYS.DRIDISP", line 244
ORA-04030: Try to alloc 65548 Bytes (CTX PRM heap,draccbx:message buffer) Out of memory
ORA-06512: In "CTXSYS.DRIPARX", line 10
ORA-06512: In "CTXSYS.TEXTINDEXMETHODS", line 359
ORA-04030: Try to alloc 65548 Bytes (CTX PRM heap,draccbx:message buffer) Out of memory
ORA-06512: In "CTXSYS.DRUE", line 191
ORA-06512: In "CTXSYS.DRUE", line 49
ORA-06512: In "CTXSYS.DRUE", line 24
ORA-06512: In "CTXSYS.DRUE", line 186
ORA-06512: In "CTXSYS.DRVDDL", line 682
ORA-04030: Try to alloc 65548 Bytes (CTX PRM heap,draccbx:message buffer) Out of memory
ORA-04030: Try to alloc 65548 Bytes (CTX PRM heap,draccbx:message buffer) Out of memory
ORA-06512: In "CTXSYS.DRUE", line 191
ORA-06512: In "CTXSYS.DRUE", line 49
ORA-06512: In "CTXSYS.DRUE", line 24
ORA-06512: In "CTXSYS.DRVDDL", line 452
ORA-06510: PL/SQL: User Defined Error
BTW:
My oracle 10g run on linux AS3 box with 4xP4 and 6G Mem.
I set pga_aggregate_target=2200M, and at the beginning of creating index, the max pga alloced is about 1100M, but when one patition finished, the error arised and the max pga alloced suddenly reached 3500M. So in every times, the index status is always like below:
P1_ix usable
P2_ix Inprogress
P3_ix Inprogress
P4_ix Inprogress
P5_ix Inprogress
Thx for any help!Try to increase LARGE_POOL_SIZE.
PGA_AGGREGATE_TARGET is not only parameter that can meddle in parallel execution.
Looks like parallel execution parameters is not correctly set. Check it all, including PARALLEL_EXECUTION_MESSAGE_SIZE. -
About context index???
Dear all,
My oracle version is as follows;
SQL> select * from v$version;
BANNER
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Productio
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
I created ctxsys user as follows;
conn sys as sysdba
sql> @D:\oracle\ora92\ctx\admin\dr0dsys
-- Run drcsys.sql with args USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE
sql> @D:\oracle\ora92\ctx\admin\dr0csys.sql ctxsys ctxsys temp
connect ctxsys
-- Run dr0inst.sql, with arg - your CTX library (this one is for HP-UX)
sql> @D:\oracle\ora92\ctx\admin\dr0inst
-- Run drdefXX.sql to install language, XX = {us, uk, ...}
sql> @D:\oracle\ora92\ctx\admin\defaults\drdefus.sql
-- Grant users access to use CTX
sql> grant CTXAPP to sun1;
Now,I am creating context index on blob coulmn, but i got following error.
conn sun1
SQL> create index articles_title_idx on articles (title)
indextype is ctxsys.context;
create index articles_title_idx on articles (title)
ERROR at line 1:
ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-20000: Oracle Text error:
DRG-10502: index ARTICLES_TITLE_IDX does not exist
DRG-50857: oracle error in drdmlpo
ORA-00600: internal error code, arguments: [opibnd1], [], [], [], [], [], [],
ORA-06512: at "CTXSYS.DRUE", line 157
ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 186
Please help me.
Thanks In advance,
Prathamesh.ORA-600 is Oracle's message for unhandled exceptions in their code i.e. bugs. There is a bug for this behaviour. Does your system have the CURSOR_SHARING paremeter set to anything other than EXACT?
Cheers, APC -
Oracle 9.2 ConText index alternate_spelling problem
Hello everybody!
I'm having problems with a ConText index in Oracle 9.2, using the alternative_spelling parameter...
Here is my code
CREATE TABLE U2000P.TEST_FICHIER_INT
(ID NUMBER(6) NOT NULL,
NOM_FICHIER VARCHAR2(90) NULL,
MIME VARCHAR2(90) NULL,
FICHIER BLOB DEFAULT empty_blob(),
LNG VARCHAR2(3) NULL,
KEY_WORDS VARCHAR2(500) NULL,
CONSTRAINT PK_TEST_FICHIER_INT PRIMARY KEY (ID)
EXECUTE CTX_DDL.CREATE_PREFERENCE('ENGLISH_LEXER','BASIC_LEXER');
EXECUTE CTX_DDL.SET_ATTRIBUTE('ENGLISH_LEXER', 'INDEX_THEMES', 'YES');
EXECUTE CTX_DDL.SET_ATTRIBUTE('ENGLISH_LEXER', 'THEME_LANGUAGE', 'ENGLISH');
EXECUTE CTX_DDL.SET_ATTRIBUTE('ENGLISH_LEXER', 'BASE_LETTER', 'NO');
EXECUTE CTX_DDL.CREATE_PREFERENCE('FRENCH_LEXER','BASIC_LEXER');
EXECUTE CTX_DDL.SET_ATTRIBUTE('FRENCH_LEXER', 'INDEX_THEMES', 'NO');
EXECUTE CTX_DDL.SET_ATTRIBUTE('FRENCH_LEXER', 'BASE_LETTER', 'NO');
EXECUTE CTX_DDL.CREATE_PREFERENCE('GERMAN_LEXER','BASIC_LEXER');
EXECUTE CTX_DDL.SET_ATTRIBUTE('GERMAN_LEXER', 'INDEX_THEMES', 'NO');
EXECUTE CTX_DDL.SET_ATTRIBUTE('GERMAN_LEXER', 'BASE_LETTER', 'NO');
EXECUTE CTX_DDL.SET_ATTRIBUTE('GERMAN_LEXER', 'ALTERNATE_SPELLING', 'GERMAN');
EXECUTE CTX_DDL.CREATE_PREFERENCE('GLOBAL_LEXER','MULTI_LEXER');
EXECUTE CTX_DDL.ADD_SUB_LEXER('GLOBAL_LEXER', 'FRENCH', 'FRENCH_LEXER', '1');
EXECUTE CTX_DDL.ADD_SUB_LEXER('GLOBAL_LEXER', 'DEFAULT', 'GERMAN_LEXER');
EXECUTE CTX_DDL.ADD_SUB_LEXER('GLOBAL_LEXER', 'ENGLISH', 'ENGLISH_LEXER', '5');
CREATE INDEX IDX_F_TEST_FICHIER_INT
ON TEST_FICHIER_INT(FICHIER)
INDEXTYPE IS CTXSYS.CONTEXT
PARAMETERS('DATASTORE CTXSYS.DIRECT_DATASTORE
FILTER CTXSYS.INSO_FILTER
LEXER GLOBAL_LEXER LANGUAGE COLUMN LNG');
In one of the files that I load, I have the word 'paläontologie'
Here are my searches
select nom_fichier, score(1) from test_fichier_int where contains(fichier, 'paläontologie', 1) > 0;
-> no rows selected
select nom_fichier, score(1) from test_fichier_int where contains(fichier, 'palaontologie', 1) > 0;
-> Finds my document
Why does the first search not work?
If I don't use the 'alternate_spelling' parameter, both searches don't work, why is that???
Thanks in advance for your help
Best regards
Neil.I found my error!!!! Thanks Neil... lol
In fact, it's my SQL*Plus that must be badly configured, and I am having problems with accentuated characters... If I search through a browser, it works!!!
Sorry about that...
Best regards
Neil. -
Oracle Text - CTX Context Index Soundex Problem
Hi,
I'm running into a problem with Oracle Text when searching using the ! (soundex) option. I've created a simple test example to highlight the issue.
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit
Windows 2008 Server 64-bit
create table test_tab (test_col varchar2(200));
insert all
into test_tab (test_col) values ('ab-tönes')
into test_tab (test_col) values ('ab-tones')
into test_tab (test_col) values ('abtones')
into test_tab (test_col) values ('ab tones')
into test_tab (test_col) values ('ab-tanes')
select * from dual
select * from test_tab
begin
ctx_ddl.create_preference ('test_lex1', 'basic_lexer');
ctx_ddl.set_attribute ('test_lex1', 'whitespace', '/\|-_+&''');
ctx_ddl.set_attribute('test_lex1','base_letter','YES');
-- ctx_ddl.set_attribute('test_lex1','skipjoins','-');
end;
create index test_idx on test_tab (test_col)
indextype is ctxsys.context
parameters
('lexer test_lex1'
select token_text from dr$test_idx$i;
TOKEN_TEXT
AB
ABTONES
TANES
TONES
select * from test_tab where contains (test_col, '!ab tones') > 0;
TEST_COL
ab-tönes
ab-tones
ab tones
select * from test_tab where soundex(test_col) = soundex('ab tones');
TEST_COL
ab-tönes
ab-tones
abtones
ab tones
ab-tanes
So my question is, can anyone suggest an approach whereby I can get the Oracle Text Context index (or CTXCAT index if it's more appropriate) to return all 5 rows like the simple Soundex is doing?
I can't really use soundex as this search query will form part of a search screen for a multi-language application. Soundex is limited to English sounding words, so I need the solution to be able to compare strings that may not "sound" English.
It must be an attribute of the BASIC_LEXER, and I've tried skipjoins, start/end-joins, stop lists, but I just cannot get the Soundex feature of Oracle Text to function like the SOUNDEX() function!
Looking at how the tokens are stored dr$test_idx$i I need Oracle Text to almost concat 'AB' and 'TONES' to search as a single string.
Any help greatly appreciated.
Thanks,I am not getting the same problem that you are getting with the umlat, but I don't see what is different. Please post the result of:
select ctx_report.create_index_script ('test_idx') from dual;
Here are the results on my system. Perhaps you can spot the difference. I added an empty_stoplist, so that it won't print out a long list of stopwords.
SCOTT@orcl12c> create table test_tab (test_col varchar2(200))
2 /
Table created.
SCOTT@orcl12c> insert all
2 into test_tab (test_col) values ('ab-tönes')
3 into test_tab (test_col) values ('ab-tones')
4 into test_tab (test_col) values ('abtones')
5 into test_tab (test_col) values ('ab tones')
6 into test_tab (test_col) values ('ab-tanes')
7 select * from dual
8 /
5 rows created.
SCOTT@orcl12c> select * from test_tab
2 /
TEST_COL
ab-tönes
ab-tones
abtones
ab tones
ab-tanes
5 rows selected.
SCOTT@orcl12c> begin
2 ctx_ddl.create_preference ('test_lex1', 'basic_lexer');
3 ctx_ddl.set_attribute('test_lex1','base_letter','YES');
4 end;
5 /
PL/SQL procedure successfully completed.
SCOTT@orcl12c> create or replace procedure test_proc
2 (p_rowid in rowid,
3 p_clob in out nocopy clob)
4 as
5 begin
6 select replace (translate (test_col, '/\|-_+&''', ' '), ' ', '')
7 into p_clob
8 from test_tab
9 where rowid = p_rowid;
10 end test_proc;
11 /
Procedure created.
SCOTT@orcl12c> show errors
No errors.
SCOTT@orcl12c> begin
2 ctx_ddl.create_preference ('test_ds', 'user_datastore');
3 ctx_ddl.set_attribute ('test_ds', 'procedure', 'test_proc');
4 end;
5 /
PL/SQL procedure successfully completed.
SCOTT@orcl12c> create index test_idx on test_tab (test_col)
2 indextype is ctxsys.context
3 parameters
4 ('lexer test_lex1
5 datastore test_ds
6 stoplist ctxsys.empty_stoplist')
7 /
Index created.
SCOTT@orcl12c> select token_text from dr$test_idx$i
2 /
TOKEN_TEXT
ABTANES
ABTONES
2 rows selected.
SCOTT@orcl12c> variable search_string varchar2(100)
SCOTT@orcl12c> exec :search_string := 'ab tones'
PL/SQL procedure successfully completed.
SCOTT@orcl12c> select * from test_tab
2 where contains
3 (test_col,
4 '!' || replace (:search_string, ' ', ' !') ||
5 ' or !' || replace (:search_string, ' ', '')) > 0
6 /
TEST_COL
ab-tönes
ab-tones
abtones
ab tones
ab-tanes
5 rows selected.
SCOTT@orcl12c> exec :search_string := 'abtones'
PL/SQL procedure successfully completed.
SCOTT@orcl12c> /
TEST_COL
ab-tönes
ab-tones
abtones
ab tones
ab-tanes
5 rows selected.
SCOTT@orcl12c> exec :search_string := 'ab tönes'
PL/SQL procedure successfully completed.
SCOTT@orcl12c> /
TEST_COL
ab-tönes
ab-tones
abtones
ab tones
ab-tanes
5 rows selected.
SCOTT@orcl12c> select ctx_report.create_index_script ('test_idx') from dual
2 /
CTX_REPORT.CREATE_INDEX_SCRIPT('TEST_IDX')
begin
ctx_ddl.create_preference('"TEST_IDX_DST"','USER_DATASTORE');
ctx_ddl.set_attribute('"TEST_IDX_DST"','PROCEDURE','"SCOTT"."TEST_PROC"');
end;
begin
ctx_ddl.create_preference('"TEST_IDX_FIL"','NULL_FILTER');
end;
begin
ctx_ddl.create_section_group('"TEST_IDX_SGP"','NULL_SECTION_GROUP');
end;
begin
ctx_ddl.create_preference('"TEST_IDX_LEX"','BASIC_LEXER');
ctx_ddl.set_attribute('"TEST_IDX_LEX"','BASE_LETTER','YES');
end;
begin
ctx_ddl.create_preference('"TEST_IDX_WDL"','BASIC_WORDLIST');
ctx_ddl.set_attribute('"TEST_IDX_WDL"','STEMMER','ENGLISH');
ctx_ddl.set_attribute('"TEST_IDX_WDL"','FUZZY_MATCH','GENERIC');
end;
begin
ctx_ddl.create_stoplist('"TEST_IDX_SPL"','BASIC_STOPLIST');
end;
begin
ctx_ddl.create_preference('"TEST_IDX_STO"','BASIC_STORAGE');
ctx_ddl.set_attribute('"TEST_IDX_STO"','R_TABLE_CLAUSE','lob (data) store as (
cache)');
ctx_ddl.set_attribute('"TEST_IDX_STO"','I_INDEX_CLAUSE','compress 2');
end;
begin
ctx_output.start_log('TEST_IDX_LOG');
end;
create index "SCOTT"."TEST_IDX"
on "SCOTT"."TEST_TAB"
("TEST_COL")
indextype is ctxsys.context
parameters('
datastore "TEST_IDX_DST"
filter "TEST_IDX_FIL"
section group "TEST_IDX_SGP"
lexer "TEST_IDX_LEX"
wordlist "TEST_IDX_WDL"
stoplist "TEST_IDX_SPL"
storage "TEST_IDX_STO"
begin
ctx_output.end_log;
end;
1 row selected. -
Numeric character problems when creating spatial index
Hi,
We have run into a problem when trying to create spatial indexes. The problem seems to be that an mdsys-procedure tries to use a number with a comma as decimal symbol in an update statement
Error message:
ERROR at line 1:
ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-13249: internal error in Spatial index: [mdidxrbd]
ORA-13249: Error in Spatial index: index build failed
ORA-13249: Stmt-Execute Failure: begin mdsys.prvt_idx.execute_update(NULL,NULL,'set sdo_rtree_quality = 1,00000000 where UPPER(sdo_index_owner) = UPPER(''BK'') AND UPPER(sdo_index_name)=UPPER(''TEST_RTREE_IDX'') AND UPPER(sdo_index_table)=UPPER(''MDRT_8120$'')',NULL); end;
ORA-29400: data cartridge error
ORA-01747: invalid user.table.column, table.column, or column specification
ORA-06512: at "MDSYS.PRVT_IDX", line 17
ORA-06512: at line 1
ORA-06512: at "MDSYS.SDO_INDEX_METHOD_9I", line 7
ORA-06512: at line 1
Our problem seems to be identical to the one discussed in this thread: create RTREE falied on 9.2.0.4
Regional settings, language versions etc:
Client:
OS: Windows 2000
Regional options (OS): Swedish, Sweden
Sqlplus (console and windows versions): v 9.2.0.1.0
Registry: NLS_LANG =SWEDISH_SWEDEN.WE8MSWIN1252
Server:
OS: Windows Server 2003
Regional options (OS): Swedish, Sweden
Oracle: v 9.2.0.3.0
Registry: NLS_LANG =SWEDISH_SWEDEN.WE8MSWIN1252
We have also tried building the indexes after overriding these settings by setting the environment variables NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1 on both the client- and the server computer. This gives exactly the same error. We have tried setting NLS_NUMERIC_CHARACTERS to '.,' instead of ',.', but this does not help either.
We haven't tried changing the NLS_LANG registry entry on the server, because this is a production server at a customer's site that hosts several other databases, so we would prefer not to have to restart it if we can avoid it. However, as we understand it, the environment variable NLS_LANG should override the registry setting anyway, right?
We first experienced the problem when trying to build indexes on imported data. To verify that the problem was not with the data, we wrote a simple test script that:
1)Creates a table
2)Creates metadata
3)Inserts a simple geometry
4)Tries to create an index
The error message above is from running this script. We have verified that the script
works ok on another database server.
Below are the values of some of the language parameters right before running the script
(we have tried many other settings with the same result).
parameter...........................db................................instance...............session
NLS_CHARACTERSET.......WE8MSWIN1252..................................................
NLS_LANGUAGE...............AMERICAN...................AMERICAN...........AMERICAN
NLS_NCHAR_CH...............AL16UTF16 ..........................................................
NLS_NCHAR_CONV... ......FALSE..........................FALSE..................FALSE..
NLS_NUMERIC_CH...---------.,---------------------------------------------------------------.,
NLS_TERRITORY..............AMERICA......................AMERICA..............AMERICA
The guy who started the thread referenced above solved the problem, but we haven't been able to get it working by changing registry entries and session parameters.
The question is: Which setting will make the number in 'set sdo_rtree_quality = 1,00000000...' be generated with a . instead of a , as decimal symbol?Ok, so here is my plan to solve this:
1) Change the default user locale (the language under "standards and formats") to English for the account under which the Oracle server runs.
2) Reboot (or is there an easier way to make Oracle reload the settings?)
This should make the index creation work. It may break something else however, so to avoid this I can set the user locale back to Swedish afterwards .
You can subsequently change the setting and update the sdo_rtree_quality in
the metadata and it should work fine. Do you mean I have to update the sdo_rtree_quality in some way to make it work after I have changed the default user locale back to Swedish? How do I do this?
Thanks a million both of you! -
Creating a spatial index problem
Hi there
I have to create a table in Oracle Spatial and use it with MapInfo MapX 4.51 OCX to insert some features in it.
I read a thread in the MapX forum where I learnt that I had to create my table (CREATE TABLE statement), add a record in MAPINFO_MAPCATALOG table, and then add a line to the SDO_GEOM_METADATA_TABLE table. With this, I can add some features in the table by MapInfo, and I can use the INSERT clause in Oracle. Well. But when I try to use the table in MapX, I can't even load it nor insert a feature : I have an Oracle error saying "ORA-13226 interface not supported without a spatial index".
When creating a spatial index in Oracle, I have got this message :
ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
ORA-13203: failed to read USER_SDO_GEOM_METADATA table
ORA-13203: failed to read USER_SDO_GEOM_METADATA table
ORA-06512: at "MDSYS.SDO_INDEX_METHOD_9I", line 7
ORA-06512: at line 1
The index is still created but marked at FAILED, so it is now impossible to insert features in it (even by INSERT clause).
The newly created table is empty, and it was created on the basis of another existing table. The records added in SDO_GEOM and MAPINFO_MAPCATALOG were copies of the records concerning the source table.
And I have finally granted SELECT and UPDATE on SDO_GEOM_METADATA_TABLE table and USER_SDO_GEOM_METADATA view to the user doing the operations.
Any clue ? I am using MapX 4.51 and Oracle 9.2.0.1.0.
Thank you for any idea. I am puzzled.Hi,
There is something wrong with accessing metadata.
To identify where the problem is:
- run the create-index from sqlplus (and not from mapx)
- check whether the user creating the index can
see the metadata from user_sdo_geom_metadata. (This
user also needs create-table, create-sequence privs).
Let us know what happens.
- Ravi.
Maybe you are looking for
-
Connection Error while connecting to GEO_DIM.xml in demo folder
Dear All, I am tring to create an interface to import data from xml file to ralational table. I am using ODI 11g, and have downloaded demo.zip file in whic GEO_DIM.xml file is provided. I am using the same by setting values as below; JDBC DRIVER: com
-
Can't drag an icon to the dock
I am a recent Mac convert and I just set up user profiles on my Mac Mini for my two kids. My son plays Pirates of the Caribbean online. I installed it on the Mac and when I opened the applications folder and tried to drag the icon into the doc it wou
-
How to check whether weblogic server is in DEBUG mode or not
Hi I want to check in my OSB proxy whether weblogic server is in Debug mode or not? IF abv thing is not possible , I have check whether server is in development mode or production mode from my OSB proxy service? I m not able to find any doc on this??
-
System won't load after startup repair - Satellite A500
Hi guys, I've got a problem with my laptop. I shut down my laptop directly by switching off from the switch. After I start the laptop the system recommends startup repair but it was unable to repair and after that it just went up to the welcome page
-
lp9 is crashing on start up. i have checked and repaired disk permissions and re installed. heres the error log. Process: Logic Pro [420] Path: /Applications/Logic Pro.app/Contents/MacOS/Logic Pro Identifier: com.apple.logic.pro Version: 9.0.0 (1660.