Oracle: the company and the database. A timeline





Summer 1966
  • Ellison moves to Berkeley, CA. Works weekends as IBM systems programmer

1973
  • Ellison leaves IBM and start working for Ampex (company invented the magnetic tape recorder).
  • Works in the terabit memory system project, code-named Oracle, funded by the CIA, at Ampex.
  • At Ampex, worked in a database management system for the PDP-11 minicomputer. A CODASYL database, modeled after Cullinet's IDMS mainframe database.


1977
Larry Ellison read Don Chamberlain's papers on the System R and SQL language and decided to build a relational database management system for minicomputers.
Ellison (34 y/o), Bob Miner and Ed Oates founded Software Development Laboratories.
In the picture: Ed Oates, Bruce Scott, Bob Miner and Larry Ellison.
Bruce Scott, who would be hired upon the formation of the company, is the “Scott” in scott/tiger (tiger was Bruce’s daughter’s cat).


1978
SDL signed a contract with CIA to continue working on a SQL-based relational database.
Oracle Version 1, written in assembly language, runs on PDP-11 under RSX, in 128K of memory.
Oracle V1 is never officially released.

1979
SDL changes its name to Relational Software Inc.
RSI launches Oracle 2.1. The first commercial relational database using SQL.
Still written in PDP-11 assembly language

1982
RSI becomes Oracle Systems.


1983
  • Oracle launches Oracle V3.
  • Written in C, is the first commercially available portable RDBMS. It run on a range of hardware and operating systems, including mainframes, minicomputers, workstations and PCs.
  • Oracle V3 introduced support for transactions, atomic execution of SQL statements, nonblocking queries (avoided read locks).
  • It was also the first to provide support for symmetric multiprocessing (SMP)

1984
Oracle launches Oracle Version 4.
Version 4 supported read-consistency, and introduced the export/import utility

Check some screen shots and material from Version 4.1:


1985
Launched Oracle Version 5.
Oracle now supported a client-server model and distributed queries.
First support for distributed database


1986
Oracle made its first public offering of stock.
One of the principal reasons for Oracle's success was the 1986 emergence of SQL as the industry's standard language for relational database management systems, which in turn led to increased market acceptance of Oracle's SQL-compatible RDBMS.
Oracle releases SQL*Plus, SQL*Menu, SQL*Graph

In 1986 Oracle expanded its RDBMS product line and debuted another industry first, a distributed DBMS based on the company's SQL*Star software.

racle SQL*Star software was the first commercially available software of its kind and was soon expanded to include dozens of additional computer brands and models.

1988
Oracle Version 6 launched.
Technical advances:
Row-level locking, Hot backup, and first version of PL/SQL.
PL/SQL was not yet stored in the database. It was supported embedded within Forms V3.

1989
Oracle provides database support of online transaction processing (OLTP).

1990
Oracle Applications Release 8 launched (Accounting).

1992
Oracle Version 7 launched.
Version 7 supported declarative referential integrity, stored procedures and triggers.


1996
Oracle launches Release 7.3.
Oracle 7.3 offered the Universal Server.
Provided datatype support for text, video, maps, sound, images datatypes.


1998
Oracle 8 and Oracle Applications 10.7 launched.
Added ability to create and store objects in the database.
Added support for Java. First database to incorporate a native JRE.
First proprietary database available in Linux.





1999
Release of Oracle 8i.
8i incorporated a native Java virtual machine (Oracle JVM).





2000
Oracle E-Business suite 11i launched.

2001
Oracle 9i launched. 400 new features.
Support for Real Application Clusters (RAC) replaced Oracle Parallel Server (OPS).
Added new data warehousing features



2003
Oracle 10g released.
Enabled "grid" computing: computer and software resources provided for applications on an as-needed basis.
Added the ability to provision CPUs and data.
Introduction of self-managing features:
  • Automated Database Diaginostic Monitor (ADDM)
  • Automated Shared Memory Tuning,
  • Automated Storage Management (ASM)
  • Automated Disk based Backup and Recovery













2005
Oracle 10g Release 2 (10gR2) launched.
Oracle acquires PeopleSoft and announces its intention to buy Siebel Systems.



2007
Oracle 11g released.
11g brought many new features, including Oracle Total Recall (Flashback Data Archive), hot patching, automate capture of fault diagnostics and provision of repair advisors and integration with Oracle Metalink.
Peoplesoft Enterprise 9 launched.
Siebel's CRM 8 launched.
Oracle Virtual Machine launched.
Oracle acquires:
  • HYPERION - provider of Enterprise Performance Management (EPM) software. Later couples with Oracles BI tools and analytic applications.
  • AGILE - provider of product lifecycle management (PLM) solutions. (Management of complete product lifecycle, from conception and desing to production, sales and service).
  • TANGOSOL - provider of in-memory data grid software. (Added to the Oracle Fusion Middleware infrastructure, to support SOA and EDA).
  • Patents from APPFORGE - in the area of mobile applications
  • LODESTAR - provider of meter data management and competitive energy operation solutions.



2008
Oracle acquires:
  • BEA Web systems - provider of enterprise application infrastructure solutions (Java app servers, transaction processing monitors, SOA and business process management).
  • CAPTOVATION - provider of document capture solutions.
  • EMPIRIX - acquires the e-TEST suite of products (to add to OEM)

2009
Oracle acquires:
  • Primavera Software - provider of project portfolio management solutions (engineering, construction, public sector, aerospace and defense, utilities, oil and gas, manufacturing and high technology).
  • Haley - provider of policy modeling and automation software for legislative and regulated industries (public sector, financial services and insurance).
  • Skywire Software - provider of insurance and document management business applications. (Expands Oracle Enterprise Content management Suite)
  • AdminServer - provider of insurance policy administration software
  • Relsys - provider of drug safety and risk management solutions.
  • mValent - provider of application configuration management solutions.

2010
Oracle acquires SUN Microsystems.
Other acquisitions:
  • AmberPoint - SOA management provider
  • Silver Creek - data quality products
  • Convergin - developer in Java 2, Service Broker and network integration software
  • Passlogix - Enterprise singe sign-on and network authentication capabilities (Oracle Identity management)
  • Secerno - heterogenous database firewall ( became Oracle db firewall)
  • Phase Forward - provider of applications for healthcare providers and life science companies.



Sources and Further reading:
Oracle Corporate/technical timeline:
Oracle timeline at oracle.com

Oracle database explained
Oracle Timeline at Profit magazine
On Bruce Scott

(6) Control Structures: CONTINUE statement





CONTINUE statement
  • CONTINUE jumps out of the current LOOP interaction and STARTS THE NEXT ONE.
  • Can be used on its own or as part of a CONTINUE WHEN

set serveroutput on 
declare 
 l_number number := 0;
begin
 for i in 1 .. 10 LOOP
                                          -- code before CONTINUE: executed
   dbms_output.put_line('Before Continue: Iteracao # '|| i ||'. MOD('||i||', 2) = '|| mod(i,2));
   CONTINUE WHEN MOD(i,2) = 0;
                                          -- If WHEN condition TRUE, code after continue: Jumped.
   dbms_output.put_line('Iteracao # '|| i ||'. MOD('||i||', 2) = '|| mod(i,2));
   l_number := l_number +1;
 end loop;
 
 dbms_output.put_line('CONTINUE WHEN:'|| l_number);
end;

Alternativelly:
set serveroutput on 
declare 
 l_number number := 0;
begin
 for i in 1 .. 10 LOOP
   IF mod(i,2) = 0 THEN 
     CONTINUE;
   END IF;
   dbms_output.put_line('Iteracao # '|| i ||'. MOD('||i||', 2) = '|| mod(i,2));
   l_number := l_number +1;
 end loop;

  • Before the CONTINUE statement, the same behavior could be implemented with IF, GOTO or EXCEPTIONS..:
-- Implementing the same behavior using Exception:
set serveroutput on 
declare 
 e_continue exception;
 ln number :=0;
begin 
 for i in 1 .. 10 loop
  begin
   if mod(i,2) != 0 then
     raise e_continue;
   end if;
    dbms_output.put_line('Iteracao # '|| i ||'. MOD('||i||', 2) = '|| mod(i,2));
    ln := ln + 1;   
  exception
   when e_continue then
     null;
  end;
 end loop;
 dbms_output.put_line('EXCEPTION: ' || ln);

set serveroutput on 
declare 
 ln number :=0;
begin
 ln := 0;
 FOR i IN 1 .. 10 LOOP
    IF MOD(i,2) != 0 THEN
      dbms_output.put_line('Iteracao # '|| i ||'. MOD('||i||', 2) = '|| mod(i,2));
      ln := ln + 1;   
    END IF;
  END LOOP;
  dbms_output.put_line('IF       : ' || ln);
end;

set serveroutput on 
declare 
 ln number :=0;
begin
  ln := 0;
  FOR i IN 1 .. 10 LOOP
    IF MOD(i,2) = 0 THEN
      GOTO label_continue;
    END IF;
    dbms_output.put_line('Iteracao # '|| i ||'. MOD('||i||', 2) = '|| mod(i,2));
    ln := ln + 1;   

    << label_continue >>
    NULL;
  END LOOP;
  dbms_output.put_line('GOTO     : ' || ln);
end;

SQL Server: Database types



Two types of databases:
  • (a) System databases: Used by SQL Server and SQL Server services.
  • Four system databases: master, MSDB, model and tempdb
    contain configuration information about the SQL Server services and user databases.
  • (b) User databases: Used to store user data.

System databases
Master database
MSDB database
  • Primary configuration database. Usually small.
    • Data in: master.mdf
    • Logs in: masterlog.ldf
  • Used by SQL Server service.
  • Systems table in the master database: keep information about users and databases within the instance.
  • Needs to be available (not corrupted) for database startup.

Used by the SQL Server Agent service.
Data here include: scheduled jobs, job parameters, alerts, operators.
Data in: MSDBData.mdf
Logs in: MSDBlog.ldf

USE MASTER;
EXEC sp_helpfile
name fileid filename filegroup size maxsize growth usage ------ ------ ----------------------------------------------------- --------- ------- --------- ------ --------- master 1 C:\Program Files\...\MSSQL10...\MSSQL\DATA\master.mdf PRIMARY 4096 KB Unlimited 10% data only mastlog 2 C:\Program Files\...\MSSQL10...\MSSQL\DATA\mastlog.ldf NULL 1024 KB Unlimited 10% log only
USE MSDB;
EXEC sp_helpfile
name fileid filename filegroup size maxsize growth usage ------ ------ ------------------------------------------------------ --------- ------- --------- ------- --------- MSDBData 1 C:\Program Files\...\MSSQL10...\MSSQL\DATA\MSDBData.mdf PRIMARY 15104 KB Unlimited 10% data only MSDBLog 2 C:\Program Files\...\MSSQL10...\MSSQL\DATA\MSDBLog.ldf NULL 5184 KB 2147483648 KB 10% log only

Model database
Tempdb database

Model for new databases.
Properties set in the model database will be automatically configured on new databases.
  • Used by SQL Server database engine
  • tempdb is recreated every time SQL Server service starts. Therefore, any data in tempdb is LOST when the database shutdown.
  • If you need an object to always exist in tempdb, it HAS to be recreated after instance startup. For this you can use a startup stored procedure, which are automatically executed when the SQL Server service starts up.
  • Users may also create temporary objects in the tempd:
i.e.
USE tempdb;
SELECT * INTO #tmp_orders
  FROM InsideTSQL2008.Sales.Orders
  WHERE custid = 10;

-- copy all data from sales table into a temporary table #temp_table.

  • The # sign directs the server to create a LOCAL temporary table in the tempdbdatabase.
  • Local temporary tables: visible only in the current session.
  • The ## sign directs the server to create a GLOBAL temporary table.
  • Global temporary tables: visible to all sessions.





USE model;
EXEC sp_helpfile

USE tempdb;
EXEC sp_helpfile

name fileid filename filegroup size maxsize growth usage -------- ------ ------------------------------------------------------ --------- ------- --------- ------- --------- modeldev 1 C:\Program Files\...\MSSQL10...\MSSQL\DATA\model.mdf PRIMARY 1280 KB Unlimited 1024 KB data only modellog 2 C:\Program Files\...\MSSQL10...\MSSQL\DATA\modellog.ldf NULL 512 KB Unlimited 10% log only name fileid filename filegroup size maxsize growth usage -------- ------ ------------------------------------------------------ --------- ------- --------- ------- --------- tempdev 1 C:\Program Files\...\MSSQL10...\MSSQL\DATA\tempdb.mdf PRIMARY 8192 KB Unlimited 10% data only templog 2 C:\Program Files\...\MSSQL10...\MSSQL\DATA\templog.ldf NULL 512 KB Unlimited 10% log only
The full name of a temporary table as stored in the sysobjects table in tempdb. The full name is: table name specified in the CREATE TABLE statement + a system-generated numeric suffix.
USE tempdb;
  SELECT * FROM sysobjects
  WHERE name LIKE '#%';
If you need to move tempdb (to address performance issues due to disk contention), you can:
USE MASTER;
GO

ALTER DATABASE tempdb modify FILE
  (name = tempdev,
   filename = 'F:\tempdata\tempdb.mdf');
GO
ALTER DATABASE tempdb modify FILE
  (name = templog,
   filename = 'F:\tempdata\templog.ldf');
GO