The OLAP_API_SESSION_INIT
package provides procedures for maintaining a table of initialization parameters for the OLAP API.
This chapter contains the following topics:
The OLAP_API_SESSION_INIT
package contains procedures for maintaining a configuration table of initialization parameters. When the OLAP API opens a session, it executes the ALTER SESSION
commands listed in the table for any user who has the specified roles. Only the OLAP API uses this table; no other type of application executes the commands stored in it.
This functionality provides an alternative to setting these parameters in the database initialization file or the init.ora
file, which would alter the environment for all users.
During installation, the table is populated with ALTER SESSION
commands that have been shown to enhance the performance of the OLAP API. Unless new settings prove to be more beneficial, you do not need to make changes to the table.
The information in the table can be queried through the ALL_OLAP_ALTER_SESSION
view alias, which is also described in this chapter.
Note:
This package is owned by theSYS
user. To use it, you must either be a privileged user or have explicit execution rights.ALL_OLAP_ALTER_SESSION
is the public synonym for V$OLAP_ALTER_SESSION
, which is a view of the OLAP$ALTER_SESSION
table. The view and table are owned by the SYS
user.
Each row of ALL_OLAP_ALTER_SESSION
identifies a role and a session initialization parameter. When a user opens a session using the OLAP API, the session is initialized using the parameters for roles granted to that user. For example, if ALL_OLAP_ALTER_SESSION
has rows for the OLAP_USER
and the OLAP_DBA
roles, then a user with the OLAP_USER
role will only have the privileges set for the OLAP_USER
role. The privileges for the OLAP_DBA
role will be ignored.
The following table describes the subprograms provided in OLAP_API_SESSION_INIT
.
Table 5-2 OLAP_API_SESSION_INIT Subprograms
Subprogram | Description |
---|---|
Specifies an |
|
Removes orphaned data, that is, any |
|
Removes a previously defined |
This procedure specifies an ALTER SESSION
parameter for OLAP API users with a particular database role. It adds a row to the OLAP$ALTER_SESSION
table.
ADD_ALTER_SESSION ( role_name IN VARCHAR2, session_parameter IN VARCHAR2 );
The role_name
and session_parameter
are added as a row in OLAP$ALTER_SESSION
.
Table 5-3 ADD_ALTER_SESSION Procedure Parameters
Parameter | Description |
---|---|
|
The name of a valid role in the database. Required. |
|
A parameter that can be set with a SQL |
The following example inserts a row in OLAP$ALTER_SESSION
that turns on query rewrite for users with the OLAP_DBA
role.
SQL> EXECUTE olap_api_session_init.add_alter_session('OLAP_DBA', 'SET QUERY_REWRITE_ENABLED=TRUE'); Row inserted SQL> SELECT * FROM all_olap_alter_session WHERE role='OLAP_DBA'; ROLE CLAUSE_TEXT ------------ ------------------------------------------------------------ OLAP_DBA ALTER SESSION SET QUERY_REWRITE_ENABLED=TRUE
This procedure removes all ALTER SESSION
parameters for any role that is not currently defined in the database. It removes all orphaned rows in the OLAP$ALTER_SESSION
table for those roles.
CLEAN_ALTER_SESSION ();
The following example deletes all orphaned rows.
SQL> EXECUTE olap_api_session_init.clean_alter_session();
This procedure removes a previously defined ALTER SESSION
parameter for OLAP API users with a particular database role. It deletes a row from the OLAP$ALTER_SESSION
table.
DELETE_ALTER_SESSION ( role_name IN VARCHAR2, session_parameter IN VARCHAR2);
The role_name
and session_parameter
together uniquely identify a row in OLAP$ALTER_SESSION
.
Table 5-4 DELETE_ALTER_SESSION Procedure Parameters
Parameter | Description |
---|---|
role_name |
The name of a valid role in the database. Required. |
session_parameter |
A parameter that can be set with a SQL |
The following call deletes a row in OLAP$ALTER_SESSION
that contains a value of OLAP_DBA
in the first column and QUERY_REWRITE_ENABLED=TRUE
in the second column.
SQL> EXECUTE olap_api_session_init.delete_alter_session('OLAP_DBA', 'SET QUERY_REWRITE_ENABLED=TRUE'); SQL> SELECT * FROM all_olap_alter_session WHERE role='OLAP_DBA'; no rows selected