- About Relational Databases
- Schema Objects
- Data Access
- Transaction Management
- Oracle Database Architecture
Every
organization has information that it must store and manage to meet its
requirements. For example, a corporation must collect and maintain human
resources records for its employees. This information must be available to
those who need it. An information system is
a formal system for storing and processing information.
An
information system could be a set of cardboard boxes containing manila folders
along with rules for how to store and retrieve the folders. However, most
companies today use a database to automate their information systems. A database is an organized collection of information treated
as a unit. The purpose of a database is to collect, store, and retrieve related
information for use by database applications.
A database management system (DBMS) is
software that controls the storage, organization, and retrieval of data.
Typically, a DBMS has the following elements:
- Kernel code
This code manages memory and storage for the DBMS.
- Repository of metadata
- Query language
This language enables applications to access the data.
A database application is a
software program that interacts with a database to access and manipulate data.
The
first generation of database management systems included the following types:
- Hierarchical
A hierarchical
database organizes data in a tree structure. Each parent record has
one or more child records, similar to the structure of a file system.
- Network
A network database is similar to a hierarchical
database, except records have a many-to-many rather than a one-to-many
relationship.
The
preceding database management systems stored data in rigid, predetermined
relationships. Because no data definition language existed, changing the
structure of the data was difficult. Also, these systems lacked a simple query
language, which hindered application development.
In
his seminal 1970 paper "A Relational Model of Data for Large Shared Data
Banks," E. F. Codd defined a relational model
based on mathematical set theory. Today, the most widely accepted database
model is the relational model.
A relational database is a
database that conforms to the relational model. The relational model has the
following major aspects:
- Structures
Well-defined objects store or access the data of a database.
- Operations
Clearly defined actions enable applications to manipulate the
data and structures of a database.
- Integrity rules
Integrity rules govern operations on the data and structures of
a database.
A
relational database stores data in a set of simple relations. A relation is
a set of tuples. A tuple is an unordered set of attribute values.
A table is
a two-dimensional representation of a relation in the form of rows (tuples) and
columns (attributes). Each row in a table has the same set of columns. A
relational database is a database that stores data in relations (tables). For
example, a relational database could store information about company employees
in an employee table, a department table, and a salary table.
See Also:
http://portal.acm.org/citation.cfm?id=362685 for an abstract and link to Codd's paper
The relational model is the basis for a relational
database management system (RDBMS). Essentially, an RDBMS moves data into a
database, stores the data, and retrieves it so that it can be manipulated by
applications. An RDBMS distinguishes between the following types of operations:
- Logical operations
In this case, an application specifies what content
is required. For example, an application requests an employee name or adds an
employee record to a table.
- Physical operations
In this case, the RDBMS determines how things should
be done and carries out the operation. For example, after an application
queries a table, the database may use an index to find the requested rows, read
the data into memory, and perform many other steps before returning a result to
the user. The RDBMS stores and retrieves data so that physical operations are
transparent to database applications.
Oracle
Database is an RDBMS. An RDBMS that implements object-oriented features such as
user-defined types, inheritance, and polymorphism is called an object-relational database
management system (ORDBMS). Oracle Database has extended the relational
model to an object-relational model, making it possible to store complex
business models in a relational database.
The current version of Oracle Database is the
result of over 30 years of innovative development. Highlights in the evolution
of Oracle Database include the following:
- Founding of Oracle
In 1977, Larry Ellison, Bob Miner, and Ed Oates started the
consultancy Software Development Laboratories, which became Relational
Software, Inc. (RSI). In 1983, RSI became Oracle Systems Corporation and then
later Oracle Corporation.
- First commercially available
RDBMS
In 1979, RSI introduced Oracle V2 (Version 2) as the first
commercially available SQL-based RDBMS, a landmark event in the history of relational
databases.
- Portable version of Oracle
Database
Oracle Version 3, released in 1983, was the first relational
database to run on mainframes, minicomputers, and PCs. The database was written
in C, enabling the database to be ported to multiple platforms.
- Enhancements to concurrency
control, data distribution, and scalability
Version 4 introduced multi version read consistency. Version 5, released in 1985, supported
client/server computing and database systems. Version 6 brought enhancements to disk I/O, row locking,
scalability, and backup and recovery. Also, Version 6 introduced the first
version of the PL/SQL language, a proprietary procedural extension to SQL.
- PL/SQL stored program units
- Objects and partitioning
Oracle8 was released in 1997 as the object-relational database, supporting
many new data types. Additionally, Oracle8 supported partitioning of large
tables.
- Internet computing
Oracle8i Database, released in 1999, provided native
support for internet protocols and server-side support for Java. Oracle8i was
designed for internet computing, enabling the database to be deployed in a
multitier environment.
- Oracle Real Application
Clusters (Oracle RAC)
Oracle9i Database introduced Oracle RAC in 2001,
enabling multiple instances to access a single database
simultaneously. Additionally, Oracle XML Database (Oracle XML DB) introduced
the ability to store and query XML.
- Grid computing
Oracle Database 10g introduced grid computing in 2003. This release enabled
organizations to virtualize computing resources by building a grid infrastructure based on low-cost commodity servers. A
key goal was to make the database self-managing and self-tuning. Oracle Automatic Storage Management (Oracle
ASM) helped achieve
this goal by virtualizing and simplifying database storage management.
- Manageability, diagnosability,
and availability
Oracle Database 11g, released in 2007, introduced a host
of new features that enable administrators and developers to adapt quickly to
changing business requirements. The key to adaptability is simplifying the
information infrastructure by consolidating information and using automation
wherever possible.
See Also:
http://www.oracle.com/technetwork/issue-archive/2007/07-jul/o4730-090772.html for an article summarizing the evolution
of Oracle Database
One
characteristic of an RDBMS is the independence of physical data storage from
logical data structures. In Oracle Database, a database schema is a collection of logical data structures, or schema objects. A database schema is owned by a database
user and has the same name as the user name.
Schema
objects are user-created structures that directly refer to the data in the
database. The database supports many types of schema objects, the most
important of which are tables and indexes.
See Also:
A
table describes an entity such as employees. You define a table with a table
name, such as employees, and set of columns. In general, you give each column a name, a data type, and a width when you create the table.
A
table is a set of rows. A column identifies an attribute of the entity
described by the table, whereas a row identifies an instance of the entity. For example,
attributes of the employees’ entity correspond to columns for employee ID and
last name. A row identifies a specific employee.
You
can optionally specify rules for each column of a table. These rules are
called integrity constraints. One example is a NOT NULL integrity
constraint. This constraint forces the column to contain a value in every row.
See Also:
An index is an optional data structure that you can create on one
or more columns of a table. Indexes can increase the performance of data
retrieval. When processing a request, the database can use available indexes to
locate the requested rows efficiently. Indexes are useful when applications
often query a specific row or range of rows.
Indexes
are logically and physically independent of the data. Thus, you can drop and
create indexes with no effect on the tables or other indexes. All applications
continue to function after you drop an index.
See Also:
A
general requirement for a DBMS is to adhere to accepted industry standards for
a data access language.
SQL
is a set-based declarative language that provides an interface to an RDBMS such
as Oracle Database. In contrast to procedural languages such as C, which
describe how things should be done, SQL is nonprocedural and
describes what should be done. Users specify the result that
they want (for example, the names of current employees), not how to derive it.
SQL is the ANSI standard language for relational databases.
All
operations on the data in an Oracle database are performed using SQL
statements. For example, you use SQL to create tables and query and modify data
in tables. A SQL statement can be thought of as a very simple, but powerful,
computer program or instruction. A SQL statement is a string of SQL text such
as the following:
SELECT first_name, last_name FROM employees;
SQL
statements enable you to perform the following tasks:
- Query data
- Insert, update, and delete rows
in a table
- Create, replace, alter, and
drop objects
- Control access to the database
and its objects
- Guarantee database consistency
and integrity
SQL
unifies the preceding tasks in one consistent language. Oracle SQL is
an implementation of the ANSI standard. Oracle SQL supports numerous features
that extend beyond standard SQL.
See Also:
PL/SQL is a procedural
extension to Oracle SQL. PL/SQL is integrated with Oracle Database, enabling
you to use all of the Oracle Database SQL statements, functions, and data
types. You can use PL/SQL to control the flow of a SQL program, use variables,
and write error-handling procedures.
A
primary benefit of PL/SQL is the ability to store application logic in the
database itself. A procedure or function is a schema object that consists of a set of SQL
statements and other PL/SQL constructs, grouped together, stored in the
database, and run as a unit to solve a specific problem or to perform a set of
related tasks. The principal benefit of server-side programming is that
built-in functionality can be deployed anywhere.
Oracle
Database can also store program units written in Java. A Java stored procedure
is a Java method published to SQL and stored in the database for general use.
You can call existing PL/SQL programs from Java and Java programs from PL/SQL.
See Also:
Oracle
Database is designed as a multiuser database. The database must ensure that
multiple users can work concurrently without corrupting one another's data.
An
RDBMS must be able to group SQL statements so that they are either all committed,
which means they are applied to the database, or all rolled back,
which means they are undone. A transaction is a logical, atomic unit of work that
contains one or more SQL statements.
An
illustration of the need for transactions is a funds transfer from a savings
account to a checking account. The transfer consists of the following separate
operations:
- Decrease the savings account.
- Increase the checking account.
- Record the transaction in the
transaction journal.
Oracle
Database guarantees that all three operations succeed or fail as a unit. For
example, if a hardware failure prevents a statement in the transaction from
executing, then the other statements must be rolled back.
Transactions
are one of the features that set Oracle Database apart from a file system. If
you perform an atomic operation that updates several files, and if the system
fails halfway through, then the files will not be consistent. In contrast, a
transaction moves an Oracle database from one consistent state to another. The
basic principle of a transaction is "all or nothing": an atomic
operation succeeds or fails as a whole.
See Also:
A
requirement of a multiuser RDBMS is the control of concurrency, which is the simultaneous access of the same
data by multiple users. Without concurrency controls, users could change data
improperly, compromising data integrity. For example, one user could update a row
while a different user simultaneously updates it.
If
multiple users access the same data, then one way of managing concurrency is to
make users wait. However, the goal of a DBMS is to reduce wait time so it is
either nonexistent or negligible. All SQL statements that modify data must
proceed with as little interference as possible. Destructive interactions,
which are interactions that incorrectly update data or alter underlying data
structures, must be avoided.
Oracle
Database uses locks to control concurrent access to data. A lock is a mechanism that prevents destructive interaction
between transactions accessing a shared resource. Locks help ensure data
integrity while allowing maximum concurrent access to data.
See Also:
In
Oracle Database, each user must see a consistent view of the data, including
visible changes made by a user's own transactions and committed transactions of
other users. For example, the database must prevent dirty reads, which occur
when one transaction sees uncommitted changes made by another concurrent
transaction.
Oracle
Database always enforces statement-level read
consistency, which guarantees that the data returned by a single query is
committed and consistent with respect to a single point in time. Depending on
the transaction isolation level, this point is the time at which the statement
was opened or the time the transaction began. The Flashback Query feature
enables you to specify this point in time explicitly.
The
database can also provide read consistency to all queries in a transaction,
known as transaction-level read consistency. In this case, each
statement in a transaction sees data from the same point in time, which is the
time at which the transaction began.
See Also:
A database
server is the key to information management. In general, a server reliably manages a large amount of data in a multiuser
environment so that users can concurrently access the same data. A database
server also prevents unauthorized access and provides efficient solutions for
failure recovery.
An
Oracle database server consists of a database and at least one database instance (commonly referred to as simply an instance).
Because an instance and a database are so closely connected, the term Oracle
database is sometimes used to refer to both instance and database. In
the strictest sense the terms have the following meanings:
- Database
A database is a set of files, located on disk, that store data.
These files can exist independently of a database instance.
- Database instance
An instance is a set of memory structures that manage database
files. The instance consists of a shared memory area, called the system global area (SGA), and a set of background processes. An instance can exist independently of
database files.
Figure 1-1 shows a database and its instance. For each user
connection to the instance, the application is run by a client process. Each client process is associated with its
own server process. The server process has its own private session memory,
known as the program global area (PGA).
A
database can be considered from both a physical and logical perspective.
Physical data is data viewable at the operating system level. For example,
operating system utilities such as the Linux ls and ps can list
database files and processes. Logical data such as a table is meaningful only
for the database. A SQL statement can list the tables in an Oracle database,
but an operating system utility cannot.
The
database has physical structures and logical
structures. Because the physical and logical structures are separate, the
physical storage of data can be managed without affecting access to logical
storage structures. For example, renaming a physical database file does not
rename the tables whose data is stored in this file.
See Also:
An
essential task of a relational database is data storage. This section briefly
describes the physical and logical storage structures used by Oracle Database.
The
physical database structures are the files that store the data. When you
execute the SQL command CREATE DATABASE, the following files are created:
- Data files
Every Oracle database has one or more physical data files, which contain all the database data. The
data of logical database structures, such as tables and indexes, is physically
stored in the data files.
- Control files
Every Oracle database has a control file. A control file contains metadata specifying
the physical structure of the database, including the database name and the
names and locations of the database files.
- Online redo log files
Every Oracle Database has an online redo log, which is a set of two or more online redo
log files. An online redo log is made up of redo entries (also called redo
records), which record all changes made to data.
Many
other files are important for the functioning of an Oracle database server.
These files include parameter files and diagnostic files. Backup files andarchived redo log files are offline files important for backup
and recovery.
See Also:
This section discusses logical storage
structures. The following logical storage structures enable Oracle Database to
have fine-grained control of disk space use:
- Data blocks
At the finest level of granularity, Oracle Database data is
stored in data blocks. One data block corresponds to a specific number of
bytes on disk.
- Extents
An extent is a specific number of logically contiguous data blocks,
obtained in a single allocation, used to store a specific type of information.
- Segments
A segment is a set of extents allocated for a user object (for
example, a table or index), undo data, or temporary data.
- Table spaces
A database is divided into logical storage units called table
spaces. A table space is the logical container for a segment. Each table
space contains at least one data file.
See Also:
An
Oracle database uses memory structures and processes to manage and access the
database. All memory structures exist in the main memory of the computers that
constitute the RDBMS.
When
applications connect to an Oracle database, they are connected to a database
instance. The instance services applications by allocating other memory areas
in addition to the SGA, and starting other processes in addition to background
processes.
A process is a mechanism in an operating system that can run a
series of steps. Some operating systems use the terms job, task,
or thread. For the purpose of this discussion, a thread is
equivalent to a process. An Oracle database instance has the following types of
processes:
- Client processes
These processes are created and maintained to run the software
code of an application program or an Oracle tool. Most environments have
separate computers for client processes.
- Background processes
These processes consolidate functions that would otherwise be
handled by multiple Oracle Database programs running for each client process.
Background processes asynchronously perform I/O and monitor other Oracle
Database processes to provide increased parallelism for better performance and
reliability.
- Server processes
These processes communicate with client processes and interact
with Oracle Database to fulfill requests.
Oracle processes include server processes and background processes.
In most environments, Oracle processes and client processes run on separate
computers.
See Also:
Oracle
Database creates and uses memory structures for purposes such as memory for
program code, data shared among users, and private data areas for each
connected user. The following memory structures are associated with an
instance:
- System Global Area (SGA)
The SGA is a group of shared memory structures that contain data
and control information for one database instance. Examples of SGA components
include cached data blocks and shared SQL areas.
- Program Global Areas (PGA)
A PGA is a memory region that contains data and control
information for a server or background process. Access to the PGA is exclusive
to the process. Each server process and background process has its own PGA.
See Also:
To
take full advantage of a given computer system or network, Oracle Database
enables processing to be split between the database server and the client
programs. The computer running the RDBMS handles the database server
responsibilities while the computers running the applications handle the
interpretation and display of data.
The application architecture refers
to the computing environment in which a database application connects to an
Oracle database. The two most common database architectures are client/server
and multitier.
In
a client/server architecture, the client application initiates a request
for an operation to be performed on the database server. The server runs Oracle
Database software and handles the functions required for concurrent, shared
data access. The server receives and processes requests that originate from
clients.
In
a traditional multitier architecture, one or more application
servers perform parts of the operation. An application
server contains a large part of the application logic, provides access
to the data for the client, and performs some query processing, thus lessening
the load on the database. The application server can serve as an interface
between clients and multiple databases and provide an additional level of
security.
Service-oriented
architecture (SOA) is a multitier
architecture in which application functionality is encapsulated in services.
SOA services are usually implemented as Web services. Web services are
accessible through HTTP and are based on XML-based standards such as Web
Services Description Language (WSDL) and SOAP.
Oracle
Database can act as a Web service provider in a traditional multitier or SOA
environment.
See Also:
Oracle Net Services is the interface between the database
and the network communication protocols that facilitate distributed processing and distributed databases. Communication
protocols define the way that data is transmitted and received on a network.
Oracle Net Services supports communications on all major network protocols,
including TCP/IP, HTTP, FTP, and WebDAV.
Oracle Net,
a component of Oracle Net Services, establishes and maintains a network session
from a client application to a database server. After a network session is
established, Oracle Net acts as the data courier for both the client
application and the database server, exchanging messages between them. Oracle
Net can perform these jobs because it is located on each computer in the
network.
An
important component of Net Services is the Oracle Net Listener (called
the listener), which is a separate process that runs on the
database server or elsewhere in the network. Client applications can send
connection requests to the listener, which manages the traffic of these
requests to the database server. When a connection is established, the client
and database communicate directly.
The
most common ways to configure an Oracle database to service client requests
are:
- Dedicated server architecture
Each client process connects to a dedicated server process. The
server process is not shared by any other client for the duration of the
client's session. Each new session is assigned a dedicated server process.
- Shared server architecture
The database uses a pool of shared processes for multiple
sessions. A client process communicates with a dispatcher, which is
a process that enables many clients to connect to the same database instance
without the need for a dedicated server process for each client.
Reference URL:
No comments:
Post a Comment