Oracle CTX_DDL
Version 26ai

General Information
Library Note Morgan's Library Page Header
The best Oracle News for FY2026

Oracle Database 26ai is now availble. If you haven't you downloaded already: Why?
Purpose Used to create and manage the preferences, section groups, and stoplists required for Text indexes.
AUTHID CURRENT_USER
Constants
Name Data Type Value
 General
LOCK_WAIT NUMBER 0
LOCK_NOWAIT NUMBER 1
LOCK_NOWAIT_ERROR NUMBER 2
MAXTIME_UNLIMITED NUMBER 2147483647
PREFERENCE_IMPLICIT_COMMIT BOOLEAN TRUE
 Opt Levels
OPTLEVEL_FAST VARCHAR2(4) 'FAST'
OPTLEVEL_FULL VARCHAR2(4) 'FULL'
OPTLEVEL_MERGE VARCHAR2(5) 'MERGE'
OPTLEVEL_REBUILD VARCHAR2(7) 'REBUILD
OPTLEVEL_TOKEN VARCHAR2(5) 'TOKEN'
OPTLEVEL_TOKEN_TYPE VARCHAR2(10) 'TOKEN_TYPE'
Data Types TYPE split_rec IS RECORD(
new_sec VARCHAR2(64)  DEFAULT NULL,
idval   VARCHAR2(100) DEFAULT NULL);

TYPE sec_rec IS RECORD(
secname VARCHAR2(500) DEFAULT NULL,
sectag  VARCHAR2(500) DEFAULT NULL);

TYPE split_tab IS TABLE OF split_rec INDEX BY BINARY_INTEGER;

TYPE sec_tab IS TABLE OF sec_rec INDEX BY BINARY_INTEGER;
Dependencies
ANYDATA DRIIXS DRVLSB
CTX_ANL DRILIST DRVMNT
CTX_QUERY DRIOBJ DRVRIO
DBMS_ASSERT DRIOPT DRVUTL
DBMS_LOB DRIPARSE DRVXMD
DBMS_SEARCH DRIPREF DRVXTAB
DBMS_SQL DRISGP DR_DEF
DBMS_STANDARD DRISPL ODCIINDEXINFO
DBMS_UTILITY DRIUTL ODCIRIDLIST
DBMS_XDBT DRIXMD ODCIVARCHAR2LIST
DRIACC DRUE PLITBLM
DRIDML DRVDDL PRVT_ORACHAIN
DRIENT DRVDISP UTL_FILE
DRIG DRVDML UTL_RAW
Documented Yes: Packages and Types Reference
Exceptions
Error Code Reason
DRG-10502 index <index_name> does not exist
First Available 11.2
Security Model Owned by CTXSYS with EXECUTE granted to CTXAPP, MDSYS and XDB
Source {ORACLE_HOME}/ctx/admin/dr0ddl.pkh
Subprograms
 
ADD_ATTR_SECTION
Add an attribute section to the group attr sections can be added only to the xml sectioner. They denote attributes whose text should be indexed ctx_ddl.add_attr_section(
group_name   IN VARCHAR2,
section_name IN VARCHAR2,
tag          IN VARCHAR2);
TBD
 
ADD_AUTO_OPTIMIZE
Undocumented ctx_ddl.add_auto_optimize(
idx_name  IN VARCHAR2,
part_name IN VARCHAR2 DEFAULT NULL,
optlevel  IN VARCHAR2 DEFAULT ctx_ddl.optlevel_merge);
TBD
 
ADD_FIELD_SECTION
Creates a filed section and assigns it to the specified section group ctx_ddl.add_field_section(
group_name   IN VARCHAR2,
section_name IN VARCHAR2,
tag          IN VARCHAR2,
visible      IN BOOLEAN DEFAULT FALSE);
TBD
 
ADD_INDEX
Adds an index to a catalog index preference ctx_ddl.add_index(
set_name       IN VARCHAR2,
column_list    IN VARCHAR2,
storage_clause IN VARCHAR2 DEFAULT NULL);
TBD
 
ADD_MDATA
Changes the MDATA value of a document

Overload 1
ctx_ddl.add_mdata(
idx_name     IN VARCHAR2,
section_name IN VARCHAR2,
mdata_value  IN VARCHAR2,
mdata_rowid  IN ROWID,
part_name    IN VARCHAR2 DEFAULT NULL);
TBD
Overload 2 ctx_ddl.add_mdata(
idx_name     IN VARCHAR2,
section_name IN VARCHAR2,
mdata_values IN sys.odcivarchar2list,
mdata_rowids IN sys.odciridlist,
part_name    IN VARCHAR2 DEFAULT NULL);
TBD
 
ADD_MDATA_COLUMN
Map the specified FILTER BY or ORDER BY column name to an MDATA section ctx_ddl.add_mdata_column(
group_name   IN VARCHAR2,
section_name IN VARCHAR2,
column_name  IN VARCHAR2);
TBD
 
ADD_MDATA_SECTION
Adds an MDATA metadata section to a document ctx_ddl.add_mdata_section(
group_name   IN VARCHAR2,
section_name IN VARCHAR2,
tag          IN VARCHAR2);
TBD
 
ADD_NDATA_SECTION
Adds a new NDATA section to a document ctx_ddl.add_ndata_section(
group_name   IN VARCHAR2,
section_name IN VARCHAR2,
tag          IN VARCHAR2);
TBD
 
ADD_PATH (new 23ai)
Adds a new path ctx_ddl.add_path(
pref_name   IN VARCHAR2,
path_type   IN VARCHAR2,
path_string IN VARCHAR2);
TBD
 
ADD_PATH_VECTORIZER (new 23ai)
Undocumented ctx_ddl.add_path_vectorizer(
pref_name   IN VARCHAR2,
path_type   IN VARCHAR2,
path_string IN VARCHAR2);
TBD
 
ADD_SDATA
Change the SDATA value of a document ctx_ddl.add_sdata(
idx_name     IN VARCHAR2,
section_name IN VARCHAR2,
sdata_value  IN VARCHAR2,
sdata_rowid  IN ROWID,
part_name    IN VARCHAR2 DEFAULT NULL);
TBD
 
ADD_SDATA_COLUMN
Map the specified FILTER BY or ORDER BY column name to an SDATA section ctx_ddl.add_sdata_column(
group_name   IN VARCHAR2,
section_name IN VARCHAR2,
column_name  IN VARCHAR2);
TBD
 
ADD_SDATA_SECTION
Adds a new SDATA section to a document ctx_ddl.add_sdata_section(
group_name   IN VARCHAR2,
section_name IN VARCHAR2,
tag          IN VARCHAR2
datatype     IN VARCHAR2 DEFAULT NULL);
TBD
 
ADD_SEC_GRP_ATTR_VAL
Add a section group attribute value to the list of values of an already existing section group attribute. Must be called after set_sec_grp_attr. ctx_ddl.add_sec_grp_attr_val(
group_name      IN VARCHAR2,
attribute_name  IN VARCHAR2,
attribute_value IN VARCHAR2);
TBD
 
ADD_SPECIAL_SECTION
Add a special section to the group ctx_ddl.add_special_section(group_name IN VARCHAR2, section_name IN VARCHAR2);
TBD
 
ADD_STOPCLASS
Add a stopclass to a stoplist ctx_ddl.add_stopclass(
stoplist_name IN VARCHAR2,
stopclass     IN VARCHAR2,
stoppattern   IN VARCHAR2);
TBD
 
ADD_STOPTHEME
Add a stoptheme to a stop list ctx_ddl.add_stoptheme(stoplist_name IN VARCHAR2, stoptheme IN VARCHAR2);
TBD
 
ADD_STOPWORD
Adds a stopword to a stoplist ctx_ddl.add_stopword(
stoplist_name IN VARCHAR2,
stopword      IN VARCHAR2,
language      IN VARCHAR2 DEFAULT NULL);
TBD
 
ADD_STOP_SECTION
Add a stop section to the group stop sections can be added only to the auto sectioner. They denote those tags which should not be indexed ctx_ddl.add_stop_section(group_name IN VARCHAR2, tag IN VARCHAR2);
TBD
 
ADD_SUB_LEXER
Adds a sub-lexer to a multi-lexer preference ctx_ddl.add_sub_lexer(
lexer_name IN VARCHAR2,
language   IN VARCHAR2,
sub_lexer  IN VARCHAR2,
alt_value  IN VARCHAR2 DEFAULT NULL);
TBD
 
ADD_ZONE_SECTION
Creates a zone section and adds it to the specified section group ctx_ddl.add_zone_section(
group_name   IN VARCHAR2,
section_name IN VARCHAR2,
tag          IN VARCHAR2);
TBD
 
CLEAR_USER_INDEX_ERRORS (new 23ai)
Undocumented ctx_ddl.clear_user_index_errors(idx_name IN VARCHAR2);
TBD
 
COPY_POLICY
Create a policy which is a metadata copy of an existing policy or index ctx_ddl.copy_policy(
source_policy IN VARCHAR2,
policy_name   IN VARCHAR2);
TBD
 
CREATE_INDEX_SET
Creates an index set for CTXCAT index types. Only CTXAPP users and CTXSYS can create an index set. ctx_ddl.create_index_set(set_name IN VARCHAR2);
TBD
 
CREATE_PATH_LIST (new 23ai)
Creates a new path list ctx_ddl.create_path_list(
pref_name IN VARCHAR2,
format    IN NUMBER,
behavior  IN VARCHAR2);
TBD
 
CREATE_POLICY
Create a policy to use with ORA:CONTAINS() ctx_ddl.create_policy(
policy_name   IN VARCHAR2,
filter        IN VARCHAR2 DEFAULT NULL,
section_group IN VARCHAR2 DEFAULT NULL,
lexer         IN VARCHAR2 DEFAULT NULL,
stoplist      IN VARCHAR2 DEFAULT NULL,
wordlist      IN VARCHAR2 DEFAULT NULL);
TBD
 
CREATE_PREFERENCE
A preference is created to customized a tile (framework object). A preference references a framework object. It describes how a referenced object is to be customized. Validates the preference attribute settings and raise an exception if incorrect attribute settings are found. ctx_ddl.create_preference(
preference_name IN VARCHAR2,
object_name     IN VARCHAR2);
exec ctx_ddl.create_preference('_DATASTORE', 'USER_DATASTORE');
 
CREATE_SECTION_GROUP
Creates a section group in the Text data dictionary ctx_ddl.create_section_group(
group_name IN VARCHAR2,
group_type IN VARCHAR2);
TBD
 
CREATE_SHADOW_INDEX
Undocumented ctx_ddl.create_shadow_index(
idx_name         IN VARCHAR2,
parameter_string IN VARCHAR2 DEFAULT NULL,
parallel_degree  IN NUMBER   DEFAULT 1);
TBD
 
CREATE_STOPLIST
Creates a new stoplist ctx_ddl.create_stoplist(
stoplist_name IN VARCHAR2,
stoplist_type IN VARCHAR2 DEFAULT 'BASIC_STOPLIST');
TBD
 
DROP_INDEX_SET
Drops an index set ctx_ddl.drop_index_set(set_name IN VARCHAR2);
TBD
 
DROP_PATH_LIST (new 23ai)
Drops the named path list ctx_ddl.drop_path_list(pref_name IN VARCHAR2);
TBD
 
DROP_POLICY
Drops a policy ctx_ddl.drop_policy(policy_name IN VARCHAR2);
TBD
 
DROP_PREFERENCE
Delete the specified preference from the TexTile dictionary. Raise an exception if the preference is referenced in a policy. ctx_ddl.drop_preference(preference_name IN VARCHAR2);
TBD
 
DROP_SECTION_GROUP
Deletes a section group from the Text data dictionary ctx_ddl.create_section_group(group_name IN VARCHAR2);
TBD
 
DROP_SHADOW_INDEX
Undocumented ctx_ddl.drop_shadow_index(idx_name IN VARCHAR2);
TBD
 
DROP_STOPLIST
Drop a stop list ctx_ddl.drop_stoplist(stoplist_name IN VARCHAR2);
TBD
 
EXCHANGE_SHADOW_INDEX
Undocumented ctx_ddl.exchange_shadow_index(
idx_name         IN VARCHAR2,
parameter_string IN VARCHAR2 DEFAULT NULL);
TBD
 
LOAD_STOPLIST (new 23ai)
Loads a stop list ctx_ddl.open_stoplist(
stoplist_name IN VARCHAR2,
stoplist_dir  IN VARCHAR2,
stoplist_file IN VARCHAR2,
language      IN VARCHAR2,
language_dependent IN BOOLEAN);
TBD
 
OPTIMIZE_INDEX
Optimize an index ctx_ddl.optimize_index(
idx_name        IN VARCHAR2,
optlevel        IN VARCHAR2,
maxtime         IN NUMBER   DEFAULT NULL,
token           IN VARCHAR2 DEFAULT NULL,
part_name       IN VARCHAR2 DEFAULT NULL,
token_type      IN NUMBER   DEFAULT NULL,
parallel_degree IN NUMBER   DEFAULT 1,
memory          IN VARCHAR2,
background      IN BOOLEAN);
exec ctx_ddl.optimize_index('SRCH_SKILL_INDEX','FAST');
 
POPULATE_PENDING
Loads the DML pending queue with all base table rowids intended to be used after a create index ... NOPOPULATE ctx_ddl.populate_pending(
idx_name  IN VARCHAR2,
part_name IN VARCHAR2 DEFAULT NULL);
TBD
 
RECREATE_INDEX_ONLINE
Undocumented ctx_ddl.recreate_index_online(
idx_name         IN VARCHAR2,
parameter_string IN VARCHAR2 DEFAULT NULL,
parallel_degree  IN NUMBER   DEFAULT 1,
partition_name   IN VARCHAR2 DEFAULT NULL);
TBD
 
REMOVE_AUTO_OPTIMIZE
Undocumented ctx_ddl.remove_auto_optimize(
idx_name  IN VARCHAR2,
part_name IN VARCHAR2 DEFAULT NULL);
TBD
 
REMOVE_INDEX
Removes an index from a CTXCAT index preference ctx_ddl.remove_index(
set_name    IN VARCHAR2,
column_list IN VARCHAR2);
TBD
 
REMOVE_MDATA
Removes MDATA values from a document

Overload 1
ctx_ddl.remove_mdata(
idx_name     IN VARCHAR2,
section_name IN VARCHAR2,
mdata_value  IN VARCHAR2,
mdata_rowid  IN ROWID,
part_name    IN VARCHAR2 DEFAULT NULL);
TBD
Overload 2 ctx_ddl.remove_mdata(
idx_name     IN VARCHAR2,
section_name IN VARCHAR2,
mdata_values IN sys.odcivarchar2list,
mdata_rowids IN sys.odciridlist,
part_name    IN VARCHAR2 DEFAULT NULL);
TBD
 
REMOVE_OVERLAP_DOLLARS
Undocumented ctx_ddl.remove_overlap_dollars(
idx_name  IN VARCHAR2,
part_name IN VARCHAR2);
TBD
 
REMOVE_SDATA
Undocumented ctx_ddl.remove_sdata(
idx_name     IN VARCHAR2,
section_name IN VARCHAR2,
sdata_value  IN VARCHAR2,
sdata_rowid  IN ROWID,
part_name    IN VARCHAR2 DEFAULT NULL);
TBD
 
REMOVE_SECTION
May be used by CTXAPP and CTXADMIN to drop their own sections

Overload 1
ctx_ddl.remove_section(
group_name   IN VARCHAR2,
section_name IN VARCHAR2);
TBD
Overload 2 ctx_ddl.remove_section(
group_name IN VARCHAR2,
section_id IN NUMBER);
TBD
 
REMOVE_STOPCLASS
Deletes a stopclass from a stoplist ctx_ddl.remove_stopclass(
stoplist_name IN VARCHAR2,
stopclass     IN VARCHAR2);
TBD
 
REMOVE_STOPTHEME
Deletes a stoptheme from a stoplist ctx_ddl.remove_stoptheme(
stoplist_name IN VARCHAR2,
stoptheme     IN VARCHAR2);
TBD
 
REMOVE_STOPWORD
Removes a stopword from a stoplist ctx_ddl.remove_stopword(
stoplist_name IN VARCHAR2,
stopword      IN VARCHAR2,
language      IN VARCHAR2 DEFAULT NULL);
TBD
 
REMOVE_SUB_LEXER
Remove a sub lexer from a multi-lexer preference ctx_ddl.remove_sub_lexer(
lexer_name IN VARCHAR2,
language   IN VARCHAR2);
TBD
 
REM_SEC_GRP_ATTR_VAL
Remove a specific section group attribute value from the list of values of an existing section group attribute ctx_ddl.rem_sec_grp_attr_val(
group_name      IN VARCHAR2,
attribute_name  IN VARCHAR2,
attribute_value IN VARCHAR2);
TBD
 
REPLACE_INDEX_METADATA
Replaces metadata for local domain indexes ctx_ddl.replace_index_metadata(
idx_name         IN VARCHAR2,
parameter_string IN VARCHAR2);
TBD
 
REPOPULATE_DOLLARN
Repopulate $N as opposite of $K ctx_ddl.repopulate_dollarn(
idx_name  IN VARCHAR2,
part_name IN VARCHAR2 DEFAULT NULL);
TBD
 
SET_ATTRIBUTE
Sets an attribute preference ctx_ddl.set_attribute(
preference_name IN VARCHAR2,
attribute_name  IN VARCHAR2,
attribute_value IN VARCHAR2);
BEGIN
  ctx_ddl.set_attribute('_DATASTORE', 'PROCEDURE', 'XDB_DATASTORE_PROC');
  ctx_ddl.set_attribute('_DATASTORE', 'OUTPUT_TYPE', 'CLOB');
END;
/
 
SET_SECTION_ATTRIBUTE
Add a section specific attribute ctx_ddl.set_section_attribute(
group_name      IN VARCHAR2,
section_name    IN VARCHAR2,
attribute_name  IN VARCHAR2,
attribute_value IN VARCHAR2);
TBD
 
SET_SEC_GRP_ATTR
Add a section group attribute (if it does not exist) and set its value and raises an error if the section group attribute already exists ctx_ddl.set_sec_grp_attr(
group_name      IN VARCHAR2,
attribute_name  IN VARCHAR2,
attribute_value IN VARCHAR2);
TBD
 
SPLIT_ZONE_TOKENS
Move contents of a zone section to one or more zone sections ctx_ddl.split_zone_tokens(
idx_name       IN VARCHAR2,
part_name      IN VARCHAR2 DEFAULT NULL,
source_section IN VARCHAR2,
split_map      IN split_tab);
TBD
 
SYNC_INDEX
Synchronize index ctx_ddl.sync_index(
idx_name        IN VARCHAR2 DEFAULT NULL,
memory          IN VARCHAR2 DEFAULT NULL,
part_name       IN VARCHAR2 DEFAULT NULL,
parallel_degree IN NUMBER   DEFAULT 1,
maxtime         IN NUMBER   DEFAULT NULL,
locking         IN NUMBER   DEFAULT LOCK_WAIT);
exec ctxsys.ctx_ddl.sync_index('SRCH_COURSE_CD_INDEX', '20M');
CREATE OR REPLACE PROCEDURE sync_all_ctx_indexes AUTHID DEFINER IS
 l_err LONG;
BEGIN
  FOR x IN (SELECT u.name idx_owner, idx_name idx_name
            FROM sys.user$ u, ctxsys.dr$index i
            WHERE i.idx_owner# = u.user#
            AND u.name <> 'CTXSYS') LOOP
    BEGIN
      ctxsys.ctx_ddl.sync_index(x.idx_owner || '.' || x.idx_name);
    EXCEPTION
      WHEN OTHERS THEN
        l_err := l_err || sqlerrm;
    END;
  END LOOP;

  IF (l_err IS NOT NULL) THEN
    RAISE_APPLICATION_ERROR(-20001, 'Errors ' || l_err);
  END IF;
END;
/
 
UNSET_ATTRIBUTE
Removes a set attribute from a preference ctx_ddl.unset_attribute(
preference_name IN VARCHAR2,
attribute_name  IN VARCHAR2);
TBD
 
UNSET_SECTION_ATTRIBUTE
Unset an existing section attribute ctx_ddl.unset_section_attribute(
group_name     IN VARCHAR2,
section_name   IN VARCHAR2,
attribute_name IN VARCHAR2);
TBD
 
UNSET_SEC_GRP_ATTR
Remove a section group attribute (and its list of values) ctx_ddl.unset_sec_grp_attr(
group_name     IN VARCHAR2,
attribute_name IN VARCHAR2);
TBD
 
UPDATE_POLICY
Updates a policy. Replaces the preferences of the policy. Arguments left NULL are not replaced. ctx_ddl.update_policy(
policy_name   IN VARCHAR2,
filter        IN VARCHAR2 DEFAULT NULL,
section_group IN VARCHAR2 DEFAULT NULL,
lexer         IN VARCHAR2 DEFAULT NULL,
stoplist      IN VARCHAR2 DEFAULT NULL,
wordlist      IN VARCHAR2 DEFAULT NULL);
TBD
 
UPDATE_SDATA
Update sdata section value ctx_ddl.update_sdata(
idx_name     IN VARCHAR2,
section_name IN VARCHAR2,
sdata_value  IN sys.anydata,
sdata_rowid  IN ROWID,
part_name    IN VARCHAR2 default NULL);
TBD
 
UPDATE_SUB_LEXER
Update a sub lexer in a multi-lexer preference ctx_ddl.update_sub_lexer(
lexer_name IN VARCHAR2,
language   IN VARCHAR2,
sub_lexer  IN VARCHAR2);
TBD
 
ZONE_TO_FIELD
Migrate from zone to field sections ctx_ddl.zone_to_field(
dx_name       IN VARCHAR2,
part_name     IN VARCHAR2 DEFAULT NULL,
lex_pref      IN VARCHAR2,
storage_pref  IN VARCHAR2,
attr_val_tab  IN VARCHAR2,
zone_sec_list IN sec_tab,
fld_sec_list  IN sec_tab);
TBD

Related Topics
Built-in Functions
Built-in Packages
Context
CTX_ADM
CTX_ANL
CTX_CATSEARCH
CTX_CLS
CTX_CONTAINS
CTX_DOC
CTX_ENTITY
CTX_MATCHES
CTX_OUTPUT
CTX_QUERY
CTX_REPORT
CTX_THES
CTX_TREE
CTX_ULEXER
CTX_XPCONTAINS
DBMS_SEARCH
What's New In 21c
What's New In 26ai

Morgan's Library Page Footer
This site is maintained by Daniel Morgan. Last Updated: This site is protected by copyright and trademark laws under U.S. and International law. © 1998-2026 Daniel A. Morgan All Rights Reserved