quinta-feira, 29 de setembro de 2022

Cloud Engineering & Architecture - Install Docker-compose & Kong for API Management (Instalando o Docker-compose e o Kong para gerenciamento de APIs)

====================
EN
====================
Hello all...
 
Yesterday for my MBA API Management class, I have needed use the Docker and Kong for a Hands-On.

If you don't know, the Kong is a API Gateway and it's one of many Open Source tools for API management.

We have had a Hands-On using Konga that it's an administration UI fot Kong API Gateway. On Konga, we have defined the API source, routes and everything that we needed for call 3 simples APIs.

For this, I have configured an EC2 Instance running Red Hat 8 on AWS Free Tier.

The step-by-step to Docker-compose and Kong installation are bellow, if it helps.

But remember:
1) This worked for me, but might not work for you.
2) This installation is just for academic learn. The real world can be a little bit different.

===================
PTB
===================
Fala pessoal, beleza?

Ontem para uma das aulas de Grenciamento de APIs do MBA, precisei subir o Docker e o Kong para um dos Hands-on.

Para quem não conhece, o Kong é um Gateway API e é uma das várias ferramentas para gerenciamento de APIs open source disponíveis no mercado.

Fizemos o Hands-on através do Konga que é uma UI para administrar o Kong API Gateway. Lá definimos o source, rotas e tudo mais que precisamos para chamar 3 simples APIs.

Para isso, subi uma EC2 instance no Free Tier da AWS rodando Red Hat 8.                

Os passos para instalação do Docker-compose e do Kong estão abaixo, caso ajude alguém.

Lembrando sempre que:
1) O que funcionou para mim pode não funcionar para você.
2) Essa instalação é para fins acadêmicos somente.

====================================
-- Docker-compose Install
====================================
[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo yum update

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo dnf repolist -v

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo dnf install --nobest docker-ce --allowerasing

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo dnf install docker-ce

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo systemctl enable --now docker

[ec2-user@ip-xxx-xx-xx-xxx ~]$ systemctl is-active docker

[ec2-user@ip-xxx-xx-xx-xxx ~]$ curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o docker-compose

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo mv docker-compose /usr/local/bin && sudo chmod +x /usr/local/bin/docker-compose

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

[ec2-user@ip-xxx-xx-xx-xxx ~]$ docker-compose -v
docker-compose version 1.23.2, build 1110ad01

Even with everything apparently OK, when I called the APIs, it gave me the error bellow:

[ec2-user@ip-xxx-xx-xx-xxx ~] docker-compose -f docker-compose-deps.yml up -d
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

I corrected by following the procedure below:

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ sudo docker version
Client: Docker Engine - Community
Version:           20.10.18
API version:       1.41
Go version:        go1.18.6
Git commit:        b40c2f6
Built:             Thu Sep  8 23:11:56 2022
OS/Arch:           linux/amd64
Context:           default
Experimental:      true

Server: Docker Engine - Community
Engine:
  Version:          20.10.18
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.6
  Git commit:       e42327a
  Built:            Thu Sep  8 23:10:04 2022
  OS/Arch:          linux/amd64
  Experimental:     false
containerd:
  Version:          1.6.8
  GitCommit:        9cd3357b7fd7218e4aec3eae239db1f68a5a6ec6
runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ docker-compose --version
docker-compose version 1.23.2, build 1110ad01

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ ps aux | grep docker
root       60800  0.6  7.6 1283712 63108 ?       Ssl  02:10   0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ec2-user   60923  0.0  0.1 221936  1116 pts/0    R+   02:10   0:00 grep --color=auto docker

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ sudo chown $USER /var/run/docker.sock

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ sudo service docker stop
Redirecting to /bin/systemctl stop docker.service
Warning: Stopping docker.service, but it can still be activated by:
  docker.socket

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ sudo mv /var/lib/docker /var/lib/docker.bak

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ sudo service docker start
Redirecting to /bin/systemctl start docker.service

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ ps aux | grep docker
root       60800  0.6  7.6 1283712 63108 ?       Ssl  02:10   0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ec2-user   60923  0.0  0.1 221936  1116 pts/0    R+   02:10   0:00 grep --color=auto docker

====================================
-- Up Kong images
====================================
[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ docker-compose up -d
Creating network "kong-net" with driver "bridge"
Pulling servicea (wesleywillians/kong-service:latest)...
latest: Pulling from wesleywillians/kong-service
6c83e83883df: Pull complete
fe092a9d933b: Pull complete
Pulling serviceb (wesleywillians/kong-service:latest)...
latest: Pulling from wesleywillians/kong-service
Creating apigateway-kong_servicec_1 ... done
Creating apigateway-kong_servicea_1 ... done
Creating apigateway-kong_serviceb_1 ... done

[ec2-user@ip-xxx-xx-xx-xxx apigateway-kong]$ cd docker-kong  

[ec2-user@ip-xxx-xx-xx-xxx docker-kong]$ docker-compose up -d
Creating volume "docker-kong_kong_data" with default driver
Pulling db (postgres:9.5)...
9.5: Pulling from library/postgres
fa1690ae9228: Pull complete
a73f6e07b158: Pull complete
973a0c44ddba: Pull complete
07e5342b01d4: Pull complete
578aad0862c9: Pull complete
a0b157088f7a: Pull complete
6c9046f06fc5: Pull complete
ae19407bdc48: Pull complete
e53b7c20aa96: Pull complete
a135edcc0831: Pull complete
fed07b1b1b94: Pull complete
18d9026fcfbd: Pull complete
4d2d5fae97d9: Pull complete
d419466e642d: Pull complete
Pulling kong (kong:2.3.2-alpine)...
2.3.2-alpine: Pulling from library/kong
e95f33c60a64: Pull complete
dab3768d001d: Pull complete
e24fc8c85ed2: Pull complete
96136c04ffee: Pull complete
Pulling kong-migrations-up (kong:2.3.2-alpine)...
2.3.2-alpine: Pulling from library/kong
Pulling konga-prepare (pantsel/konga:latest)...
latest: Pulling from pantsel/konga
cbdbe7a5bc2a: Pull complete
8f3938f7d3bd: Pull complete
6e3c12f5dc10: Pull complete
ce0cb7a9eeee: Pull complete
a87657869d4f: Pull complete
891b0102e38b: Pull complete
Creating docker-kong_db_1 ... done
Creating konga-prepare                    ... done
Creating docker-kong_kong-migrations_1    ... done
Creating konga                            ... done
Creating docker-kong_kong-migrations-up_1 ... done
Creating docker-kong_kong_1               ... done

====================================
-- List Docker services
====================================
[ec2-user@ip-xxx-xx-xx-xxx docker-kong]$ docker ps

The last steps were to configure the inbound ports on AWS Security panel. 



These links can be help you.
I hope it helps you.

Regards
Mario

terça-feira, 27 de setembro de 2022

Cloud Engineering & Architecture - Tipos de Cloud e ferramentas de orquestração para Hybrid-Cloud

Fala pessoal, 

Como sabem estou fazendo um MBA de Cloud Engineering & Architecture e para estudar estou montando uns mapas mentais.

Nunca achei que isso fosse necessário, alias achava mapas mentais uma grande besteira para ser honesto, mas começando a usar percebi que o recurso me ajuda muito a organizar e fixar as ideias.

Então decidi compartilhar aqui, vai que ajuda mais alguém nos estudos.

Lembrando algumas coisas importantes:

1) O modelo serve para mim, não quer dizer que vai servir para você.

2) O MBA está nivelando conhecimentos, então estamos começando do básico.

3) Os conceitos aqui são acadêmicos, portanto é claro que algumas coisas podem e provavelmente são diferentes na "vida real". Então lembre-se, isso é um material de estudo teórico.

Quem quiser ver o primeiro, falando sobre os tipos de Cloud (Public, Private, Hybrid & Community) é só clicar na imagem:


O material foi baseado na aula de Estratégia de Cloud Computing do Prof. Thiago Viola.

Espero que ajude. 

Abraço 

sexta-feira, 2 de setembro de 2022

 Fala pessoal, beleza?

Hoje o post é rápido. 

Escrevi esse post sobre Open Banking quando ainda estava trabalhando na minha antiga empresa,  acho que vale a leitura por se tratar de um assunto muito atual.

Para acessar, é só clicar na imagem.

Enjoy it!!

 

Espero que gostem, afinal é um assunto extremamente importante.

Abraço 

quinta-feira, 1 de setembro de 2022

Você sabe o que é o Block Change Tracking?

Fala pessoal, beleza?

Tenho falado com vários DBA's sobre backup's e políticas de melhores práticas e quase 100% deles tem comentado sobre a dificuldade em cumprir as janelas definidas já que temos bancos cada dia mais enormes.

E percebi que quase todos eles não usam uma opção muito legal que se chama Block Change Tracking (ou BCT) para os mais chegados, que poderia ajudar bastante nessa tarefa.

Basicamente e muito resumidamente falando, mesmo quando você faz um backup incremental, o Oracle precisa percorrer todos os blocos dos seus datafiles - sejam eles novos ou não, para saber o que foi alterado desde o último backup e inserir esses blocos em seus backup pieces.

É ai que mora a beleza do BCT. 

Se o BCT estiver ativo na sua produção ou em um StandBy físico, o Oracle vai registrar bitmaps que marcam as alterações nos datafiles entre os backups. Ele vai criar um índice (ou um arquivo de rastreamento como o próprio nome já diz) e vai registrar todos os blocos alterados ali. 

O RMAN então usará este rastreamento para identificar esses blocos alterados na execução dos backups incrementais, salvando muito tempo nessa operação e evitando a necessidade de leitura de todos os blocos dos datafiles.



O mais bacana é que o uso do BCT não altera os comandos usados ​​para realizar os backups incrementais. Além disso o BCT file não requer manutenção após a configuração inicial.

Outro ponto legal demais é que o DBA não precisa se preocupar com o gerenciamento desse arquivo. O Oracle gerencia automaticamente o espaço no BCT. 

Aqui temos um ponto de atenção quanto a retenção, como destacado no exemplo dado no manual:

É importante considerar o limite de oito bitmaps na sua estratégia de backup incremental. Por exemplo, se você fizer um backup nível 0 seguido por sete backups incrementais diferenciais, o BCT file chegará a 8 bitmaps. O próximo backup irá descartar o bitmap mais antigo

Então, se você fizer um backup incremental de nível 1 cumulativo na próxima operação, o RMAN não poderá otimizar o backup, porque o bitmap correspondente ao backup nível 0 será substituído. Então ess eé um ponto de atenção.


Para criar um BCT é mega fácil:

    SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '+BCT/BCTrk.F'; 

Abaixo eu deixo 3 pontos ue devem ser considerados antes de adotar o que eu falei acima:

   1) Se você não passar onde o BCT deve ser criado, por default ele será inciado no DB_CREATE_FILE_DEST.

   2) Eu sempre crio um DG exclusivo para o BCT. Devido a ele ter uma gravação intensa, ele pode afetar a performance do banco de dados caso você o coloque juntamente com a área de FRA, por exemplo. Ou no seu DG de Redos.

   3) Infelizmente você só pode habilitar o BCT em um StandBy físico se você possuir a licença do Active Data Guard. 

Claro, antes de sair habilitando quaquer coisa em seu banco de dados, por favor, teste muito bem e veja se é adequado a seu ambiente. 

"Lembre-se que o que é bom para o meu ambiente pode não ser bom para o seu." - By Ricardo Portilho Proni

É ou não é show? Você acha que seu backup vai ser mais rápido com isso?

Mais informações aqui:

Backup and Recovery User's Guide

2 Day DBA

Grande abraço e espero que tenha ajudado.

Mario




segunda-feira, 30 de maio de 2022

VxRail On Oracle

Fala pessoal, beleza?

Coloquei mais um vídeo lá no canal.

Nesse vídeo vou falar de algumas Best Practices para utilização de Oracle em VxRail.


O que vc vai ver aqui:     - Recomendações para bancos de dados Oracle rodando em VxRail. O que você não vai ver aqui:     - Deep Dive técnico sobre o VxRail.     - Recomendações para outros tipos de workloads.

Se quiserem conferir, fiquem a vontade!!!

Só clicar: O-Tips - VxRail on Oracle

Qualquer dúvida, crítica ou sugestão será muito bem vinda!!!

Abraço

Mario

sexta-feira, 27 de maio de 2022

DD Boost for Oracle

 Fala pessoal, beleza?

Coloquei mais um vídeo lá no canal.

Nesse vídeo vou falar como o DD Boost funciona e qual a diferença de uso dessa feature para uma Deduplicação típica.

O que vc vai ver por lá:

 - O que é o DD Boost e como ele funciona. 

O que você não vai ver lá:

 - Deep Dive técnico sobre o PowerProtect.

 - Recomendações para políticas de proteção de dados.

Lembrando que são apenas sugestões e que qualquer alteração de ambientes devem ser testadas e validadas pelo seu time.

Se quiserem conferir, fiquem a vontade!!!

Só clicar: O-Tips - DD Boost with PowerProtect

Qualquer dúvida, crítica ou sugestão será muito bem vinda!!!

Abraço

Mario


terça-feira, 18 de agosto de 2020

Retomando os trabalhos.

Depois de muito tempo vou conseguir retomar os trabalhos no Blog.

Poderia começar um blog novo, mas resolvi reativar esse. Vou manter o histórico até para não apagar tudo o que eu já publiquei - vai que ainda ajuda alguém.

Claro que muita coisa mudou, mas se as postagens antigas podem ajudar alguém, então que fiquem ai.

Vou tentar manter uma frequência de postagens, vamos ver se conseguimos né...

Em breve começo a postar... 

segunda-feira, 11 de dezembro de 2017

Criação e configuração de ambiente Oracle Cloud Service – Database Cloud Service – Parte 1

Vou postar hoje uma artigo que foi publicado originalmente no OTN (Artigo OTN). 

A segunda parte desse artigo ainda não foi publicada e sabe-se lá se vai ser já que estão ocorrendo mudanças na aprovação das publicações e isso está gerando atrasos nas revisões. 

Para a segunda parte não ficar "jogada", sem contexto, vou reproduzir a primeira parte aqui.

Esse texto foi originalmente revisado pelo Alex Zaballa (Blog) a quem eu queria agradecer aqui por toda a ajuda.

Vou reproduzir ele literalmente como no OTN.

===================================================================================

Não é de hoje que vemos crescer a importância das operações em cloud como um todo. É claro que os bancos de dados não ficariam de fora dessa evolução.

É cada vez mais comum ouvirmos falar termos como PaaS (Platform as a Service), IaaS (Infrastructure as a Service), SaaS (Software as a Service), entre outras.

Neste artigo, o que nos interessa é o Database Cloud Service, um dos produtos oferecidos no PaaS.

É claro que dependemos de análises profundas e individualizadas para definir se mantemos o nosso ambiente no já conhecido modelo "On-Premises" ou se partimos para soluções em Cloud, mas abaixo listo algumas vantagens da nuvem.

1) On-demand self service   - Rápido provisionamento e disponibilização de recursos.
2) Rapid elasticity         - Rápido escalonamento de recursos, conforme necessidade.
3) Measured usage           - Possibilidade de controle de consumo de recursos.
4) Resource pooling         - Arquiteturas flexíveis disponíveis conforme a necessidade.

Em dois artigos vamos explorar uma das possibilidades do Oracle Database Cloud Service que é o uso de uma Virtual Image utilizando também o Oracle Backup Cloud Service.

Basicamente, o Oracle Database Cloud Service nos fornece duas opções de configuração:

Oracle Database Cloud Service - Virtual Image: Inclui o database pré-instalado e o suporte, ou seja, o SO já vem preparado para a instalação, os instaladores já são fornecidos mas o DBA é quem faz essa instalação e manutenção de todo o ambiente de banco de dados. Nesse modelo, o DBA tem o acesso de root e tem todos os privilégios de SYSDBA no banco.

Oracle Database Cloud Service: Inclui o database já instalado e o suporte. São oferecidas também diversas ferramentas que facilitam a administração, backup e aplicação de patches dessa base na nuvem. Pelo painel do Oracle Cloud são passadas diretrizes para a criação de um banco de dados. A instance é criada e já iniciada como um serviço. Podem ser configurados, mas não são obrigatórios, backup's automáticos dessa base. Nesse modelo, o DBA tem o acesso de root e tem todos os privilégios de SYSDBA no banco também.

Nos dois modelos podemos escolher o Oracle Database 11g ou o 12c, porém somente no modelo "Oracle Database Cloud Service" é que contamos com o Oracle 12c na versão 12.2. Para o Virtual Image, até a data desse artigo ainda não era possível contratar essa versão.

Vamos começar. Nosso pré-requisito é que a conta já esteja liberada pela equipe da Oracle para utilização dos serviços contratados.





Inserir o username e o password fornecidos.




2) Criação do serviço

Para iniciar a criação do ambiente, deve-se criar o serviço do database, ou seja, o “Database Cloud Service”.

Para isso, deve-se selecionar a opção no menu de navegação (ao lado do logo do Oracle Cloud).

Depois clicar em “Database”.



Será apresentada a tela abaixo. Já haviam outros serviços criados, por isso no “Summary” apareceram essas informações.

Clicar em “Create Service”.




Selecionar “Oracle Database Cloud Service – Virtual Image” e clicar em “Next”.

O resumo de tudo o que foi (ou pode ser) contratado em cada ambiente é exibido. Leia com atenção as opções.

Também já é marcado como default o serviço que foi contratado. Neste artigo, por exemplo, a opção “Oracle Database Cloud Service – Virtual Image” já está marcada. 




Deve-se agora selecionar a versão desejada a ser instalada. Para este artigo, será selecionada a versão 12c. Depois clicar em “Next”.


Selecionar a edição do Oracle que deve ser utilizada e clicar em “Next”. Novamente o default já vem marcado. Nesse artigo, vamos selecionar a edição “Standard Edition”.




Esse é um ponto bem importante da criação do ambiente do Database Cloud Service. 

Aqui será definido o nome do serviço, a chave que será utilizada para acesso via ssh ao servidor e o size inicial da máquina. 

Então, antes de iniciar devemos criar uma chave para nosso teste. Para isso utilizarei o PuTTYGen. 

Ao iniciar o PuTTYGen, a tela abaixo será apresentada.




No parte inferior, em “Parameters”, são definidos o tipo de chave que será utilizado e o seu tamanho em bits. Neste artigo, será usada a chave SSH-2 RSA de 2048 bits.

Clicar em "Generate".


Importante: Durante a criação da chave, deve-se ficar movimentando o mouse na área em branco da tela para que a criação seja realizada.


Ao finalizar, será apresentada a tela acima. Deve-se preencher algumas informações antes de salvar a chave.

Key Comment: É opcional, mas é interessante de ser preenchido com algum comentário que identifique a chave.

Key Passphrase: Também é opcional, mas não teria sentido criar uma chave que não solicite uma senha antes da sua utilização.

Após preenchidas as informações, basta clicar em “Save Private Key” e salvar a chave.


Importante: Como a chave será utilizada somente administrativamente, ela será salva como uma chave privada. Se fosse ser divulgada essa chave para utilização pública, criaríamos uma chave pública.

Tendo a chave já criada, agora podemos continuar a criação do serviço. Para isso, clicar em “Edit” para inserir a chave que acabamos de criar. Depois de inserida a chave, faça o update da mesma como demonstrado abaixo. 




Para finalizar, clicar em “Enter”.

Com a chave importada, deve-se clicar em “Next”.




Após conferir se todas as informações estão corretas, clicar em “Create”.



Terminado esse processo a “máquina” estará criada e pronta para receber a instalação do Oracle.

3) Criação dos discos ou alocação de mais espaço para o serviço

Antes da instalação, iremos verificar o processo de aumento de espaço para a máquina. Quando o processo apresentado acima é executado, em nenhum momento é colocado o espaço em disco desejado. Por isso, após a criação já podemos alocar os espaços que iremos utilizar para a nossa base.

O processo de liberação de espaço é bem simples para o “Oracle Database Cloud Service – Virtual Image”.

Deve-se selecionar o serviço “SRV-TESTE” criado, e visualizar os detalhes desse serviço. Para isso, clicar em “Manage This Node”.


E selecionar a opção “Scale Up/Down”.




Preencher as informações solicitadas e clicar em “Yes, Scale Up/Down Service”.

Alguns pontos importantes nesse processo.

1) Pode-se, além de adicionar mais espaço, adicionar também mais capacidade de processamento à máquina.

2) Ao clicar em “Yes”, o serviço ficará indisponível. Esse aumento não é online.

3) Nesse exemplo, dois volumes de 500G serão apresentados ao servidor. Eles serão identificados na máquina como se fossem LUN’s de um storage comum.

4) Após as LUN’s serem apresentadas, deve-se formata-las e atribuir um tipo de FileSystem a elas. Neste artigo será utilizado o EXT4.


Após o serviço estar disponível novamente, deve-se acessar via SSH o servidor pelo seu IP público. Esse IP ficará documentado na tela de detalhes da base, no “Oracle Database Service”.

login as: opc
Authenticating with public key "rsa-key-20161010"

O processo deve ser feito como root.

sudo su -

Deve-se listar os discos para identificar as LUN’s apresentadas. Para isso, utilizar o comando abaixo.

lsblk -o NAME,UUID,MOUNTPOINT,FSTYPE
                NAME    UUID                                 MOUNTPOINT FSTYPE
       xvdb
       ├─xvdb1 947fa69d-3925-4738-a6c0-27d00f5c4f96 /boot      ext4
       ├─xvdb2 d24de279-f4f1-46ae-aa3b-5297bd258dcc [SWAP]     swap
       └─xvdb3 ac69bdf3-37be-47f2-9d59-6d4c672f98cc /          ext4
       xvdc
       └─xvdc1 e301e170-203e-4647-afb1-77a2a9a1bea9 /u01       ext4
       xvdd
       xvde

Como informado acima, os dois volumes destacados em vermelho (XVDD e XVDE) foram criados.

Verificar os dois discos e certificar que não existe nenhuma partição neles ainda.

fdisk -l /dev/xvdd
       Disk /dev/xvdd: 536.9 GB, 536870912000 bytes
       255 heads, 63 sectors/track, 65270 cylinders
       Units = cylinders of 16065 * 512 = 8225280 bytes
       Sector size (logical/physical): 512 bytes / 512 bytes
       I/O size (minimum/optimal): 512 bytes / 512 bytes
       Disk identifier: 0x00000000

fdisk -l /dev/xvde
       Disk /dev/xvde: 536.9 GB, 536870912000 bytes
       255 heads, 63 sectors/track, 65270 cylinders
       Units = cylinders of 16065 * 512 = 8225280 bytes
       Sector size (logical/physical): 512 bytes / 512 bytes
       I/O size (minimum/optimal): 512 bytes / 512 bytes
       Disk identifier: 0x00000000

O processo de realização do FDISK é igual ao feito em uma máquina física. Fazer nos dois volumes.
       fdisk /dev/xvdd
       
Selecionar/digitar as opções abaixo:
n                           -- Nova partição
p                           -- Partição primária
1                           -- A partir do primeiro cilindro
enter                       -- Aceitar o valor default
enter                       -- Aceitar o valor default
w                           -- Grava as alterações

     -- Após a criação das partições, pode ser necessário executar um partprobe.
        partprobe /dev/xvdcd

Ao verificarmos novamente, as partições já irão aparecer.

lsblk -o NAME,UUID,MOUNTPOINT,FSTYPE
       NAME    UUID                                 MOUNTPOINT FSTYPE
       xvdb
       ├─xvdb1 947fa69d-3925-4738-a6c0-27d00f5c4f96 /boot      ext4
       ├─xvdb2 d24de279-f4f1-46ae-aa3b-5297bd258dcc [SWAP]     swap
       └─xvdb3 ac69bdf3-37be-47f2-9d59-6d4c672f98cc /          ext4
       xvdc
       └─xvdc1 e301e170-203e-4647-afb1-77a2a9a1bea9 /u01       ext4
       xvdd
       └─xvdd1
       xvde
       └─xvde1

Como verificado acima, não temos nenhum FileSystem ainda identificado pois ainda é preciso formatar as partições para utilizar o EXT4.

Isso deve ser feito assim:

mkfs.ext4 /dev/xvdd1
       mke2fs 1.43-WIP (20-Jun-2013)
       Filesystem label=
       OS type: Linux
       Block size=4096 (log=2)
       Fragment size=4096 (log=2)
       Stride=0 blocks, Stripe width=0 blocks
       32768000 inodes, 131070310 blocks
       6553515 blocks (5.00%) reserved for the super user
       First data block=0
       Maximum filesystem blocks=4294967296
       4000 block groups
       32768 blocks per group, 32768 fragments per group
       8192 inodes per group
       Superblock backups stored on blocks:
       32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
       4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
       102400000

       Allocating group tables: done
       Writing inode tables: done
       Creating journal (32768 blocks): done
       Writing superblocks and filesystem accounting information:
       done

mkfs.ext4 /dev/xvde1
                mke2fs 1.43-WIP (20-Jun-2013)
       Filesystem label=
       OS type: Linux
       Block size=4096 (log=2)
       Fragment size=4096 (log=2)
       Stride=0 blocks, Stripe width=0 blocks
       32768000 inodes, 131070310 blocks
       6553515 blocks (5.00%) reserved for the super user
       First data block=0
       Maximum filesystem blocks=4294967296
       4000 block groups
       32768 blocks per group, 32768 fragments per group
       8192 inodes per group
       Superblock backups stored on blocks:
       32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
       4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
       102400000

       Allocating group tables: done
       Writing inode tables: done
       Creating journal (32768 blocks): done
       Writing superblocks and filesystem accounting information:
       done

Ao verificar novamente, teremos o FileSystem já atribuído à partição.

lsblk -o NAME,UUID,MOUNTPOINT,FSTYPE
       NAME    UUID                                 MOUNTPOINT FSTYPE
       xvdb
       ├─xvdb1 947fa69d-3925-4738-a6c0-27d00f5c4f96 /boot      ext4
       ├─xvdb2 d24de279-f4f1-46ae-aa3b-5297bd258dcc [SWAP]     swap
       └─xvdb3 ac69bdf3-37be-47f2-9d59-6d4c672f98cc /          ext4
       xvdc
       └─xvdc1 e301e170-203e-4647-afb1-77a2a9a1bea9 /u01       ext4
       xvdd
       └─xvdd1 c66a1b83-79fc-4edf-a630-b8bd0681c2e9            ext4
       xvde
       └─xvde1 c47c789a-3c8f-4926-8a2f-d82d68da7c44            ext4

Finalmente, deve-se montar as duas partições. No nosso artigo serão utilizados os já clássicos "/u02" e "/u03".

                cd /
                mkdir /u02 /u03
                chown oracle:oinstall /u02
                chown oracle:oinstall /u03
               
Edite o fstab e adicione os pontos de montagem.

vim /etc/fstab
       UUID=c66a1b83-79fc-4edf-a630-b8bd0681c2e9 /u02  ext4    defaults    0 0
       UUID=c47c789a-3c8f-4926-8a2f-d82d68da7c44 /u03  ext4    defaults    0 0

Executar como root:
       mount -a

df -h
       Filesystem      Size  Used Avail Use% Mounted on
       /dev/xvdb3       25G   12G   13G  47% /
       tmpfs            15G     0   15G   0% /dev/shm
       /dev/xvdb1      477M  148M  300M  34% /boot
       /dev/xvdc1       99G  7.9G   86G   9% /u01
       /dev/xvdd1      493G   70M  467G   1% /u02
       /dev/xvde1      493G   70M  467G   1% /u03

Nesse ponto, os volumes já estarão disponíveis para utilização.

Podemos verificar os espaços contratados e utilizados através do dashboard.



4) Instalação do SGBD


Quando o serviço do “Oracle Database Cloud Service – Virtual Image” é adquirido pelo cliente, isso quer dizer que o servidor vem parcialmente pronto para utilização. Ou seja, mesmo sendo o serviço criado pela página do “Oracle Database Cloud Service”, o banco de dados ainda deve ser instalado pelo DBA e depois a base de dados deve ser criada via DBCA.

Somente lembrando, isso está descrito no momento da criação do service.


Para a instalação devemos utilizar instaladores preparados especificamente para cloud e fornecidos juntamente com a criação do serviço.

Importante: Não são os mesmos instaladores utilizados em instalações “On-Premises”. Não devem ser utilizados esses instaladores.

login as: opc
Authenticating with public key "rsa-key-20161010"

A instalação deve ser realizada com o usuário Oracle. Os binários estão na pasta “/scratch/db”.

sudo su -
cd /scratch/db

ls -lrht
         -rw-r--r-- 1 oracle oinstall 3.4G Sep 12 15:00 db12102_bits.tar.gz
         -rw-r--r-- 1 oracle oinstall 3.1G Sep 12 15:07 db12102_se2bits.tar.gz

São oferecidos os dois instaladores – SE2 e EE. Basta executar o que foi contratado.

su - oracle
         cd /u01
         tar -vxzf /scratch/db/db12102_bits.tar.gz

Importante: São oferecidos os dois instaladores – SE2 e EE. Certifique-se de utilizar exatamente o instalador da sua versão, ou seja, se adquiriu o licenciamento da Standard Edition 2, deve usar o “db12102_se2bits.tar.gz”.

Voltar ao root e executar:
         exit
         /u01/app/oraInventory/orainstRoot.sh
         /u01/app/oracle/product/12.1.0/dbhome_1/root.sh

Nesse momento, o SGBD já estará instalado e disponível.


Para ilustrar e mostrar como esses instaladores são especialmente criados para cloud, abaixo segue o inventory do OPATCH mostrando todos os patches aplicados para esta imagem.

opatch lsinventory
Oracle Interim Patch Installer version 12.1.0.1.10
Copyright (c) 2016, Oracle Corporation.  All rights reserved.

Oracle Home       : /u01/app/oracle/product/12.1.0/dbhome_1
Central Inventory : /u01/app/oraInventory
from              : /u01/app/oracle/product/12.1.0/dbhome_1/oraInst.loc
OPatch version    : 12.1.0.1.10
OUI version       : 12.1.0.2.0
Log file location : /u01/app/oracle/product/12.1.0/dbhome_1/cfgtoollogs/opatch/opatch2016-11-14_11-11-20AM_1.log

Lsinventory Output file location : /u01/app/oracle/product/12.1.0/dbhome_1/cfgtoollogs/opatch/lsinv/lsinventory2016-11-14_11-11-20AM.txt
--------------------------------------------------------------------------------
Local Machine Information:
Hostname: XXX.oraclecloud.internal
ARU platform id: 226
ARU platform description:: Linux x86-64

Installed Top-level Products (1):

Oracle Database 12c                                                  12.1.0.2.0
There are 1 products installed in this Oracle Home.

Interim patches (3) :
Patch  22139226     : applied on Thu Jan 21 03:18:43 EST 2016
Unique Patch ID     :  19729684
Patch description   :  "Database PSU 12.1.0.2.160119, Oracle JavaVM Component (Jan2016)"
   Created on 4 Jan 2016, 01:41:46 hrs PST8PDT
   Bugs fixed:
     19699946, 19176885, 19623450, 22139226, 19909862, 21811517, 19223010
     21068507, 19895326, 19877336, 22118835, 22118851, 21566993, 19153980
     20408829, 21047766, 19231857, 19895362, 19855285, 20415564, 21555660
     19245191, 21047803, 20408866, 21566944

Patch  22543975     : applied on Thu Jan 21 03:16:54 EST 2016
Unique Patch ID:  19772638
   Created on 20 Jan 2016, 19:09:00 hrs PST8PDT
   Bugs fixed:
     19770063, 19665921, 21281607, 21154593, 22543975, 21294504
   This patch overlays patches:
     21948354
   This patch needs patches:
     21948354
   as prerequisites

Patch  21948354:    applied on Thu Jan 21 03:13:32 EST 2016
Unique Patch ID:    19553095
Patch description:  "Database Patch Set Update : 12.1.0.2.160119 (21948354)"
   Created on 20 Dec 2015, 23:39:33 hrs PST8PDT
Sub-patch  21359755; "Database Patch Set Update : 12.1.0.2.5 (21359755)"
Sub-patch  20831110; "Database Patch Set Update : 12.1.0.2.4 (20831110)"
Sub-patch  20299023; "Database Patch Set Update : 12.1.0.2.3 (20299023)"
Sub-patch  19769480; "Database Patch Set Update : 12.1.0.2.2 (19769480)"
   Bugs fixed:
     19189525, 19075256, 19141838, 19865345, 19791273, 19280225, 18845653
     20951038, 19243521, 19248799, 21756699, 18988834, 19238590, 21281532
     20245930, 18921743, 18799063, 19134173, 19571367, 20476175, 20925795
     19018206, 20509482, 20387265, 20588502, 19149990, 18849537, 18886413
     17551063, 19183343, 19703301, 19001390, 18202441, 19189317, 19644859
     19358317, 19390567, 19279273, 19706965, 19068970, 19619732, 20348653
     18607546, 18940497, 19670108, 19649152, 18948177, 19315691, 19676905
     18964978, 19035573, 20165574, 19176326, 20413820, 20558005, 19176223
     19532017, 20134339, 19074147, 18411216, 20361671, 20425790, 18966843
     20294666, 19307662, 19371175, 19195895, 19154375, 19468991, 19174521
     19520602, 19382851, 21875360, 19326908, 19658708, 20093776, 20618595
     21787056, 17835294, 19791377, 19068610, 20048359, 20746251, 19143550
     19185876, 19627012, 20281121, 19577410, 22092979, 19001359, 19518079
     18610915, 19490948, 18674024, 18306996, 19309466, 19081128, 19915271
     20122715, 21188532, 20284155, 18791688, 20890311, 21442094, 18973548
     19303936, 19597439, 20235511, 18964939, 19430401, 19044962, 19409212
     19879746, 20657441, 19684504, 19024808, 18799993, 20877664, 19028800
     19065556, 19723336, 19077215, 19604659, 21421886, 19524384, 19048007
     18288842, 19689979, 20446883, 18952989, 16870214, 19928926, 21526048
     19180770, 19197175, 19902195, 20318889, 19730508, 19012119, 19067244
     20074391, 19512341, 19841800, 14643995, 20331945, 19587324, 19547370
     19065677, 19637186, 21225209, 20397490, 18967382, 19174430, 18674047
     19054077, 19536415, 19708632, 19289642, 20869721, 19335438, 17365043
     18856999, 19869255, 20471920, 19468347, 21620471, 16359751, 18990693
     17890099, 19439759, 19769480, 19272708, 19978542, 20101006, 21300341
     20402832, 19329654, 19873610, 21668627, 21517440, 19304354, 19052488
     20794034, 19291380, 18681056, 19896336, 19076343, 19561643, 18618122
     20440930, 18456643, 19699191, 18909599, 19487147, 18250893, 19016730
     18743542, 20347562, 16619249, 18354830, 19687159, 19174942, 20424899
     19989009, 20688221, 20441797, 19157754, 19032777, 19058490, 19399918
     18885870, 19434529, 19018447, 18417036, 20919320, 19022470, 19284031
     20474192, 20173897, 22062026, 19385656, 19501299, 17274537, 20899461
     19440586, 16887946, 19606174, 18436647, 17655240, 19023822, 19178851
     19124589, 19805359, 19597583, 19155797, 19393542, 19050649
--------------------------------------------------------------------------------
OPatch succeeded.

Em destaque, o PSU aplicado é o de Janeiro de 2016. Como podemos verificar nos notes “Oracle Recommended Patches -- Oracle Database (Doc ID 756671.1)” e Quick Reference to Patch Numbers for Database/GI PSU, SPU(CPU), Bundle Patches and Patchsets (Doc ID 1454618.1) existem PSU’s mais recentes que devem ser aplicados.

O ideal, até a data desse artigo, seria aplicar o PSU 12.1.0.2.161018 de Outubro/2016.

Como estamos utilizando o “Oracle Database Cloud Service - Virtual  Image”, esse controle de patches deve ser feito pelo DBA através do MOS e dos comunicados de PSU’s e Bandle Patches liberados.

Caso estivéssemos usando o “Oracle Database Cloud Service”, no console de administração do serviço de banco de dados seria apresentado a lista de patches recomendados para manter o ambiente atualizado.





Como não é o foco desse artigo a aplicação de patches no Oracle Database Cloud Service, essa operação não será demonstrada.

Mais informações sobre essa aplicação podem ser verificadas em:


5) Criação da base de dados

Para a criação da base, pode-se utilizar o DBCA na sua opção visual. Eu sempre prefiro o “silent mode” e é essa opção que será apresentada aqui.

Exportar as variáveis de ambiente
                export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
                export PATH=$ORACLE_HOME/OPatch:$ORACLE_HOME/bin:$PATH
                export ORACLE_BASE=/u02/oradata/

E executar o DBCA em modo silent.

dbca -silent -createDatabase -templateName General_Purpose.dbc
-gdbName soulprd -sid soulprd -sysPassword aaa123
-systemPassword aaa123 -emConfiguration NONE
-datafileDestination /u02/oradata
-createAsContainerDatabase false -storageType FS
-memoryPercentage 40 -automaticMemoryManagement true
-redoLogFileSize 300 -recoveryAreaDestination NONE
-characterSet WE8ISO8859P1 -nationalCharacterSet AL16UTF16
-sampleSchema false -databaseType MULTIPURPOSE

Os parâmetros utilizados são bem simples e intuitivos. Mais detalhes no HELP do comando.

A saída esperada ao término do comando é essa abaixo.

File Validations Successful.
Copying database files
DBCA_PROGRESS : 1%
DBCA_PROGRESS : 3%
DBCA_PROGRESS : 11%
DBCA_PROGRESS : 18%
DBCA_PROGRESS : 26%
DBCA_PROGRESS : 37%
Creating and starting Oracle instance
DBCA_PROGRESS : 40%
DBCA_PROGRESS : 45%
DBCA_PROGRESS : 50%
DBCA_PROGRESS : 55%
DBCA_PROGRESS : 56%
DBCA_PROGRESS : 60%
DBCA_PROGRESS : 62%
Completing Database Creation
DBCA_PROGRESS : 66%
DBCA_PROGRESS : 70%
DBCA_PROGRESS : 73%
DBCA_PROGRESS : 85%
DBCA_PROGRESS : 96%
DBCA_PROGRESS : 100%
Database creation complete. For details check the logfiles at:
       /u01/app/oracle/cfgtoollogs/dbca/soulprd.

Database Information:
Global Database Name:soulprd
System Identifier(SID):soulprd

Ao chegarmos nesse ponto, o serviço do Database Cloud já está criado, o SGBD está instalado e a base de dados já foi criada e está pronta para utilização. Não se esqueça de criar o listener também via NETCA.

Após o listener criado, é o momento de liberar o acesso via regra.

6)  Criação da regra de acesso à base de dados via Listener

Para que a base fique acessível via listener por outros servidores, precisamos criar uma regra de acesso a esse servidor na porta 1521.

Deve-se voltar a tela do “Oracle Database Cloud Service”. Para isso, clicar no menu ao lado do logo do Oracle Cloud.



Selecionar “Oracle Database Cloud Service”.




Clicar no menu ao lado do service criado e depois selecione “Access Rules”.


Selecionar “Create Rule".




Preencher todas as opções e clicar em “Create”. 







Será apresentada a mensagem abaixo.



Para testar, vamos utilizar o SQL Developer para fazer uma conexão. Vamos criar uma conexão com as informações do cloud.




Conexão executada com sucesso.




Neste artigo ficou claro a facilidade, praticidade e rapidez para a criação desse ambiente.

No próximo artigo vamos realizar as configurações do WALLET e do Oracle Cloud Backup  Service.

Postagem em destaque

[ORACLE] Useful scripts for the day-to-day life of a DBA (Part 3) - System metrics

Hello everyone.   Hope you're doing well! As I said here , I've created a repository on GITHUB to share some scripts that I like t...