Managing Oracle Metadata

Topics:

When the server accesses a data source, it needs to know how to interpret the data stored there. For each data source the server will access, you create a synonym that describes the structure of the data source and the server mapping of the Oracle data types.

Creating Synonyms

How to:

Reference:

x

Synonyms define unique names (or aliases) for each Oracle table or view that is accessible from the server. Synonyms are useful because they hide the underlying data source location and identity from client applications. They also provide support for extended metadata features of the server, such as virtual fields and additional security mechanisms.

Using synonyms allows an object to be moved or renamed while allowing client applications to continue functioning without modification. The only modification required is a redefinition of the synonym on the server. The result of creating a synonym is a Master File and an Access File, which represent the server metadata.

Note that creating a synonym for a stored procedure is described with reporting against a stored procedure, in Generating a Synonym for a Stored Procedure.

Procedure: How to Create a Synonym

  1. From the Web Console sidebar, click Applications or Connect to Data.

    The Applications page opens.

  2. If you started from the Applications page, right-click an application folder, point to New, and click Synonym on the context menu.

    The Connect to Data page opens.

  3. On the Configured list, click the down arrow next to a connection for the configured adapter, or right-click a connection.

    Depending on the type of adapter you chose, one of the following options appears on the context menu.

    • Show DBMS objects. This opens the page for selecting synonym objects and properties.
    • Create metadata objects. This opens the page for selecting synonym objects and properties.
    • Show files. This opens a file picker. After you choose a file of the correct type, the page for selecting synonym objects and properties opens.
    • Show local files. This opens a file picker. After you choose a file of the correct type, the page for selecting synonym objects and properties opens.
    • Show topics. This opens the page for selecting synonym objects and properties for topics within the Kafka environment.
  4. Enter values for the parameters required by the adapter as described in the chapter for your adapter.
  5. After entering the parameter values, click the highlighted button on the ribbon.

    The button may be labeled Next, Create Synonym, Create Base Synonyms, Create Cluster Synonym, or Update Base Synonyms.

    The synonym creation process for most adapters has been consolidated so that you can enter all necessary parameters on one page. However, for some adapters such as LDAP, you must click Next buttons until you get to a page that has a Create Synonym button.

The synonym is created and added under the specified application directory.

Note: When creating a synonym, if you choose the Validate check box (where available), the server adjusts special characters and checks for reserved words. For more information, see Validation for Special Characters and Reserved Words.

Reference: Synonym Creation Parameters for Oracle

The following list describes the synonym creation parameters for which you can supply values.

Restrict Object Type to

Restrict candidates for synonym creation based on the selected object type(s): Tables, Views, External SQL Scripts, and any other supported objects.

Choosing External SQL Scripts from the drop-down list enables you to represent an SQL Query as a synonym for read-only reporting. A Synonym candidate can be any file that contains one (and only one) valid SQL Query and does not contain end-of-statement delimiters (";" or "/") and comments.

Depending on the adapter, you can further restrict your search by choosing check boxes for listed objects.

Filter by Owner/Schema and Object name

Selecting this option adds the Owner/Schema and Object Name parameters to the screen.

  • Owner/Schema. Type a string for filtering the selection, inserting the wildcard character (%) as needed at the beginning and/or end of the string. For example, enter: ABC% to select tables or views whose owner/schema begin with the letters ABC; %ABC to select tables or views whose owner/schema end with the letters ABC; %ABC% to select tables or views whose owner/schema contain the letters ABC at the beginning, middle, or end.
  • Object name. Type a string for filtering the object names, inserting the wildcard character (%) as needed at the beginning and/or end of the string. For example, enter: ABC% to select all objects whose names begin with the letters ABC; %ABC to select all whose names end with the letters ABC; %ABC% to select all whose names contain the letters ABC at the beginning, middle, or end.
Location of External SQL Scripts

xIf you specify External SQL Scripts in the Restrict Object type to field, these additional fields are displayed.

The following standard naming conventions apply for UNIX, IBM i IFS, and z/OS HFS:

  • In the Base Location field, specify the physical directory location of the file that contains the SQL Query. You can type a directory name or click on the ellipsis. This opens the Select Base Location dialog box.
  • In the Document Name field, enter the file name with or without wild card characters.
  • In the Document Extension field, enter the extension of the script files to filter the list of candidates.

On IBM i, you can use alternative IFS naming conventions to access library members. The following entry illustrates this method:

  • In the Base Location field, enter:
    /QSYS.LIB/MYLIBRARY.LIB/MYSRC.FILE
  • The Document Extension is understood to be MBR. You can enter this value explicitly or leave the input box blank.

During synonym generation, the adapter issues native API calls to obtain a list of elements in the select list and builds the Master File with a field for each element. The generated Access File references the location of the SQL script in the DATASET attribute, which contains the full path, including the name and extension of the file containing the SQL Query. For example,

DATASET=/ul/home2/apps/report3.sql

When a WebFOCUS report is created, the SQL Query is used to access data.

Cardinality

Select the Cardinality check box to reflect the current cardinality (number of rows or tuples) in the table during metadata creation. Cardinality is used for equi-joins. The order of retrieval is based on the size (cardinality) of the table. Smaller tables are read first.

If the cardinality of the tables to be used in the application are dynamic, it may not be beneficial to choose this setting.

Build cluster using foreign keys (deprecated)

You can select the Build cluster using foreign keys check box to include within this synonym every table related to the current table by a foreign key. However, this option has been deprecated, as the recommended way to create a cluster is by using the Synonym Editor. The resulting multi-table synonym describes all of the foreign key relationships of this table.

Dynamic columns

To specify that the Master File created for the synonym should not contain column information, select the Dynamic columns check box.

If this option is selected, column data is retrieved dynamically from the data source at the time of the request.

For Subquery

Only available when External SQL Scripts is selected from the Restrict objects type to drop-down menu. When selected, a SUBQUERY keyword is added to the Access File of the generated synonym. If the corresponding SQL string has valid syntax that can be used in the FROM statement of the generated SQL (what is known as a Derived Table), then the SQL SCRIPT will be processed as a subquery embedded into a FROM clause. This usage allows for more flexibility. For example, the synonym can be used as a target for a JOIN.

If the SQL SCRIPT has parameter markers, such as ? or :, or the syntax contains constructs that are invalid for a derived table, for example ORDER BY, then this keyword should not be selected. At runtime, if SUBQUERY=Y is present and it is determined that the SQL SCRIPT cannot be used in the FROM statement, the setting will be ignored, and a FOC1782 warning message will be issued. The default is selected (SUBQUERY=Y).

Application

Select an application directory. The default value is baseapp.

Prefix/Suffix

If you have tables with identical table names, assign a prefix or a suffix to distinguish them. For example, if you have identically named human resources and payroll tables, assign the prefix HR to distinguish the synonyms for the human resources tables. Note that the resulting synonym name cannot exceed 64 characters.

If all tables and views have unique names, leave the prefix and suffix fields blank.

Customize data type mappings

To change the data type mappings from their default settings, select this check box. The customizable mappings are displayed.

For information about customizable mappings, see Data Type Support.

Update or Create Metadata

Select Create to overwrite any existing synonym with the same fully-qualified name, or Update to synchronize the metadata with an existing synonym. If you select Update, the next screen will show a list of attributes from the DBMS catalog that you can check to allow attributes from the DBMS catalog to override attributes from the existing synonym.

Overwrite Existing Synonyms

To specify that this synonym should overwrite any earlier synonym with the same fully qualified name, select the Overwrite existing synonyms check box.

Note: The connected user must have operating system write privileges in order to recreate a synonym.

Default Synonym Name

This column displays the name that will be assigned to each synonym. To assign a different name, replace the displayed value.

Owner/Schema

The user account that created the object or a collection of objects owned by a user.

Table name

Is the name of the underlying object.

Type

The object type (Table, View, and so on).

Select tables

Select tables for which you wish to create synonyms:

  • To select all tables in the list, select the Select All check box.
  • To select specific tables, select the corresponding check boxes.

Example: Sample Generated Synonym

An Adapter for Oracle synonym comprises a Master File and an Access File. This is a synonym for the table nf29004.

Generated Master File nf29004.mas

FILE=DIVISION, SUFFIX=SQLORA ,$
SEGNAME=SEG1_4, SEGTYPE=S0 ,$
FIELD=DIVISION4,    DIVISION4,    I9,  I4,  MISSING=OFF ,$
FIELD=DIVISION_NA4, DIVISION_NA4, A25, A25, MISSING=ON  ,$
FIELD=DIVISION_HE4, DIVISION_HE4, I9,  I4,  MISSING=ON  ,$

Generated Access File nf29004.acx

SEGNAME=SEG1_4,TABLENAME=EDAQA.NF29004,
CONNECTION=ORA901,KEYS=1, WRITE=YES,$

Reference: Mapping Oracle Comments into a Synonym

When you generate a synonym for an Oracle table, the adapter maps each:

  • Oracle table comment from the Oracle data dictionary to a Remark attribute in the Master File of the synonym.
  • Oracle column comment from the Oracle data dictionary to a Description attribute in the Master File of the synonym.

Reference: Access File Keywords

This chart describes the keywords in the Access File.

Keyword

Description

SEGNAME

Value must be identical to the SEGNAME value in the Master File.

TABLENAME

Identifies the Oracle table. The value assigned to this attribute can include the name of the owner (also known as schema) and the database link name as follows:

TABLENAME=[owner.]table[@databaselink]
CONNECTION

Indicates a previously declared connection. The syntax is:

CONNECTION=connection

CONNECTION=' ' indicates access to the local Oracle database server.

Absence of the CONNECTION attribute indicates access to the default database server.

KEYS

Indicates how many columns constitute the primary key for the table. Corresponds to the first n fields in the Master File segment. This attribute requires the columns that constitute the key to be described first in the Master File.

See the KEY attribute below, for information about specifying the key fields without having to describe them first in the Master File.

Note: If the table does not have the primary key, then the first unique index may be taken instead.

KEY

Specifies the columns that participate in the primary key without having to describe them first in the Master File. The syntax is:

KEY=fld1/fld2/.../fldn
WRITE

Specifies whether write operations are allowed against the table.

KEYFLD
IXFLD

Supply the names of the primary key and foreign key fields that implement the relationships established by the multi-table Master File. Together, KEYFLD and IXFLD identify the field shared by a related table pair.

  • KEYFLD is the FIELDNAME of the common column from the parent table.
  • IXFLD is the FIELDNAME of the common column from the related table.

KEYFLD and IXFLD must have the same data type. It is recommended, but not required, that their lengths also be the same.

Note: An RDBMS index on both the KEYFLD and IXFLD columns provides the RDBMS with a greater opportunity to produce efficient joins. The columns must have the same data type. If their length is the same, the RDBMS handles the join more efficiently.

INDEX_NAME
INDEX_UNIQUE
INDEX_COLUMNS
INDEX_ORDER

Indicate a name of the index in a database, uniqueness, name, and order of the indexed column(s).

Reference: Managing Synonyms

Once you have created a synonym, you can right-click the synonym name in the Adapter navigation pane of either the Web Console or the Data Management Console to access the available options.

For a list of options, see Synonym Management Options.

Accessing Multiple Database Servers in One SQL Request

To access a remote Oracle table using DATABASE LINKs, the following conditions must exist:

  • The Oracle database server to which you are connected must have a valid DATABASE LINK defined.
  • The TABLENAME attribute in the Access File for the Oracle table to be queried must have the following format:
    TABLENAME=[owner.]table@databaselink

    where:

    owner

    Is the user ID by default. It can consist of a maximum of 30 characters. Oracle prefers that the value be uppercase.

    table

    Is the name of the table or view. It can consist of a maximum of 30 characters.

    databaselink

    Is the valid DATABASE LINK name defined in the currently connected Oracle database server.

    This format for TABLENAME can be placed in the Access File manually or using the CREATE SYNONYM command. For example:

    CREATE SYNONYM filename FOR owner.table@databaselink DBMS SQLORA

Once you have met the above conditions, all requests for the table will be processed on the remote Oracle database server specified using the DATABASE LINK name. Using this method is another way to access multiple remote servers in one SQL request.

Oracle Data Type Support

SQL Data Type mapping options are available in a report available from the Web Console.

For more information, see How to Access the Data Type Report.

Controlling the Mapping of Variable-Length Data Types

How to:

The SET parameter VARCHAR controls the mapping of the Oracle data types VARCHAR, VARCHAR2, and NVARCHAR2. By default, the server maps these data types as variable character (AnV).

The following table lists data type mappings based on the value of VARCHAR:

Oracle Data Type

 

Remarks

VARCHAR ON

VARCHAR OFF

USAGE

ACTUAL

USAGE

ACTUAL

VARCHAR (n)

n is an integer between 1 and 4000

AnV

AnV

An

An

VARCHAR2 (n)

n is an integer between 1 and 4000

AnV

AnV

An

An

NVARCHAR2 (n)

n is an integer between 1 and 4000

AmV

AmV

Am

Am

Syntax: How to Control the Mapping of Variable-Length Data Types

ENGINE SQLORA SET VARCHAR {ON|OFF}

where:

SQLORA

Indicates the adapter. You can omit this value if you previously issued the SET SQLENGINE command.

ON

Maps the Oracle data types VARCHAR, VARCHAR2, and NVARCHAR2 as variable-length alphanumeric (AnV). This is required for Unicode environments. ON is the default value.

OFF

Maps the Oracle data types VARCHAR, VARCHAR2, and NVARCHAR2 as alphanumeric (A). ON is the default value.

Considerations for the CHAR and VARCHAR2 Data Types

How to:

Special attention must be paid to CHAR and VARCHAR2 data types. When you compare a CHAR data type column to a VARCHAR2 data type column, where the only difference is additional trailing spaces in the CHAR data type column, Oracle treats the column values as different.

The SET parameter lets you specify which of the two data types will be used for inserting, updating, and retrieving data.

If you create the tables outside of the server, we recommend that you use either CHAR or VARCHAR2 data types, but not both. If you create a table with both data types, you might not be able to retrieve the data you inserted due to Oracle's comparison mechanism. When inserting data into VARCHAR2 columns outside of the server, do not insert any trailing spaces.

If you use the server to generate Oracle tables and retrieve data, you will not encounter this problem, since the data type being used will be either CHAR or VARCHAR2, depending upon the ORACHAR setting.

Syntax: How to Set ORACHAR

ENGINE SQLORA SET ORACHAR {FIX|VAR}

where:

SQLORA

Indicates the adapter. You can omit this value if you previously issued the SET SQLENGINE command.

FIX

Uses the CHAR data type. This is the default value.

VAR

Uses the VARCHAR2 data type.

Trailing Blanks in SQL Expressions

The new SQL Expression generator in the TABLE Adapter by default preserves literal contents, including trailing blanks in string literals and the fractional part and exponential notation in numeric literals. This allows greater control over the generated SQL.

In some rare cases when trailing blanks are not needed, the following syntax

ENGINE SQLORA SET TRIM_LITERALS ON

is available to ensure backward compatibility.

Changing the Precision and Scale of Numeric Columns

You can alter the length and scale of numeric columns returned by a SELECT request to the server by creating different specifications in your login profile or in a stored procedure. The conversion settings are reflected in the Master File in the USAGE and ACTUAL formats of the fields generated by CREATE SYNONYM. This affects how the fields are processed and formatted by the server.

Tip: You can change this setting manually or from the Web Console.

For more information, see Override the Default Precision and Scale.

Considerations for the NUMBER Data Type

How to:

When working with the NUMBER data type, where the precision is between 1 and 31, and scale is not negative and does not exceed precision, the data type is mapped to the server data type decimal (P) of corresponding precision and scale. Note that the resulting display length has to accommodate for sign and possible decimal point, thus it will exceed precision by 1 or 2.

When the NUMBER data type has precision 38 and scale 0, by default the data type is mapped to the server data type Integer (I), with a display length of 11.

Otherwise, by default, the NUMBER data type is mapped to the server data type double float (D), with a precision of 20 and a scale of 2.

Use the ORANUMBER setting to override the default mapping of the NUMBER data type, where the precision is between 32 and 38 and scale is not negative .

Syntax: How to Set ORANUMBER

ENGINE SQLORA SET ORANUMBER {COMPAT|DECIMAL}

where:

SQLORA

Indicates the adapter. You can omit this value if you previously issued the SET SQLENGINE=SQLORA command.

COMPAT

Indicates that the NUMBER data type will be mapped using the default behavior described above.

DECIMAL

When NUMBER data type has precision between 32 and 38 and scale is not negative, the NUMBER data type precision (and possibly scale) will be truncated down to 31 prior to mapping, and then the data type will be mapped to the server data type decimal (P) as described above.

WebFOCUS

Feedback