Let us learn about Creating Index-Organized Tables by Creating an Index-Organized Table, further by Creating Index-Organized Tables that Contain Object You use the CREATE TABLE statement to create index-organized tables, but you must provide additional information: An ORGANIZATION INDEX qualifier, which indicates that this is an index-organized table A primary key, specified through a column constraint clause (for a single column primary key) or a table constraint clause (for a multiple-column primary key). Optionally, you can specify the following: The following statement creates an index-organized table: CREATE TABLE admin_docindex( Figure 12. Creating Index organized table Specifying ORGANIZATION INDEX causes the creation of an index-organized table, admin_docindex, where the key columns and nonkey columns reside in an index defined on columns that designate the primary key or keys for the table. In this case, the primary keys are token and doc_id. An overflow segment is specified and is discussed in "Using the Overflow Clause ". Index-organized tables can store object types. The following example creates object type admin_typ, then creates an index-organized table containing a column of object type admin_typ: CREATE OR REPLACE TYPE admin_typ AS OBJECT CREATE TABLE admin_iot (c1 NUMBER primary key, c2 admin_typ) You can also create an index-organized table of object types. For example: CREATE TABLE admin_iot2 OF admin_typ (col1 PRIMARY KEY) Another example, that follows, shows that index-organized tables store nested tables efficiently. For a nested table column, the database internally creates a storage table to hold all the nested table rows. CREATE TYPE project_t AS OBJECT(pno NUMBER, pname VARCHAR2(80)); CREATE TYPE project_set AS TABLE OF project_t; CREATE TABLE proj_tab (eno NUMBER, projects PROJECT_SET) The rows belonging to a single nested table instance are identified by a nested_table_id column. If an ordinary table is used to store nested table columns, the nested table rows typically get de-clustered. But when you use an index-organized table, the nested table rows can be clustered based on the nested_table_id column.Oracle 10g Free Training - Creating Index-Organized Tables
Creating Index-Organized Tables
.
. Creating an Index-Organized Table
token char(20),
doc_id NUMBER,
token_frequency NUMBER,
token_offsets VARCHAR2(512),
CONSTRAINT pk_admin_docindex PRIMARY KEY (token, doc_id))
ORGANIZATION INDEX
TABLESPACE admin_tbs
PCTTHRESHOLD 20
OVERFLOW TABLESPACE admin_tbs2; Creating Index-Organized Tables that Contain Object Types
(col1 NUMBER, col2 VARCHAR2(6));
ORGANIZATION INDEX;
ORGANIZATION INDEX;
/
/
NESTED TABLE projects STORE AS emp_project_tab
((PRIMARY KEY(nested_table_id, pno))
ORGANIZATION INDEX)
RETURN AS LOCATOR;
Viewing Information About Tables
The following views allow you to access information about tables
View
| Description
|
|
|
| These views describe the columns of tables, views, and clusters in the database. Some columns in these views contain statistics that are generated by the
|
| These views describe all relational and object tables in the database. Object tables are not specifically discussed in this book.
|
| These views display comments for tables and views. Comments are entered using the
|
| These views display comments for table and view columns. Comments are entered using the
|
| These views
|
| These views list the data sources for external tables.
|
| These views describe histograms on tables and views.
|
| These views provide column statistics and histogram information extracted from the related
|
| These views describe tables that have been modified since the last time table statistics were gathered on them. They are not populated immediately, but after a time lapse (usually 3 hours).
|
| These views list tables with unused columns, as marked by the
|
| These views list tables that have partially completed
|
Example: Displaying Column Information
Column information, such as name,
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, LAST_ANALYZED FROM DBA_TAB_COLUMNS
WHERE OWNER = 'SYSTEM’
ORDER BY TABLE_NAME;
The following is the output from the query:
TABLE_NAME
| COLUMN_NAME
| DATA_TYPE
| DATA_LENGTH
| LAST_ANALYZED
|
COUNTRIES
| COUNTRY_ID
| CHAR
| 2
| 05-FEB-03
|
COUNTRIES
| COUNTRY_NAME
| VARCHAR2
| 40
| 05-FEB-03
|
COUNTRIES
| REGION_ID
| NUMBER
| 22
| 05-FEB-03
|
DEPARTMENTS
| DEPARTMENT_ID
| NUMBER
| 22
| 05-FEB-03
|
DEPARTMENTS
| DEPARTMENT_NAME
| VARCHAR2
| 30
| 05-FEB-03
|
DEPARTMENTS
| MANAGER_ID
| NUMBER
| 22
| 05-FEB-03
|
DEPARTMENTS
| LOCATION_ID
| NUMBER
| 22
| 05-FEB-03
|
EMPLOYEES
| EMPLOYEE_ID
| NUMBER
| 22
| 05-FEB-03
|
EMPLOYEES
| FIRST_NAME
| VARCHAR2
| 20
| 05-FEB-03
|
EMPLOYEES
| LAST_NAME
| VARCHAR2
| 25
| 05-FEB-03
|
EMPLOYEES
| EMAIL
| VARCHAR2
| 25
| 05-FEB-03
|
.
|
|
|
|
|
.
|
|
|
|
|
.
|
|
|
|
|
LOCATIONS
| COUNTRY_ID
| CHAR
| 2
| 05-FEB-03
|
REGIONS
| REGION_ID
| NUMBER
| 22
| 05-FEB-03
|
REGIONS
| REGION_NAME
| VARCHAR2
| 25
| 05-FEB-03
|
51 rows selected.