Memory leak in Oracle Text under Oracle 8.1.7!!!

When I wanted to use USER_DATASOTRE preference to use my own formatting tag in Oracle Text, the memory leak occured in Oracle Text!
Memory just freed when I close SQL*Plus program
My formatting procedure is so easy
PROCEDURE format_tag(r IN ROWID, tlob IN OUT NOCOPY CLOB) IS
BEGIN
SELECT '<C>' &#0124; &#0124; catalog_id &#0124; &#0124; '</C></T>' &#0124; &#0124; tag_id &#0124; &#0124; '</T><V>' &#0124; &#0124; tag_value &#0124; &#0124; '</V>' INTO buf
FROM tbl_catalog WHERE ROWID=r;
dbms_lob.trim(tlob, 0); -- set LOB's size to zero
dbms_lob.write(tlob, length(buf), 1, buf);
END;
The typical rows are about 100,000 ( The actual records are tens of millions )
How can I solve this problem?

Thanks for your reply
I'm using Oracle 8.1.7.0.0 on Windows 2000
The preferences are as follows:
DECLARE
ds VARCHAR2(30):= 'dts_catalog';
grp VARCHAR2(30):= 'grp_catalog';
lxr VARCHAR2(30):= 'lxr_catalog';
wrd VARCHAR2(30):= 'wrd_catalog';
BEGIN
ctx_ddl.create_preference(wrd, 'BASIC_WORDLIST');
ctx_ddl.set_attribute(wrd, 'STEMMER', 'NULL');
ctx_ddl.create_preference(lxr, 'BASIC_LEXER');
ctx_ddl.set_attribute(lxr, 'INDEX_TEXT', 'TRUE');
ctx_ddl.set_attribute(lxr, 'INDEX_THEMES', 'FALSE');
ctx_ddl.create_preference(ds, 'USER_DATASTORE');
ctx_ddl.set_attribute(ds, 'OUTPUT_TYPE', 'VARCHAR2');
ctx_ddl.set_attribute(ds, 'PROCEDURE', 'pkg_catalog.format');
ctx_ddl.create_section_group(grp, 'BASIC_SECTION_GROUP');
ctx_ddl.add_field_section(grp, 'catalog', 'C', TRUE);
ctx_ddl.add_field_section(grp, 'tag', 'T', TRUE);
TRUE);
ctx_ddl.add_field_section(grp, 'value', 'V', TRUE);
END;
the STORAGE preferences are not here ( because they are long )
Index statement that I used for indexing
CREATE INDEX idx_catalog_info ON tbl_catalog_info(val)
INDEXTYPE IS ctxsys.context
PARAMETERS(
'STORAGE stg_catalog
DATASTORE dts_catalog
SECTION GROUP grp_catalog
LEXER lxr_catalog
WORDLIST wrd_catalog
MEMORY 24M'
I changed my last version of procedure and using VARCHAR2 parameter type instead of CLOB, but memory leak persist during building index.
so I used a simple trick by writing a package and counting the records to be indexed, after each 100,000 records I used DBMS_SESSION.FREE_UNUSED_USER_MEMORY procedure to free unused session's memory.
the package is as follows:
CREATE OR REPLACE PACKAGE pkg_catalog IS
PROCEDURE format(r ROWID, buf IN OUT NOCOPY VARCHAR2);
END pkg_catalog;
CREATE OR REPLACE PACKAGE BODY pkg_catalog IS
recs PLS_INTEGER:= 0;
PROCEDURE format(r ROWID, buf IN OUT NOCOPY VARCHAR2) IS
BEGIN
SELECT '<C>'&#0124; &#0124;catalog_id&#0124; &#0124;'</C><T>'&#0124; &#0124;tag_id&#0124; &#0124;subfield_id&#0124; &#0124;'</T><V>'&#0124; &#0124;val&#0124; &#0124;'</V>' INTO buf FROM &usr.tbl_catalog_info WHERE ROWID=r;
recs:= recs + 1;
IF recs>100000 THEN
recs:= 0;
dbms_session.free_unused_user_memory; -- clean-out memory garbage
END IF;
END format;
END pkg_catalog;
My problem solved, but it is very marvelous "Why Oracle does not free unused session's memory?"

Similar Messages

  • Oracle Text iwth Oracle TimesTen

    Hi!
    I'm trying to use Oracle Text with Oracle TimesTen In-Memory. In this customer, we are using Oracle Text to index the names of the company clients. There are about 13 million names to index. We're trying to speed up even more the search using Oracle TimesTen.
    Does anybody as any experience using simultanely this two technologies?
    Thanks in advance

    Please, consider this thread closed. By mistake I've created another one. Here is the link:
    Oracle Text with Oracle TimesTen
    Sorry by the mistake
    Tiago Soares

  • Oracle Text with Oracle TimesTen

    Hi!
    I'm trying to use Oracle Text with Oracle TimesTen In-Memory. In this customer, we are using Oracle Text to index the names of the company clients. There are about 13 million names to index. We're trying to speed up even more the search using Oracle TimesTen.
    Does anybody as any experience using simultanely this two technologies?
    Thanks in advance
    Tiago Soares

    TimesTen doesn't support the CONTEXT indextype or CONTAINS clause (or other domain indexes/operators), so you can't create Oracle Text indexes in it.

  • Installation of Oracle Text in Oracle 10g

    Hi All,
    Could you please help me in installing ORACLE TEXT in Oracle 10g. What exactly ils this feature and how I can install it.
    Regards
    Harpreet Singh

    You don't need the companion CD to install Oracle Text.
    Oracle Text is installed by default if you have created your database using DBCA.
    However, if your database has been installed manually you may need to install this feature additionally.
    In order to check if the feature is already present check if CTXSYS schema exists:
    SQL> select username
      2  from dba_users
      3  where username='CTXSYS';
    USERNAME
    CTXSYS
    SQL>Cheers,
    Mihajlo

  • Avoid Bug 7146375 ORA-4030 MEMORY LEAK IN (Xml generation) in oracle 10g

    Hi All,
    I have to generate an xml from database which contains around 4 lac records. I had written a query using XmlSerialize and XmlElement.
    It does run properly for records less than 2 lacs.
    But when the record count goes above 2 lacs..it is throwing the following error -
    { ORA-04030: out of process memory when trying to allocate 1032 bytes (qmxlu subheap,qmemNextBuf:alloc)
    ORA-06512: at "SYS.XMLTYPE", line 111!}
    For the above error - I have tried increasing pga from 480M to 800M, but still we are getting the same error.
    After researching i found out -
    Cause
    This is caused by the following bug:
    Bug 7146375 ORA-4030 AND MEMORY LEAK IN SESSION HEAP: "KOH DUR HEAP D"
    Solution
    Bug 7146375 is fixed in 11.2
    So i tried out the query in another a db which has 11g installed and my query runs perfectly fine for records of upto 4 lacs.
    But since we have oracle 10g on our clients machine, are there other ways to achieve this XML generation other than this?
    Thanks.

    913389 wrote:
    After researching i found out -
    Cause
    This is caused by the following bug:
    Bug 7146375 ORA-4030 AND MEMORY LEAK IN SESSION HEAP: "KOH DUR HEAP D"
    Solution
    Bug 7146375 is fixed in 11.2
    So i tried out the query in another a db which has 11g installed and my query runs perfectly fine for records of upto 4 lacs.
    But since we have oracle 10g on our clients machine, are there other ways to achieve this XML generation other than this?I doubt it. If Oracle have investigated and created a bug report that says the solution is to upgrade to 11.2, then that's the answer, otherwise they would indicate that a particular 10g patch set can also be used.

  • Memory Leak when TOMCAT connects to Oracle 10g RAC using JDBC Thin driver.

    We had experienced Memory leak when a Oracle 10g (10.2.0.3) RAC node was evicted. TOMCAT app server is connecting to the Oracle 10g RAC database instances using JDBC 10.2.0.3 thin driver.
    Anyone had similar experience?
    Any ideas? Any bugs reported/fixed?
    Thanks,
    Raj

    If you're doing XA, we absolutely do not support
    driver-level load-balancing OR failover. Use neither.
    For non-XA, you can use driver-level failover. For
    non-XA, you could set load-balancing, but it won't
    help because we get connections from the driver,
    and keep them indefinitely, so the driver never gets
    the chance to affect which connections the pool
    uses after that.

  • Using Oracle Text in Oracle XML DB .

    Hi all ,
    The idea is simple ,i need to index all stored files in Oracle XML DB and the index should stay in Oracle DB . Using some 3 party index software is also possible but you need to write a mapping to move the index file in Oracle DB .
    So i thought of using Oracle Text but i am not sure about how to retrieve such a document from Oracle XML DB , let me say over ftp or http ? . And if these documents are password protected -> how can Oracle Text allow this ?

    [11gR2 XMLDB Developers Guide -- Full-Text Search over XML Data|http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10492/xdb09sea.htm#i1006756] would be the first place to start.
    For document display, there a bunch of potential solutions, you can look at [XML DB Repository|http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10492/xdb03usg.htm#insertedID18], or the Text Application Developers Guide [Presenting Documents in Oracle Text|http://download.oracle.com/docs/cd/B28359_01/text.111/b28303/view.htm#i1006687] .
    Password protected documents can't be indexed using the auto_filter.

  • Oracle text in oracle 10g

    Hi friends,
    thinking about migration from oracle 9i to oracle 10g. We use Oracle Text indexes on text columns of some tables. Is there any advantage with oracle 10g intermedia? Which are the most significant changes?
    Thanks for answers.

    The following links describe the new Text features in Oracle 10g and 11g.
    http://download.oracle.com/docs/cd/B19306_01/text.102/b14218/whatsnew.htm#i969790
    http://download.oracle.com/docs/cd/B28359_01/text.111/b28304/whatsnew.htm#sthref6

  • Oracle Text And Oracle Ultra search

    Hi all,
    I have a problem. I have some files in the server file system e.g C:/docs. I want to search these MS Office word files in order to see if they contain a word. I tried oracle ultra search but when i put File data source it provides a form file:/// and when i put C:/docs it gives me file://localhost/C:/docs. Can i configure Oracle ultra search to search into the server file system?Where is the directory that oracle ultra search searches a file?
    How can index and search the files in the file systems exept oracle ultra search? Can Oracle Text do my job?
    Sorry to bother and thank you in advance for your help
    Antonis.

    Hi,
    Searching a word in a document (MS Word) can definitely be done using Oracle Text.
    But, you other requirements can make things a bit complicated.
    Oracle Text have something called file_datastore, where you need to mention the file_path/s and individual file names too.
    Once you mention them, i.e. path and file names, oracle text can read the file , index them and you can query using simple queries.
    If the number of files are huge, entering all the file names can be difficult. In that case you can give the following a try.
    -- You can use a perl script to read the file name in a directory, put it into a file in a particular format (1 file name per line) and then load that text file into a table using ctxloader.
    You can go through the FILE_DATASTORE and CTXLOADER examples from oracle text reference document.

  • Reinstalling/Repairing Oracle Text in Oracle 11g R2

    I happened to execute 'create or replace operator contains...' How do I restore Oracle Text to its previous state?
    Edited by: 932881 on May 9, 2012 1:05 AM

    Having run '/u01/app/oracle/product/11.2.0/db_1/ctx/admin/catctx.sql CTXSYS SYSAUX TEMP NOLOCK', I tried to create a CTXSYS.CONTEXT index on a VARCHAR2 column but I got this error:
    Error at Command Line:1 Column:26
    Error report:
    SQL Error: ORA-29855: error occurred in the execution of ODCIINDEXCREATE routine
    ORA-20000: Oracle Text error:
    DRG-10700: preference does not exist: CTXSYS.DEFAULT_LEXER
    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.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • Oracle Text with Oracle Lite 10G?

    I would like to be able to perform text searches in my OLITE 10g R2 database. Is is possible to install Oracle Text for use with OLITE? If so, how to I install it -- do I use the manual procedure described elsewhere, by taking the script files from an Oracle Enterprise or Standard Edition installation, and running those scripts against my OLITE db? Thanks.
    Marty

    Marty,
    Did you ever resolve this issue? We would also like to run Oracle Text with OLite, but I cannot find any information on doing this.

  • Text mining using oracle text

    i am about to embark on an ambitious project. i want to create a document server that can archive documents such as word, pdfs etc. i would also like to create a feature by which users can compare documents to find how similar they are. how do i go about building such an application. do i need to use data mining algorithms like neural network to compare documents. what mining algorithm should i use. or should i create indexes or something. what are the file types supported by oracle text.
    please help me.
    even if u don't have correct answers, please feel free to add your opinion.

    Take a look at the following Oracle 10gR2 Documentation books (available on OTN):
    - Oracle Data Mining Concepts: Chapter 6
    - Oracle Data Mining Application Developer's Guide: Chapter 5 and 7
    You may also take a look at the Oracle Text documentation:
    - Oracle Text Application Developer's Guide: Chapter 6
    Oracle Text uses Oracle Data Mining behind the scene for some of its capabilities (SVM and K-Means). They have different capabilities as explained in Chapter 6 of the Oracle Data Mining Concepts.
    --Marcos                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Is Oracle Text the right solution for this need of a specific search!

    Hi ,
    We are on Oracle 11.2.0.2 on Solaris 10. We have the need to be able to do search on data that are having diacritical marks and we should be able to do the serach ignoring this diacritical marks. That is the requirement. Now I got to hear that Oracle Text has a preference called BASIC_LEXER which can bypass the diacritical marks and so solely due to this feature I implemented Oracle Text and just for this diacritical search and no other need.
    I mean I set up preference like this:
      ctxsys.ctx_ddl.create_preference ('cust_lexer', 'BASIC_LEXER');
      ctxsys.ctx_ddl.set_attribute ('cust_lexer', 'base_letter', 'YES'); -- removes diacritics
    With this I set up like this:
    CREATE TABLE TEXT_TEST
      NAME  VARCHAR2(255 BYTE)
    --created Oracle Text index
    CREATE INDEX TEXT_TEST_IDX1 ON TEXT_TEST
    (NAME)
    INDEXTYPE IS CTXSYS.CONTEXT
    PARAMETERS('LEXER cust_lexer WORDLIST cust_wl SYNC (ON COMMIT)');
    --sample data to illustrate the problem
    Insert into TEXT_TEST
       (NAME)
    Values
       ('muller');
    Insert into TEXT_TEST
       (NAME)
    Values
       ('müller');
    Insert into TEXT_TEST
       (NAME)
    Values
       ('MULLER');
    Insert into TEXT_TEST
       (NAME)
    Values
       ('MÜLLER');
    Insert into TEXT_TEST
       (NAME)
    Values
       ('PAUL HERNANDEZ');
    Insert into TEXT_TEST
       (NAME)
    Values
       ('CHRISTOPHER Phil');
    COMMIT;
    --Now there is an alternative solution that is there,  instead of thee Oracle Text which is just a plain function given below (and it seems to work neat for my simple need of removing diacritical characters effect in search)
    --I need to evaluate which is better given my specific needs -the function below or Oracle Text.
    CREATE OR REPLACE FUNCTION remove_dia(p_value IN VARCHAR2, p_doUpper IN VARCHAR2 := 'Y')
    RETURN VARCHAR2 DETERMINISTIC
    IS
    OUTPUT_STR VARCHAR2(4000);
    begin
    IF (p_doUpper = 'Y') THEN
       OUTPUT_STR := UPPER(p_value);
    ELSE
       OUTPUT_STR := p_value;
    END IF;
    OUTPUT_STR := TRANSLATE(OUTPUT_STR,'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ', 'AAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy');
    RETURN (OUTPUT_STR);
    end;
    --now I query for which name stats with  a P%:
    --Below query gets me unexpected result of one row as I am using Oracle Text where each word is parsed for search using CONTAINS...
    SQL> select * from text_test where contains(name,'P%')>0;
    NAME
    PAUL HERNANDEZ
    CHRISTOPHER Phil
    --Below query gets me the right and expected result of one row...
    SQL> select * from text_test where name like 'P%';
    NAME
    PAUL HERNANDEZ
    --Below query gets me the right and expected result of one row...
    SQL>  select * from text_test where remove_dia(name) like remove_dia('P%');
    NAME
    PAUL HERNANDEZMy entire need was only to be able to do a search that bypasses diacritical characters. To implement Oracle Text for that reason, I am wondering if that was the right choice! More so when I am now finding that the functionality of LIKE is not available in Oracle Text - the Oracle text search are based on tokens or words and they are different from output of the LIKE operator. So may be should I have just used a simple function like below and used that for my purpose instead of using Oracle Text:
    This function (remove_dia) just removes the diacritical characters and may be for my need this is all that is needed. Can someone help to review that given my need I am better of not using Oracle Text? I need to continue using the functionality of Like operator and also need to bypass diacritical characters so the simple function that I have meets my need whereas Oracle Text causes a change in behaviour of search queries.
    Thanks,
    OrauserN

    If all you need is LIKE functionality and you do not need any of the complex search capabilities of Oracle Text, then I would not use Oracle Text. I would create a function-based index on your name column that uses your function that removes the diacritical marks, so that your searches will be faster. Please see the demonstration below.
    SCOTT@orcl_11gR2> CREATE TABLE TEXT_TEST
      2    (NAME  VARCHAR2(255 BYTE))
      3  /
    Table created.
    SCOTT@orcl_11gR2> Insert all
      2  into TEXT_TEST (NAME) Values ('muller')
      3  into TEXT_TEST (NAME) Values ('müller')
      4  into TEXT_TEST (NAME) Values ('MULLER')
      5  into TEXT_TEST (NAME) Values ('MÜLLER')
      6  into TEXT_TEST (NAME) Values ('PAUL HERNANDEZ')
      7  into TEXT_TEST (NAME) Values ('CHRISTOPHER Phil')
      8  select * from dual
      9  /
    6 rows created.
    SCOTT@orcl_11gR2> CREATE OR REPLACE FUNCTION remove_dia
      2    (p_value   IN VARCHAR2,
      3       p_doUpper IN VARCHAR2 := 'Y')
      4    RETURN VARCHAR2 DETERMINISTIC
      5  IS
      6    OUTPUT_STR VARCHAR2(4000);
      7  begin
      8    IF (p_doUpper = 'Y') THEN
      9        OUTPUT_STR := UPPER(p_value);
    10    ELSE
    11        OUTPUT_STR := p_value;
    12    END IF;
    13    RETURN
    14        TRANSLATE
    15          (OUTPUT_STR,
    16           'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÙÚÛÜÝàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ',
    17           'AAAAAACEEEEIIIINOOOOOOUUUUYaaaaaaceeeeiiiinoooooouuuuyy');
    18  end;
    19  /
    Function created.
    SCOTT@orcl_11gR2> show errors
    No errors.
    SCOTT@orcl_11gR2> CREATE INDEX text_test_remove_dia_name
      2  ON text_test (remove_dia (name))
      3  /
    Index created.
    SCOTT@orcl_11gR2> set autotrace on explain
    SCOTT@orcl_11gR2> select * from text_test
      2  where  remove_dia (name) like remove_dia ('mü%')
      3  /
    NAME
    muller
    müller
    MULLER
    MÜLLER
    4 rows selected.
    Execution Plan
    Plan hash value: 3139591283
    | Id  | Operation                   | Name                      | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT            |                           |     1 |  2131 |     2   (0)| 00:00:01 |
    |   1 |  TABLE ACCESS BY INDEX ROWID| TEXT_TEST                 |     1 |  2131 |     2   (0)| 00:00:01 |
    |*  2 |   INDEX RANGE SCAN          | TEXT_TEST_REMOVE_DIA_NAME |     1 |       |     1   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       2 - access("SCOTT"."REMOVE_DIA"("NAME") LIKE "REMOVE_DIA"('mü%'))
           filter("SCOTT"."REMOVE_DIA"("NAME") LIKE "REMOVE_DIA"('mü%'))
    Note
       - dynamic sampling used for this statement (level=2)
    SCOTT@orcl_11gR2> select * from text_test
      2  where  remove_dia (name) like remove_dia ('P%')
      3  /
    NAME
    PAUL HERNANDEZ
    1 row selected.
    Execution Plan
    Plan hash value: 3139591283
    | Id  | Operation                   | Name                      | Rows  | Bytes | Cost (%CPU)| Time     |
    |   0 | SELECT STATEMENT            |                           |     1 |  2131 |     2   (0)| 00:00:01 |
    |   1 |  TABLE ACCESS BY INDEX ROWID| TEXT_TEST                 |     1 |  2131 |     2   (0)| 00:00:01 |
    |*  2 |   INDEX RANGE SCAN          | TEXT_TEST_REMOVE_DIA_NAME |     1 |       |     1   (0)| 00:00:01 |
    Predicate Information (identified by operation id):
       2 - access("SCOTT"."REMOVE_DIA"("NAME") LIKE "REMOVE_DIA"('P%'))
           filter("SCOTT"."REMOVE_DIA"("NAME") LIKE "REMOVE_DIA"('P%'))
    Note
       - dynamic sampling used for this statement (level=2)
    SCOTT@orcl_11gR2>

  • How to index ORDSYS.orddoc type using Oracle Text?

    Dear All,
    I am very new to Oracle Text and Oracle intermedia ORDSYS.orddoc type.
    As what I know it is impossible to index ORDSYS.orddoc using Oracle Text, so
    may I know is there anyway alternative to index ORDSYS.orddoc type using Oracle Text?
    I am using ORDDOC type due to my application need to allow user to upload various type of media file such as audio, video, word document etc...
    Please help as I need it to do full text search for those uploaded document, thanks in advanced.
    Best Regards,
    Chin

    Dear All,
    I am very new to Oracle Text and Oracle intermedia ORDSYS.orddoc type.
    As what I know it is impossible to index ORDSYS.orddoc using Oracle Text, so
    may I know is there anyway alternative to index ORDSYS.orddoc type using Oracle Text?
    I am using ORDDOC type due to my application need to allow user to upload various type of media file such as audio, video, word document etc...
    Please help as I need it to do full text search for those uploaded document, thanks in advanced.
    Best Regards,
    Chin

  • Oracle Text installation in Oracle 9i(9.2.0.5.0)

    Can anybody give me reference to any document about installing "Oracle Text" on Oracle 9i(9.2.0.5.0)? I could not find the entry in the dba_registry in the first place?
    Regards,
    Anirban

    You should be using a currently supported version, 10g or 11g. In 10g, the Text stuff is on the "companion cd" and in 11g, the Text stuff is on the "examples". These things must be downloaded separately. Just follow the instructions on the download page. Download, unzip, then install, following the instructions that you see on the screen. When you are done, check for the CTXSYS schema and remember that you need to grant the appropriate privileges in order to use it. There is a Text Reference and a Text Application Developer's Guide included in the Oracle online documentation.

Maybe you are looking for