C.1 Data Dictionary Support

The following topics describe the Oracle Database Gateway for SQL Server data dictionary support.

C.1.1 SQL Server System Tables

SQL Server data dictionary information is stored in the SQL Server database as SQL Server system tables.

All SQL Server system tables have names prefixed with sys. The SQL Server system tables define the structure of a database. When you change data definitions, SQL Server reads and modifies the SQL Server system tables to add information about the user tables.

C.1.2 Accessing the Gateway Data Dictionary

Accessing a gateway data dictionary table or view is identical to accessing a data dictionary in an Oracle database.

You issue a SQL SELECT statement specifying a database link. The Oracle database data dictionary view and column names are used to access the gateway data dictionary in an Oracle database. Synonyms of supported views are also acceptable. For example, the following statement queries the data dictionary table ALL_CATALOG to retrieve all table names in the SQL Server database:

SQL> SELECT * FROM "ALL_CATALOG"@MSQL;

When a data dictionary access query is issued, the gateway:

  1. Maps the requested table, view, or synonym to one or more SQL Server system table names. The gateway translates all data dictionary column names to their corresponding SQL Server column names within the query. If the mapping involves one SQL Server system table, the gateway translates the requested table name to its corresponding SQL Server system table name within the query. If the mapping involves multiple SQL Server system tables, the gateway constructs a join in the query using the translated SQL Server system table names.
  2. Sends the translated query to SQL Server.
  3. Might convert the retrieved SQL Server data to give it the appearance of the Oracle database data dictionary table.
  4. Passes the data dictionary information from the translated SQL Server system table to the Oracle database.

    Note:

    The values returned when querying the gateway data dictionary might not be the same as the ones returned by the Oracle SQL*Plus DESCRIBE command.

C.1.3 Direct Queries to SQL Server Tables

Queries issued directly to individual SQL Server system tables are allowed but they return different results because the SQL Server system table column names differ from those of the data dictionary view.

Also, certain columns in an SQL Server system table cannot be used in data dictionary processing.

C.1.4 Supported Views and Tables

The Oracle Database Gateway for SQL Server supports the following views and tables.

ALL_CATALOG

ALL_COL_COMMENTS

ALL_CONS_COLUMNS

ALL_CONSTRAINTS

ALL_IND_COLUMNS

ALL_INDEXES

ALL_OBJECTS

ALL_TAB_COLUMNS

ALL_TAB_COMMENTS

ALL_TABLES

ALL_USERS

ALL_VIEWS

DBA_CATALOG

DBA_COL_COMMENTS

DBA_OBJECTS

DBA_TAB_COLUMNS

DBA_TAB_COMMENTS

DBA_TABLES

DICT_COLUMNS

DICTIONARY

DUAL

TABLE_PRIVILEGES

USER_CATALOG

USER_COL_COMMENTS

USER_CONS_COLUMNS

USER_CONSTRAINTS

USER_IND_COLUMNS

USER_INDEXES

USER_OBJECTS

USER_TAB_COLUMNS

USER_TAB_COMMENTS

USER_TABLES

USER_USERS

USER_VIEWS

No other Oracle database data dictionary tables or views are supported. If you use a view not on the list, you will receive the Oracle database error code for no more rows available.

Queries through the gateway of any data dictionary table or view beginning with ALL_ can return rows from the SQL Server database even when access privileges for those SQL Server objects have not been granted. When querying an Oracle database with the Oracle data dictionary, rows are returned only for those objects you are permitted to access.