Oracle Rdb stores information about the database as a set of tables called system tables. The system tables are the definitive source of Oracle Rdb metadata. Metadata defines the structure of the database; for example, metadata defines the fields that comprise a particular table and the fields that can index that table. The definitions of most system tables are standard and are likely to remain constant in future versions of Oracle Rdb. Under each Help topic for a particular system table, BLR refers to binary language representation. This is low-level syntax used internally to represent Oracle Rdb data manipulation operations.
1 – Special Notes
The following Help topics describe the usage of system tables with respect to particular versions of Oracle Rdb or in table to other database constructs, operations, or products.
1.1 – Using Data Dictionary
Although you can store your data definitions in the data dictionary, the database system refers only to the system tables in the database file itself for these definitions. In a sense, the system tables are an internal data dictionary for the database. This method improves performance as Oracle Rdb does not have to access the data dictionary at run time.
1.2 – Modifying
When you create a database, Oracle Rdb defines, populates, and manipulates the system tables. As the user performs data definition operations on the database, Oracle Rdb reads and modifies the system tables to reflect those operations. You should not modify any of the Oracle Rdb system tables using data manipulation language, nor should you define any domains based on system table fields. However, you can use regular Oracle Rdb data manipulation statements to retrieve the contents of the system tables. This means that your program can determine the structure and characteristics of the database by retrieving the fields of the system tables. See the Example Help subtopic under System_ Tables in this Help library for an example of querying system tables.
1.3 – Updating Metadata
When you use the SQL SET TRANSACTION . . . RESERVING statement to lock a set of tables for an Oracle Rdb operation, you normally exclude from the transaction all the tables not listed in the RESERVING clause. However, Oracle Rdb accesses and updates system tables as necessary, no matter which tables you have locked with the SQL SET TRANSACTION statement. When your transaction updates database metadata, Oracle Rdb reserves the system tables involved in the update in the EXCLUSIVE share mode. Other users are unable to perform data definition operations on these tables until you complete your transaction. For example: o When you refer to a domain (global field) in an update transaction that changes data definitions, Oracle Rdb locks an index for the system table, RDB$RELATION_FIELDS. No other users can refer to the same domain until you commit your transaction. o When you change a system table or domain definition, Oracle Rdb locks an index in the system table, RDB$FIELD_VERSIONS. No other users can change table or global field definitions until you commit your transaction. o When you change a table definition, Oracle Rdb locks an index in the system table, RDB$RELATION_FIELDS. No other users can change tables in the same index node until you commit your transaction.
1.4 – LIST OF BYTE VARYING Metadata
Oracle Rdb has supported multiple segment LIST OF BYTE VARYING data types for user-defined data. However in previous versions, Oracle Rdb maintained its own LIST OF BYTE VARYING metadata columns as single segments. This restricted the length to approximately 65530 bytes. An SQL CREATE TRIGGER or CREATE MODULE statement could fail due to this restriction. This limit was lifted by changing the way Oracle Rdb stores its own metadata. o For columns containing binary data, such as the binary representation of query, routine, constraint, trigger action, computed by column, or query outline, Oracle Rdb breaks the data into pieces that best fit the system storage area page size. Thus, the segments are all the same size with a possible small trailing segment. The LIST OF BYTE VARYING column value is no longer fragmented, improving performance when reading system metadata. o For columns containing text data such as the SQL source (for elements such as triggers and views) and user-supplied comment strings, Oracle Rdb breaks the text at line boundaries (indicated by ASCII carriage returns and line feeds) and stores the text without the line separator. Thus, the segments are of varying size with a possible zero length for blank lines. An application can now easily display the LIST OF BYTE VARYING column value and the application no longer needs to break up the single text segment for printing. No change is made to the LIST OF BYTE VARYING column values when a database is converted (using the RMU Convert command, RMU Restore command, or SQL EXPORT/IMPORT statements) from a previous version. Applications that read the Oracle Rdb system LIST OF BYTE VARYING column values must be changed to understand multiple segments. Applications that do not read these system column values should see no change to previous behavior. Tools such as the RMU Extract command and the SQL SHOW and EXPORT statements handle both the old and new formats of the system metadata.
2 – Read Only Access
The following is a list of fields of various system tables that are set to read-only access. o RDB$ACCESS_CONTROL o RDB$FLAGS o RDB$MODULE_OWNER o RDB$ROUTINE_OWNER
3 – Example
The following BASIC program uses an SQL Module to query system tables PROGRAM SYSTEM_RELATION ! This BASIC program interactively prompts a user to enter a name ! of a system table (table). Next, the program calls an SQL ! Module which uses a cursor to read the system table that the ! user entered. Upon reading the fields (domains) of the system ! table, the program displays a message to the user as to whether ! the fields in a system table can be updated. OPTION TYPE = EXPLICIT, SIZE = INTEGER LONG ON ERROR GOTO ERR_ROUTINE ! ! Declare variables and constants ! DECLARE STRING Column_name, Table_name DECLARE INTEGER Update_yes, sqlcode DECLARE INTEGER CONSTANT TRIM_BLANKS = 128, UPPER_CASE = 32 EXTERNAL SUB SET_TRANSACTION (LONG) EXTERNAL SUB OPEN_CURSOR(LONG,STRING) EXTERNAL SUB FETCH_COLUMN(LONG,STRING,INTEGER) EXTERNAL SUB CLOSE_CURSOR(LONG) EXTERNAL SUB COMMIT_TRANS (LONG) ! ! Prompt for table name ! INPUT 'Name of Table'; Table_name Table_name = EDIT$(Table_name, UPPER_CASE) PRINT 'Starting query' PRINT 'In '; Table_name; ' Table, columns:' ! ! Call the SQL module to start the transaction. ! CALL SET_TRANSACTION(Sqlcode) ! ! Open the cursor. ! CALL OPEN_CURSOR(Sqlcode, Table_name) GET_LOOP: WHILE (Sqlcode = 0) ! ! Fetch each column ! CALL FETCH_COLUMN(Sqlcode, Column_name, Update_yes) IF (Sqlcode = 0) THEN ! ! Display returned column ! PRINT ' '; EDIT$(Column_name, TRIM_BLANKS); IF (update_yes = 1) THEN PRINT ' can be updated' ELSE PRINT ' cannot be updated' END IF END IF NEXT ERR_ROUTINE: IF Sqlcode = 100 THEN PRINT "No more rows." RESUME PROG_END ELSE PRINT "Unexpected error: ", Sqlcode, Err RESUME PROG_END END IF PROG_END: ! ! Close the cursor, commit work and exit ! CALL CLOSE_CURSOR(Sqlcode) CALL COMMIT_TRANS(Sqlcode) END PROGRAM The following module provides the SQL procedures that are called by the preceding BASIC program. -- This SQL module provides the SQL procedures that are called by the -- preceding BASIC program, System Table ----------------------------------------------------------------- -- Header Information Section ----------------------------------------------------------------- MODULE SQL_SYSTEM_REL_BAS -- Module name LANGUAGE BASIC -- Language of calling program AUTHORIZATION SQL_SAMPLE -- Authorization ID -------------------------------------------------------------------- -- DECLARE Statements Section -------------------------------------------------------------------- DECLARE ALIAS FILENAME 'MF_PERSONNEL' -- Declaration of the database. DECLARE SELECT_UPDATE CURSOR FOR SELECT RDB$FIELD_NAME, RDB$UPDATE_FLAG FROM RDB$RELATION_FIELDS WHERE RDB$RELATION_NAME = table_name ORDER BY RDB$FIELD_POSITION -------------------------------------------------------------------- -- Procedure Section -------------------------------------------------------------------- -- Start a transaction. PROCEDURE SET_TRANSACTION SQLCODE; SET TRANSACTION READ WRITE; -- Open the cursor. PROCEDURE OPEN_CURSOR SQLCODE table_name RDB$RELATION_NAME; OPEN SELECT_UPDATE; -- Fetch a row. PROCEDURE FETCH_COLUMN SQLCODE field_name RDB$FIELD_NAME update_flag RDB$UPDATE_FLAG; FETCH SELECT_UPDATE INTO :field_name, :update_flag; -- Close the cursor. PROCEDURE CLOSE_CURSOR SQLCODE; CLOSE SELECT_UPDATE; -- Commit the transaction. PROCEDURE COMMIT_TRANS SQLCODE; COMMIT;
4 – All System Tables
The Oracle Rdb system tables are as follows: RDB$CATALOG_SCHEMA Contains the name and definition of each SQL catalog and schema. This table is present only in databases with the SQL multischema feature enabled. RDB$COLLATIONS The collating sequences used by this database. RDB$CONSTRAINTS Name and definition of each constraint. RDB$CONSTRAINT_RELATIONS Name of each table that participates in a given constraint. RDB$DATABASE Database-specific information. RDB$FIELD_VERSIONS One row for each version of each column definition in the database. RDB$FIELDS Characteristics of each domain in the database. RDB$GRANTED_PROFILES Description of roles and profiles granted to users and other roles. RDB$INDEX_SEGMENTS Columns that make up an index. RDB$INDICES Characteristics of the indexes for each table. RDB$INTERRELATIONS Interdependencies of entities used in the database. RDB$MODULES Module definition as defined by a user, including the header and declaration section. RDB$OBJECT_SYNONYMS When synonyms are enabled, this system table is created to describe the synonym name, type, and target. RDB$PARAMETERS Interface definition for each routine stored in RDB$ROUTINES. Each parameter to a routine (procedure or function) is described by a row in RDB$PARAMETERS. RDB$PRIVILEGES Protection for the database objects. RDB$PROFILES Description of any profiles, roles or users in the database. RDB$QUERY_OUTLINES Query outline definitions used by the optimizer to retrieve known query outlines prior to optimization. RDB$RELATION_CONSTRAINTS Lists all table-specific constraints. RDB$RELATION_CONSTRAINT_ Lists the columns that participate FLDS in unique, primary, or foreign key declarations for table-specific constraints. RDB$RELATION_FIELDS Columns defined for each table. RDB$RELATIONS Tables and views in the database. RDB$ROUTINES Description of each function and procedure in the database. The routine may be standalone or part of a module. RDB$SEQUENCES Characteristics of any sequences defined for the database. RDB$STORAGE_MAPS Characteristics of each storage map. RDB$STORAGE_MAP_AREAS Characteristics of each partition of a storage map. RDB$SYNONYMS Connects an object's user-specified name to its internal database name. This table is only present in databases with the SQL multischema feature enabled. RDB$TRIGGERS Definition of a trigger. RDB$VIEW_RELATIONS Interdependencies of tables used in views. RDB$WORKLOAD Collects workload information.
5 – RDB$CATALOG_SCHEMA
The RDB$CATALOG_SCHEMA system table contains the name and definition of each SQL catalog and schema. This table is present only in databases that have the SQL multischema feature enabled. The following table provides information on the columns of the RDB$CATALOG_SCHEMA system table. Data Column Name Type Summary Description RDB$PARENT_ID integer For a schema, this is the RDB$CATALOG_SCHEMA_ID of the catalog to which this schema belongs. For a catalog, this column is always 0. RDB$CATALOG_SCHEMA_NAME char(31) The name of the catalog or schema. RDB$CATALOG_SCHEMA_ID integer A unique identifier indicating whether this is a catalog or a schema. Schema objects have positive identifiers starting at 1 and increasing. Catalog objects have negative identifiers starting at -1 and decreasing. 0 is reserved. RDB$DESCRIPTION list A user-supplied description of byte of the catalog or schema. varying RDB$SCHEMA_AUTH_ID char(31) The authorization identifier of the creator of the schema. RDB$SECURITY_CLASS char(20) Reserved for future use. RDB$CREATED date vms Set when the schema or catalog is created. RDB$LAST_ALTERED date vms Set when SQL ALTER CATALOG or ALTER SCHEMA statement is used (future). RDB$CATALOG_SCHEMA_ char(31) Creator of this schema or CREATOR catalog.
6 – RDB$COLLATIONS
The RDB$COLLATIONS system table describes the collating sequence to be used in the database. The following table provides information on the columns of the RDB$COLLATIONS system table. Data Column Name Type Summary Description RDB$COLLATION_NAME char(31) Supplies the name by which the database's collating sequences are known within the database. RDB$COLLATION_SEQUENCE list Internal representation of of byte the collating sequence. varying RDB$DESCRIPTION list A user-supplied description of byte of the collating sequence. varying RDB$FLAGS integer A bit mask where the following bits are set: o Bit 0 If an ASCII collating sequence. o Bit 1 If a DEC_MCS collating sequence. RDB$SECURITY_CLASS char(20) Reserved for future use. RDB$CREATED date vms Set when the collating sequence is created. RDB$LAST_ALTERED date vms Reserved for future use. RDB$COLLATION_CREATOR char(31) Creator of this collating sequence.
7 – RDB$CONSTRAINTS
The RDB$CONSTRAINTS system table contains the name and definition of each constraint. The following table provides information on the columns of the RDB$CONSTRAINTS system table. Data Column Name Type Summary Description RDB$CONSTRAINT_NAME char(31) The system-wide unique name of the constraint. RDB$CONSTRAINT_BLR list The BLR that defines the of byte constraint. varying RDB$CONSTRAINT_SOURCE list The user's source for the of byte constraint. varying RDB$DESCRIPTION list A user-supplied description of byte of this constraint. varying RDB$EVALUATION_TIME integer A value that represents when a constraint is evaluated, as follows: o 0 At commit time (deferred initially deferred). o 1 At verb time (deferrable initially immediate). o 2 At verb time (not deferrable). RDB$EXTENSION_PARAMETERS list Reserved for future use. of byte varying RDB$SECURITY_CLASS char(20) Reserved for future use. RDB$CREATED date vms Set when the constraint is created. RDB$LAST_ALTERED date vms Reserved for future use. RDB$CONSTRAINT_CREATOR char(31) Creator of this constraint. RDB$FLAGS integer Flags.
7.1 – RDB$FLAGS
Represents flags for RDB$CONSTRAINTS system table. Bit Position Description 0 Currently disabled. 1 Currently enabled without validation.
8 – RDB$CONSTRAINT_RELATIONS
The RDB$CONSTRAINT_RELATIONS system table lists all tables that participate in a given constraint. The following table provides information on the columns of the RDB$CONSTRAINT_RELATIONS system table. Data Column Name Type Summary Description RDB$CONSTRAINT_NAME char(31) The system-wide unique name of the constraint. RDB$RELATION_NAME char(31) The name of a table involved in the constraint. RDB$FLAGS integer Flags. RDB$CONSTRAINT_CONTEXT integer The context variable of the table involved in the constraint. RDB$SECURITY_CLASS char(20) Reserved for future use.
8.1 – RDB$FLAGS
Represents flags for RDB$CONSTRAINT_RELATIONS system table. Bit Position Description 0 Reserved for future use. 1 Reserved for future use. 2 If the constraint is on the specified table. 3 If the constraint evaluates with optimization by dbkey lookup. 4 If the constraint checks for existence. 5 If the constraint checks for uniqueness. 6 If the constraint needs to evaluate on store of specified table row. 7 If the constraint need not evaluate on store of specified table row. 8 If the constraint needs to evaluate on erase of specified table row. 9 If the constraint need not evaluate on erase of specified table row.
9 – RDB$DATABASE
The RDB$DATABASE system table contains information that pertains to the overall database. This table can contain only one row. The following table provides information on the columns of the RDB$DATABASE system table. Data Column Name Type Summary Description RDB$CDD_PATH char 256 The dictionary path name for the database. RDB$FILE_NAME char 255 Oracle Rdb returns the file specification of the database root file. [1] RDB$MAJ_VER integer Derived from the database major version. RDB$MIN_VER integer Derived from the database minor version. RDB$MAX_RELATION_ID integer The largest table identifier assigned. Oracle Rdb assigns the next table an ID of MAX_RELATION_ID + 1. RDB$RELATION_ID integer The unique identifier of the RDB$RELATIONS table. If you drop a table, that identifier is not assigned to any other table. RDB$RELATION_ID_ROOT_DBK char(8) A pointer (database key or dbkey) to the base of the RDB$REL_REL_ID_NDX index on column RDB$RELATION_ID. RDB$RELATION_NAME_ROOT_ char(8) A pointer (dbkey) to the DBK base of the RDB$REL_REL_ NAME_NDX index on column RDB$RELATION_NAME. RDB$FIELD_ID integer The identifier of the RDB$FIELD_VERSIONS table. RDB$FIELD_REL_FLD_ROOT_ char(8) A pointer (dbkey) to the DBK base of the RDB$VER_REL_ ID_VER_NDX index on columns RDB$RELATION_ID and RDB$VERSION. RDB$INDEX_ID integer The identifier of the RDB$INDICES table. RDB$INDEX_NDX_ROOT_DBK char(8) A pointer (dbkey) to the base of the RDB$NDX_NDX_ NAME_NDX index on column RDB$INDEX_NAME. RDB$INDEX_REL_ROOT_DBK char(8) A pointer (dbkey) to the base of the RDB$NDX_REL_ NAM_NDX index on column RDB$RELATION_ID. RDB$INDEX_SEG_ID integer The identifier of the RDB$INDEX_SEGMENTS table. RDB$INDEX_SEG_FLD_ROOT_ char(8) A pointer (dbkey) to the DBK base of the RDB$NDX_SEG_ NAM_FLD_POS_NDX index on columns RDB$INDEX_NAME and RDB$FIELD_POSITION. RDB$SEGMENTED_STRING_ID integer The logical area ID that contains the segmented strings. RDB$ACCESS_CONTROL list The access control policy of byte for the database. varying RDB$DESCRIPTION list A user-supplied description of byte of the database. varying RDB$DATABASE_PARAMETERS list Reserved for future use. of byte varying RDB$EXTENSION_PARAMETERS list Reserved for future use. of byte varying RDB$FLAGS integer Flags. RDBVMS$MAX_VIEW_ID integer The largest view identifier assigned to the RDB$RELATION_ID column in the RDB$RELATIONS system table. Oracle Rdb assigns the next view an ID of MAX_ VIEW_ID + 1. RDBVMS$SECURITY_AUDIT integer A bit mask that indicates the privileges that will be audited for the database, as specified in the RMU Set Audit command. RDBVMS$SECURITY_ALARM integer A bit mask that indicates the privileges that will produce alarms for the database, as specified in the RMU Set Audit command. RDBVMS$SECURITY_USERS list An access control list of byte that identifies users varying who will be audited or who will produce alarms for DAC (discretionary access control) events when DACCESS (discretionary access) auditing is enabled for specific database objects. RDB$SECURITY_CLASS char(20) Reserved for future use. RDBVMS$SECURITY_AUDIT2 integer Reserved for future use. RDBVMS$SECURITY_ALARM2 integer Reserved for future use. RDBVMS$CHARACTER_SET_ID integer Value is the character set ID used for the identifier character set. RDBVMS$CHARACTER_SET_ integer Value is the character set NATIONAL ID used for all NCHAR (also called NATIONAL CHAR or NATIONAL CHARACTER) data types and literals. RDBVMS$CHARACTER_SET_ integer Value is the character set DEFAULT ID used for the default character set. RDB$MAX_ROUTINE_ID integer Maintains a count of the modules and routines added to the database. Value is 0 if no routines or modules have been added to the database. RDB$CREATED date vms Set when the database is created. RDB$LAST_ALTERED date vms Set when SQL ALTER DATABASE statement is used. RDB$DATABASE_CREATOR char(31) Creator of this database. RDB$DEFAULT_STORAGE_AREA_ integer Default storage area used ID for unmapped, persistent tables and indices. RDB$DEFAULT_TEMPLATE_ integer Reserved for future use. AREA_ID Footnote: [1] The root file specification is not stored on disk (an RMU Dump command with the Areas qualifier shows that this field is blank) and is only returned to queries at runtime. Therefore, the root file specification remains correct after you use the RMU Move_Area, RMU Copy_Database, and RMU Backup commands, and the SQL EXPORT and IMPORT statements. The following ALTER DATABASE clauses modify the RDB$LAST_ALTERED column in the RDB$DATABASE system table: o CARDINALITY COLLECTION IS {ENABLED | DISABLED} o DICTIONARY IS [NOT] REQUIRED o DICTIONARY IS NOT USED o METADATA CHANGES ARE {ENABLED | DISABLED} o MULTISCHEMA IS {ON | OFF} o SECURITY CHECKING IS EXTERNAL (PERSONA SUPPORT IS {ENABLED | DISABLED}) o SECURITY CHECKING IS INTERNAL (ACCOUNT CHECK IS {ENABLED | DISABLED}) o SYNONYMS ARE ENABLED o WORKLOAD COLLECTION IS {ENABLED | DISABLED} The following SQL statements modify the RDB$LAST_ALTERED column in the RDB$DATABASE system table: o GRANT statement o REVOKE statement o COMMENT ON DATABASE statement
9.1 – RDB$FLAGS
Represents flags for RDB$DATABASE system table. Bit Position Description 0 If dictionary required. 1 If ANSI protection used. 2 If database file is a CDD$DATABASE database. 3 Reserved for future use. 4 Reserved for future use. 5 Reserved for future use. 6 Multischema is enabled. 7 Reserved for future use. 8 System indexes use run length compression. 9 The optimizer saves workload in RDB$WORKLOAD system table. 10 The optimizer is not updating table and index cardinalities. 11 All metadata changes are disabled. 12 Oracle Rdb uses database for user and role names. 13 If security is internal, validate the UIC. If security is external then this indicates that persona support is enabled. 14 Synonyms are supported. 15 Prefix cardinalities are not collected for system indexes. 16 If collecting, use full algorithm for system indexes. 17 Use sorted ranked index for system indexes.
10 – RDB$FIELD_VERSIONS
The RDB$FIELD_VERSIONS system table is an Oracle Rdb extension. This table contains one row for each version of each column definition in the database. The following table provides information on the columns of the RDB$FIELD_VERSIONS system table. Data Column Name Type Summary Description RDB$RELATION_ID integer The identifier for a table within the database. RDB$FIELD_ID integer An identifier used internally to name the column represented by this row. RDB$FIELD_NAME char(31) The name of the column. RDB$VERSION integer The version number for the table definition to which this column belongs. RDB$FIELD_TYPE integer The data type of the column represented by this row. This data type must be interpreted according to the rules for interpreting the DSC$B_DTYPE field of class S descriptors (as defined in the OpenVMS Calling Standard). Segmented strings require a unique field type identifier. This identifier is currently 261. RDB$FIELD_LENGTH integer The length of the column represented by this row. This length must be interpreted according to the rules for interpreting the DSC$W_LENGTH field within class S and SD descriptors (as defined in the OpenVMS Calling Standard). RDB$OFFSET integer The byte offset of the column from the beginning of the row. RDB$FIELD_SCALE integer For numeric data types, the scale factor to be applied when interpreting the contents of the column represented by this row. This scale factor must be interpreted according to the rules for interpreting the DSC$B_SCALE field of class SD descriptors (as defined in the OpenVMS Calling Standard). For date-time data types, RDB$FIELD_SCALE is fractional seconds precision. For other non- numeric data types, RDB$FIELD_SCALE is 0. RDB$FLAGS integer Flags. RDB$VALIDATION_BLR list The BLR that represents the of byte SQL check constraint clause varying defined in this version of the column. RDB$COMPUTED_BLR list The BLR that represents the of byte SQL clause, COMPUTED BY, varying defined in this version of the column. RDB$MISSING_VALUE list The BLR that represents the of byte SQL clause, MISSING_VALUE, varying defined in this version of the column. RDB$SEGMENT_LENGTH integer The length of a segmented string segment. For date- time interval fields, the interval leading field precision. RDBVMS$COLLATION_NAME char(31) The name of the collating sequence for the column. RDB$ACCESS_CONTROL list The access control list for of byte the column. varying RDB$DEFAULT_VALUE2 list The SQL default value. of byte varying RDBVMS$SECURITY_AUDIT integer A bit mask that indicates the privileges that will be audited for the database, as specified in the RMU Set Audit command. RDBVMS$SECURITY_ALARM integer A bit mask that indicates the privileges that will produce alarms for the database, as specified in the RMU Set Audit command. RDB$FIELD_SUB_TYPE integer A value that describes the data subtype of RDB$FIELD_ TYPE as shown in Help topic RDB$FIELD_SUB_TYPE. RDB$SECURITY_CLASS char(20) Reserved for future use.
10.1 – RDB$FLAGS
Represents flags for RDB$FIELD_VERSIONS system table. Bit Position Description 0 Not used. 1 Not used. 2 Not used. 3 Used by Oracle Rdb internally. 4 Set if column references a local temporary table (usually a COMPUTED BY column). 5 Use SQL semantics for check constraint processing. 6 AUTOMATIC set on insert. 7 AUTOMATIC set on update. 8 If check constraint fails, use name in message. 9 Column is computed by an IDENTITY sequence. 10 View column is based on a read-only, or dbkey column.
11 – RDB$PARAMETER_SUB_TYPE
For details, see the Help topic RDB$FIELD_SUB_TYPE.
12 – RDB$FIELD_SUB_TYPE
The following table lists the values for the RDB$FIELD_SUB_TYPE and the RDB$PARAMETER_SUB_TYPE columns. RDB$FIELD_TYPE = DSC$K_DTYPE_ADT RDB$FIELD_SUB_TYPE [1] Summary Description Less than 0 Reserved for future use. Equal to 0 Traditional OpenVMS timestamp, which includes year, month, day, hour, minute, second. 7 DATE ANSI, which includes year, month, day. 56 TIME, which includes hour, minute, second. 63 TIMESTAMP, which includes year, month, day, hour, minute, second. 513 INTERVAL YEAR. 514 INTERVAL MONTH. 515 INTERVAL YEAR TO MONTH. 516 INTERVAL DAY. 520 INTERVAL HOUR. 524 INTERVAL DAY TO HOUR. 528 INTERVAL MINUTE. 536 INTERVAL HOUR TO MINUTE. 540 INTERVAL DAY TO MINUTE. 544 INTERVAL SECOND. 560 INTERVAL MINUTE TO SECOND. 568 INTERVAL HOUR TO SECOND. 572 INTERVAL DAY TO SECOND. RDB$FIELD_TYPE = DSC$K_DTYPE_T or DSC$K_DTYPE_VT RDB$FIELD_SUB_TYPE Summary Description Equal to 0 ASCII or DEC_MCS character set. Greater than 0 Character set other than ASCII or DEC_MCS. Less than 0 Special use of character data. RDB$FIELD_TYPE = DSC$K_DTYPE_BLOB [2] RDB$FIELD_SUB_TYPE Summary Description Less than 0 User-specified. Equal to 0 Default. Equal to 1 BLR (query) type. Equal to 2 Character type. Equal to 3 MBLR (definition) type. Equal to 4 Binary type. Equal to 5 OBLR (outline) type. Greater than 5 Reserved for future use. Footnotes: [1] When RDB$FIELD_SUB_TYPE is not equal to 0, then RDB$SEGMENT_LENGTH can hold the interval leading field precision for intervals, and RDB$FIELD_SCALE can hold the fractional seconds precision for interval, time, or timestamp. [2] RDB$SEGMENT_LENGTH is the suggested size for a single binary large object (BLOB) segment.
13 – RDB$FIELDS
The RDB$FIELDS system table describes the global (generic) characteristics of each domain in the database. There is one row for each domain in the database. The following table provides information on the columns of the RDB$FIELDS system table. Data Column Name Type Summary Description RDB$FIELD_NAME char(31) The name of the domain represented by this row. Each row within RDB$FIELDS must have a unique RDB$FIELD_NAME value. RDB$FIELD_TYPE integer The data type of the domain represented by this row. This data type must be interpreted according to the rules for interpreting the DSC$B_DTYPE field of class S descriptors (as defined in the OpenVMS Calling Standard). Segmented strings require a unique field type identifier. This identifier is 261. RDB$FIELD_LENGTH integer The length of the field represented by this row. This length must be interpreted according to the rules for interpreting the DSC$W_LENGTH field within class S and SD descriptors (as defined in OpenVMS Calling Standard). For strings, this field contains the length in octets (8-bit bytes), not in characters. RDB$FIELD_SCALE integer For numeric data types, the scale factor to be applied when interpreting the contents of the field represented by this row. This scale factor must be interpreted according to the rules for interpreting the DSC$B_SCALE field of class SD descriptors (as defined in the OpenVMS Calling Standard). For date-time data types, RDB$FIELD_SCALE is fractional seconds precision. For other non-numeric data types, RDB$FIELD_SCALE is 0. RDB$SYSTEM_FLAG integer A bit mask where the following bits are set: o If Bit 0 is clear, this is a user-defined domain. o If Bit 0 is set, this is a system domain. RDB$VALIDATION_BLR list The BLR that represents the of byte validation expression to be varying checked each time a column based on this domain is updated. RDB$COMPUTED_BLR list The BLR that represents of byte the expression used to varying calculate a value for the column based on this domain. RDB$EDIT_STRING varchar(25The edit string used by interactive SQL when printing the column based on this domain. RDB$EDIT_ STRING can be null. RDB$MISSING_VALUE list The value used when the of byte missing value of the column varying based on this domain is retrieved or displayed. RDB$MISSING_VALUE does not store any value in a column; instead, it flags the column value as missing. RDB$FIELD_SUB_TYPE integer A value that describes the data subtype of RDB$FIELD_ TYPE as shown in the RDB$FIELD_SUB_TYPE Help topic. RDB$DESCRIPTION list A user-supplied description of byte of this domain. varying RDB$VALIDATION_SOURCE list The user's source text for of byte the validation criteria. varying RDB$COMPUTED_SOURCE list The user's source used of byte to calculate a value at varying execution time. RDB$QUERY_NAME char(31) The query name of this domain. Column attributes in RDB$RELATION_FIELDS take precedence over attributes in RDB$FIELDS. If the attribute value is missing in RDB$RELATION_FIELDS, the value from RDB$FIELDS is used. RDB$QUERY_NAME can be null. RDB$QUERY_HEADER list The query header of of byte the domain is used by varying interactive SQL. Column attributes in RDB$RELATION_FIELDS take precedence over attributes in RDB$FIELDS. If the attribute value is missing in RDB$RELATION_FIELDS, the value from RDB$FIELDS is used. RDB$DEFAULT_VALUE list The default value used by of byte non-SQL interfaces when varying no value is specified for a column during a STORE clause. It differs from RDB$MISSING_VALUE in that it holds an actual column value. Column attributes in RDB$RELATION_FIELDS take precedence over attributes in RDB$FIELDS. If the attribute value is missing in RDB$RELATION_FIELDS, the value from RDB$FIELDS is used. RDB$SEGMENT_LENGTH integer The length of a segmented string segment. For date- time interval fields, the interval leading field precision. RDB$EXTENSION_PARAMETERS list Reserved for future use. of byte varying RDB$CDD_NAME list The fully qualified name of of byte the dictionary entity upon varying which the domain definition is based, as specified in the SQL clause, FROM PATHNAME. RDBVMS$COLLATION_NAME char(31) The name of the collating sequence for the domain. RDB$DEFAULT_VALUE2 list The BLR for the SQL default of byte value. This value is used varying when no value is provided in an SQL INSERT statement. RDB$SECURITY_CLASS char(20) Reserved for future use. RDB$FLAGS integer Flags. RDB$CREATED date vms Set when the domain is created. RDB$LAST_ALTERED date vms Set when SQL ALTER DOMAIN statement used. RDB$FIELD_CREATOR char(31) Creator of this domain.
13.1 – RDB$FLAGS
Represents flags for RDB$FIELDS system table. Bit Position Description 0 A SQL CHECK constraint is defined on this domain. 1 AUTOMATIC set on insert. 2 AUTOMATIC set on update. 3 If check constraint fails, use name in message. 4 Column is computed an IDENTITY sequence. 5 View column is based on a read-only, or dbkey column.
14 – RDB$GRANTED_PROFILES
The RDB$GRANTED_PROFILES system table contains information about each profile, and role granted to other roles and users. The following table provides information on the columns of the RDB$GRANTED_PROFILES system table. See also the related RDB$PROFILES system table. Data Column Name Type Summary Description RDB$GRANTEE_PROFILE_ID integer This is a unique identifier generated for the parent RDB$PROFILES row. RDB$PROFILE_TYPE integer Class of profile information: role (1), default role (2), profile (0). RDB$PROFILE_ID integer Identification of the profile or role granted to this user.
15 – RDB$INDEX_SEGMENTS
The RDB$INDEX_SEGMENTS system table describes the columns that make up an index's key. Each index must have at least one column within the key. The following table provides information on the columns of the RDB$INDEX_SEGMENTS system table. Data Column Name Type Summary Description RDB$INDEX_NAME char(31) The name of the index of which this row is a segment. RDB$FIELD_NAME char(31) The name of a column that participates in the index key. This column name matches the name in the RDB$FIELD_NAME column of the RDB$RELATION_FIELDS table. RDB$FIELD_POSITION integer The ordinal position of this key segment within the total index key. No two segments in the key may have the same RDB$FIELD_ POSITION. RDB$FLAGS integer A bit mask where Bit 0 is set for descending segments, otherwise the segments are ascending. RDB$FIELD_LENGTH integer Shortened length of text for compressed indexes. RDBVMS$FIELD_MAPPING_LOW integer Shows the lower limit of the mapping range. RDBVMS$FIELD_MAPPING_HIGH integer Shows the higher limit of the mapping range. RDB$SECURITY_CLASS char(20) Reserved for future use. RDB$CARDINALITY bigint Prefix cardinality for this and all prior key segments (assumes sorting by ordinal position).
16 – RDB$INDICES
The RDB$INDICES system table contains information about indexes in the database. The following table provides information on the columns of the RDB$INDICES system table. Data Column Name Type Summary Description RDB$INDEX_NAME char(31) A unique index name. RDB$RELATION_NAME char(31) The name of the table in which the index is used. RDB$UNIQUE_FLAG integer A value that indicates whether duplicate values are allowed in indexes, as follows: o 0 If duplicate values are allowed. o 1 If no duplicate values are allowed. RDB$ROOT_DBK char(8) A pointer to the base of the index. RDB$INDEX_ID integer The identifier of the index. RDB$FLAGS integer Flags. RDB$SEGMENT_COUNT integer The number of segments in the key. RDB$DESCRIPTION list A user-supplied description of byte of this index. varying RDB$EXTENSION_PARAMETERS list Stores NODE SIZE value, of byte PERCENT FILL value, varying compression algorithm, and compression run length for this index. Also reserved for other future use. RDB$CARDINALITY bigint The number of unique entries for a non-unique index. For a unique index, the number is 0. RDB$SECURITY_CLASS char(20) Reserved for future use. RDB$CREATED date vms Set when the index is created. RDB$LAST_ALTERED date vms Set when SQL ALTER INDEX statement is used. RDB$INDEX_CREATOR char(31) Creator of this index. RDB$KEY_CLUSTER_FACTOR bigint(7) Sorted Index: The ratio of the number of clump changes that occur when you traverse level- 1 index nodes and the duplicate node chains to the number of keys in the index. This statistic is based on entire index traversal. This means last duplicate node of current key is compared with first duplicate node of next key for clump change. Hash Index: The average number of clump changes that occur when you go from system record to hash bucket to overflow hash bucket (if fragmented), and traverse the duplicate node chain for each key. This statistic is based on per key traversal. RDB$DATA_CLUSTER_FACTOR bigint(7) Sorted Index: The ratio of the number of clump changes that occur between adjacent dbkeys in duplicate chains of all keys to the number of keys in the index. For unique index, the dbkeys of adjacent keys are compared for clump change. This statistic is based on entire index traversal. This means last dbkey of current key is compared with first dbkey of next key for clump change. Hashed Index: The average number of clump changes that occur between adjacent dbkeys in a duplicate chain for each key. For a unique index, this value will be always 1. This statistic is based on per key traversal. RDB$INDEX_DEPTH integer Sorted Index: The depth of the B-tree. Hashed Index: This column is not used for hashed indices and is left as 0.
16.1 – RDB$FLAGS
Represents flags for RDB$INDICES system table. Bit Position Description 0 Hashed index. 1 Index segments are numeric with mapping values compression. 2 Hashed ordered index. (If bit is clear, hashed scattered.) 3 Reserved for future use. 4 Run-length compression. 5 Index is disabled or enabled deferred. 6 Build pending (enabled deferred). 7 Reserved for future use. 8 Reserved for future use. 9 Reserved for future use. 10 Reserved for future use. 11 If on, duplicates are compressed. 12 Sorted ranked index. 13 Prefix cardinalities disabled. 14 Use the full collection algorithm for prefix cardinality. 15 Index generated for a constraint when SET FLAGS 'AUTO_ INDEX' was enabled.
17 – RDB$INTERRELATIONS
The RDB$INTERRELATIONS system table contains information that indicates the interdependencies of objects in the database. The RDB$INTERRELATIONS table can be used to determine if an object can be dropped or if some other object depends upon its existence in the database. The following table provides information on the columns of the RDB$INTERRELATIONS system table. Data Column Name Type Summary Description RDB$OBJECT_NAME char(31) The name of the object that cannot be dropped or altered because it is used by some other entity in the database. RDB$SUBOBJECT_NAME char(31) The name of the associated sub-object that cannot be dropped or altered because it is used by another entity in the database. RDB$ENTITY_NAME1 char(31) The name of the entity that depends on the existence of the object identified by the RDB$OBJECT_NAME and RDB$SUBOBJECT_NAME. RDB$ENTITY_NAME2 char(31) If used, the name of the entity, together with RDB$ENTITY_NAME1, that depends on the existence of the object specified in RDB$OBJECT_NAME and RDB$SUBOBJECT_NAME. RDB$USAGE char(31) The relationship among RDB$OBJECT_NAME, RDB$SUBOBJECT_NAME, RDB$ENTITY_NAME1, and RDB$ENTITY_NAME2. RDB$USAGE contains a short description. RDB$FLAGS integer Flags. RDB$CONSTRAINT_NAME char(31) This column is the name of a constraint that is referred to from another system table. The value in this column equates to a value for the same column in the RDB$CONSTRAINTS system table. RDB$SECURITY_CLASS char(20) Reserved for future use.
17.1 – RDB$FLAGS
Represents flags for RDB$INTERRELATIONS system table. Bit Position Description 0 Entity is a module. 1 Object is a module. 2 Entity is a routine. 3 Object is a routine. 4 Entity is a trigger. 5 Object is a trigger. 6 Entity is a constraint. 7 Object is a constraint. 8 Reserved. 9 Reserved. 10 Reserved. 11 Reserved. 12 Reserved. 13 Reserved. 14 Entity is a sequence. 15 Object is a sequence.
18 – RDB$MODULES
The RDB$MODULES system table describes a module as defined by a user. A module can contain a stored procedure or an external function. Each module has a header, a declaration section, and a series of routines. The header and declaration section are defined in RDB$MODULES. (Each routine is defined by an entry in RDB$ROUTINES.) A row is stored in the RDB$MODULES table for each module that is defined by a user. The following table provides information on the columns of the RDB$MODULES system table. Data Column Name Type Summary Description RDB$MODULE_NAME char(31) Name of the module. RDB$MODULE_OWNER char(31) Owner of the module. If the module is an invoker rights module, this column is set to NULL. Otherwise, definers username from this column is used for definers rights checking. RDB$MODULE_ID integer Unique identifier assigned to this module by Oracle Rdb. RDB$MODULE_VERSION char(16) Module version and checksum. Allows runtime validation of the module with respect to the database. RDB$EXTENSION_PARAMETERS list Encoded information for of byte module level declarations. varying RDB$MODULE_HDR_SOURCE list Source of the module header of byte as provided by the definer. varying RDB$DESCRIPTION list Description of the module. of byte varying RDB$ACCESS_CONTROL list Access Control List (ACL) of byte to control access to the varying module. This value can be NULL. RDB$SECURITY_CLASS char(20) Reserved for future use. RDB$CREATED date vms Set when the module is created. RDB$LAST_ALTERED date vms Set when module is altered by the ALTER, RENAME, DROP, GRANT and REVOKE statements. RDB$MODULE_CREATOR char(31) Creator of this module. Differentiates between OWNER and AUTHORIZATION. RDB$VARIABLE_COUNT integer Number of global variables.
19 – RDB$OBJECT_SYNONYMS
The RDB$OBJECT_SYNONYMS system table is created with synonyms are enabled to record the synonym name, type, and target. The following table provides information on the columns of the RDB$OBJECT_SYNONYMS system table. Data Column Name Type Summary Description RDB$CREATED date vms Time and date when synonym entry was created. RDB$LAST_ALTERED date vms Time and date when synonym entry was last altered. RDB$DESCRIPTION list A user-supplied description of byte of the synonym. varying RDB$EXTENSION_PARAMETERS list Reserved for future use. of byte varying RDB$FLAGS integer Flags. RDB$OBJECT_TYPE integer The type of synonym. RDB$SYNONYM_NAME char(31) The synonym to be used by queries. This name is unique within the RDB$OBJECT_SYNONYMS system table. RDB$SYNONYM_VALUE char(31) name of the object for which the synonym is defined. RDB$SYNONYM_CREATOR char(31) Creator of the synonym entry.
19.1 – RDB$FLAGS
Represents flags for RDB$OBJECT_SYNONYMS system table. Bit Position Description 0 When set, this bit indicates that this synonym references another synonym. 1 Reserved for future use. 2 Indicates that the synonym was created by RENAME statement.
20 – RDB$PARAMETERS
The RDB$PARAMETERS system table defines the routine interface for each routine stored in RDB$ROUTINES. Each parameter to a routine (procedure or function) is described by a row in RDB$PARAMETERS. The following table provides information on the columns of the RDB$PARAMETERS system table. Data Column Name Type Summary Description RDB$PARAMETER_NAME char(31) Name of the parameter. RDB$PARAMETER_SOURCE char(31) Source (domain or table) to the routine containing the parameter. RDB$ROUTINE_ID integer Unique identifier assigned to the routine containing this parameter by Oracle Rdb. RDB$ORDINAL_POSITION integer Position in parameter list. Position 0 indicates function result description. RDB$PARAMETER_TYPE integer Data type of the parameter. RDB$PARAMETER_SUB_TYPE integer A value that describes the data subtype of RDB$PARAMETER_TYPE as shown in RDB$FIELD_SUB_TYPE Help topic. RDB$PARAMETER_LENGTH integer Length of the parameter. RDB$PARAMETER_SCALE integer Scale of the data type. RDB$PARAMETER_SEG_LENGTH integer The length of the segmented string segment. For date- time interval fields, the interval leading field precision. RDB$DEFAULT_VALUE2 list Parameter default. of byte varying RDB$FLAGS integer Flags. RDB$DESCRIPTION list Description of the of byte parameter. varying RDB$SECURITY_CLASS char(20) Reserved for future use.
20.1 – RDB$FLAGS
Represents flags for RDB$PARAMETERS system table. Bit Position Description 0 IN (read) INOUT (modify). 1 OUT (write) INOUT (modify). 2 Reserved for future use. 3 BY DESCRIPTOR (default is BY REFERENCE). 4 BY VALUE (Bit number 3 is ignored). 5 Reserved for future use. 6 Set if parameter mode is undefined. If Bits 0 and 1 are both clear, then the parameter is the RETURN TYPE of a function.
21 – RDB$PRIVILEGES
The RDB$PRIVILEGES system table describes the protection for the database objects. There is one row per grantor, grantee, and privileges combination per entity in the database. A row is stored in the RDB$PRIVILEGES table for each user who grants another user privileges for a database object. If the privilege for a database object was granted without the SQL GRANT option, the row of the grantor and grantee is modified. The privilege change takes effect at commit time of the command. NOTE The RDB$PRIVILEGES system table is used only in ANSI databases. The following table provides information on the columns of the RDB$PRIVILEGES system table. Data Column Name Type Summary Description RDB$SUBOBJECT_ID integer The id of the column or routine for which protection is defined. If protection is on a database, module, table, or view, this field is NULL. The value stored in this column must be unique within the database. RDB$OBJECT_ID integer The id of the module, table, sequence, or view for which protection is defined. The column is NULL if the protection is defined for the database. The value stored in this column must be unique within the database. RDB$GRANTOR integer The binary format UIC of the person who defined or changed the privileges. This is usually the UIC of the person who executed the protection command. For an SQL IMPORT statement, the UIC is that of the person who originally defined the protection for the user; not necessarily the person who performed the SQL IMPORT statement. RDB$GRANTEE list The binary format of the of byte UICs of the persons who varying hold privileges on the database object. RDB$PRIV_GRANT integer Specifies the access mask of privileges that the grantee has that he can grant to other users. RDB$PRIV_NOGRANT integer Specifies the access mask of privileges that the grantee has that he can use himself but cannot give to other users. RDB$FLAGS integer Flags. RDB$SECURITY_CLASS char(20) Reserved for future use.
21.1 – RDB$FLAGS
Represents flags for RDB$PRIVILEGES system table. Bit Position Description 0 Privilege is defined for a module and procedure. 1 The data is related to sequences.
22 – RDB$PROFILES
The RDB$PROFILES system table contains information about each profile, user and role defined for the database. The following table provides information on the columns of the RDB$PROFILES system table. See also the related RDB$GRANTED_PROFILES system table. Data Column Name Type Summary Description RDB$CREATED date vms time and date when profile entry was created. RDB$LAST_ALTERED date vms time and date when profile entry was last altered. RDB$DESCRIPTION list Comment for this entry. of byte varying RDB$EXTENSION_ list Extra definitions such as PARAMETERS of byte default transaction. varying RDB$SYSTEM_FLAG integer Set to TRUE (1) if this is a system define role or user, otherwise it is set to FALSE (0). When the RDB$SYSTEM_FLAG is set these entries may not be deleted by a DROP statement. RDB$FLAGS integer Flags. RDB$DEFINE_ACCESS integer Reserved for future use. RDB$CHANGE_ACCESS integer Reserved for future use. RDB$DELETE_ACCESS integer Reserved for future use. RDB$PROFILE_ID integer This is a unique identifier generated for each USER, PROFILE and ROLE added to the database. RDB$PROFILE_TYPE integer Class of profile information: role (1), user (3), profile (0). RDB$PROFILE_NAME char(31) Name of the user, profile or role. This name is unique within the RDB$PROFILES table. RDB$PROFILE_CREATOR char(31) Creator of entry.
22.1 – RDB$FLAGS
Represents flags for RDB$PROFILES system table. Bit Position Description 0 The user entry is disabled (ACCOUNT LOCK). 1 Means that the user/role is identified externally. 2 Reserved for future use. 3 This is a system role. 4 Means the user is assigned a profile.
23 – RDB$QUERY_OUTLINES
The RDB$QUERY_OUTLINES system table contains query outline definitions that are used by the optimizer to retrieve known query outlines prior to optimization. The following table provides information on the columns of the RDB$QUERY_OUTLINES system table. Data Column Name Type Summary Description RDB$OUTLINE_NAME char(31) The query outline name. RDB$BLR_ID char 16 The BLR hashed identifier. This identifier is generated by the optimizer whenever a query outline is created. RDB$MODE integer The query mode (MANDATORY or OPTIONAL). RDB$FLAGS integer Flags. RDB$DESCRIPTION list A user-supplied description of byte of this outline. varying RDB$OUTLINE_BLR list The compiled query outline. of byte varying RDB$SECURITY_CLASS char(20) Reserved for future use. RDB$CREATED date vms Set when the outline is created. RDB$LAST_ALTERED date vms Reserved for future use. RDB$OUTLINE_CREATOR char(31) Creator of this outline.
23.1 – RDB$FLAGS
Represents flags for RDB$QUERY_OUTLINES system table. Bit Position Description 0 This outline has been invalidated by some action, such as dropping a required table or index.
24 – RDB$RELATION_CONSTRAINTS
The RDB$RELATION_CONSTRAINTS system table lists all table- specific constraints. The following table provides information on the columns of the RDB$RELATION_CONSTRAINTS system table. Data Column Name Type Summary Description RDB$CONSTRAINT_MATCH_TYPE integer The match type associated with a referential integrity table-specific constraint. This column is reserved for future use. The value is always 0. RDB$CONSTRAINT_NAME char(31) The name of the constraint defined by the table specified by RDB$RELATION_ NAME. The value in this column equates to a value for the same column in the RDB$CONSTRAINTS system table. RDB$CONSTRAINT_SOURCE list This text string contains of byte the source of the varying constraint from the table definition. RDB$CONSTRAINT_TYPE integer The type of table-specific constraint defined. The values are shown in the RDB$CONSTRAINT_TYPE Help topic. RDB$ERASE_ACTION integer The type of referential integrity erase action specified. This column is reserved for future use. The value is always 0. RDB$FIELD_NAME char(31) The name of the column for which a column-level, table-specific constraint is defined. The column is blank for a table-level constraint. RDB$FLAGS integer Flags. RDB$MODIFY_ACTION integer The type of referential integrity modify action specified. This column is reserved for future use. The value is always 0. RDB$REFD_CONSTRAINT_NAME char(31) The name of the unique or primary key constraint referred to by a referential integrity foreign key constraint. If the constraint is not a referential integrity constraint or no referential integrity constraint was specified, this column will be null. Otherwise, the value in this column will equate to a value for the same columns in the RDB$CONSTRAINTS and RDB$RELATION_CONSTRAINT_ FLDS system tables. This column is used to determine the foreign key referenced table name and referenced column names. RDB$RELATION_NAME char(31) The name of the table on which the specified constraint is defined. The value in this column equates to a value for the same column in the RDB$RELATIONS system table. RDB$SECURITY_CLASS char(20) Reserved for future use.
24.1 – RDB$FLAGS
Represents flags for RDB$RELATION_CONSTRAINTS system table. Bit Position Description 0 This is SQL standard UNIQUE constraint which allows unique values and ignores NULL.
24.2 – RDB$CONSTRAINT_TYPE
The following table lists the values for the RDB$CONSTRAINT_TYPE column. Value Symbol Meaning 1 RDB$K_CON_CONDITION Requires conditional expression constraint. 2 RDB$K_CON_PRIMARY_KEY Primary key constraint. 3 RDB$K_CON_REFERENTIAL Referential (foreign key) constraint. 4 RDB$K_CON_UNIQUE Unique constraint. 5 Reserved for future use. 6 RDB$K_CON_NOT_NULL Not null (missing) constraint.
25 – RDB$RELATION_CONSTRAINT_FLDS
The RDB$RELATION_CONSTRAINT_FLDS system table lists the columns that participate in unique, primary, or foreign key declarations for table-specific constraints. There is one row for each column that represents all or part of a unique, primary, or foreign key constraint. The following table provides information on the columns of the RDB$RELATION_CONSTRAINT_FLDS system table. Data Column Name Type Summary Description RDB$CONSTRAINT_NAME char(31) The name of a constraint for which the specified column participates. RDB$FIELD_NAME char(31) The name of the column that is all or part of the specified constraint. The value in this column is the same as that stored in the RDB$RELATION_FIELDS system table. RDB$FIELD_POSITION integer The ordinal position of the specified column within the column list that declares the unique, primary or foreign key constraint. For column-level constraints, there will always be only one column in the list. The first column in the list has position value 1, the second has position value 2, and so on. RDB$FLAGS integer Reserved for future use. RDB$SECURITY_CLASS char(20) Reserved for future use.
26 – RDB$RELATION_FIELDS
The RDB$RELATION_FIELDS system table contains one row for each column in each table. The following table provides information on the columns of the RDB$RELATION_FIELDS system table. Data Column Name Type Summary Description RDB$RELATION_NAME char(31) The name of the table that contains the column represented by this row. RDB$FIELD_NAME char(31) The name of the column represented by this row within the table. Each RDB$RELATION_FIELDS row that has the same RDB$RELATION_NAME must have a unique RDB$FIELD_ NAME. RDB$FIELD_SOURCE char(31) The name of the domain (from the RDB$FIELD_NAME column within the RDB$FIELDS table) that supplies the definition for this column. RDB$FIELD_ID integer An identifier that can be used within the BLR to name the column represented by this row. Oracle Rdb assigns each column an id that is permanent for as long as the column exists within the table. RDB$FIELD_POSITION integer The ordinal position of the column represented by this row, relative to the other columns in the same table. RDB$QUERY_NAME char(31) The query name of this column. RDB$QUERY_NAME can be null. RDB$UPDATE_FLAG integer A value that indicates whether a column can be updated: o 0 If column cannot be updated. o 1 If column can be updated. RDB$QUERY_HEADER list The query header of this of byte column for use by SQL. varying Column attributes in RDB$RELATION_FIELDS take precedence over RDB$FIELDS. If the attribute value is missing in RDB$RELATION_FIELDS, SQL uses the value from RDB$FIELDS. RDB$DESCRIPTION list A user-supplied description of byte of the contents of this varying row. RDB$VIEW_CONTEXT integer For view tables, this column identifies the context variable used to qualify the view column. This context variable must be defined within the row selection expression that defines the view. The context variable appears in the BLR represented by the column RDB$VIEW_BLR in RDB$RELATIONS. RDB$BASE_FIELD char(31) The local name of the column used as a component of a view. The name is qualified by the context variable identified in RDB$VIEW_CONTEXT. RDB$DEFAULT_VALUE list The default value used by of byte non-SQL interfaces when varying no value is specified for a column during a STORE clause. It differs from RDB$MISSING_VALUE in that it holds an actual column value. Column attributes in RDB$RELATION_FIELDS take precedence over attributes in RDB$FIELDS. If the attribute value is missing in RDB$RELATION_FIELDS, the value from RDB$FIELDS is used. RDB$EDIT_STRING varchar(25The edit string to be used by interactive SQL when printing the column. RDB$EDIT_STRING can be null. RDB$EXTENSION_PARAMETERS list Reserved for future use. of byte varying RDB$ACCESS_CONTROL list The access control list for of byte the column. varying RDB$DEFAULT_VALUE2 list The BLR for SQL default of byte value. This value is used varying when no value is provided in an SQL INSERT statement. RDBVMS$SECURITY_AUDIT integer A bit mask that indicates the privileges that will be audited for the database, as specified in the RMU Set Audit command. RDBVMS$SECURITY_ALARM integer A bit mask that indicates the privileges that will produce alarms for the database, as specified in the RMU Set Audit command. RDB$SECURITY_CLASS char(20) Reserved for future use.
27 – RDB$RELATIONS
The RDB$RELATIONS system table names all the tables and views within the database. There is one row for each table or view. The following table provides information on the columns of the RDB$RELATIONS system table. Data Column Name Type Summary Description RDB$RELATION_NAME char(31) The name of a table within the database. Each row within RBB$RELATIONS must have a unique RDB$RELATION_ NAME. RDB$RELATION_ID integer An identification number used within the BLR to identify a table. RDB$STORAGE_ID integer A pointer to the database logical area where the data for this table is stored. RDB$SYSTEM_FLAG integer A value that indicates whether a table is a system table or a user-defined table: o 0 If a user table. o 1 If a system table. RDB$DBKEY_LENGTH integer The length in bytes of the database key. A database key for a row in a table is 8 bytes, and "n times 8 " for a view row, where "n" is the number of tables referred to in the view. If the view does not contain a dbkey, RDB$DBKEY_ LENGTH is 0. This occurs when the view uses GROUP BY, UNION, or returns a statistical value. RDB$MAX_VERSION integer The number of the current version of the table definition. This value is matched with the RDB$VERSION column in RDB$FIELD_VERSIONS to determine the current row format for the table. RDB$CARDINALITY bigint The number of rows in the table (cardinality). RDB$FLAGS integer Flags. RDB$VIEW_BLR list The BLR that describes the of byte row selection expression varying used to select the rows for the view. If the table is not a view, RDB$VIEW_BLR is missing. RDB$DESCRIPTION list A user-supplied description of byte of this table or view. varying RDB$VIEW_SOURCE list The user's source text for of byte the view definition. varying RDB$ACCESS_CONTROL list The access control policy of byte for the table. varying RDB$EXTENSION_PARAMETERS list Reserved for future use. of byte varying RDB$CDD_NAME list The fully qualified name of of byte the dictionary entity upon varying which the table definition is based, as specified in the SQL clause, FROM PATHNAME. RDBVMS$SECURITY_AUDIT integer A bit mask that indicates the privileges that will be audited for the table, as specified in the RMU Set Audit command. RDBVMS$SECURITY_ALARM integer A bit mask that indicates the privileges that produce alarms for the table, as specified in the RMU Set Audit command. RDB$SECURITY_CLASS char(20) Reserved for future use. RDBVMS$SECURITY_AUDIT2 integer Reserved for future use. RDBVMS$SECURITY_ALARM2 integer Reserved for future use. RDB$CREATED date vms Set when the table or view is created (for system tables it will be the same as the database creation timestamp). RDB$LAST_ALTERED date vms Set when SQL ALTER TABLE, CREATE/ALTER STORAGE MAP, ALTER DOMAIN, GRANT, or REVOKE statements cause changes to this system table. RDB$RELATION_CREATOR char(31) Creator of this system table. RDB$ROW_CLUSTER_FACTOR bigint(7) The ratio of the number of clump changes that occur when you sequentially read the rows to the number of rows in a table. If a row is fragmented and part of its fragment is located in a clump different than the current one or immediate next one then it should be counted as a clump change. RDB$TYPE_ID integer Reserved for future use.
27.1 – RDB$FLAGS
Represents flags for RDB$RELATIONS system table. Bit Position Description 0 This table is a view. 1 This table is not compressed. 2 The SQL clause, WITH CHECK OPTION, is used in this view definition. 3 Indicates a special internal system table. 4 This view is not an ANSI updatable view. 5 Reserved for future use. 6 Reserved for future use. 7 Reserved for future use. 8 Ignore Bit 1 and use RDB$STORAGE_MAPS for compression information. 9 Set for temporary table. 10 Set for global temporary table; clear for local temporary table. 11 Set for delete data on commit; clear for preserve data on commit. 12 Reserved for future use. 13 Set if view or table references a local temporary table. 14 Special read-only information table. 15 System table has storage map. 16 View references only temporary table.
28 – RDB$ROUTINES
The RDB$ROUTINES system table describes each routine that is part of a stored module or a standalone external routine. An external routine can either be part of a module or standalone (outside the context of a module). The following table provides information on the columns of the RDB$ROUTINES system table. Data Column Name Type Summary Description RDB$ROUTINE_NAME char(31) Name of the routine. RDB$GENERIC_ROUTINE_NAME char(31) Reserved for future use. RDB$MODULE_ID integer The identifier of the module that contains this routine. If routine is standalone, value is 0. RDB$ROUTINE_ID integer Unique identifier assigned to this routine. RDB$ROUTINE_VERSION char(16) Routine version and checksum. Allows runtime validation of the routine with respect to the database. RDB$PARAMETER_COUNT integer The number of parameters for this routine. RDB$MIN_PARAMETER_COUNT integer Minimum number of parameters for this routine. RDB$ROUTINE_BLR list The BLR for this routine. of byte If the routine is external, varying this column is set to NULL. RDB$ROUTINE_SOURCE list Source of the routine as of byte provided by the definer. varying RDB$FLAGS integer Flags. RDB$SOURCE_LANGUAGE integer The RDB$SOURCE_LANGUAGE section lists the values for this column. RDB$DESCRIPTION list Description of the routine. of byte varying RDB$ACCESS_CONTROL list The access control list of byte (ACL) to control access to varying the routine. This value can be NULL. RDB$SECURITY_CLASS char(20) Reserved for future use. RDB$EXTENSION_PARAMETERS list Stores interface of byte information about the varying routine. This includes parameter mappings, the shareable image name, and entry point name. RDB$TYPE_ID integer Reserved for future use. RDB$ROUTINE_OWNER char(31) Owner of the routine. This column is only used when the routine is standalone (when RDB$MODULE_ID is 0) otherwise the value is NULL. RDB$CREATED date vms Set when the routine is created (the same as the parent module's creation timestamp). RDB$LAST_ALTERED date vms Set when the routine is modified by the ALTER, RENAME, GRANT, and REVOKE statements. RDB$ROUTINE_CREATOR char(31) Creator of this routine. Differentiates between AUTHORIZATION and OWNER.
28.1 – RDB$FLAGS
Represents flags for RDB$ROUTINES system table. Bit Position Description 0 Routine is a function. (Call returns a result.) 1 Routine is not valid. (Invalidated by a metadata change.) 2 The function is not deterministic (that is, the routine is variant). A subsequent invocation of the routine with identical parameters may return different results. 3 Routine can change the transaction state. 4 Routine is in a secured shareable image. 5 Reserved for future use. 6 Routine is not valid. (Invalidated by a metadata change to the object upon which this routine depends. This dependency is a language semantics dependency.) 7 Reserved for future use. 8 External function returns NULL when called with any NULL parameter. 9 Routine has been analyzed (used for trigger dependency tracking). 10 Routine inserts rows. 11 Routine modifies rows. 12 Routine deletes rows. 13 Routine selects rows. 14 Routine calls other routines. 15 Reserved for future use. 16 Routine created with USAGE IS LOCAL clause. 17 Reserved for future use. 18 Reserved for future use. 19 Routine is a SYSTEM routine. 20 Routine generated by Oracle Rdb. Other bits are reserved for future use.
28.2 – RDB$SOURCE_LANGUAGE
The following table lists the values for the RDB$SOURCE_LANGUAGE column. Value Language 0 Language undefined 1 Ada 2 C 3 COBOL 4 FORTRAN 5 Pascal 6 Reserved for future use. 7 BASIC 8 GENERAL 9 PL/I 10 SQL - default for stored functions and stored procedures
29 – RDB$SEQUENCES
The RDB$SEQUENCES system table contains information about each sequence. The following table provides information on the columns of the RDB$SEQUENCES system table. Data Column Name Type Summary Description RDB$CREATED date vms Time sequence was created. RDB$LAST_ALTERED date vms Last time sequence was altered. RDB$ACCESS_CONTROL list Access control list for of byte this sequence. varying RDB$DESCRIPTION list Description provided for of byte this sequence. varying RDB$START_VALUE bigint Starting value for the sequence. RDB$MINIMUM_SEQUENCE bigint Minimum value for the sequence. RDB$MAXIMUM_SEQUENCE bigint Maximum value for the sequence. RDB$NEXT_SEQUENCE_ bigint Next value available for VALUE use for the sequence. This column is a read only COMPUTED BY column. When the sequence is first defined this column returns NULL. RDB$INCREMENT_VALUE integer Increment value for the sequence. A positive value indicates an ascending sequence, and a negative value indicates a descending sequence. RDB$CACHE_SIZE integer Number of sequence numbers to allocate and hold in memory. If one (1), then NOCACHE was specified and the values will be allocated one at a time. RDB$FLAGS integer Flags. RDB$SEQUENCE_ID integer Unique number assigned to this sequence object. This value is for internal use only. RDB$SEQUENCE_NAME char(31) Unique name of the sequence. RDB$SEQUENCE_CREATOR char(31) Creator of this sequence.
29.1 – RDB$FLAGS
Represents flags for RDB$SEQUENCES system table. Bit Position Description 0 Sequence will cycle. 1 Sequence is ordered. 2 Sequence is random. 3 Indicates that this is a system sequence and may not be dropped. 4 Indicates that there was no minimum value specified. 5 Indicates that there was no maximum value specified. 6 Indicates that this is a column IDENTITY sequence. 7 Indicates that this sequence will wait for locks. 8 Indicates that this sequence will not wait for locks.
30 – RDB$STORAGE_MAPS
The RDB$STORAGE_MAPS system table contains information about each storage map. The following table provides information on the columns of the RDB$STORAGE_MAPS system table. Data Column Name Type Summary Description RDB$MAP_NAME char(31) The name of the storage map. RDB$RELATION_NAME char(31) The name of the table to which the storage map refers. RDB$INDEX_NAME char(31) The name of the index specified in the SQL clause, PLACEMENT VIA INDEX, of the storage map. RDB$FLAGS integer Flags. RDB$MAP_SOURCE list The user's source text for of byte the storage map definition. varying RDB$DESCRIPTION list A user-supplied description of byte of the storage map. varying RDB$EXTENSION_PARAMETERS list Lists the column names of byte for vertical record varying partitioning. RDB$VERTICAL_PARTITION_ integer A counter that indicates INDEX the number of vertical record partitions. If vertical record partitioning is used, there is one RDB$STORAGE_MAPS for each vertical partition. RDB$VERTICAL_PARTITION_ char(31) Name of the vertical record NAME partition. RDB$SECURITY_CLASS char(20) Reserved for future use.
30.1 – RDB$FLAGS
Represents flags for RDB$STORAGE_MAPS system table. Bit Position Description 0 If map is for a mixed format area. 1 If map enables compression. 2 Partition key cannot be updated. 3 Reserved for future use. 4 User named this partition. 5 Override used for strict partitioning - NO REORGANIZE.
31 – RDB$STORAGE_MAP_AREAS
The RDB$STORAGE_MAP_AREAS system table contains information about each storage area to which a storage map refers. The following table provides information on the columns of the RDB$STORAGE_MAP_ AREAS system table. Data Column Name Type Summary Description RDB$MAP_NAME char(31) The name of the storage map. RDB$AREA_NAME char(31) The name of the storage area referred to by the storage map. RDB$ROOT_DBK char(8) A pointer to the root of the SORTED index, if it is a SORTED index. RDB$ORDINAL_POSITION integer The order of the storage area represented by this row in the map. RDB$STORAGE_ID integer For a table, a pointer to the database logical area. For a hashed index, a pointer to the system record. RDB$INDEX_ID integer A pointer to the index logical area. RDB$STORAGE_BLR list The BLR that represents of byte the SQL clause, WITH LIMIT varying OF, in the storage map definition. RDB$DESCRIPTION list Description of this of byte partition. varying RDB$EXTENSION_PARAMETERS list Lists table names and of byte column names that are varying referenced by segmented string storage maps. RDB$VERTICAL_PARTITION_ integer For LIST storage maps, INDEX the value indicates the relationship between areas of a LIST storage map area set. RDB$FLAGS integer Flags. RDB$SECURITY_CLASS char(20) Reserved for future use. RDB$PARTITION_NAME char(31) Name of the index or storage map partition.
31.1 – RDB$FLAGS
Represents flags for RDB$STORAGE_MAP_AREAS system table. Bit Position Description 0 If Bit 0 is clear, the LIST storage area set is filled randomly. If Bit 0 is set, the LIST storage area set is filled sequentially. 1 User named this partition. 2 BUILD PARTITION is required. 3 Deferred build using NOLOGGING.
32 – RDB$SYNONYMS
The RDB$SYNONYMS system table connects the user-visible name of an object to the stored name of an object. The user-visible name of an object might be replicated in multiple schemas, whereas the stored name of an object is unique across all schemas and catalogs. This table is present only in databases that have the SQL multischema feature enabled. Unlike rows in other system tables, the rows in the RDB$SYNONYMS system table are compressed. The following table provides information on the columns of the RDB$SYNONYMS system table. Data Column Name Type Summary Description RDB$SCHEMA_ID integer The RDB$CATALOG_SCHEMA_ID of the schema to which this object belongs. RDB$USER_VISIBLE_NAME char(31) The name of an object as it appears to the user. RDB$OBJECT_TYPE integer A value that represents the type of an object, as follows: o 8 A constraint. o 19 A domain (global field). o 26 An index. o 31 A system table. o 36 A view. o 60 A sequence. o 67 A storage map. o 81 A trigger. o 117 A collating sequence. o 180 An outline. o 192 A type. RDB$STORED_NAME char(31) The name of an object as is actually stored in the database. RDB$SECURITY_CLASS char(20) Reserved for future use.
33 – RDB$TRIGGERS
The RDB$TRIGGERS system table describes the definition of a trigger. The following table provides information on the columns of the RDB$TRIGGERS system table. Data Column Name Type Summary Description RDB$DESCRIPTION list A user-supplied text string of byte describing the trigger. varying RDB$FLAGS integer Flags. RDB$RELATION_NAME char(31) The name of the table for which this trigger is defined. The trigger may be selected on an update to the named table (qualified by the columns described in the RDB$TRIGGER_FIELD_NAME_ LIST). This table is used as a subject table for all contexts that refer to it. RDB$TRIGGER_ACTIONS list A text string containing of byte all the sets of triggered varying actions defined for this trigger. The string consists of one or more sets of clumplets, one set for each triggered action. RDB$TRIGGER_CONTEXTS integer The context number used within the triggered action BLR to map the triggered action BLR to the current context of the triggering update statement. RDB$TRIGGER_FIELD_NAME_ list A text string composed of LIST of byte a count field and one or varying more counted strings. The count is an unsigned word that represents the number of strings in the list. The counted strings are ASCIC names that represent column names. If the trigger is of event type UPDATE, it will be evaluated if one or more of the specified columns has been modified. RDB$TRIGGER_NAME char(31) The name of a trigger. This name must be a unique trigger name within the database. RDB$TRIGGER_NEW_CONTEXT integer A context number used within the triggered action's BLR to refer to the new row values for the subject table for an UPDATE event. RDB$TRIGGER_OLD_CONTEXT integer A context number used within the triggered action's BLR to refer to the old row values of the subject table that existed before an UPDATE event. RDB$TRIGGER_SOURCE list An optional text string for of byte the trigger definition. The varying string is not used by the database system. It should reflect the full definition of the trigger. This column is used by the interfaces to display the trigger definition. RDB$TRIGGER_TYPE integer The type of trigger, as defined by the combination of the trigger action time and the trigger event. Action times are BEFORE and AFTER, and events are INSERT, DELETE, and UPDATE. The values that represent the type of trigger are shown in the TRIGGER_TYPE_ VAL Help topic. RDB$SECURITY_CLASS char(20) Reserved for future use. RDB$CREATED date vms Set when the trigger is created. RDB$LAST_ALTERED date vms Set when SQL ALTER TRIGGER statement is used. RDB$TRIGGER_CREATOR char(31) Creator of this trigger. RDB$EXTENSION_PARAMETERS list Extension parameters. of byte varying
33.1 – RDB$FLAGS
Represents flags for RDB$TRIGGERS system table. Bit Position Description 0 Trigger is currently disabled. 1 Invalid due to changed schema. 2 Referenced table was altered.
33.2 – TRIGGER_TYPE_VAL
The following table lists the values for the RDB$TRIGGER_TYPE column of the RDB$TRIGGERS system table and the different types of triggers they represent. Numeric Value Symbolic Value Description 1 RDB$K_BEFORE_STORE Trigger is evaluated before an INSERT. 2 RDB$K_BEFORE_ERASE Trigger is evaluated before a DELETE. 3 RDB$K_BEFORE_MODIFY Trigger is evaluated before an UPDATE. 4 RDB$K_AFTER_STORE Trigger is evaluated after an INSERT. 5 RDB$K_AFTER_ERASE Trigger is evaluated after a DELETE. 6 RDB$K_AFTER_MODIFY Trigger is evaluated after an UPDATE.
34 – RDB$VIEW_RELATIONS
The RDB$VIEW_RELATIONS system table lists all the tables that participate in a given view. There is one row for each table or view in a view definition. The following table provides information on the columns of the RDB$VIEW_RELATIONS system table. Data Column Name Type Summary Description RDB$VIEW_NAME char(31) Names a view or table that uses another table. The value of RDB$VIEW_NAME is normally a view name, but might also be the name of a table that includes a column computed using a statistical expression. RDB$RELATION_NAME char(31) The name of a table used to form the view. RDB$VIEW_CONTEXT integer An identifier for the context variable used to identify a table in the view. The context variable appears in the BLR represented by the column RDB$VIEW_BLR in RDB$RELATIONS. RDB$SECURITY_CLASS char(20) Reserved for future use.
35 – RDB$WORKLOAD
The RDB$WORKLOAD system table is an optional system table (similar to RDB$SYNONYMS and RDB$CATALOG_SCHEMA). It is created when the database attribute WORKLOAD COLLECTION IS ENABLED is specified on an SQL CREATE or ALTER DATABASE statement. Once created, this system table can never be dropped. The following table provides information on the columns of the RDB$WORKLOAD system table. Data Column Name Type Summary Description RDB$CREATED date vms Time workload entry was created. RDB$LAST_ALTERED date vms Last time statistics were updated. RDB$DUPLICITY_FACTOR bigint(7) Value ranges from 1.0 to table cardinality. Number of duplicate values for an interesting column group (RDB$FIELD_GROUP). RDB$NULL_FACTOR integer(7) Value ranges from 0.0 to 1.0. This is the proportion of table rows that have NULL in one or more columns of an interesting column group. RDB$RELATION_ID integer Base table identifier. RDB$FLAGS integer Reserved for future use. RDB$FIELD_GROUP char(31) Contains up to 15 sorted column identifiers. RDB$SECURITY_CLASS char(20) Reserved for future use.