17 de mar. de 2021

Tipos de Dados

    Dentro do banco de dados Oracle temos as tabelas e cada tabela é formada por colunas, que representam tipos de dados semelhantes, ou seja, em cada linha da tabela os tipos de dados de cada coluna será igual.

E como podemos descobrir qual o tipo de dados de cada coluna de uma tabela? Simples, basta executar o comando abaixo.

    describe nome_tabela;

ou ainda, podemos abreviar o comando da seguinte maneira

    desc nome_tabela;

    O resultados destes comando é uma listagem das colunas da tabela com seu respectivo tipo de dados.


    Agora que já sabemos como identificar o tipo de dados das colunas de uma tabela precisamos saber o que são cada um deles. A importância do tipo de dados se deve a otimização de um banco de dados, por exemplo, em um banco bem modelado, um campo que contém datas deverá ser do tipo DATE, podemos até armazenar em uma coluna que armazene uma cadeia de caracteres, porém, isso não é o ideal, a maneira que o banco de dados trabalha será prejudicada nesse caso, da mesma maneira um número, podemos armazena-lo em uma coluna que não seja do tipo NUMBER, mas nesse caso ele será tratado pelo banco de dados não como número e sim como um caractere alfanumérico.

Fonte:

https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/Data-Types.html#GUID-A3C0D836-BADB-44E5-A5D4-265BA5968483

11 de mar. de 2021

Utilizando ALIAS

    Já vimos como fazer uma consulta básica utilizando SQL no neste tópico, agora vamos aprofundar o conhecimento.

    Muitas vezes temos nomes de colunas que não são muito amigáveis para exibição. Por exemplo, podemos ter o nome de uma coluna em outro idioma do qual queremos exibir os resultados da consulta, nesse caso, podemos criar uma solução com a utilização de um alias. Um alias basicamente é um apelido para a coluna, que é válido para a exibição dos resultados da consulta em questão.

    Exemplo prático, utilizando a tabela EMPLOYEES do schema HR, precisamos retornar apenas 5 colunas, para isso basta escrever o nome das colunas que queremos exibir separadas por virgula ( , ).


O resultado é exibido com o nome das colunas em letra maiúsculas.

Para utilizar um alias podemos simplesmente incluir a palavra que queremos exibir após o nome da coluna e antes da virgula (,). Contudo, existem algumas regras.

Se for um nome composto ou que possua caracteres especiais devemos colocar entre aspas duplas ( " )

Se for necessário manter a formatação de maiúsculas e minúsculas também devemos utilizar as aspas duplas, caso o alias seja colocado sem aspas duplas, será sempre exibido em letras maiúsculas.



No exemplo acima, podemos ver vários exemplos de alias em uso. A sintaxe básica é:

coluna AS "alias"

A palavra reservada AS pode ser omitida, bem como as aspas duplas em alguns casos.

Os alias não podem ser utilizados na cláusula WHERE, porem, podemos utilizá-los na cláusula ORDER BY.


Ao tentar utilizar um alias no WHERE temos como retorno o erro: ORA-00904.

Abaixo exemplo utilizando o alias na ordenação.


Por que podemos utilizar um alias na ordenação mas não na filtragem?

    Isso ocorre pela maneira como o Oracle executa a consulta. Primeiro é realizada a busca na tabela pelas condições de filtragem, ou seja, os dados que estão na cláusula WHERE, após isso os dados são preparados para exibição, nesse ponto entra o alias para a coluna, e por fim a ordenação dos dados e nesse ponto o alias já existe para a coluna.




4 de mar. de 2021

Schemas e Schema Human Resources (HR)

 Schemas

       Para entender de maneira simples o que é um SCHEMA no Banco de Dados Oracle, podemos resumir que um schema é um usuário e tudo que tem dentro dele.

    O schema é criado automaticamente, quando um usuário é criado, embora possa ser criado através do comando CREATE SCHEMA. Dentro desta estrutura lógica ficam tabelas, procedures, índices entre outros objetos. E cada schema pertence apenas a seu usuário. Segue lista de objetos que fazem parte de um schema.

  • Analytic views
  • Attribute dimensions
  • Clusters
  • Constraints
  • Database links
  • Database triggers
  • Dimensions
  • External procedure libraries
  • Hierarchies
  • Index-organized tables
  • Indexes
  • Indextypes
  • Java classes
  • Java resources
  • Java sources
  • Join groups
  • Materialized views
  • Materialized view logs
  • Mining models
  • Object tables
  • Object types
  • Object views
  • Operators
  • Packages
  • Sequences
  • Stored functions
  • Stored procedures
  • Synonyms
  • Tables
  • Views
  • Zone maps

Embora muitas estruturas sejam armazenadas logicamente dentro de um schema, existem objetos que não fazem parte de um schema, tais objetos são os seguintes:

  • Contexts
  • Directories
  • Editions
  • Flashback archives
  • Lockdown profiles
  • Profiles
  • Restore points
  • Roles
  • Rollback segments
  • Tablespaces
  • Tablespace sets
  • Unified audit policies
  • Users

Schemas Sample

    Os schemas sample são estruturas disponibilizadas pela Oracle como exemplos, nela temos usuários, tabelas, índices, constraints, preenchidos com informações, o que torna possível aprender SQL utilizando os mesmos, pois é possível aplicar os conceitos de SQL, manipulando esses dados, criando joins entre as tabelas, testando o funcionamento de funções, enfim, um banco de dados completo e pronto para o uso. A familiaridade com esses schemas dummies, ajuda até mesmo nas provas de certificações da Oracle, visto que esses são utilizados nas questões, logo conhecendo a estrutura dos mesmo pode ajudar na hora da prova, onde se tem muitas questões e pouco tempo para pensar.

  • HR Schema (Human Resources) -
    • usado para tópicos de introdução ao SQL básico;
  • OE Schema (Order Entry)
    • usado para tópicos de dificuldade intermediária, possui mais tipos de dados;
  • OC Schema (Online Catalog) 
    • é uma coleção de objetos relacionais do utilizado no schema OE.
  • PM Schema  (Product Media)
    • dedicado para dados do tipo mídia;
  • CO Schema (Customer Orders)
    • é um schema moderno que possui demostrações de transações de e-commerce, permitindando armarzenar dados semi-estruturados usando JSON;
  • IX Schema (Information Exchange)
    • é um conjunto de schemas, usado para demonstrar as capacidades avançadas de consultas Oracle;
  • SH Schema (Sales History)
    • desenvolvido para demonstrar grandes quantidades de dados, possui suporte para processamento analítico.

    Até a versão 12 do banco do dados Oracle, era possível incluir a instalação desses schemas juntamente com a instalação do banco, nas versões mais recentes é necessário a instalação manualmente após o banco estar devidamente instalado.

    Maiores detalhes a respeito de cada um dos schemas de exemplo podem ser encontradas neste link.

    Para obter os samples schemas é necessário o download através do GitHub, disponível nesse link.

Instalando o Schema HR

    Como dito anteriormente, nas versões antigas do Oracle Database era possível definir a instalação dos schemas durante a instalação da aplicação, nas versões acima de 18c não temos essa opção, contudo, o schema HR fica disponível na instalação do Oracle Database no caminho: '$ORACLE_HOME/demo/schema/human_resources'.
    Após acessar o diretório onde se encontra os arquivos de instalação do schema, devemos acessar o SQLPlus utilizando um usuário com privilégios de administrador, podemos utilizar o comando abaixo para tal ação.

    $ sqlplus connect sys as sysdba

    Logo em seguida devemos executar o script hr_main.sql que contém os passos automatizados da instalação.
    SQL> @?/demo/schema/human_resources/hr_main.sql

Assim que o script for inicializado, serão apresentados prompts solicitando a inclusão de argumentos, na seguinte ordem:
    - Senha para o usuário HR;
    - Default tablespace para o schema HR;
    - Tablespace temporário para o schema HR;
    - Senha do usuário sys;
    - Diretório de log.

Seguido das informações solicitadas, é necessário aguardar finalizar a instalação.



    Assim que concluir a instalação devem ser verificados os logs para validação da instalação, em alguns casos podem ocorrer erros na criação do usuário HR, nesse caso, o restante da instalação também irá falhar, o erro pode estar relacionado com o tipo de sessão do usuário sys, nesse caso é necessário alterar o tipo de sessão para que e reexecutar o script para que seja concluído com sucesso.                            

    $ alter session set "_ORACLE_SCRIPT"=true;

Após a alteração da sessão, a instalação corre conforme o esperado.


E por fim temos schema devidamente instalado.

Para um detalhamento de todas as ações realizadas pelo script de instalação a Oracle disponibiliza essas informações nessa página.

Schema HR

    O schema HR mostra uma estrutura de recursos humanos de uma empresa, se divide nas seguintes tabelas:

  • EMPLOYEES
  • JOBS
  • JOB_HISTORY
  • DEPARTMENTS
  • LOCATIONS
  • REGIONS
  • COUNTRIES

 Segue abaixo modelo de dados do schema HR.



Finalmente com o ambiente completamente finalizado mãos a obra!


Fontes:

https://docs.oracle.com/en/database/oracle/oracle-database/19/comsc/index.html

https://docs.oracle.com/en/database/oracle/oracle-database/19/comsc/HR-sample-schema-scripts-and-objects.html

https://docs.oracle.com/database/121/COMSC/scripts.htm#COMSC00021

https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Database-Objects.html#GUID-31BE00A7-7FF9-41CB-852A-F1416912CA9E

3 de mar. de 2021

Criando uma conexão do Oracle Database no SQL Developer

    Após ter o banco de dados Oracle instalado temos o banco pronto para uso, para isso temos 2 formas de acessa-lo, através de um cliente em linha de comando ou através de um cliente visual.

    O cliente em linha de comando do Oracle é o SQLPLUS, ele vem instalado juntamente na instalação do banco de dados.

    Para acessar usando o basta chamar no prompt do sistema operacional onde o banco de dados foi instalado com a seguinte sintaxe.

        $ sqlplus / as sysdba


    Essa conexão serve para acessar como administrador e começar a utilizar o banco de dados.

    Embora, seja possível executar comandos DDL e DML através do SQLPLUS, no dia a dia, acaba não sendo uma ferramenta muita prática, sendo a ferramenta mais fácil o SQL Developer.

    Antes de sair fazendo consultas SQL no SQL Developer, é necessário criar uma conexão com o banco de dados.


    Após selecionar a opção nova conexão com banco de dados uma nova janela irá aparecer. Nesta janela, será necessário incluir as informações para a conexão com o banco de dados.

Name: Nome da conexão que será exibido na lateral da ferramenta.
Nome de usuário: Usuário do banco de dados
Nas informações do tipo de conexão é necessário de fato colocar as informações do banco de dados.
Nome do Host: IP ou hostname do servidor onde está rodando o banco de dados Oracle.
Porta: porta que o listener do banco de dados está esperando por conexões.
SID: Nome da instância do banco de dados que está executando.



    Após incluir as informações, basta clicar em teste e verificar se o teste teve sucesso, em caso positivo nossa conexão está pronta para o acessar o banco de dados Oracle, bastando salvar a conexão para que a mesma esteja disponível em outra ocasião.
    Nesse ponto, já estamos prontos para realizar consultas no banco de dados.










1 de mar. de 2021

Instalação do Oracle Database

    Após a criação de uma máquina virtual (VM) e instalar um sistema operacional (Oracle Linux 8) nesta VM, o próximo passo para finalizar um ambiente de estudos é a instalação do SGBD (DBMS) nesta máquina.

    Atualmente o Oracle Database está em sua versão 19c. As versões anteriores são  18c, 12c, 11g, pra ficar apenas nas mais recentes. Podemos notar que a partir da versão 18c houve uma mudança na nomenclatura, com o g dando lugar ao c, isso basicamente indica a mudança da estrutura da aplicação que saiu da versão grid para a versão cloud. As versões grid surgirão na versão 10 do Oracle e traziam a ideia da computação com facilidade para escalabilidades vertical e horizontal, enquanto as versões atuais de cloud indicam que estão de acordo com as novas tendências da computação em nuvem.

    Para iniciar a instalação devemos definir algumas configurações. No arquivo '/etc/hosts' vamos editar colocando o IP e nome completo da máquina.




Logo em seguida, definir o nome da máquina editando o arquivo '/etc/hostname'



    Após as devidas configurações, partimos para a pre instalação do Oracle Database. Podemos executar o comando abaixo, que faz o download de pacotes necessários para o banco de dados.

        # yum install oracle-database-preinstall-19c



Após esse passo é necessário algumas configurações adicionais.

1 - Definir uma senha para o usuário oracle.

    # passwd oracle

    Após esse comando será solicitado para digitar a senha que será definida para o usuário.

2 - Alterar o sistema operacional para o modo permissivo.

    Editar o arquivo '/etc/selinux/config' deixando o parâmetro SELINUX conforme exemplo abaixo.

    SELINUX=permissive

    Após a edição do arquivo, temos 2 opções para o novo argumento do parâmetro ter efeito, podemos reiniciar a máquina ou executar como root o comando abaixo.

    # setenforce Permissive

    Voltando para as configurações adicionais, desligamos o firewall, pois geralmente as empresas tem um sistema de firewall externo não necessitando que o mesmo seja configurado no sistema operacional do banco de dados.

    # systemctl stop firewalld

    # systemctl disable firewalld

    Após desabilitar o firewall devemos efetuar a criação das pastas que serão utilizadas pelo Oracle Database.

    #mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1

    #mkdir -p /u02/oradata

Após criar as pastas é necessário dar as devidas permissões para as mesmas.

    #chown -R oracle:oinstall /u01 /u02

    #chmod -R 775 /u01 /u02

    Agora é necessário descompactar o pacote do instalador na pasta onde será instalado o banco de dados, mas antes disso, devemos sair do usuário root e fazer login usando o usuário oracle, para isso é necessário acessar o diretório "cd /u01/app/oracle/product/19.0.0/dbhome_1/" e em seguida executar o comando para descompactar.

    $unzip -oq /home/oracle/LINUX.X64_193000_db_home.zip 

    Assim que o arquivo da instalação estiver descompactado, enfim pode ser iniciada a instalação, para isso é necessário executar o instalador.

    $ ./runInstaller

















    Após finalizar a instalação, no servidor precisamos subir o banco de dados. Para isso devemos ir até a pasta '$ORACLE_HOME/bin' exportas as variáveis do ambiente oracle com o comando abaixo.

    $ . oraenv

    Após validar o listener do banco, com o comando abaixo.

$ lsnrctl status


Caso o listener não esteja ativo, subir com o comando abaixo:

$lsnrctl start


Após o banco estar operativo, podemos conectar com sucesso!




Agora que o banco de dados já está operante, basta criar uma conexão na aplicação SQL Developer e passar a utilizar o banco de dados.