Oracle CTX_DDL
Version 26ai

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

Oracle Database 26ai will be available on generic Linux platforms in January and soon on AIX and Windows
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