Arquivos de Categoria: Oracle

Banco de Dados I – Aula 16A

Exercícios SQL

A empresa ABC VENDASCAR LTDA é uma emprea que atua em vendas de carros seminovos e usados multimarcas, principalmente em São Paulo (Capital) e no grande ABC.

Atualmente a empresa implantou o seguinte sistema para melhor controle seus orcamentos e suas vendas. Como a empresa NÃO faz vendas exclusiva de um fabricante, ela optou por trabalhar com veículos dos fabricantes Volkswagem, Chevrolet (GM), Ford e Fiat, para que não fique preso à uma única marca.

O cliente pode ser tanto pessoa física ou juridica, a qual na compra de mais de um carro em uma única negociação, é possível ter descontos mais vantajosos.

Primeiro é necessário que o cliente tenha um pré-cadastro no sistema para que os vendedores apresentem um orcamento prévio. Caso seja aprovado o orcamento, aí sim o orcamento se transforma em uma venda efetiva.

A empresa tem o seguinte esquema de tabelas em seu banco de dados:

FABRICANTE (COD_FAB, DESC_FAB)

MODELO (COD_MOD, DESC_MOD, COD_FAB)

COR (COD_COR, DESC_COR)

VEICULO (COD_VEI, COD_MOD, ANO_FABRICACAO, ANO_MODELO, VALOR_CUSTO, VALOR_VENDA, COD_COR)

CIDADE (COD_CID, DESC_CID, UF)

PLACA_VEICULO (COD_VEI, PLACA, COD_CID)

CLIENTE (COD_CLI, NOME_CLI, TIPO_PESSOA, COD_CID)

ORCAMENTO (COD_ORC, DATA_ORC, VALIDADE_ORC, COD_CLI)

ITEM_ORCAMENTO (COD_ORC, ITEM_ORC, COD_VEI, QUANTIDADE, VALOR_ORC, VALOR_DESCONTO)

VENDA (COD_VENDA, COD_ORC, DATA_VENDA)

ITEM_VENDA (COD_VENDA, ITEM_VENDA, COD_VEI, QUANTIDADE, VALOR_VENDA)

 

Baseado no cenário descrito, faça os exercícios em SQL e também crie o schema VENDASCAR, com as tabelas descritas acima. Por enquanto, as tabelas irão estar sem os relacionamentos necessários, porém tenha ciência de que os dados precisam ter relação entre si. Aconselhável fazer em dupla, onde 1 aluno pode fazer a criação do schema e tabelas e outro pode fazer as consultas SQL.

  1. Selecione o nome do veículo que tenha menor custo do estoque; (função de grupo)
  2. Liste todos os nomes de fabricantes de veículos que tiveram orcamentos feitos no período de 01/06/2017 a 30/06/2017;
  3. Selecione o cliente que mais orçou veículos no período de 01/01/2017 a 30/06/2017;
  4. Selecione as cores dos 5 veículos mais orçados período de 01/01/2017 a 30/06/2017; (pesquisar sobre limitação de registros)
  5. Liste as cidades dos carros vendidos dos fabricantes Volkswagem e Chevrolet (GM), no período de venda de 01/01/2017 a 31/12/2017;
  6. Liste os veículos (placa, cidade, fabricante, modelo) da cidade de Jundiaí, Campinas e São Paulo que foram vendidos entre 01/07/2017 a 31/12/2017;
  7. Selectione os orcamentos feitos (Código do orcamento, data, fabricante, modelo, quantidade, valor, desconto, subtotal (quantidade * valor – desconto) feitos no período do ano de 2016;
  8. Selecione os 5 veículos mais vendidos no período do ano de 2016; (use funções de Grupo)
  9. Selecione os orcamentos feitos no período de 01/01/2017 a 31/03/2017, porém que não foram fechados;
  10. Selecione a média de vendas de junho, julho e agosto de 2017; (função de grupo)

 

Vídeo 01

 

Vídeo 02

 

Anúncios

Banco de Dados I – Aula 15A

FUNÇÕES SQL

As funções são um recurso avançado do SQL e podem ser usadas para realizar:

– Executar cálculos usando dados;

– Modificar itens de dados individuais;

– Manipular saída para grupos de linhas;

– Formatar datas e números para exibição;

– Converter tipos de dados de coluna;

As funções SQL podem aceitar argumentos e sempre retornar um valor;

Há dois tipos de funções:

– Funções de uma única linha;

– Funções de várias linhas;

FUNÇÕES DE UMA ÚNICA LINHA

Essas funções operam somente linhas únicas e retornam um resultado por linha. Há dois tipos diferentes de funções de uma única linha.

– Caractere;

– Número;

– Data;

– Conversão;

Essas funções manipulam grupos de linha a fim de obter um resultado por grupo de linhas.

– Manipulam itens de dados;

– Aceitam argumentos e retornam um valor;

– Agem em cada linha retornada;

– Retornam um resultado por linha;

– Podem modificar o tipo de dados;

– Podem ser aninhadas;

Um argumento pode ser:

– Constante fornecida pelo usuário;

– Valor variável;

– Nome da coluna;

– Expressão;

Os recursos de funções de uma única linha:

– Atuam em cada linha retornada na consulta;

– Retornam um resultado por linha;

– Podem retornar um valor de dados de um tipo diferente do mencionado;

– Podem esperar um ou mais argumentos;

– Podem ser usados em cláusulas SELECT, WHERE e ORDER BY; podem ser aninhados;

– Funções de caractere: aceitam entrada de caractere e podem retornar valores de número e caractere;

– Funções numéricas: aceitam entrada numérica e reotrnam valores numéricos;

– Funções de data: operam sobre valores do tipo de dados data (todas as funções de data retornam data, exceto a função MONTHS_BETWEEN, que retorna um número)

– Funções de conversão: Convertem um valor de tipo de dados para outro;

– Funções gerais:

  • Função NVL;
  • Função DECODE;

FUNÇÕES DE CARACTERE

Podem ser divididas em duas características:

–Funções de conversão de maiúscula e minúscula;

  • LOWER, UPPER e INITCAP

–Funções de manipulação de caractere;

  • CONCAT, SUBSTR, LENGTH, INSTR, LPAD, TRIM

FUNÇÕES DE CONVERSÃO DE MAIÚSCULAS / MINÚSCULAS

– LOWER: Converte string de caracteres com letras maiúsculas e minúsculas ou só maiúsculas para letras minúsculas;

– UPPER: Converte string de caracteres com letras maiúculas e minúsculas ou só minúsculas para letras maiúsculas;

– INITCAP: Converte a primeira letra de cada palavra para maiúscula e mantém as outras letras em minúsculas;

SQL> SELECT UPPER(NMDEPTO)
2  FROM DEPTO;

SQL> SELECT LOWER(NMDEPTO)
2  FROM DEPTO;

SQL> SELECT INITCAP(NMDEPTO)
2  FROM DEPTO;

SQL> SELECT UPPER(NMDEPTO)
2  FROM DEPTO
3  WHERE UPPER(NMDEPTO) LIKE '%A%';

FUNÇÕES DE MANIPULAÇÃO DE CARACTERE

– CONCAT, SUBSTR, LENGTH, INSTR, LPAD e TRIM são as seis funções de manipulação de caractere;

– CONCAT: Une valores de junção (Voce está limitado a usar dois parâmetros com CONCAT);

– SUBSTR: Extrai uma string de determinado tamanho;

– LENGTH: Exibe o tamanho de uma string como um valor numérico;

– INSTR: Localiza a posição numérica do caractere nomeado;

– LPAD: Preenche o valor do caractere justificado à direita;

– RPAD: Preenche o valor de caractere justificado à esquerda;

– TRIM: Organiza cabeçalho ou caracteres de fim de linha (ou os dois) a partir de uma string de caractere;

SQL> SELECT CONCAT(NRMATRIC, NMFUNC),
2          LENGTH(NMFUNC),
3          INSTR(NMFUNC,’A’)
4  FROM FUNCIONARIO
5  WHERE SUBSTR(NMDEPTO,1,2) = 'JO';

FUNÇÕES NUMÉRICAS

ROUND: Arredonda valor para determinado decimal;

  •   ROUND(45.926,2) –> 45.93

TRUNC: Trunca valor para determinado decimal;

  •   ROUND(45.926,2) –> 45.92

MOD: Retorna o restante da divisão;

  •   MOD(1600,300) –> 100

USANDO A FUNÇÃO ROUND

SQL> SELECT ROUND(45.923,2),
2       ROUND(45.923,0),
3       ROUND(45.923,-1)
4  FROM DUAL;

USANDO A FUNÇÃO TRUNC

SQL> SELECT TRUNC(45.923,2),
2       TRUNC(45.923),
3       TRUNC(45.923,-1)
4  FROM DUAL;

USANDO A FUNÇÃO MOD

SQL> SELECT MOD(VRSALARIO,2)
2  FROM CARGO;

TRABALHANDO COM DATAS

O Oracle armazena datas em um formato numérico interno: século, ano, mês, dia, horas, minutos, Segundo;

O formato de data default é DD-MON-YY;

SYSDATE é uma função de retorno de data e hora;

DUAL é uma tabela fictícia usada para visualizar SYSDATE;

EXIBINDO A DATA ATUAL

SQL> SELECT SYSDATE
2  FROM DUAL;

ARITMÉTICA COM DATAS

Adicionar ou subtrair um número de, ou para, uma data para um valor de data resultante;

Subtrair duas datas a fim de localizer o número de dias entre estras datas;

Adicionar horas por uma data dividindo o número de horas por 24;

ARITMÉTICA COM DATAS

ScreenHunter_298 Nov. 11 19.31

USANDO OPERADORES ARITMÉTICOS COM DATAS

SQL> SELECT NMFUNC,
2    (SYSDATE – DTADM) / 7 SEMANA
3  FROM FUNCIONARIO;

FUNÇÕES COM DATAS

ScreenHunter_299 Nov. 11 19.32

FUNÇÕES COM DATAS

MONTHS_BETWEEN('01-SEP-95','11-JAN-94')
--> 19.6774194

ADD_MONTHS('11-JAN-96',6)
--> ’11-JUL-94’

NEXT_DAY('01-SEP-95','FRIDAY')
--> '08-SEP-95'

LAST_DAY('01-SEP-95')
--> '30-SEP-95'

ROUND('25-JUL-95','MONTH')
--> 01-AUG-95

ROUND('25-JUL-95','YEAR')
--> 01-JAN-96

TRUNC('25-JUL-95','MONTH')
--> 01-JUL-95

TRUNC('25-JUL-95','YEAR')
--> 01-JAN-95

 

Vídeo 01

Banco de Dados I – Aula 14A

EXIBINDO DADOS DE VÁRIAS TABELAS

Há situações em que precisamos buscar dados de várias tabelas, onde um select simples não consegue obter esses dados;

Nesses casos, é necessário utilizar dados a partir de uma ou mais tabelas;

Para isso, precisamos fazer junção de tabelas;

O QUE É JUNÇÃO?

Use a junção para consultar dados a partir de uma ou mais tabelas;

Criar uma condição de junção na cláusula WHERE;

Prefixar o nome da coluna com o nome da tabela quando o mesmo nome da coluna aparecer em mais de uma tabela

Exemplo de junção

SQL> SELECT tabela1.coluna, tabela2.coluna
2  FROM tabela1, tabela2
3  WHERE tabela1.coluna = tabela2.coluna;

 

USANDO O SCHEMA HR DO ORACLE

hr

PRODUTO CARTESIANO

Um produto cartesiano é formado quando:

– Uma condição de junção estiver omitida;

– Uma condição de junção estiver inválida;

– Todas as linhas na primeira tabela estão unidas a todas as linhas da segunda tabelas;

Para evitar um produto Cartesiano, sempre inclua uma condição de junção válida em uma cláusula WHERE;

GERANDO UM PRODUTO CARTESIANO

Gera-se um produto cartesiano caso uma condição de junção seja omitida.

SQL> SELECT FIRST_NAME,
  2           DEPARTMENT_NAME
  3    FROM   EMPLOYEES,
  4           DEPARTMENTS;

 

TIPOS DE JUNÇÃO

Há dois tipos principais de condições de junção:

– Junção idênticas;

– Junção não-idêntcias;

Métodos de junção adicional incluem:

– Junções externas;

– Autojunções;

– Operadores de conjunto;

 

JUNÇÃO IDÊNTICA

ScreenHunter_393 Nov. 06 12.59

RECUPERANDO REGISTROS COM JUNÇÕES IDÊNTICAS

SQL>SELECT  FIRST_NAME,
            EMPLOYEES.DEPARTMENT_ID,
            DEPARTMENTS.DEPARTMENT_ID,
            DEPARTMENT_NAME
    FROM    EMPLOYEES, DEPARTMENTS
    WHERE   EMPLOYEES.DEPARTMENT_ID =
                      DEPARTMENTS.DEPARTMENT_ID;

QUALIFICANDO NOMES DE COLUNA AMBÍGUAS

Use os prefixos de tabela para qualificar nomes de colunas que estão em várias tabelas;

Diferencie colunas que possuem nomes idênticos, mas que residam em tabelas diferentes usando apelidos de coluna;

CONDIÇÕES DE PESQUISA ADICIONAIS USANDO O OPERADOR AND

Além da junção, é possível ter critérios para a cláusula WHERE;

SELECT   EMPLOYEE_ID, FIRST_NAME,
         DEPARTMENT_NAME
FROM     EMPLOYEES, DEPARTMENTS
WHERE    EMPLOYEES.DEPARTMENT_ID =
                       DEPARTMENTS.DEPARTMENT_ID
         AND FIRST_NAME = 'Diana';

USANDO APELIDOS DE TABELA

Apelidos de tabelas podem ter um tamanho de até 30 caracteres;

Se um apelido de tabela for usado para um determinado nome de tabela na cláusula FROM, deve-se utilize-lo para toda a instrução SELECT;

Apelidos devem ser significativos;

O apelido de tabela é válido somente para a instrução SELECT atual;

 

USANDO APELIDOS DE TABELA

SELECT   E.FIRST_NAME,
         J.JOB_TITLE,
         D.DEPARTMENT_NAME
FROM     EMPLOYEES E,
         JOBS J,
         DEPARTMENTS D
WHERE    E.JOB_ID = J.JOB_ID
         AND E.DEPARTMENT_ID =   D.DEPARTMENT_ID;

 

JUNÇÕES NÃO-IDÊNTICAS

O relacionamento de junção não-idênticas  significa que não há nenhum coluna correspondente diretamente entre as duas tabelas;

SELECT    E.FIRST_NAME, E.LAST_NAME,
          E.SALARY, J.MIN_SALARY,   J.MAX_SALARY,
          J.JOB_TITLE
FROM      EMPLOYEES E, JOBS J
WHERE     E.SALARY
          BETWEEN J.MIN_SALARY AND   J.MAX_SALARY;

 
Se uma linha não satisfazer uma condição de junção, a linha não aparecerá no resultado da consulta.

ScreenHunter_394 Nov. 06 13.03

Use uma junção externa para consultar também todas as linhas que em geral não atendem à condição de junção.

O operador de junção externo é um sinal de adição (+);

EXEMPLO DE JUNÇÕES EXTERNAS

SELECT   E.FIRST_NAME,
         D.DEPARTMENT_NAME
FROM     EMPLOYEES E,
         DEPARTMENTS D
WHERE    E.DEPARTMENT_ID(+) =
                          D.DEPARTMENT_ID

 
O operador da junção externa pode aparecer somente de um lado da expressão – o lado que possui informações ausentes. Ele retorna estas linhas de uma tabela que não possui correspondênciadireta em outra tabela;

Uma condição envolvendo uma junção externa não pode usar o operador IN ou vincular a outra condição pelo operador OR;

 

AUTOJUNÇÕES

Algumas vezes será necessário unir uma tabela a ela mesma.

ScreenHunter_395 Nov. 06 13.05

EXEMPLO DE AUTOJUNÇÕES

SELECT   WORKER.FIRST_NAME
         ||' TRABALHA PARA ' ||
         MANAGER.FIRST_NAME
FROM     EMPLOYEES WORKER,
         EMPLOYEES MANAGER
WHERE    WORKER.MANAGER_ID =
                       MANAGER.EMPLOYEE_ID;

 

Vídeo 01

Installing and configuring disks with fdisk and oracleasm commands – Part 05

Instalando e configurando discos com os comandos fdisk e oracleasm – Parte 05 (off topic)

Até o momento, só fizemos a expansão de discos da máquina virtual. Precisaremos particionar os discos existentes, instalar e configurar o oracleasm para o Oracle Linux 7.3 e aplicar o asm nas partições dos discos.

Inicie a máquina virtual normalmente.

ScreenHunter_315 Jul. 17 12.47

Entre com o usuário oracle, e senha dada no momento da criação do usuário:

ScreenHunter_316 Jul. 17 12.56

Particionando os dispositivos /dev/sdb e /dev/sdc

Após ter iniciado a sessão do ambiente, vá ao menu Applications / Utilities / Disks

ScreenHunter_144 Jul. 18 20.42

Observe que o dispositivo /dev/sda está configurado conforme instalação inicial do Linux, contendo as partições de /boot, swap e /. Os mesmos já estão devidamente montandos.

ScreenHunter_145 Jul. 18 20.43

O dispositivo /dev/sdb está sem particionar e a intenção é este dispositivo fique dividido como:
sdb1 – 12 GB – Ext4 (ponto de montagem /u01)
sdb2 – 2 GB – GUID Partition Table (Volume ASMDISK01)
sdb3 – 2 GB – GUID Partition Table (Volume ASMDISK02)
sdb4 – 2 GB – GUID Partition Table (Volume ASMDISK03)
sdb5 – 2 GB – GUID Partition Table (Volume ASMDISK04)

ScreenHunter_146 Jul. 18 20.43

O dispositivo /dev/sdc está sem particionar e a intenção é este dispositivo fique dividido como:
sdc1 – 1 GB – GUID Partition Table (Volume ASMDISK05)
sdc2 – 1 GB – GUID Partition Table (Volume ASMDISK06)
sdc3 – 1 GB – GUID Partition Table (Volume ASMDISK07)
sdc4 – 1 GB – GUID Partition Table (Volume ASMDISK08)
sdc5 – 1 GB – GUID Partition Table (Volume ASMDISK09)
sdc6 – 1 GB – GUID Partition Table (Volume ASMDISK10)
sdc7 – 1 GB – GUID Partition Table (Volume ASMDISK11)
sdc8 – 1 GB – GUID Partition Table (Volume ASMDISK12)
sdc9 – 1 GB – GUID Partition Table (Volume ASMDISK13)
sdc10 – 1 GB – GUID Partition Table (Volume ASMDISK14)
sdc11 – 1 GB – GUID Partition Table (Volume ASMDISK15)

ScreenHunter_147 Jul. 18 20.44.jpg

Precisaremos utilizar o fdisk para fazer os particionamentos dos discos.

Abra um terminal, se transforme em super usuário (su -), com a senha “oracle” (sem aspas) e digite o comando fdisk -l (para listar os discos e suas partições). Perceba que o dispositivo /dev/sda está particionado e montado.

ScreenHunter_148 Jul. 18 22.54.jpg

Iremos particionar o dispositivo /dev/sdb, conforme o mapa abaixo:

sdb1 – 12 GB – Ext4 (ponto de montagem /u01)
sdb2 – 2 GB – GUID Partition Table (Volume ASMDISK01)
sdb3 – 2 GB – GUID Partition Table (Volume ASMDISK02)
sdb4 – 2 GB – GUID Partition Table (Volume ASMDISK03)
sdb5 – 2 GB – GUID Partition Table (Volume ASMDISK04)

Para isso, digite o comando “fdisk /dev/sdb”(sem aspas). Com isso, iremos entrar no menu do fdisk.

ScreenHunter_149 Jul. 18 22.57

Digite m para mostrar a lista de opções disponíveis para o dispositivo /dev/sdb

ScreenHunter_150 Jul. 18 22.59.jpg

Digite g (em minusculo), para criar um tipo de partição GUID Partition Table (GPT)

ScreenHunter_151 Jul. 18 23.01

Clique em n para criar uma nova partição, [enter] par deixar a partição 1 como default, [enter] para deixar o setor inicial, e digite “+12G” (sem aspas) para acionar 12 GB nessa partição.

ScreenHunter_152 Jul. 18 23.03

Iremos continuar a fazer as demais partições com 2 GB cada. Faça o mesmo procedimento para a partições, 2, 3 e 4 com 2 GB cada.

ScreenHunter_153 Jul. 18 23.08.jpg

Na última partição a ser criada, repare que tentando colocar o tamanho +2G, irá retornar um erro que está ultrapassando o range da faixa permitida. Simplesmente pressioner [enter] para obter o default.

ScreenHunter_154 Jul. 18 23.10

Digite o comando “w” (sem aspas) para gravar as alterações feitas.

ScreenHunter_155 Jul. 18 23.12

No terminal, digite novamente o comando fdisk -l. Observe agora que o dispositivo /dev/sdb está dividido.

ScreenHunter_156 Jul. 18 23.15.jpg

Faça a mesma coisa para o dispositivo /dev/sdc. Divida em 12 partes de 1 GB cada.

ScreenHunter_157 Jul. 18 23.19.jpg

Depois de ter criado todas as partições, no terminal digitando o comando “fdisk -l /dev/sdc” (sem aspas), deve aparesentar aproximadamente como a figura abaixo.

ScreenHunter_158 Jul. 18 23.23.jpg

No ambiente X-Window (gráfico), em Applications / Utilities / Disks, verifque como ficou o particionamento do dispositivo /dev/sdb.

ScreenHunter_159 Jul. 18 23.27.jpg

Observe o dispositivo /dev/sdc.

ScreenHunter_160 Jul. 18 23.28.jpg

Desse modo, terminamos de fazer o particionamentos dos dispositivos /dev/sdb e /dev/sdc.

Por segurança, crie um snapshot até esse ponto da máquina virtual.

ScreenHunter_161 Jul. 18 23.45.jpg

Montando o dispositivo /dev/sdb1 (de 12 GB) para o ponto de montagem /u01

O ponto de montagem /u01 é padrão para a estrutura de diretórios do Oracle Database. Precisaremos formatar o dispositivo /dev/sdb1 e fazer com que o ponto de montagem seja montado automaticamente.

Precisaremos configurar o arquivo /etc/selinux/config, para que o parametro SELINUX fique igual a disabled.

ScreenHunter_162 Jul. 18 23.52

Edite a linha SELINUX=sdisabled e salve o arquivo.

ScreenHunter_163 Jul. 18 23.53.jpg

Reinicie o servidor Linux

ScreenHunter_164 Jul. 18 23.54

Depois de ter reiniciado a máquina, abra novamente o terminal, e de o comando “su -” (sem aspas) para se transformar em super usuário.

Formate o dispositivo /dev/sdb1, com o seguinte comando:
mkfs –t=ext4 /dev/sdb1

ScreenHunter_165 Jul. 19 00.00.jpg

Até esse momento, fizemos a formatação com o sistema de arquivo ext4 do dispositivo /dev/sdb1. Precisamos montar esse dispositivo em um ponto de montagem, chamado /u01.

No ambiente X-Window (gráfico), vá em Applications / Utilities / Disks, e clique em cima do dispositivo /dev/sdb1 (13 GB). Clique no ícone da engrenagem e escolha Format. Faça a formatação da partição e logo estará definido o Sistema de Arquivo da partição.

Após a formatação, selecione a opção “Edit Mount Options…: .

ScreenHunter_166 Jul. 19 00.06.jpg

Após ter entrado na opção, deixe as seguintes configurações para essa partição e clique em [OK]

ScreenHunter_167 Jul. 19 00.07.jpg

Ele pedirá a confirmação da senha do administrador.

ScreenHunter_168 Jul. 19 00.07

Clique no ícono play (seta para direita) do dispositivo configurado. Irá ser pedido mais uma vez a senha do administrador (oracle) e posteriormente irá montar o ponto de montagem configurado:

ScreenHunter_169 Jul. 19 00.08.jpg

No terminal, digite o comando df -h e verifique se o ponto de montagem /u01 está disponível.

ScreenHunter_170 Jul. 19 00.14.jpg

Para ter certeza de que o ponto de montagem /u01 irá ser montado toda vez que o Linux for reiniciado, verifique o conteúdo do arquivo /etc/fstab. Observe que o linux adicionou na ultima linha o comando de montagem automática.

ScreenHunter_171 Jul. 19 00.16

Instalando o oracleasm

No terminal com o usuário oracle (acesso de su), com o comando “yum install oracleasm-support kmod-oracleasm” (sem aspas) , faça a instalação dos pacotes., Digite “y” para baixar os pacotes.

ScreenHunter_172 Jul. 19 00.25.jpg

Após algum tempo, a instalação será completada.

ScreenHunter_173 Jul. 19 00.29

Apesar de ter instalado o oracleasm, ele ainda não foi configurado. Baseado no site https://pierreforstmanndotcom.wordpress.com/2015/01/20/how-to-install-asmlib-on-oracle-linux-7-with-unbreakable-linux-kernel-uek/, adaptei os comandos para configurar o oracleasm.

Verifique se o serviço do oracleasm está habilitado com o seguinte comando:

systemctl is-enabled oracleasm.service

ScreenHunter_174 Jul. 19 00.34

Porém, mesmo habilitado, o módulo ainda não está corregado no kernel.

lsmod | grep oracleasm

ScreenHunter_175 Jul. 19 00.35

Com o comando modinfo oracleasm, podemo ver que o módulo está instalado

ScreenHunter_176 Jul. 19 00.38.jpg

Para carregar o driver ASMLib, de o comando no terminal

/usr/sbin/oracleasm init

ScreenHunter_177 Jul. 19 00.40.jpg

Após isso, repita novamente o comando
lsmod | grep oracleasm

ScreenHunter_178 Jul. 19 00.42

E agora configure o asmlib, com o comando
/usr/sbin/oracleasm configure -i

ScreenHunter_179 Jul. 19 00.44

Digite o comando abaixo para listar os discos configurados pelo oracleams
oracleasm listdisks

ScreenHunter_180 Jul. 19 00.46

Para criar discos com ASM, digite os comandos abaixo, um de cada vez.

oracleasm createdisk ASMDISK01 /dev/sdb2
oracleasm createdisk ASMDISK02 /dev/sdb3
oracleasm createdisk ASMDISK03 /dev/sdb4
oracleasm createdisk ASMDISK04 /dev/sdb5

Desse modo, configuramos as partições sdb2, sdb3, sdb4 e sdb5 com as devidas nomenclaturas.

ScreenHunter_181 Jul. 19 00.50

Abra o utilitário Disks do ambiente gráfico e verifique o dispositivo /dev/sdb

ScreenHunter_182 Jul. 19 00.52.jpg

Faça a mesma coisa o dispositivo /dev/sdc no terminal

oracleasm createdisk ASMDISK05 /dev/sdc1
oracleasm createdisk ASMDISK06 /dev/sdc2
oracleasm createdisk ASMDISK07 /dev/sdc3
oracleasm createdisk ASMDISK08 /dev/sdc4
oracleasm createdisk ASMDISK09 /dev/sdc5
oracleasm createdisk ASMDISK10 /dev/sdc6
oracleasm createdisk ASMDISK11 /dev/sdc7
oracleasm createdisk ASMDISK12 /dev/sdc8
oracleasm createdisk ASMDISK13 /dev/sdc9
oracleasm createdisk ASMDISK14 /dev/sdc10
oracleasm createdisk ASMDISK15 /dev/sdc11
oracleasm createdisk ASMDISK16 /dev/sdc12

ScreenHunter_183 Jul. 19 00.56.jpg

ScreenHunter_184 Jul. 19 00.58.jpg

Volte a ferramenta gráfica Disks e verifique o dispositivo /dev/sdc. Perceba que o /dev/sdc6 nao foi atribuido o ASM. Refaça o comando novamente para as partições que não acataram.

ScreenHunter_185 Jul. 19 00.59.jpg

No meu caso, repeti o comando para o dispositivo /dev/sdc6

ScreenHunter_186 Jul. 19 01.01

 

Configuring Oracle Enterprise Linux 7 environment for Oracle Database 11g installation – Part 03

Configurando o ambiente Oracle Enterprise Linux 7 para instalação do Oracle Database 11g – Parte 03 (topic off)

01 – Instalando Imagem de CD dos Adicionais para Convidado

Após ter instalado a máquina virtual com o Oracle Enterprise Linux 7, é necessário fazer a atualização de algumas bibliotecas e ajustar o seu ambiente para que melhor possa traballhar.

Como a instalação está em uma máquina virtual, é muito aconselhável que façamos a instalação dos drives adicionais para Convidado. É uma forma de ter mais compatibilidade de dispositivos compartilhados entre a máquina virtualizada e o host (no meu caso, o host é um Windows 10). O mouse, teclado, câmera e outros dispositivos de sua máquina melhor compatibilizam entre esses dois ambientes.

Para isso, entre e logue em sua máquina virtual criada. No menu da máquina virtual, vá em Dispositivo / Inserir Imagem de CD dos Adicionais para Convidado…

Captura de tela 2017-07-14 22.21.07.png

Aparecerá uma tela de confirmação, para poder executar o conteúdo do “CD”. Clique em [Run].

ScreenHunter_93 Jul. 14 22.24

Digite a senha para o usuário administrador, que foi configurada na instalação como “oracle” (sem aspas)

ScreenHunter_94 Jul. 14 22.25

O virtualbox irá acabar de instalar o Additions Guest.

ScreenHunter_96 Jul. 14 22.27.jpg

Reinicie o Linux e perceba que já não é mais necessário ficar pressionando <Alt GR> + <Ctrl> (direito) para alterar entre a máquina virtual e o host.

Após ter reiniciado a máquina virtual, faça um snapshot dessa máquina, para que seja possível restaurar até o ponto criado. Na configuração da máquina virtual, no canto superior direito, vá em Snapshot, clique no ícone da máquina fotográfica e de um nome e uma descrição para o Snap shot. Clique em [OK]. Desse modo, voce criou um ponto de restauração em sua máquina virtual.

ScreenHunter_97 Jul. 14 22.55.jpg

02 – Configurando arquivos e variáveis de sistema para para o Oracle Database 11g

Configurando a placa de rede do servidor Oracle Linux Enterprise

Na instalação da estrutura da máquina virtual, deixamos a configuração da placa de rede como tipo “Placa em modo Bridge”, ou seja, a sua máquina virtual irá fazer parte da sua rede como se fosse um host qualquer.

Na maioria das redes domésticas, o router de internet está configurado para distribua IP’s dinamicamente, ou seja, quando um dispositivo conecta a sua rede, atribui-se um IP diferente.

Para qualquer tipo de servidor, é necessário que o número IP esteja fixo ou estático. Vamos fazer essa configuração no servidor Linux, para que ele “nunca” mude de IP.

Abra um terminal ( no menu Applications / favorites / terminal) e ping em um número IP da sua rede que não esteja sendo usado (preferencialmente um IP que voce memorize facilmente), para que não haja conflitos de IP. Após ter confirmado que o IP não esteja sendo utilizado, digite “exit” (sem aspas) para fechar o terminal.

ScreenHunter_101 Jul. 16 11.06.jpg

 

No ambiente de trabalho, clique em cima da bateria / wired /wired settigns

ScreenHunter_98 Jul. 16 10.58

Irá ser mostrado as configurações atuais da placa de rede. No caso abaixo apresentado, está configurado para ser DHCP. Clique em cima do ícone da engrenagem para que o sistema apresente as configurações a serem modificadas.

ScreenHunter_99 Jul. 16 11.03

Na aba IPv4, altere as configurações da sua placa de rede para “Manual”. Digite as novas configurações da sua placa de rede, clique [Apply] e feche a janela da placa de rede. Clique em Off e On para reiniciar as configurações da placa de rede.

ScreenHunter_102 Jul. 16 11.14.jpg

Preferencialmente, no seu host fisico, tente dar um ping no IP dado à máquina virtual. Dessa forma, se o ping retornar, é sinal que a sua máquina virtual está sendo enchergada na rede.

ScreenHunter_103 Jul. 16 20.31.jpg

Configurando o arquivo hostname

No Terminal do Linux, transforme-se em super usuário, com o comando “su -” (sem aspas) e digite a senha de administrador dado na instalação (oracle). Verifique o nome do host na máquina virtual com o comando hostname.

ScreenHunter_104 Jul. 16 20.32.jpg

Complemente o arquivo /etc/hosts com o seu editor favorito. No caso, estamos utilizando o “vi”, pois é o editor padrão que é possível usar em qualquer sistema linux.

ScreenHunter_105 Jul. 16 20.40

Dentro do arquivo, adicione a linha do meio com o numero IP mais o nome do host. (no caso abaixo, adicionamos a linha 192.168.25.10 oracle.localhost localhost). Salvamos o arquivo com <ESC>, para sair do modo de edição e depois com o comando :wq (dois pontos, write, quit)

ScreenHunter_106 Jul. 16 20.43

Dê um ping no nome oracle.localhost e veja se o ping retorna. De um <Ctrl> + C para cancelar o ping

ScreenHunter_107 Jul. 16 20.44.jpg

Instalando pacotes de requisitos de software para o Oracle Database 11g

Mesmo o Oracle Linux sendo um Sistema Operacional da própria Oracle, é necessário primeiramente instalar softwares de dependencia antes de iniciar a instalação.

É importante a sua máquina virtual estar conectada à internet, para que se possa utilizar o comando yum. Execute o comando “yum install binutils-2.* gcc.*”

ScreenHunter_109 Jul. 16 20.59.jpg

Criando grupos de arquivos para oracle

Crie os grupos oinstall e dba, através dos comandos groupadd. Verifique se os grupos realmente foram criados através do comandos grep

ScreenHunter_110 Jul. 16 21.30

Verifique se o usuário oracle existe através do comando “id oracle”.

ScreenHunter_111 Jul. 16 21.43

É necessário adicionar o usuário oracle aos grupos criados oinstall e dba, através dos comandos abaixo:

ScreenHunter_113 Jul. 16 21.47.jpg

Configurando parametros do Kernel

Edite do arquivo /etc/sysctl.conf com o editor de sua preferencia:

ScreenHunter_114 Jul. 16 21.59

Complemente o arquivo conforme o texto abaixo, ficando como a figura a seguir. Salve a arquivo.

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
#kernel.shmmax = 536870912
kernel.shmmax = 1578493952
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576

ScreenHunter_115 Jul. 16 22.00

Edite do arquivo /etc/security/limits.conf com o editor de sua preferencia:

ScreenHunter_116 Jul. 16 22.20

Adicione as linhas abaixo no final do arquivo:

#numero de arquivos abertos
oracle soft nofile 4096
oracle hard nofile 65536
#numero maximo de processos
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768
#espaco de memoria bloqueada
oracle soft memlock 2765
oracle hard memlock 2765

ScreenHunter_117 Jul. 16 22.22

Edite do arquivo /etc/pam.d/login com o editor de sua preferencia:

ScreenHunter_118 Jul. 16 22.25

Adicione no final do arquivo:

session required pam_limits.so

ScreenHunter_119 Jul. 16 22.32

Edite do arquivo /etc/profile com o editor de sua preferencia:

ScreenHunter_120 Jul. 16 22.33

Adicione o seguinte código no final do arquivo:

if [ $USER = “oracle” ]; then
if [ $SHELL = “/bin/ksh” ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi

ScreenHunter_121 Jul. 16 22.47.jpg

Edite o arquivo .bash_profile do usuário oracle.

Primeiramente de o comando “su – oracle” (sem aspas) e depois edit o arquivo .bash_profile

ScreenHunter_122 Jul. 16 22.51

Complemente o arquivo com o seguinte código:

ORACLE_BASE=/u01/app; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.4/db_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
#DISPLAY=localhost:0.0; export DISPLAY

ScreenHunter_139 Jul. 17 23.25.jpg

Execute o comando: source .bash_profile, para verificar se há algo de errado configurado no arquivo .bash_profile. (caso tenha, conserte o arquivo)

ScreenHunter_125 Jul. 16 23.40

Execute os seguintes comandos para conferir as variáveis de ambientes configuradas:

ScreenHunter_126 Jul. 16 23.44.jpg

 

Para fazer o reload dos parametros do Kernel, digite o seguinte comando como super usuário:

/sbin/sysctl -p

Após essas configurações feitas, faça um snapshot da máquina virtual para posteriormente fazer a instalação do oracle database.

ScreenHunter_127 Jul. 17 00.14.jpg

04 – Configurando acesso remoto para o Oracle Enterprise Linux 7.

É possível fazer acesso remoto entre o sistema operacional do host (no meu caso, Windows 10) e o Linux que está virtualizado.

Para isso, utilizaremos o putty para fazer acesso remoto. Procure pelo google por “putty” (sem aspas) e baixe um arquivo putty.exe (para a versão 32 ou 64 bits), e Xming-6-9-0-31-setup.exe. (esse ultimo arquivo servirá para executar ambientes gráficos chamados pelo putty)

Execute o putty no Windows, e coloque o número IP do servidor linux. Dê um nome para a conexao, e clique em [Open]

ScreenHunter_128 Jul. 17 00.24.jpg

Complemente e configure dentro de Connection / SSH. Salve e depois abra o terminal

ScreenHunter_221 Jul. 20 20.30.jpg

A primeira vez executada, irá aparecer a seguinte mensagem.  Clique em [Yes]

ScreenHunter_129 Jul. 17 00.26

Digite o nome do usuário oracle, com a senha escolhida na instalação (oracle)

ScreenHunter_130 Jul. 17 00.30.jpg

Execute o arquivo baixado do xming server no SO do seu host (no meu caso foi o Windows 10). Clique em [Next]

ScreenHunter_131 Jul. 17 00.31

Escolha a pasta que será instalada e clique em [Next]

ScreenHunter_132 Jul. 17 00.31

Deixe na opção Normal e clique em [Next]

ScreenHunter_133 Jul. 17 00.32

Deixe o nome como é o padão e clique em [Next]

ScreenHunter_134 Jul. 17 00.32

Deixe as opções marcadas por padrão em clique em [Next]

ScreenHunter_135 Jul. 17 00.32

Irá ser mostrado as configurações feitas e clique em [Next]

ScreenHunter_136 Jul. 17 00.32

A instalação foi concluída com sucesso. Clique em [Finish]

ScreenHunter_137 Jul. 17 00.33

No Windows, clique em [Allow access]

ScreenHunter_138 Jul. 17 00.33

Verifique na barra de tarefas se o Xwing Server está instalado.

Para utilizar o Xming, é necessário ainda configurar o SSH server para que aceite o ambiente X-Window.

Conforme o artigo https://www.redhat.com/archives/rhl-list/2005-March/msg04651.html, precisaremos editar o arquivo /etc/ssh/ssh_config. Altere e inclua no arquivo as seguintes linhas:

ForwardX11 yes
ForwardX11Trusted yes

Assim, será possível executar aplicativos em o ambiente gráfico pelo host Windows.

 

 

Este artigo continua em:

Expanding virtual machine resources to use ASM – Part 04

 

WikiDBA

by Virendra Yaduvanshi - Microsoft SQL Server Database Architect | Consultant | Blogger | Specialist | DBA | Speaker

Blog - Fabiano Neves Amorim

SELECT * FROM [Coisas Da Minha Cabeça] WHERE dbo.fn_TempoParaPost() < dbo.fn_TempoLivre()

ROMANO DBA

Administração de Bancos de Dados

Tércio Costa, Oracle Developer, OCE SQL

Guia de estudos para certificação ORACLE SQL Expert(1Z0-047) e PL/SQL(1Z0-144)

Strate SQL

Data Adventures with an Architect