The dimension must be in your schema or you must have the
DIMENSION system privilege to use this statement.
A dimension is always altered under the rights of the owner.
The following keywords, parameters, and clauses have meaning unique to
DIMENSION. Keywords, parameters, and clauses that do not appear here have the same functionality that they have in the
DIMENSION statement. Refer to CREATE DIMENSION for more information.
Specify the schema of the dimension you want to modify. If you do not specify
schema, then Oracle Database assumes the dimension is in your own schema.
Specify the name of the dimension. This dimension must already exist.
ADD clauses let you add a level, hierarchy, or attribute to the dimension. Adding one of these elements does not invalidate any existing materialized view.
Oracle Database processes
LEVEL clauses prior to any other
DROP clauses let you drop a level, hierarchy, or attribute from the dimension. Any level, hierarchy, or attribute you specify must already exist.
Within one attribute, you can drop one or more level-to-column relationships associated with one level.
Restriction on DROP
If any attributes or hierarchies reference a level, then you cannot drop the level until you either drop all the referencing attributes and hierarchies or specify
CASCADE if you want Oracle Database to drop any attributes or hierarchies that reference the level, along with the level itself.
RESTRICT if you want to prevent Oracle Database from dropping a level that is referenced by any attributes or hierarchies. This is the default.
COMPILE to explicitly recompile an invalidated dimension. Oracle Database automatically compiles a dimension when you issue an
ADD clause or
DROP clause. However, if you alter an object referenced by the dimension (for example, if you drop and then re-create a table referenced in the dimension), Oracle Database invalidates, and you must recompile it explicitly.
Modifying a Dimension: Examples
The following examples modify the
customers_dim dimension in the sample schema
ALTER DIMENSION customers_dim DROP ATTRIBUTE country; ALTER DIMENSION customers_dim ADD LEVEL zone IS customers.cust_postal_code ADD ATTRIBUTE zone DETERMINES (cust_city);