Text :: Index Memory Parameter For Oracle Text Indexes
Sep 17, 2013
I am on Oracle 11.2.0.3 on Linux and have implemented Oracle Text.I created Oracle Text indexes with default setting. However in an oracle white paper I read that the default setting may not be right. Here is the excerpt from the white paper by Roger Ford:URL....(Part of this white paper below....)Index Memory.
As mentioned above, cached $I entries are flushed to disk each time the indexing memory is exhausted. The default index memory at installation is a mere 12MB, which is very low. Users can specify up to 50MB at index creation time, but this is still pretty low. This would be done by a CREATE INDEX statement something like: CREATE INDEX myindex ON mytable(mycol) INDEXTYPE IS ctxsys.context PARAMETERS ('index memory 50M'); Allow index memory settings above 50MB, the CTXSYS user must first increase the value of the MAX_INDEX_MEMORY parameter, like this: begin ctx_ adm. set_ parameter('max_index_memory', '500M'); end; The setting for index memory should never be so high as to cause paging, as this will have a serious effect on indexing speed. On smaller dedicated systems, it is sometimes advantageous to temporarily decrease the amount of memory consumed by the Oracle SGA (for example by decreasing DB_CACHE_SIZE and/or SHARED_POOL_SIZE) during the index creation process.
Once the index has been created, the SGA size can be increased again to improve query performance." (End here from the white paper excerpt)My question is:
1) To apply this procedure (ctx_adm.set_parameter) required me to login as CTXSYS user. Is that right? or can it be avoided and be done from the application schema? This user CTXSYS is locked by default and I had to unlock it. Is that ok to do in production?
2) What is the value that I should use for the max_index_memory should it be 500 mb - my SGA is 2 GB in Dev/ QA and 3GB in production. Also in the index creation what is the value I should set for index memory parameter - I had left that at default but how should I change now? Should it be 50MB as shown in example above?
3) The white paper also refer to rebuilding an index at some interval like once in a month: ALTER INDEX DR$index_name$X REBUILD ONLINE; We are on Oracle 11g and the white paper was written in 2003.
I have noticed that Oracle text related objects, particularily the $I tables are some of the largest objects in our database. I have been actively pursuing utilizing Oracle advanced compression in our databases for OLTP table compression and LOB object compression. I have been unable to find any documentation or notes on if it is advisable to implement either table OLTP or LOB compression for Oracle text objects.
creating a text index using the section group parameter? The problem that I am having is when I create my text index and perform a query using Score, I do not get the correct results back.
select score(1) from mybaby where contains(name,'Mommy',1)>0;
create index datastores_text on test_url_search ( doc ) indextype is ctxsys.context parameters ( 'Datastore TEST_URL' );
SELECT SCORE(1),DOC from TEST_URL_SEARCH WHERE CONTAINS(DOC, 'London', 1) > 0
This works. i like to more
e.g. multi words search e.g. ' London Games' where if London or games are present it return a URL with a score,
or
Search in the Chinese.
The only way I can see to do this is create different indexes as the attributes for 'URL_DATASTORE' are limited. If I can what does the 'Contains' statement look like?
I'm new to Oracle Text. I want to implement search for the unique ids. Like google search when the user start typing 123 it need to brings anything starting with 123 and has show like entries how google will shows. When I add number 4 to like 1234 then it has bring numbers starting with 1234.
Have got basic form on a table and have a textarea which holds Notes added by user.
So Notes database field is updated on Save / Apply changes button being pressed.But would really like any text added / appended to the Notes field to be prefixed by userid and date / timestamp.
Is it possible via dynamic actions or Javascript to have any new text added / typed to be auto prefixed as per above.
Would only want the first key press in the filed to trigger the auto-prefix and if added text was deleted then the auto prefix to be deleted as well ?? If user doesn't press Save / Apply changes obviously want to leave existing Notes as is.
I have a requirement in one of my forms screen.I have a text box(large text area) which should display a help text file when i move my cursor on the topics displayed on the screen.know the code and the properties to be changed in the text box to accommodate large external file text.
I am on 11.2.0.3 Enterprise Edition. We are using the new feature "Composite Domain Index" for a Domain index on a very large table (>250.000.000 rows). It really works with mixed queries. We added two number columns using FILTER BY.We have lots of DML on this table. Therefore, we are executing synchronize and optimize once the week. The synch behaves pretty normal. But "optimize_index" takes a very very long time to complete. I have switsched on 'logging' for the optimize process. The $I table takes some time but is finished normally. But the optimization of the $S table (that is the table created for the CDI feature) is running over 12 hours now - and far from being finished. From the logfile, I can see that it optimizes 1000 rows every 20 minutes. Here is the output of the logfile:
Oracle Text, 11.2.0.3.0 14:33:05 06/26/12 begin logging 14:33:05 06/26/12 event 14:33:05 06/26/12 process $N for optimize: SEQDEV.GEN_GES_DESCRIPTION_CTX_I 14:33:16 06/26/12 14:33:16 06/26/12 [code]....
I haven't found a recommendation from Oracle not to use "optimize_index" for Domain Indexes with CDI. But in my case, it would be much faster just to drop and recreate the Domain Index in question.
We have a table called address and having the address fields and city ,state etc. The table will store huge amount of data .We need to query on the table. I would like to know how can we fasten the query and improve the performance of the query by creating index on these columns...Query is given below . note that the nullable columns can have data
I've been successfully setting up text indexes on multiple columns on the same table (using MULTI_COLUMN_DATASTORE preferences), but now I have a situation with a one-to-many data collection table (with a FK to a lookup table), and I need to search columns across both of these tables. Sample code below, more of my chattering after the code block:
CREATE TABLE SUBMISSION ( SUBMISSION_ID NUMBER(10) NOT NULL, SUBMISSION_NAME VARCHAR2(100) NOT NULL ); CREATE TABLE ADVISOR_TYPE
[code]...
I've looked at DETAIL_DATASTORE and USER_DATASTORE, but the examples in Oracle Docs for DETAIL_DATASTORE leave me a little bit perplexed. It seems like this should be pretty straightforward. I'm trying to avoid creating new columns, and keeping the trigger adjustments to a minimum.
I need to modify the procedure to read all the lines of a text. Actually in my table there is a personnel number column with duplicates and a TEXT column.I need to create a procedure to read all the text per personnel number and insert it into a another table.The below code is the procedure which is reading the two lines of text field. How can I modify it to read all the text per personnel number.
create PROCEDURE hr_load_restict_text_proc as CURSOR cur_hr_restrict IS SELECT personnel_number, line FROM hr_restriction_text_temp [code].......
How to write to text file using oracle? And how do I handle spaces/next line? (i was trying to use spaces(ch(32)), however it is just converted into squares in the text file.)
I have one database text field in oracle forms 6i and its color will change dynamically by using visual attribute.But actual my requirement to blink this text field by red color when value matches.
i have the two tab pages in canvase...one is for the personal page and other one is the education. now i want to change the color of the text like personal and education.
i want only change the text color of label not the background color...
I've written a pl/sql to send mail. It works fine. Now i want to modify it to send an attachment txt/scv/xls file.This file is residing on client's pc.How to do it?
Following is pl/sql for sending mail.
create or replace PROCEDURE SEND_MAIL(P_SENDER IN VARCHAR2,P_RECIPIENT IN VARCHAR2,P_MESSAGE IN VARCHAR2,P_SUBJECT IN VARCHAR2 )IS MAILHOST VARCHAR2(30) := 'MAILHOST.TIFR.RES.IN'; MAIL_CONN UTL_SMTP.CONNECTION; BEGIN MAIL_CONN := UTL_SMTP.OPEN_CONNECTION(MAILHOST, 25); -- TYPICALY 25 S THE PORT NUMBER FOR INCOMMING SMTP REQUESTS ON YOUR SMTP MAIL HOST UTL_SMTP.MAIL(MAIL_CONN, '<'||P_SENDER||'>'); -- THE '<' AND '>' DEPEDS ON WHAT TYPE OF SMTP MAIL HOST U'RE RUNNING THIS ONE'S A NETSCAPE SMTPHOST
I have developed a screen using oracle forms.... it has 4 text fields..then a LOAD button.After giving i/p in the 4 text boxes user will save (ctl+S) ..then hit LOAD button ,which will populate the fields below the screen.Everything is working fine but only problem I am facing...when user is trying to save (ctl+S) after giving the 4 i/ps in the text fields....the text fields getting disappeared and also becoming editable...though the data they have already given is being populated in the table..I want ..even after pressing ctl+S...the data should be there & non-editable.