# Oracle (banco de dados)

O Oracle é um SGBD (sistema gerenciador de banco de dados) que surgiu no fim dos anos 70, quando Larry Ellison vislumbrou uma oportunidade que outras companhias não haviam percebido, quando encontrou uma descrição de um protótipo funcional de um banco de dados relacional e descobriu que nenhuma empresa tinha se empenhado em comercializar essa tecnologia.
Ellison e os co-fundadores da Oracle Corporation, Bob Miner e Ed Oates, perceberam que havia um tremendo potencial de negócios no modelo de banco de dados relacional tornando assim a maior empresa de software empresarial do mundo.
Além da base de dados, a Oracle desenvolve uma suíte de desenvolvimento chamada de Oracle Developer Suite, utilizada na construção de programas de computador que interagem com a sua base de dados. A Oracle também criou a linguagem de programação PL/SQL, utilizada no processamento de transações.

## Evolução das versões do SGBD Oracle

Ao longo dos últimos 30 anos a Oracle vem aperfeiçoando seu principal produto e se mantém líder de mercado. A Oracle procura se destacar de seus concorrentes ao adicionar novas funcionalidade ao seu SGBD. Por exemplo, com a versão 8, lançado em 1997, foi adicionado a possibilidade de armazenamento de objetos no banco de dados. Já a versão 8i, lançada em 1999, iniciou melhorias que colocaram o Oracle8i com foco no cenário da Internet. O Oracle8i iniciou a tradição de marketing da Oracle de adicionar uma letra como sufixo no nome da versão e o "i" presente no Oracle8i é para ressaltar seu foco na web.
O Oracle8i realmente tem foco na web, foi o primeiro objeto de banco de dados relacional (ORDBMS) mas representa apenas um esboço de características para o então Oracle9i, lançado em 2000 (ano posterior ao de lançamento do Oracle8i) e considerado por publicações oficiais da própria Oracle (Oracle Press Books) como o primeiro banco de dados relacional (RDBMS) que oferece uma plataforma de suporte e desenvolvimento para a Internet.
Além de oferecer toda infra-estrutura para o suporte ao modelo web, o Oracle9i inovou com uma ferramenta para Servidores Paralelos chamada Real Application Clusters, melhorou o suporte a documentos em XML e realizou melhorias fundamentais de performance e gerenciamento no SGBD para o trabalho via Internet. As versões 10g e 11g apresentam o "g" no lugar do sufixo "i", mas ao contrário do que ocorre tradicionalmente da indústria de software, não há nenhuma relação de precedência entre as letras, isto é, não há nenhuma versão anterior a Oracle 10g chamada Oracle 10f, por exemplo. As letras simplesmente representam um recurso de marketing para demonstrar o foco do produto em "Internet" ou "Grid".
Muita controvérsia existe quanto à definição de qual foi, de fato, a primeira versão do Oracle a oferecer uma plataforma para suporte e desenvolvimento de aplicações web, com algumas referência indicando o pioneirismo à versão 9i, enquanto outras apontam a versão 8i. Apesar do pioneirismo do Oracle8i na introdução de características web (JServer e OAS), o Oracle9i foi responsável por oferecer um ambiente completo de desenvolvimento de aplicações voltadas para a web. Após o primeiro lançamento da versão 9i, a Oracle lançou releases e continuou aprimorando a sua plataforma de desenvolvimento. Ofereceu melhorias de performance a características de tolerância a falhas e melhorou o suporte ao formato XML.

## Edições

Além das diferentes versões do software de gerenciamento de banco de dados Oracle, a Oracle Corporation subdivide seu produto em "edições" variáveis - aparentemente por razões de marketing e controle de licenças.
* Enterprise Edition (EE) inclui mais funcionalidades que a 'Standard Edition', especialmente nas áreas de performance e segurança. A Oracle Corporation licencia este produto na base de usuários ou de núcleos de processamento, normalmente para servidores com 4 ou mais UCPs. EE não tem limite de memória e pode utilizar clusterização usando o software Oracle RAC.
* Standard Edition (SE) contém a funcionalidade básica de banco de dados. A Oracle Corporation licencia este produto na base de usuários ou de sockets, normalmente para servidores com um a quatro UCPs. Se o número de UCPs exceder 4, o usuário deve migrar para a licença Enterprise. SE não possui limite de memória e pode utilizar clusterização com o Oracle RAC sem custo adicional.
* Standard Edition One, introduzido com o Oracle 10g, possui algumas restrições de funcionalidades adicionais. A Oracle Corporation comercializa-o para uso em sistemas com uma ou duas UCPs. Ela não possui limitações de memória. Essa edição deixou de ser comercializada em 30 de novembro de 2016.
* Express Edition ('Oracle Database XE'), introduzido em 2005, oferece o Oracle 10g livre para distribuição nas plataformas Windows e Linux (com um tamanho de apenas 150 MB e restrita ao uso de apenas uma UCP, um máximo de 4 GB de dados de usuário e 1 GB de memória). O suporte para esta versão é feito exclusivamente através de fóruns on-line, sem o suporte da Oracle.
** Oracle 11g Express Edition, lançado em 24 de setembro de 2011, pode suportar 11 GB de dados do usuário.
* Oracle Personal Edition fornece a funcionalidade de "alto fim" da Enterprise Edition mas é comercializada (e licenciada) para desenvolvedores específicos que trabalham em estações de trabalho pessoais.
* Oracle Database Lite, destinada para rodar em dispositivos móveis. O banco de dados, localizado parcialmente no dispositivo móvel, pode sincronizar com uma instalação baseada em servidor.
* Oracle RAC, O Oracle RAC (Real Application Clusters) é um banco de dados ou conjunto de bancos de dados agrupados em um conjunto de servidores usando o software fornecido pela Oracle, chamado Oracle Clusterware. O Oracle RAC foi apresentado pela primeira vez com o Oracle 9i. Em sua forma mais simples, o Oracle RAC é um único banco de dados que é acessado e compartilhado por várias instâncias do Oracle em execução em servidores separados. Em um ambiente Oracle RAC, múltiplas instancias acessam uma única database. As instancias são comumente criadas em servidores separados que são conectados via conexão de alta velocidade interconectada com acesso a área compartilhada de disco. Os arquivos database residem em um grupo de discos compartilhados, e cada instancia tem o seu próprio controle de arquivos e logs de recuperação nos discos compartilhados. O usuário pode ser direcionado para a conexão da database através de uma das instâncias ligadas a ele. Se uma instancia cair, a conexão deve ser dinamicamente reconectada ao database via outra instância do cluster. O RAC oferece uma solução de alta disponibilidade e escalabilidade de performance, aumentando a memória e processadores disponíveis ao conectar os processos. (Loney, 2004). Um banco de dados Oracle RAC é um banco de dados compartilhado de tudo. Todos os arquivos de dados, arquivos de controle, SPFILEs e arquivos de log refazer em ambientes Oracle RAC devem residir em discos compartilhados que reconhecem clusters, de modo que todas as instâncias do banco de dados de cluster possam acessar esses componentes de armazenamento. Todas as instâncias do banco de dados devem usar a mesma interconexão, que também pode ser usada pelo Oracle Clusterware. Como os bancos de dados Oracle RAC usam uma arquitetura de tudo compartilhado, o Oracle RAC exige armazenamento com reconhecimento de cluster para todos os arquivos de banco de dados. (HART, 2004)