Professional Documents
Culture Documents
• In 1977, Larry Ellison, Bob Miner and Ed Oates founded Software Development
Laboratories to undertake development work
• After reading a paper by Codd in IBM Journal of Research and Development, they created
Oracle. The first version was never released. It was written in Assembly language of PDP
which ran in 128kb of RAM.
• Version 2.0 of Oracle was released in 1979 and it became first commercial relational
database and first SQL database. The company changed its name to Relational Software
Inc. (RSI).
• In 1981, RSI started developing tools for Oracle.
• In 1982, RSI was renamed to Oracle Corporation. It held its first user conference in San
Francisco.
• In 1983, Oracle released version 3.0, which was rewritten in C language and ran on
multiple platforms.
• In 1984, Oracle version 4.0 was released. It contained features like concurrency control -
multi-version read consistency etc.
• By 1985, Oracle released version 5.0 and became the first relational database that worked in
client/server environment.
• In 1986, Oracle goes public on the NASDAQ exchange.
• In 1987, Oracle wanted to create enterprise applications that take advantage of their
database.
• In 1988, Oracle version 6.0 was released. It provided row-level locking, hot backup and
PL/SQL as main features.
• By 1989, Oracle moved to new headquarters in Redwood Shores, California.
• In 1990, they released Oracle Applications Release 8, which included account software for
client/server
• In 1992, they released Oracle 7.0. It provided better performance, administrative utilities,
application development tools, security features, stored procedures, triggers and
declarative integrity.
• In 1995, Oracle became the first major company to announce a comprehensive internet
strategy.
• In 1997, Oracle released Oracle 8.0 and Oracle Applications 10.7. It started embracing
Java. Partitioning, support for different types of data like images, large text, external data
etc.(lobs) are provided. It also started providing support for Object in database becoming an
Object-Relational DBMS
• By 1999, Oracle realized that "Internet Changes Everything". Oracle released Oracle 8i
and Oracle Applications 11i. They supported open standards like XML. Oracle8i provided
Java Virtual Machine (JVM) to run Java program in Oracle Database and also scalability,
which was required for internet databases.
To read more about what is new in Oracle8i, read What's new in Oracle8i and PL/SQL
Enhancements articles.
• In 2000, Oracle9iAS was released. Oracle corporation is no longer a company providing
only database management system and instead started providing all that it takes to develop
and deploy a complete application. AS(Application Server) runs on middle tier in 3-tier
Client/Server architecture boosting the performance.
• In 2001, Oracle9i was released. It allows Oracle to run on RAC (Real Application Cluster),
which is a collection of low-cost servers. It also allowed XML documents to be stored and
queried in Oracle Database.
You can get information about new features that were introduced in Oracle9i using New
features of Oracle9i Database
• In 2003, Oracle10g was released, where g stands for Grid computing, which servers
computing power across the enterprise as a utility, automatically shifting processing load
based on demand. Oracle10g also made a lot of administrative tasks automatic.
• In 2007, Oracle has released Oracle11g. The new version focused on better partitioning,
easy migration etc.
This can reduce logical I/O from tens of thousands to a single row fetch, resulting in blisteringly
fast response time, but careful attention must be paid to choosing the proper materialized view
partition keys and the best refresh interval.
The problem with materialized view for pre-joined tables is keeping them refreshed. Because the
materialized view is built from many tables, and changes to the base tables require an update to the
materialized view.
• You must have been granted the CREATE MATERIALIZED VIEW system privilege and
either the CREATE TABLE or CREATE ANY TABLE system privilege.
• You must also have access to any master tables of the materialized view that you do not
own, either through a SELECT object privilege on each of the tables or through the SELECT
ANY TABLE system privilege.
Dimension
A dimension is an Oracle object which defines a hierarchical (parent/child) relationships
between columns, where all the columns do not have to come from the same table. It is
highly recommended that dimensions on your data are defined because they help query
rewrite and the summary advisor make better decisions.
Another issue for the database designer is that frequently queries will not involve the
dimension column directly but refer to a column which is related to the dimension. e.g. the
query refers to Tuesday rather than a specific date.
However, columns in one column set (called a level) can come from a different table than
columns in another set. The optimizer uses these relationships with materialized views to
perform query rewrite. The SQLAccess Advisor uses these relationships to recommend
creation of specific materialized views.
Because Oracle does not prevent other transactions from modifying the data read by
a query, that data can be changed by other transactions between two executions of
the query. Thus, a transaction that runs a given query twice can experience both
nonrepeatable read and phantoms.
Serializable Serializable transactions see only those changes that were committed at the time the
transaction began, plus those changes made by the transaction itself through
INSERT, UPDATE, and DELETE statements. Serializable transactions do not
experience nonrepeatable reads or phantoms.
Read-only Read-only transactions see only those changes that were committed at the time the
transaction began and do not allow INSERT, UPDATE, and DELETE statements.
Modes of Locking
Oracle uses two modes of locking in a multiuser database:
• Exclusive lock mode prevents the associates resource from being shared. This lock mode is
obtained to modify data. The first transaction to lock a resource exclusively is the only
transaction that can alter the resource until the exclusive lock is released.
• Share lock mode allows the associated resource to be shared, depending on the operations
involved. Multiple users reading data can share the data, holding share locks to prevent
concurrent access by a writer (who needs an exclusive lock). Several transactions can
acquire share locks on the same resource.
Lock Duration
All locks acquired by statements within a transaction are held for the duration of the transaction,
preventing destructive interference including dirty reads, lost updates, and destructive DDL
operations from concurrent transactions. The changes made by the SQL statements of one
transaction become visible only to other transactions that start after the first transaction is
committed.
Oracle releases all locks acquired by the statements within a transaction when you either commit or
undo the transaction. Oracle also releases locks acquired after a savepoint when rolling back to the
savepoint. However, only transactions not waiting for the previously locked resources can acquire
locks on the now available resources. Waiting transactions will continue to wait until after the
original transaction commits or rolls back completely.
Types of Locks
Oracle automatically uses different types of locks to control concurrent access to data and to
prevent destructive interaction between users. Oracle automatically locks a resource on behalf of a
transaction to prevent other transactions from doing something also requiring exclusive access to
the same resource. The lock is released automatically when some event occurs so that the
transaction no longer requires the resource.
Throughout its operation, Oracle automatically acquires different types of locks at different levels
of restrictiveness depending on the resource being locked and the operation being performed.
Oracle locks fall into one of three general categories.
Lock Description
DML locks (data DML locks protect data. For example, table locks lock entire tables, row
locks) locks lock selected rows.
DDL locks DDL locks protect the structure of schema objects—for example, the
(dictionary locks) definitions of tables and views.
Internal locks and Internal locks and latches protect internal database structures such as
latches datafiles. Internal locks and latches are entirely automatic.
DML Locks
The purpose of a DML lock (data lock) is to guarantee the integrity of data being accessed
concurrently by multiple users. DML locks prevent destructive interference of simultaneous
conflicting DML or DDL operations. DML statements automatically acquire both table-level locks
and row-level locks.
DDL Locks
A data dictionary lock (DDL) protects the definition of a schema object while that object is acted
upon or referred to by an ongoing DDL operation. Recall that a DDL statement implicitly commits
its transaction. For example, assume that a user creates a procedure. On behalf of the user's single-
statement transaction, Oracle automatically acquires DDL locks for all schema objects referenced in
the procedure definition. The DDL locks prevent objects referenced in the procedure from being
altered or dropped before the procedure compilation is complete.