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 – 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.
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.
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.
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.