From Seo Wiki - Search Engine Optimization and Programming Languages
|This article contains too much jargon and may need simplification or further explanation. Please discuss this issue on the talk page, and/or remove or explain jargon terms used in the article. Editing help is available. (December 2009)|
|This article appears to contain a large number of buzzwords. Specific concerns can be found on the Talk page. Please improve this article if you can. (February 2014)|
|This article's external links may not follow Wikipedia's policies or guidelines. Please improve this article by removing excessive and inappropriate external links or by converting links into references. (December 2009)|
|Stable release||11g R2 / September 1, 2009|
The Oracle Database (commonly referred to as Oracle RDBMS or simply Oracle) is a relational database management system (RDBMS) produced and marketed by Oracle Corporation. As of 2009[update], Oracle remains a major presence in database computing.
Larry Ellison and his friends and former co-workers Bob Miner and Ed Oates started the consultancy Software Development Laboratories (SDL) in 1977. SDL developed the original version of the Oracle software. The name Oracle comes from the code-name of a CIA-funded project Ellison had worked on while previously employed by Ampex.
Physical and logical structures
An Oracle database system—identified by an alphanumeric system identifier or SID—comprises at least one instance of the application, along with data storage. An instance—identified persistently by an instantiation number (or activation id: SYS.V_$DATABASE.ACTIVATION#)—comprises a set of operating-system processes and memory-structures that interact with the storage. Typical processes include PMON (the process monitor) and SMON (the system monitor).
Users of the Oracle databases refer to the server-side memory-structure as the SGA (System Global Area). The SGA typically holds cache information such as data-buffers, SQL commands, and user information. In addition to storage, the database consists of online redo logs (or logs), which hold transactional history. Processes can in turn archive the online redo logs into archive logs (offline redo logs), which provide the basis (if necessary) for data recovery and for some forms of data replication.
If the Oracle database administrator has implemented Oracle RAC (Real Application Clusters), then multiple instances, usually on different servers, attach to a central storage array. This scenario offers advantages such as better performance, scalability and redundancy. However, support becomes more complex, and many sites do not use RAC. In version 10g, grid computing introduced shared resources where an instance can use (for example) CPU resources from another node (computer) in the grid.
The Oracle DBMS can store and execute stored procedures and functions within itself. PL/SQL (Oracle Corporation's proprietary procedural extension to SQL), or the object-oriented language Java can invoke such code objects and/or provide the programming structures for writing them.
The Oracle RDBMS stores data logically in the form of tablespaces and physically in the form of data files. Tablespaces can contain various types of memory segments, such as Data Segments, Index Segments, etc. Segments in turn comprise one or more extents. Extents comprise groups of contiguous data blocks. Data blocks form the basic units of data storage.
Oracle database management tracks its computer data storage with the help of information stored in the
SYSTEM tablespace. The
SYSTEM tablespace contains the data dictionary—and often (by default) indexes and clusters. A data dictionary consists of a special collection of tables that contains information about all user-objects in the database. Since version 8i, the Oracle RDBMS also supports "locally managed" tablespaces which can store space management information in bitmaps in their own headers rather than in the
SYSTEM tablespace (as happens with the default "dictionary-managed" tablespaces).
|File:Wiki letter w.svg||This section requires expansion.|
Size of control files The size of the control files is governed by the following parameters:
* maxlogfiles * maxlogmembers * maxloghistory * maxinstances * control_file_record_keep_time
Oracle database conventions refer to defined groups of object ownership (generally associated with a "username") as schemas.
Most Oracle database installations traditionally came with a default schema called
SCOTT. After the installation process has set up the sample tables, the user can log into the database with the username
scott and the password
tiger. The name of the
SCOTT schema originated with Bruce Scott, one of the first employees at Oracle (then Software Development Laboratories), who had a cat named Tiger.
Oracle Corporation has de-emphasized the use of the
SCOTT schema, as it uses few of the features of the more recent releases of Oracle. Most recent[update] examples supplied by Oracle Corporation reference the default HR or OE schemas.
Other default schemas include:
SYS<code> (essential core database structures and utilities)
- <code>SYSTEM<code> (additional core database structures and utilities, and privileged account)
- <code>OUTLN (utilized to store metadata for stored outlines for stable query-optimizer execution plans.
SH(expanded sample schemas containing more data and structures than the older
System Global Area
Each Oracle instance allocates itself an SGA when it starts and de-allocates it at shut-down time. The information in the SGA consists of the following elements, each of which has a fixed size, established at instance startup:
- the database buffer cache: this stores the most recently-used data blocks. These blocks can contain modified data not yet written to disk (sometimes known as "dirty blocks"), unmodified blocks, or blocks written to disk since modification (sometimes known as clean blocks). Because the buffer cache keeps blocks based on a most-recently-used algorithm, the most active buffers stay in memory to reduce I/O and to improve performance.
- the redo log buffer: this stores redo entries—a log of changes made to the database. The instance writes redo log buffers to the redo log as quickly and efficiently as possible. The redo log aids in instance recovery in the event of a system failure.
- the shared pool: this area of the SGA stores shared-memory structures such as shared SQL areas in the library cache and internal information in the data dictionary. An insufficient amount of memory allocated to the shared pool can cause performance degradation.
The library cache stores shared SQL, caching the parse tree and the execution plan for every unique SQL statement.
If multiple applications issue the same SQL statement, each application can access the shared SQL area. This reduces the amount of memory needed and reduces the processing-time used for parsing and execution planning.
Data dictionary cache
The data dictionary comprises a set of tables and views that map the structure of the database.
Oracle databases store information here about the logical and physical structure of the database. The data dictionary contains information such as:
- user information, such as user privileges
- integrity constraints defined for tables in the database
- names and datatypes of all columns in database tables
- information on space allocated and used for schema objects
The Oracle instance frequently accesses the data dictionary in order to parse SQL statements. The operation of Oracle depends on ready access to the data dictionary: performance bottlenecks in the data dictionary affect all Oracle users. Because of this, database administrators should make sure that the data dictionary cache has sufficient capacity to cache this data. Without enough memory for the data-dictionary cache, users see a severe performance degradation. Allocating sufficient memory to the shared pool where the data dictionary cache resides precludes these particular performance problems.
Program Global Area
The size and content of the PGA depends on the Oracle-server options installed. This area consists of the following components:
- stack-space: the memory that holds the session's variables, arrays, and so on.
- session-information: unless using the multithreaded server, the instance stores its session-information in the PGA. (In a multithreaded server, the session-information goes in the SGA.)
- private SQL-area: an area in the PGA which holds information such as bind-variables and runtime-buffers.
- sorting area: an area in the PGA which holds information on sorts, hash-joins, etc.
The Oracle RDBMS typically relies on a group of processes running simultaneously in the background and interacting to monitor and expedite database operations. Typical operating groups might include some of the following individual processes—(shown along with their abbreviated nomenclature):
- archiver processes (ARCn)
- checkpoint process (CKPT) *REQUIRED*
- coordinator-of-job-queues process (CJQn): dynamically spawns slave processes for job-queues
- database writer processes (DBWn) *REQUIRED*
- dispatcher processes (Dnnn): multiplex server-processes on behalf of users
- memory-manager process (MMAN): used for internal database tasks such as Automatic Shared Memory Management
- log-writer process (LGWR) *REQUIRED*
- log-write network-server (LNSn): transmits redo logs in Data Guard environments
- logical standby coordinator process (LSP0): controls Data Guard log-application
- media-recovery process (MRP): detached recovery-server process
- memory-monitor process (MMON): process for automatic problem-detection, self-tuning and statistics-gathering
- memory-monitor light process (MMNL): gathers and stores Automatic Workload Repository (AWR) data
- mmon slaves (Mnnnn—M0000, M0001, etc): background slaves of the MMON process
- process-monitor process (PMON) *REQUIRED*
- process-spawner (PSP0): spawns Oracle processes
- queue-monitor processes (QMNn)
- recoverer process (RECO)
- remote file-server process (RFS)
- shared server processes (Snnn): serve client-requests
- system monitor process (SMON) *REQUIRED*
User processes, connections and sessions
Oracle Database terminology distinguishes different computer-science terms in describing how end-users interact with the database:
- user processes involve the invocation of application software
- a connection refers to the pathway linking a user process to an Oracle instance
- sessions consist of specific connections to an Oracle instance. Each session within an instance has a session identifier or "SID" (distinct from the system-identifier SID).
Concurrency and locking
Oracle databases control simultaneous access to data resources with locks (alternatively documented as "enqueues" ). The databases also utilize "latches" -- low-level serialization mechanisms to protect shared data structures in the System Global Area.
Database administrators control many of the tunable variations in an Oracle instance by means of values in a parameter file.
This file in its ASCII default form ("pfile") normally has a name of the format
init<SID-name>.ora. The default binary equivalent server paramater file ("spfile") (dynamically reconfigurable to some extent)
defaults to the format
spfile<SID-name>.ora. Within an SQL-based environment, the views
give access to reading parameter values.
Oracle Database software comes in 63 language-versions (including regional variations such as American English and British English). Variations between versions cover the names of days and months, abbreviations, time-symbols such as A.M. and A.D., and sorting.
Oracle Corporation has translated Oracle Database error-messages into Arabic, Catalan, Chinese, Czech, Danish, Dutch, English, Finnish, French, German, Greek, Hebrew, Hungarian, Italian, Japanese, Korean, Norwegian, Polish, Portuguese, Romanian, Russian, Slovak, Spanish, Swedish, Thai and Turkish.
Oracle Corporation provides database developers with tools and mechanisms for producing internationalized database applications: referred to internally as "Globalization".
|This article is in a list format that may be better presented using prose. You can help by converting this article to prose, if appropriate. Editing help is available. (September 2009)|
- 1977: Larry Ellison and friends founded Software Development Laboratories.
- 1979: SDL changed its company-name to "Relational Software, Inc." (RSI) and introduced its product Oracle V2 as an early commercially-available relational database system. The version did not support transactions, but implemented the basic SQL functionality of queries and joins. (RSI never released a version 1 - instead calling the first version version 2 as a marketing gimmick.)
- 1982: RSI in its turn changed its name, becoming known as "Oracle Corporation", to align itself more closely with its flagship product.
- 1983: The company released Oracle version 3, which it had re-written using the C programming language and which supported
ROLLBACKfunctionality for transactions. Version 3 extended platform support from the existing Digital VAX/VMS systems to include Unix environments.
- 1984: Oracle Corporation released Oracle version 4, which supported read-consistency.
- 1985: Oracle Corporation released Oracle version 5, which supported the client-server model—a sign of networks becoming more widely available in the mid-1980s.
- 1986: Oracle version 5.1 started supporting distributed queries.
- 1988: Oracle RDBMS version 6 came out with support for PL/SQL embedded within Oracle Forms v3 (version 6 could not store PL/SQL in the database proper), row-level locking and hot backups.
- 1989: Oracle Corporation entered the application products market and developed its ERP product, (later to become part of the Oracle E-Business Suite), based on the Oracle relational database.
- 1990: the release of Oracle Applications release 8
- 1992: Oracle version 7 appeared with support for referential integrity, stored procedures and triggers.
- 1997: Oracle Corporation released version 8, which supported object-oriented development and multimedia applications.
- 1999: The release of Oracle8i aimed to provide a database inter-operating better with the Internet (the i in the name stands for "Internet"). The Oracle 8i database incorporated a native Java virtual machine (Oracle JVM).
- 2000: Oracle E-Business Suite 11i pioneers integrated enterprise application software
- 2001: Oracle9i went into release with 400 new features, including the ability to read and write XML documents. 9i also provided an option for Oracle RAC, or "Real Application Clusters", a computer-cluster database, as a replacement for the Oracle Parallel Server (OPS) option.
- 2003: Oracle Corporation released Oracle Database 10g. (The g stands for "grid"; emphasizing a marketing thrust of presenting 10g as "grid-computing ready".)
- 2005: Oracle Database 10.2.0.1—also known as Oracle Database 10g Release 2 (10gR2)—appeared.
- 2006: Oracle Corporation announces Unbreakable Linux
- 2007: Oracle Database 10g release 2 sets a new world record TPC-H 3000 GB benchmark result
- 2007: Oracle Corporation released Oracle Database 11g for Linux and for Microsoft Windows.
- 2008: Oracle Corporation acquires BEA Systems.
- 2009: Oracle Corporation acquires Sun Microsystems.
Oracle products have historically followed their own release-numbering and naming conventions. With the Oracle RDBMS 10g release, Oracle Corporation started standardizing all current versions of its major products using the "10g" label, although some sources continued to refer to Oracle Applications Release 11i as Oracle 11i. Major database-related products and some of their versions include:
- Oracle Application Server 10g (also known as "Oracle AS 10g"): a middleware product;
- Oracle Applications Release 11i (aka Oracle e-Business Suite, Oracle Financials or Oracle 11i): a suite of business applications;
- Oracle Developer Suite 10g (9.0.4);
- Oracle JDeveloper 10g: a Java integrated development environment;
Since version 5, Oracle's RDBMS release numbering has used the following codes:
- Oracle7: 7.0.16—7.3.4
- Oracle8 Database: 8.0.3—8.0.6
- Oracle8i Database Release 1: 220.127.116.11—18.104.22.168
- Oracle8i Database Release 2: 22.214.171.124—126.96.36.199
- Oracle8i Database Release 3: 188.8.131.52—184.108.40.206
- Oracle9i Database Release 1: 220.127.116.11—18.104.22.168 (patchset as of December 2003[update])
- Oracle9i Database Release 2: 22.214.171.124—126.96.36.199 (patchset as of April 2007[update])
- Oracle Database 10g Release 1: 10.1.0.2—10.1.0.5 (patchset as of February 2006[update])
- Oracle Database 10g Release 2: 10.2.0.1—10.2.0.4 (patchset as of April 2008[update])
- Oracle Database 11g Release 1: 188.8.131.52—184.108.40.206 (patchset as of September 2008[update])
- Oracle Database 11g Release 2: 220.127.116.11 (released 2009-09-01)
The version-numbering syntax within each release follows the pattern: major.maintenance.application-server.component-specific.platform-specific.
For example, "10.2.0.1 for 64-bit Solaris" means: 10th major version of Oracle, maintenance level 2, Oracle Application Server (OracleAS) 0, level 1 for Solaris 64-bit.
The Oracle Administrator's Guide offers further information on Oracle release numbers. Oracle Corporation provides a table showing the latest patch-set releases by major release, operating-system, and hardware-architecture.
List of claimed firsts
| This article needs additional citations for verification.
Please help improve this article by adding reliable references. Unsourced material may be challenged and removed. (December 2007) </td>
Oracle Corporation claims to have provided:
Over and above the different versions of the Oracle database management software, Oracle Corporation subdivides its product into varying "editions" - apparently for marketing and license-tracking reasons. In approximate order of decreasing scale, we find:
Prior to releasing Oracle9i in 2001, Oracle Corporation ported its database product to a wide variety of platforms. More recently Oracle Corporation has consolidated on a smaller range of operating-system platforms.
As of October 2006[update], Oracle Corporation supported the following operating systems and hardware platforms for Oracle Database 10g:
In most cases, using these options entails extra licensing costs.
In addition to its RDBMS, Oracle Corporation has released several related suites of tools and applications relating to implementations of Oracle databases. For example:
Apart from the clearly-defined database options, Oracle databases may include many semi-autonomous software sub-systems, which Oracle Corporation sometimes refers to as "features" in a sense subtly different from the normal usage of the word. For example, Oracle Data Guard counts officially as a "feature", but the command-stack within SQL*Plus, though a usability feature, does not appear in the list of "features" in Oracle's list.[original research?] Such "features" may include (for example):
Users can develop applications in Java and PL/SQL using tools such as Oracle JDeveloper, Oracle Forms, or Oracle Reports. Oracle Corporation has started[clarification needed] a drive toward 'wizard'-driven environments with a view to enabling non-programmers to produce simple data-driven applications.
Oracle SQL Developer, a free graphical tool for database development, allows developers to browse database objects, run SQL statements and SQL scripts, and edit and debug PL/SQL statements. It incorporates standard and customized reporting.
Other databases marketed by Oracle Corporation
By acquiring other technology in the database field, Oracle Corporation has taken over:
The Oracle RDBMS has had a reputation among novice users as difficult to install on Linux systems. Oracle Corporation has packaged recent[update] versions for several popular Linux distributions in an attempt to minimize installation challenges beyond the level of technical expertise required to install a database server.
Users who have Oracle support contracts can use Oracle's MetaLink web site. MetaLink provides users of Oracle Corporation products with a repository of reported problems, diagnostic scripts and solutions. It also integrates with the provision of support tools, patches and upgrades.
The Remote Diagnostic Agent or RDA can operate as a command-line diagnostic tool executing a script. The data captured provides an overview of the Oracle Database environment intended for diagnostic and trouble-shooting. Within RDA, the HCVE (Health Check Validation Engine) can verify and isolate host system environmental issues that may affect the performance of Oracle software.
Oracle Corporation also endorses certain practices and conventions as enhancing the use of its database products. These include:
Oracle Certification Program
A variety of official (Oracle-sponsored) and unofficial Oracle User Groups has grown up of users and developers of Oracle databases. They include:
In the market for relational databases, Oracle Database competes against commercial products such as IBM's DB2 UDB and Microsoft SQL Server. Oracle and IBM tend to battle for the mid-range database market on UNIX and Linux platforms, while Microsoft dominates the mid-range database market on Microsoft Windows platforms. However, since they share many of the same customers, Oracle and IBM tend to support each other's products in many middleware and application categories (for example: WebSphere, PeopleSoft, and Siebel Systems CRM), and IBM's hardware divisions work closely with Oracle on performance-optimizing server-technologies (for example, Linux on zSeries). The two companies have a relationship perhaps best described as "coopetition". Niche commercial competitors include Teradata (in data warehousing and business intelligence), Software AG's ADABAS, Sybase, and IBM's Informix, among many others.
Increasingly, the Oracle database products compete against open-source relational database systems, particularly PostgreSQL, Firebird, and MySQL. Oracle acquired Innobase, supplier of the InnoDB codebase to MySQL, in part to compete better in the open source market, and acquired Sun Microsystems, owner of MySQL, in 2010. Database products developed on the basis of the open-source model generally cost significantly less to acquire than Oracle systems.
Oracle Corporation offers term licensing for all Oracle products. It bases the list price for a term-license on a specific percentage of the perpetual license price.
As computers running Oracle often have eight or more processors, the software price can rise into the hundreds of thousands of dollars. The total cost of ownership often exceeds this, as large Oracle installations usually require experienced and trained database administrators to do the set-up properly. Because of the product's large installed base and available training courses, Oracle specialists in some areas have become a more abundant resource than those for more exotic databases. Oracle frequently provides special training offers for database-administrators.
On Linux, Oracle's certified configurations include mostly commercial Linux distributions (Red Hat Enterprise Linux 3 and 4, SuSE SLES8 and 9, Asianux) which can cost in a range from a few hundred to a few thousand USD per year (depending on processor architecture and the support package purchased).