1) These are stored in the SYSTEM tablespace.
2) These are the based on the virtual tables.
3) These are owned by the SYS user.
4) These can be queried by a normal user only if O7_DICTIONARY_ACCESSIBILTY parameter is set to
TRUE.
5) The V$FIXED_TABLE view can be queried to list the names of these views.
Which statements listed describe the data dictionary views?
A.1 and 3
B.2, 3, and 5
C.1, 2, and 3
D.2, 3, 4, and 5
Answer: A
Storage of the Data Dictionary
The data dictionary base tables are the first objects created in any Oracle database. All data dictionary tables and views for a database are stored in the SYSTEM
tablespace. Because the SYSTEM
tablespace is always online when the database is open, the data dictionary is always available when the database is open.
How Oracle Database Uses the Data Dictionary
The Oracle Database user SYS
owns all base tables and user-accessible views of the data dictionary. Data in the base tables of the data dictionary is necessary for Oracle Database to function. Therefore, only Oracle Database should write or change data dictionary information. No Oracle Database user should ever alter rows or schema objects contained in the SYS
schema because such activity can compromise data integrity. The security administrator must keep strict control of this central account.
Restricting System Privileges by Securing the Data Dictionary
To secure the data dictionary, set the O7_DICTIONARY_ACCESSIBILITY
initialization parameter to FALSE
, which is the default value. This feature is called the dictionary protection mechanism.
The O7_DICTIONARY_ACCESSIBILITY
initialization parameter controls restrictions on system privileges when you upgrade from Oracle Database release 7 to Oracle8i and later releases. If the parameter is set to TRUE
, then access to objects in the SYS
schema is allowed (Oracle Database release 7 behavior). Because the ANY
privilege applies to the data dictionary, a malicious user with ANY
privilege could access or alter data dictionary tables.
The
V$FIXED_TABLE
view contains information about all of the dynamic performance tables and views.SQL> SELECT COUNT(*)
2 FROM DICTIONARY;
COUNT(*)
----------
2666
1 row selected
SQL> SELECT COUNT(*)
2 FROM dictionary
3 WHERE table_name NOT IN (SELECT NAME FROM v$fixed_table);
COUNT(*)
----------
1622
1 row selected
SQL> col name form a10
SQL> col REFERENCED_NAME form a20
SQL> col owner form a10
SQL> SELECT NAME, referenced_name, referenced_type, owner
2 FROM dba_dependencies
3 WHERE NAME = 'ALL_TABLES';
NAME REFERENCED_NAME REFERENCED_TYPE OWNER
---------- -------------------- ------------------ ----------
ALL_TABLES USER$ TABLE SYS
ALL_TABLES SEG$ TABLE SYS
ALL_TABLES TAB$ TABLE SYS
ALL_TABLES TS$ TABLE SYS
ALL_TABLES ALL_TABLES VIEW PUBLIC
ALL_TABLES DEFERRED_STG$ TABLE SYS
ALL_TABLES OBJ$ TABLE SYS
ALL_TABLES OBJAUTH$ TABLE SYS
ALL_TABLES X$KSPPI TABLE SYS
ALL_TABLES X$KSPPCV TABLE SYS
ALL_TABLES X$KZSRO TABLE SYS
ALL_TABLES V$ENABLEDPRIVS VIEW SYS
12 rows selected
SQL> SELECT t.table_name, t.owner, t.tablespace_name
2 FROM dba_tables t
3 WHERE t.table_name = 'USER$';
TABLE_NAME OWNER TABLESPACE_NAME
------------------------------ ---------- ------------------------------
USER$ SYS SYSTEM
1 row selected
SQL> SELECT t.table_name, t.owner, t.table_name
2 FROM dba_tables t
3 WHERE t.table_name = 'USER$';
TABLE_NAME OWNER TABLE_NAME
------------------------------ ---------- ------------------------------
USER$ SYS USER$
1 row selected