Linguistic indexes

I'm using oracle 8.1.6.
I'd like to improve the performance of sorting using linguistic indexes.
I'have found an example on how to do this in the Oracle8i National Language Support Guide
(http://otn.oracle.com/docs/products/oracle8i/doc_library/817_doc/server.817/a76966/ch2.htm#92022)
Here it is:
ALTER SESSION SET query_rewrite_enabled=true;
ALTER SESSION SET NLS_COMP = ANSI;
ALTER SESSION SET NLS_SORT='FRENCH';
CREATE TABLE test(col VARCHAR(20) NOT NULL);
CREATE INDEX test_idx ON test(NLSSORT(col, 'NLS_SORT=FRENCH'));
SELECT * FROM test WHERE NLSSORT(col) IS NOT NULL ORDER BY col;
It produces the required output, but unfortunately it uses the following execution plan:
SELECT STATEMENT, GOAL = CHOOSE
SORT ORDER BY
TABLE ACCESS FULL PAN TEST
So the optimezer ignores to use the index.
Yes, I've read the entire section, the oprimizer is CBO and I've analyzed the index and the table.
Any idea how to make it work using the index?
Thanks in advance.
Franci

Unfortunately your hints doesn't work. I think there is something wrong or misconfigured at my index, so the cbo is not allowed to use it.
I have made some deeper research. These are the facts:
If I run the example using a binary index and NLS_SORT set to binary, then I got the proper execution plan:
SELECT * FROM test
WHERE NLSSORT(col) IS NOT NULL
ORDER BY col
SELECT STATEMENT, GOAL = CHOOSE                    
INDEX FULL SCAN     TEST_IDX_BIN
Fine this is what I want.     
But, if I enter 120000 records to this table and run the same select statement, I got the following execution plan:
SELECT STATEMENT, GOAL = CHOOSE                    
SORT ORDER BY               
TABLE ACCESS FULL     TEST
Remember, there is 120000 records in the table, of course analyzed. So why the hell the CBO think ordering at runtime is a better solution?
If i switch to RBO and run the same query, i got the proper plan:
SELECT STATEMENT, GOAL = RULE                         INDEX FULL SCAN     TEST_IDX_BIN          
And here comes the best, the magic! :
if I modify my query, remove the where clause     
SELECT * FROM test
ORDER BY col
then I got the proper plan again in CBO mode:
SELECT STATEMENT, GOAL = CHOOSE                    
INDEX FULL SCAN     TEST_IDX_BIN
Somebody should explain me what the hell is going on!
So you can see, I found a way how to do a binary ordering, but linguistic ordering is still a question. I would really apriciate if someone could help me out.
I use pl/sql developer in single session mode. Can this be a problem? I don't think so, but who knows!
Thanks
Franci

Similar Messages

  • Linguistic index not being used

    I am using 10G database and am having an issue that my linguistic index is not being used during sorting.
    Any help will be appreciated.
    Table structure.
    create table TEST
    ID CHAR(256) not null,
    NAME VARCHAR2(100) not null,
    DESIGNATION VARCHAR2(200)
    alter table TEST add constraint ID primary key (ID)
    create index TEST_IDX on TEST (NLSSORT(NAME,'nls_sort=''GENERIC_M'''))
    Number of rows - 1 million
    Query being run.
    alter session set nls_sort='Generic_M';
    select * from test order by name;
    Explain plan
    PLAN_TABLE_OUTPUT
    | 0 | SELECT STATEMENT | | 1001K| 270M| | 70194 (1)| 00:14:0
    3 |
    | 1 | SORT ORDER BY | | 1001K| 270M| 579M| 70194 (1)| 00:14:0
    3 |
    | 2 | TABLE ACCESS FULL| TEST | 1001K| 270M| | 9163 (1)| 00:01:5
    0 |
    --------------------------------------------------------------------------------

    I don't think that's true, at least with the nls_sort function. I'm running into the same problem now, and I've traced with and without the use of the index, and it's definitely better with the index.
    Here it is, not using the index:
    SQL> select * from test where col2='sfs';
    no rows selected
    Execution Plan
    Plan hash value: 1357081020
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    | 0 | SELECT STATEMENT | | 1 | 366 | 2 (0)| 00:00:01 |
    |* 1 | TABLE ACCESS FULL| TEST | 1 | 366 | 2 (0)| 00:00:01 |
    Predicate Information (identified by operation id):
    1 - filter(NLSSORT("COL2",'nls_sort=''BINARY_CI''')=HEXTORAW('7366730
    0') )
    Note
    - dynamic sampling used for this statement
    Statistics
    87 recursive calls
    0 db block gets
    21 consistent gets
    0 physical reads
    0 redo size
    339 bytes sent via SQL*Net to client
    327 bytes received via SQL*Net from client
    1 SQL*Net roundtrips to/from client
    0 sorts (memory)
    0 sorts (disk)
    0 rows processed
    And here it is WITH the index:
    SQL> select /*+ index_asc(test index1) */ * from test where col2='adsfas';
    no rows selected
    Execution Plan
    Plan hash value: 2960817241
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
    |
    | 0 | SELECT STATEMENT | | 1 | 366 | 2 (0)| 00:0
    0:01 |
    | 1 | TABLE ACCESS BY INDEX ROWID| TEST | 1 | 366 | 2 (0)| 00:0
    0:01 |
    |* 2 | INDEX FULL SCAN | INDEX1 | 1 | | 1 (0)| 00:0
    0:01 |
    Predicate Information (identified by operation id):
    2 - access(NLSSORT("COL2",'nls_sort=''BINARY_CI''')=HEXTORAW('6164736661730
    0') )
    filter(NLSSORT("COL2",'nls_sort=''BINARY_CI''')=HEXTORAW('6164736661730
    0') )
    Note
    - dynamic sampling used for this statement
    Statistics
    11 recursive calls
    0 db block gets
    7 consistent gets
    0 physical reads
    0 redo size
    339 bytes sent via SQL*Net to client
    327 bytes received via SQL*Net from client
    1 SQL*Net roundtrips to/from client
    0 sorts (memory)
    0 sorts (disk)
    0 rows processed
    Oddly enough, the optimizer chooses not to use the index on this example table I created.

  • Linguistic index with LIKE + LOWER

    Hi,
    It seems that Oracle 11.2.0.1.0 is not able to use linguistic index when using the LIKE operator + LOWER function...
    ALTER SESSION SET NLS_COMP='LINGUISTIC';
    ALTER SESSION SET NLS_SORT='FRENCH_AI';
    CREATE INDEX test_fai_idx
    ON mytable(NLSSORT(LOWER(somefield), 'NLS_SORT=FRENCH_AI'));
    SELECT *
    FROM mytable
    WHERE LOWER(somefield) LIKE 'gue%';
    -- Table access FULL
    DROP INDEX test_fai_idx;
    ALTER SESSION SET NLS_COMP='BINARY';
    CREATE INDEX test_bin_idx
    ON mytable(LOWER(somefield));
    SELECT *
    FROM mytable
    WHERE LOWER(somefield) LIKE 'gue%';
    -- Index Range Scan
    Questions:
    -Will an upgrade to 11.2.0.2, 11.2.0.3 or 11.2.0.4 could solve that problem? (if anyone of you who have access to such a db and could make the test and report the result here, that will be much appreciated)
    -Other ideas to help me?
    I understand that using LOWER + AI seem strange since AI means accent-insensitive AND case-insensitive but, the software which run on the db use LOWER in all his SQL...
    Thanks.
    Paulo

    create table test (nid number, name varchar2(30))
    insert into test values(1, 'hügo')
    ALTER SESSION SET NLS_COMP='LINGUISTIC';
    ALTER SESSION SET NLS_SORT='FRENCH_AI';
    select
    from test
    where
    lower(name) like 'hug%'
    no data found, full scan
    create index idx_t on test(lower(name))
    select
    from test
    where
    lower(name) like 'hug%'
    no data found, index range scan
    drop index idx_t
    create index idx_t on test(nlssort(lower(name), 'NLS_SORT=FRENCH_AI'))
    select
    from test
    where
    lower(name) like 'hug%'
    no data found, full scan
    Why should the index be used? You are looking for lower(name) but nlssort(lower(name), 'NLS_SORT=FRENCH_AI') indeed is something totally different:
    select
    nlssort(lower(name), 'NLS_SORT=FRENCH_AI') s
    from test
    S
    3773325A000202020200
    since
    select
    nlssort('hug', 'NLS_SORT=FRENCH_AI') s
    from test
    is
    S
    3773320002020200
    you might recongize that it is not possible to do a like with nlssort.

  • LINGUISTIC index not being used when it should be - why?

    We have Oracle 10g R2 and using the case insensitve feature within the database. We have 2 schemas, one called 'app' and the other 'crs'. The crs schema owns the all the tables, views etc and has granted select on its objects to schema app.
    We have a 'after log on' trigger on schema app the executes the following:
    execute immediate 'alter session set NLS_COMP=LINGUISTIC';
    execute immediate 'alter session set NLS_SORT=BINARY_CI';
    We have a people table containing 180,000 records defined as:
    person_id varchar2(10) not null and primary key,
    surname varchar2(200) not null
    We have the following indexes on this table:
    create index my_indx1 on people (nlssort(person_id, 'NLS_SORT=BINARY_CI'));
    create index my_indx2 on people (nlssort(surname, 'NLS_SORT=BINARY_CI'));
    create index my_indx3 on people (upper(surname));
    So, when I run the following SQL as schema CRS:
    select * from people where upper(surname) = 'xxxxxx'
    it uses my_indx3 which is what I expect.
    But when I run the same sql as schema app it does a full table scan when I expected it to use my_indx2. Why isn't it using my_indx2 - what am I missing here - do I need to include a hint into the sql?????
    Cheers
    John.

    The first test is always to check the execution plan - especially the predicate section. Based on your description, a simple test case showed Oracle transforming the predicate as follows:
    Before "alter session":
    access (UPPER("SURNAME")='xxxxxx')After "alter session"
    filter(NLSSORT(UPPER("SURNAME"),'nls_sort=''BINARY_CI''')=HEXTORAW('78787878787800') )Note the 'upper' that is still present - it looks like you need to create your index on the expression:
    (nlssort(upper(surname), 'NLS_SORT=BINARY_CI'))Regards
    Jonathan Lewis
    http://jonathanlewis.wordpress.com
    http://www.jlcomp.demon.co.uk

  • Case Insensitive Indexes

    In relation to switching on case insensitive queries using
    alter session set NLS_COMP=LINGUISTIC;Can anyone answer the following?
    >
    Yes, it works.... but I can't for the life of me figure out how to build a linguistic index that the LIKE clause will actually use. Building an index thus, for example:
    create index bin_ai on names(NLSSORT("NAME",'nls_sort=''BINARY_AI'''));
    makes an index which does get used to good effect by queries such as
    select name from names where name = 'Johny Jacobson';
    but not by
    select name from names where name like 'Johny%';
    Hence, in a real-world test with 100,000 records, the LIKE query runs about 100 times slower than the '=' query (3 sec compared to 0.03 sec). Not very scalable. Is there a way to speed this up??
    Also is it possible to set session variables such as nls_comp on a database/schema/user level?

    Hi,
    select name from names where name like 'Johny%';Performance when using the SQL "like" clause can be tricky because the wildcard "%" operator can invalidate the index. For example a last_name index would be OK with a "like 'SMI%'" query, but unusable with "like '%SMI%'.
    One obscure trick for indexing queries "like '%SON'" is to create a REVERSE index and them programmatically reverse the like clause to read "like 'NOS%'", effectively indexing on the other side of the text.
    You might want to look at Oracle*text indexes, if your database has low DML:
    http://www.dba-oracle.com/oracle_tips_like_sql_index.htm
    If you are 10gr2:
    Oracle 10g release 2 has now introduced a case insensitive search method for SQL that avoids index invalidation and unnecessary full-table scans. You can also employ Oracle text indexes to remove full-table scans when using the LIKE operator. Prior to Oracle10g release 2 case insensitive queries required special planning:
    1 - Transform data in the query to make it case insensitive (note that this can invalidate indexes without a function-based index):
    create index upper_full_name on customer ( upper(full_name));
    select full_name from customer
    where upper(full_name) = 'DON BURLESON';
    2 - Use a trigger to transform the data to make it case insensitive (or store the data with the to_lower or to_upper BIF.
    3 - Use Alter session commands:
    alter session set NLS_COMP=ANSI;
    alter session set NLS_SORT=GENERIC_BASELETTER;
    select * from customer where full_name = 'Don Burleson'
    Hope this helps. . .
    Don Burleson
    Oracle Press author

  • Linguistic comparison - When is it required

    I have a question if linguistic comparison is required with operators like =
    Also lets assume that I am not interested in performing a case insensitive or accent insensitive search.
    My query may be something like
    Select * from test where name = '{Japanese_Name}'
    It looks like for cases where you are not interested in case or accent insensitivity there may not be a need to use linguistic comparison with = operator. Is this assumption correct.

    I think all the document tells us is that NLS_Sort applies to = operator when NLS_Comp is set to Linguistic.
    It still leaves us with the same open question of whether there is a need to make a query linguistic if it does not need to be case or accent insensitive. ( Once again this question is only for operators that perform exact string matches like the = operator)
    The reason why this question is so important to me is, like I have posted in a different forum, I need to minimize the amount of changes we need to make to our sql queries. We have a lot of queries that are using the = operator on a column that stores multilingual data. I do realize that we can alter our session to set NLS_Sort and NLS_Comp and do not really have to change our queries. But making queries linguistic comes at a performance cost. We need to make sure that all the linguistic indexes exist and plus do additional performance testing.
    I would not want us to go through all this effort only to find out there was no need to make these queries linguistic in the first place.

  • Search index for UTF8

    How i can organize search index for the varchar2 field in the table, when the coding page of the database is UTF8 ?

    There are 2 ways to build linguistic indexes for data in multiple languages.
    1. Build a linguistic index for each language which the application needs to support. This approach offers simplicity but requires more disk space. For each index, the rows in the language other than the one on which the index is built are collated together at the end of the sequence. The following example builds linguistic indexes for French and German.
    CREATE INDEX french_index ON emp (NLSSORT(emp_name, 'NLS_SORT=FRENCH'));
    CREATE INDEX german_index ON emp (NLSSORT(emp_name, 'NLS_SORT=GERMAN'));
    Which index to use is based on the NLS_SORT session parameters or the arguments of the NLSSORT function you specified in the ORDER BY clause. For example, if the session variable NLS_SORT is set to FRENCH, you can use french_index and when it is set to GERMAN, you can use german_index.
    2. Build a single linguistic index for all languages. This can be accomplished by
    including a language column (LANG_COL in the example below) that contains NLS_LANGUAGE values for the corresponding column on which the index is built as a parameter to the NLSSORT function. The following example builds a single linguistic index for multiple languages. With this index, the rows with
    the same values for NLS_LANGUAGE are collated together.
    CREATE INDEX i ON t (NLSSORT(col, 'NLS_SORT=' | | LANG_COL));
    Which index to use is based on the argument of the NLSSORT function you specified in the ORDER BY clause.

  • How to do linguistic sort query using Toplink API

    Hi,
    I want to write a Toplink query using linguistic sort like the following SQL,
    SELECT * from emp_name
    where ename LIKE 'müller%'
    ORDER BY NLSSORT(ename, 'NLS_SORT=german')
    I got two questions:
    (1) how to implement "ORDER BY NLSSORT(name, 'NLS_SORT=german')" using Toplink API.
    (2) I built linguistic index,
    CREATE INDEX nls_index ON emp_name (NLSSORT(ename, 'NLS_SORT = german'));
    But SQL plan shows that LIKE clause does not use index. I wonder how to enforce query with LIKE clause to use such linguistic index.
    Thanks for your help in advance.
    -Evan

    Looks like we can not do an exact word search using Java API.

  • Using ALTER SESSION inside a stored procedure.... not a good idea?

    Hi,
    I have two stored procedures, both of which are used to query a database to find a particular book, based on ISBN. One sproc searches our main product catalogue and the other searches our suppliers feed catalogues. The stored procedures are called from a C# application via a search tool and the user is able to search on either our catalogue or our suppliers. The appropriate procedure is called based on the users choices.
    However, the following behaviour is observed
    I search for an ISBN (is a varchar2 field, as isbn's may contain an X if the checksum digit equates to 10) on a feed, so uses the FEED SPROC. The book is found and returned to the app in about 0.5 seconds. I can repeat this as often as i like on different books etc. always works fine.
    I then do the same search but against our own catalogue, so uses our CATALOGUE SPROC. Again the book is found quickly, and the search can be repeated with the same results.
    If i then go back and run our FEED SPROC then the search time increases to about 3 minutes !
    Both the feed and our catalogue is in the same database, although different schema's the connections will be pooled through our app server.
    I can repliacte this every single time. I think i have narrowed doen the cause of this behaviour to a few lines of code in our CATALOGUE SPROC:
    -- store values
    select value into v_vch_NLS_COMP from nls_session_parameters nsp where nsp.parameter = 'NLS_COMP';
    select value into v_vch_NLS_SORT from nls_session_parameters nsp where nsp.parameter = 'NLS_SORT';
    -- Ensure case insensitivity throughout
    EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_COMP = LINGUISTIC';
    EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_SORT = BINARY_CI';
    do other stuff
    -- restore session variables
    EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_COMP = ' || v_vch_NLS_COMP;
    EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_SORT = ' || v_vch_NLS_SORT;
    If i remove this code then all is well, so i am assuming that using ALTER SESSION inside a stored procedure is the cause of the problem as it would be changing the execution plan of the FEEDS SPROC in some manner? Any ideas? I know i can just rewrite the sproc to avoid using this coding, but wanted to understand if i am doing something wrong by using ALTER SESSION in this manner?
    Any pointers would be appreciated.
    John Thompson
    Software Architect,
    play.com
    Edited by: user7186902 on 27-May-2009 03:51

    Hello (and welcome),
    It may be a case of having to create a linguistic index to facilitate the queries once you set these session level parameters, i.e..,
    CREATE INDEX idx_01 ON tab ((NLSSORT(col1, 'NLS_SORT=BINARY_CI'))It would appear that the setting of those parameters is invalidating index searching on the current indexes.

  • Accent insensitive search without nls_comp

    Is there a function to make oracle search accent insensitive? I can't use nls_comp so I would like to know if there is another way to accomplish it.
    Thanks
    M

    Obviously your unknown database version running on an unknown OS is less then 11.1.0.7 . Statement from Oracle:
    Known problems using NLS_COMP=LINGUISTIC.
    While you can use LIKE with NLS_COMP=LINGUISTIC in 10.2 , we recommend to
    use 11.1.0.7 seen using linguistic index for like operator is an 11g new feature ......
    In other words there's a solution, when running the latest patchset for 11gR1.
    Werner

  • CASE Sensitivity in Oracle

    Hi,
    I have a situation where I need to have the data in the Oracle 9 DB as case sensitive (which is the default setting in Oracle) ,but, I need to have case insensitive searches.
    Lets say I have data in a column like for example "apple". If the user enters "APPLE" or "Apple" or "apPLe", a match should be found.
    I am concerned at using the below trick because it can lead to a table scan when NLS_SORT is not binary.
    ALTER SESSION SET NLS_COMP=ANSI;
    ALTER SESSION SET NLS_SORT=GENERIC_BASELETTER;
    Thanks,
    Sridhar

    Like wise, you can also create a functional index (called Linguistic Index) in Oracle to support the cases when NLS_SORT <> Binary.
    For example:
    CREATE INDEX NLS_GENERIC_BASELETTER ON product
    (NLSSORT(product_name, 'NLS_SORT=GENERIC_BASELETTER'));

  • Index usage with nls_sort and nls_comp

    Hi,
    I have created a logon trigger
    CREATE OR REPLACE TRIGGER "SYS"."ON_LOGON_SET__SCHEMA" AFTER
    LOGON ON DATABASE BEGIN
    EXECUTE IMMEDIATE 'alter session set NLS_SORT=BINARY_CI';
    EXECUTE IMMEDIATE 'alter session set NLS_COMP=LINGUISTIC';
    EXCEPTION
    WHEN OTHERS THEN NULL;
    END;
    because the user does not want case sensitive searches in the database.
    However, when using this, Indexes on text fields are no longer used. What should I do with those indexes?
    Regards

    Possible answers explained in MOS GENERIC_BASELETTER Linguistic Definition [ID 109118.1] and Linguistic Sorting - Frequently Asked Questions [ID 227335.1] depending on what your users want to happen.

  • Binary comparison and linguistic comparisons

    I was doing some performance testing to see if I have linguistic comparisons turned on at a session level and NLS_Sort set to Japanese_M, can I still perform binary comparisons on some of my columns and make them use the binary index.
    I was pleasently surprised to see that this worked.
    alter session set nls_sort=Japanese_M nls_comp=linguistic
    select * from test where nlssort(id, 'NLS_Sort=Binary') = nlssort('00000000-0000-0000-0000-000000000001', 'NLS_Sort=Binary');
    As per the explain plan this was using the Binary index. I would have thought that since I am using a function nlssort, I would probably have to create a function base binary index for this to work.

    The parser is clever enough, in some contexts, to recognize NLSSORT(...,'NLS_SORT=BINARY') and remove it from the query. This is the opposite operation to adding NLSSORT implicitly when NLS_COMP=ANSI/LINGUISTIC.
    -- Sergiusz

  • Case insensitive search and index

    I have to execute a case insentitive search.
    I created this index on a not null field:
    create index indx_prova on
    table (nlssort(campo, 'NLS_SORT=BINARY_CI'));
    The select is:
    select * from tabella where campo like 'A storage%'
    This select should retrive 5 records:
    A storage ring for crystalline beam studies
    a storage ring for crystalline beam studies
    A Storage Ring for Crystalline Beam Studies
    A storage ring for crystalline beam studies
    A storage ring for crystalline beam studies
    Instead I got only 3 records:
    A storage ring for crystalline beam studies
    A storage ring for crystalline beam studies
    A storage ring for crystalline beam studies
    So The query isn't case insensitive.
    I can't set nls_sort=BINARY_CI and nls_comp=LINGUISTIC at level session.
    Is there a solution.
    Am I doing something wrog?

    I set alter session set nls_comp=LINGUISTIC; alter session set nls_sort=BINARY_CI;
    I create this index:
    create index titolo_indx on
    table (nlssort(campo, 'NLS_SORT=BINARY_CI'));
    If I execute this query:
    select * from ri01_prodotti where titolo like 'A storage ring f%'
    Oracle doesn't user the index.
    SQL_ID 7yvspnyf96vp8, child number 0
    select * from ri01_prodotti where titolo like 'A storage ring%'
    Plan hash value: 350479533
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    | 0 | SELECT STATEMENT | | | | 2020 (100)| |
    |* 1 | TABLE ACCESS FULL| TABLE | 1 | 1365 | 2020 (1)| 00:00:25 |
    Predicate Information (identified by operation id):
    1 - filter("CAMPO" LIKE 'A storage ring%')
    If I execute a query with =, oracle use index.
    select * from table where campo ='A storage ring for crystalline beam studies'
    SQL_ID 5jzr5nm6b37pq, child number 0
    select * from ri01_prodotti where titolo ='A storage ring for crystalline beam
    studies'
    Plan hash value: 3866031381
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    | 0 | SELECT STATEMENT | | | | 151 (100)| |
    | 1 | TABLE ACCESS BY INDEX ROWID| RI01_PRODOTTI | 377 | 502K| 151 (0)| 00:00:02 |
    |* 2 | INDEX RANGE SCAN | TITOLO_INDX | 151 | | 3 (0)| 00:00:01 |
    Predicate Information (identified by operation id):
    2 - access("RI01_PRODOTTI"."SYS_NC00078$"=HEXTORAW('612073746F726167652072696E6720
    666F72206372797374616C6C696E65206265616D207374756469657300') )

  • Unable to create index

    Hi All,
    I have a 8.1.7.4 database with oracle text installed. I try to create a index and get the followin error:
    create index quick_text on quick ( text )indextype is ctxsys.context; ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
    ORA-20000: interMedia Text error:
    DRG-11422: linguistic initialization failed
    DRG-00100: internal error, arguments : [52100],[drxs.c],[553],[gxtopen],[1]
    DRG-11432: file error while accessing interMedia Text knowledge base
    ORA-06512: at "CTXSYS.DRUE", line 126
    ORA-06512: at "CTXSYS.TEXTINDEXMETHODS", line 78
    ORA-06512: at line 1
    All the objects are valid (I checked). Any Ideas ?
    Thanks in advance,

    This error indicates that you are attempting to create a theme index,
    but your NLS_LANGUAGE setting of the database does not have a
    linguistic knowledge base installed. Right know there are only
    KBs in english and french only.
    The workaround is to create the index with themes off. So just
    turn off the the following attribute and then re-create the index.
    CTX_DDL.set_attribute('DEFAULT_LEXER','INDEX_THEMES', 'NO');

Maybe you are looking for

  • My skype number is inactive but i have enough cred...

    Hi, i'm in UAE for travel, my account says that my skype number is inactive, but i have enough credit. How can i active it??

  • Installing Mac Panther 10.3.5 over Mac Jaguar 10.2.9

    I have an iMac G3/400, 320 megs ram (indigo blue). I am currently running OSX 10.2.9 Jaguar, want to install OSX 10.3.5 Panther over it. I assume that I insert CD #1 of the 3 CD set into the cd player, then where do I go from there. I am a non-techie

  • About the GetHostTCPSocketHandle() function

    Hello, I'd like to know if the 2nd parameter of the function is corresponding to the "SOCKET" type in the Windows SDK? Can you tell me the usage of this function? Thanks. David 

  • Nouveau driver NVIDIA GeForce Go5200 corrupting on GNOME 3

    I am trying to get Arch running on my sister's laptop, since she was an idiot and didn't upgrade or update Fedora 14, which caused it to be unable to update at all. I've had the worst time getting this thing running. But my final unsolvable problem i

  • Read xml using xpath in java

    Hi ALL, I have a xml as follows: <AAA> <BBB> <CCC>xyz</CCC> <DDD>abc</DDD> </BBB> </AAA> Now using any of the java class, i just need read the value of "CCC" as follows: (i.e using xpath i need to read the value) String val = x.somemethod("/AAA/BBB/C