Oracle Cloud: Passo a passo para criar e configurar um Oracle Database Cloud Service - Virtual Image (Parte III)

Por Sebastián D'Alessandro, Joel Pérez O ACE director & Franky Weber Faust,
Publicado en Agosto 2017

Nesta terceira parte do artigo vamos instalar o software Oracle Database e também mostrar exemplos de como criar o banco de dados. Um utilizando o DBCA em modo “silent” e outro em modo gráfico utilizando uma conexão por VNC. Neste último exemplo veremos também como configurar um túnel SSH utilizando o PuTTy.

Instalaremos a versão 12.1.0.2 do Oracle, a qual selecionamos durante a criação do serviço e portanto é a que estará disponível na nossa VM provisionada.

Na Parte I deste artigo vimos como cirar um Oracle Database Cloud Service e na Parte II como adicionar mais espaço de armazenamento na nossa VM.

Agora já estamos em condições de instalar o Oracle e criar um novo banco de dados.

Para seguir é necessário subir o VNCServer:


  
[oracle@testdb-vi ~]$ vncserver

You will require a password to access your desktops.

Password:
Verify:
xauth:  creating new authority file /home/oracle/.Xauthority

New 'testdb-vi:1 (oracle)' desktop is testdb-vi:1

Creating default startup script /home/oracle/.vnc/xstartup
Starting applications specified in /home/oracle/.vnc/xstartup
Log file is /home/oracle/.vnc/testdb-vi:1.log
 
 

Preparação do software de instalação:

No diretório /u01 (que é um dos filesystems de 20GB criados) vamos descompactar o software do Oracle Database 12.1.0.2.

Como no momento da criação do serviço selecionamos a versão Oracle Database 12c Release 1, este será o software disponível para instalarmos.

Descompatamos o arquivo /scratch/db/db12102_bits.tar.gz no diretório /u01:


  
[oracle@testdb-vi u01]$ cd /u01

[oracle@testdb-vi u01]$ tar -zpxvf /scratch/db/db12102_bits.tar.gz

 
 

01


  
[oracle@testdb-vi app]$ cd /u01
[oracle@testdb-vi u01]$ ls -lrt
total 20
drwxr-xr-x 4 oracle oinstall  4096 Jan 16  2015 app

[oracle@testdb-vi u01]$ exit
logout
 
 

Assim que a descompactação finalizar executamos como root os scripts orainstRoot.sh e root.sh:


  
[opc@testdb-vi ~]$ sudo su -
[root@testdb-vi ~]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.

[root@testdb-vi ~]# /u01/app/oracle/product/12.1.0/dbhome_1/root.sh
Check /u01/app/oracle/product/12.1.0/dbhome_1/install/
root_testdb-vi_2017-01-14_12-43-55.log for the output of root script
 
 

A instalação do RDBMS está pronta e como vimos foi bastante simples.

Como podemos ver, a instalação do software Oracle neste tipo de implantação é diferente da maneira habitual que realizaríamos em um ambiente “on-premises”. Basicamente só é necessário descompactar o arquivo com o software e executar os scripts com o usuário root.

Agora já podemos criar nosso primeiro banco de dados.

Vamos fazê-lo em modo silencioso.

Vamos definir a variável ORACLE_BASE apontando para o filesystem montado no diretório /u02 para que os arquivos do banco de dados sejam armazenados ali:


  
[oracle@testdb-vi oracle]$ export ORACLE_BASE=/u02/app/oracle

[oracle@testdb-vi oracle]$ export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1

[oracle@testdb-vi oracle]$ export PATH=$ORACLE_HOME/OPatch:$ORACLE_HOME/bin:$PATH
 
 

Executamos o DBCA a partir da linha de comando com os seguintes parâmetros e ao executar informamos uma senha para os usuários SYS e SYSTEM:


  
[oracle@testdb-vi oracle]$ dbca -silent -createDatabase 
-templateNameGeneral_Purpose.dbc  -gdbName TESTDB1 -sid TESTDB1 
-createAsContainerDatabase false  -emConfiguration NONE 
-storageType FS  -memoryPercentage 20 -automaticMemoryManagement 
true

Enter SYS user password:

Enter SYSTEM user password:

Copying database files
1% complete
3% complete                                                                                                               
37% complete                                                                                                              
Creating and starting Oracle instance
40% complete
45% complete                                                                                                              
50% complete
55% complete
56% complete
60% complete                                                                                                              
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/u02/app/oracle/cfgtoollogs/dbca/
TESTDB01/TESTDB01.log" for further details.
 
 

Assim que finalizado verificamos se o banco de dados está disponível:


  
[oracle@testdb-vi oracle]$ ps -ef|greppmon
oracle    4428     1  0 13:29 ?        00:00:00 ora_pmon_TESTDB01
oracle    4820  3413  0 13:47 pts/0    00:00:00 greppmon
 
 

Verificamos também se o listener está iniciado:


  
[oracle@testdb-vi oracle]$ ps -ef|grep inherit
oracle    4855  3413  0 13:50 pts/0    00:00:00 grep inherit


[oracle@testdb-vi oracle]$ lsnrctl status

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 14-JAN-2017 13:50:23

Copyright (c) 1991, 2014, Oracle.  All rights reserved.
.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocoladapter error
  TNS-00511: No listener
   Linux Error: 2: No such file or directory
 
 

Como é possível observar, o listener não está em execução.

Vamos subí-lo manualmente:


  
[oracle@testdb-vi oracle]$ lsnrctl start

LSNRCTL for Linux: Version 12.1.0.2.0 - 
Production on 14-JAN-2017 13:51:13

Copyright (c) 1991, 2014, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/12.1.0/dbhome_1/bin/tnslsnr: 
please wait...

TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Log messages written to /u01/app/oracle/diag/tnslsnr/
testdb-vi/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=
testdb-vi.compute-irineomartin.oraclecloud.internal)(PORT=1521)))

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date                14-JAN-2017 13:51:15
Uptime                    0 days 0 hr. 0 min. 2 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Log File         /u01/app/oracle/diag/tnslsnr/
testdb-vi/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
  (HOST=testdb-vi.compute-irineomartin.oraclecloud.internal)
  (PORT=1521)))
The listener supports no services
The command completed successfully
 
 

Esperamos aproximadamente 60s para que a instância se registre ao listener e verificamos novamente:


  
[oracle@testdb-vi oracle]$ lsnrctl status

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 
14-JAN-2017 13:51:52

Copyright (c) 1991, 2014, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date                14-JAN-2017 13:51:15
Uptime                    0 days 0 hr. 0 min. 39 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Log File         /u01/app/oracle/diag/tnslsnr/
testdb-vi/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
  (HOST=testdb-vi.compute-irineomartin.oraclecloud.internal)
  (PORT=1521)))
Services Summary...
Service "TESTDB01" has 1 instance(s).
  Instance "TESTDB01", status READY, has 1 handler(s) for this service...
Service "TESTDB01XDB" has 1 instance(s).
  Instance "TESTDB01", status READY, has 1 handler(s) for this service...
Thecommandcompletedsuccessfully
 
 

Por último confirmamos que o acesso local ao banco de dados está correto:


  
[oracle@testdb-vi oracle]$ export ORACLE_SID=TESTDB01
[oracle@testdb-vi oracle]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sat Jan 14 13:53:48 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 
64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real 
Application Testing options

SQL> select host_name, instance_name from v$instance;

HOST_NAME       INSTANCE_NAME
--------------- ----------------
testdb-vi       TESTDB01
 
 

Agora vamos criar outro banco de dados, mas desta vez com o DBCA em modo gráfico:

Configuração do túnel SSH

Primeiro vamos configurar um túnel SSH utilizando o PuTTY para poder acessar a VM utilizando o VNC.

Abrimos o PuTTY e na seção “Host Name (or IP address)” informamos o IP público da nossa VM: En la sección “Host Name (or IP address)” colocamos la IP publica de nuestra máquina virtual.

02

Em Category -> Connection/Data seção “Auto-login username” colocamos o usuário “opc” (ou pode ser também o usuário oracle):

03

Em Category -> Connection/SSH marcamos a opção “Don’t start a shell or command at all”:

04

Em Category -> Connection/SSH/Auth indicamos o arquvio que contém a chave privada que corresponde à chave pública da VM:

05

Por fim, mapeamos as portas para a configuração do túnel…

Em Category -> Connection/SSH/Tunnels colocamos a porta local “Source port” que vamo usar (Ex. 5901) mapeando o destino “Destination” no formato IP:Porta (XX.XX.XX.XX:5901).

Desta maneira, uma vez que estabelecido o túnel com a VM, quando na nossa máquina local apontarmos a porta informada esta se comunicará com a porta e endereço de IP indicado.

06

Este é um exemplo de como se vê no quadro quando configurado:

07

Subimos então o VNCServer na porta indicada na configuração do túnel (5901):


  
[oracle@testdb-vi ~]$ vncserver :5901

New 'testdb-vi:1 (oracle)' desktop is testdb-vi:5901

Starting applications specified in /home/oracle/.vnc/xstartup
Log file is /home/oracle/.vnc/testdb-vi:5901.log
 
 

Finalmente nos conectamos à VM utilizando um client VNC, no nosso caso usando o Real VNC Viewer que pode ser baixado gratuitamente no seguinte endereço https://www.realvnc.com/download/viewer.

Para a conexão, indicamos o IP local com a porta mapeada no túnel (5901) e no VNCServer da VM:

08

Assim abrimos a conexão com uma interface gráfica com o servidor. O procedimento de criação do banco de dados é similar ao de um banco de dados “on-premises”.

Definimos as variáveis igual como fizemos no modo silent:

09

Executamos o DBCA:

10

Indicamos que queremos criar um banco de dados:

11

Utilizamos o diretório /u02 para os arquivos do banco de dados e /u03 para a FRA.

Desta maneira temos o uso dos seguintes filesystems criados:

  • /u01 instalação do software
  • /u02 arquivos do banco de dados
  • /u03 FRA

Completamos os campos solicitados:

12

Depois de avançarmos e verificarmos os detalhes, clicamos no botão “Finish”:

13

14

15

Ao finalizar a criação do banco de dados verificamos o stauts do listener:


  
[oracle@testdb-vi]$ lsnrctl status

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 
15-JAN-2017 22:23:04

Copyright (c) 1991, 2014, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date                14-JAN-2017 13:51:15
Uptime                    1 days 8 hr. 31 min. 51 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Log File         /u01/app/oracle/diag/tnslsnr/testdb-vi/
listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)
  (HOST=testdb-vi.compute-irineomartin.oraclecloud.internal)
  (PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)
  (HOST=testdb-vi.compute-irineomartin.oraclecloud.internal)
  (PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/
  admin/TESTDB02/xdb_wallet))
  (Presentation=HTTP)(Session=RAW))
Services Summary...
Service "TESTDB01" has 1 instance(s).
  Instance "TESTDB01", status READY, has 1 handler(s) for this service...
Service "TESTDB01XDB" has 1 instance(s).
  Instance "TESTDB01", status READY, has 1 handler(s) for this service...
Service "TESTDB02" has 1 instance(s).
  Instance "TESTDB02", status READY, has 1 handler(s) for this service...
Service "TESTDB02XDB" has 1 instance(s).
  Instance "TESTDB02", status READY, has 1 handler(s) for this service...
 
 

Vemos que ambas as instâncias criadas estão registradas.

Por fim, verificamos se a instância está acessível:


  
[oracle@testdb-vi u03]$ ps -ef|greppmon
oracle    4428     1  0 Jan14 ?        00:00:08 ora_pmon_TESTDB01
oracle   29930     1  0 22:12 ?        00:00:00 ora_pmon_TESTDB02
oracle   30347 25941  0 22:24 pts/1    00:00:00 greppmon

[oracle@testdb-vi u03]$ export ORACLE_SID=TESTDB02
[oracle@testdb-vi u03]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Sun Jan 15 22:24:44 2017

Copyright (c) 1982, 2014, Oracle.  All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> select host_name, instance_name from v$instance;

HOST_NAME       INSTANCE_NAME
--------------- ----------------
testdb-vi       TESTDB02
 
 

Como pudemos comprovar, é muito simples instalar o software Oracle Database quando criamos um “Oracle Database Cloud Service - Virtual Image”. Simplesmente descompactamos o arquivo que nos foi proporcionado com a VM já no diretório que queremos que fique a instalação e então executamos os scripts como root.

Depois vimos que podemos criar o banco de dados utilizando os métodos tradicionais, lembrando que se queremos utilizar o DBCA em modo gráfico devemos configurar previamente um túnel SSH.

Esperamos que esta série de artigos tenha sido útil e convidamos para que você continue nos acompanhando nas próximas publicações focadas em Oracle Cloud.

Sebastián D'Alessandro é um Senior DBA com mais de 15 anos de experiência real trablhando com a tecnologia Oracle. Ele tem foco principal na administração de banco de dados, projetar soluções de alta disponibilidade e disaster recovery, análise de desempenho, segurança, virtualização e cloud.Atualmente trabalha na área de banco de dados de uma grande empresa multinacional. Sebastian também participa como palestrante em vários eventos de tecnologia e publica freqüentemente em seu blog pessoal http://sdalessandro.blogspot.com. Você também pode segui-lo no Twitter https://twitter.com/sebdalessandro"

Joel Pérez é um DBA (Oracle ACE Director, Maximum Availability OCM, OCM Cloud Admin. & OCM12c/11g) Especialista com mais de 16 anos de experiência real no mundo da tecnologia Oracle, especializada na concepção e implementação de soluções: Nuvem, alta disponibilida de, recuperação de desastres, Upgrades, replicação e toda a área relacionada com bancos de dados Oracle. Joel serve como "Chief Technologist & MAA, Cloud Architect" para www.Enmotech.com Yunhe ENMO (Beijing) Technology Co. Ltd. Beijing, China. OCM Perfil Joel Perez: http://education.oracle.com/education/otn/JoelPerez.htm

Franky Weber Faust atua como administrador de banco de dados Oracle e MySQL no PagSeguro, tem 26 anos, é graduado em Tecnologia em Bancos de Dados e iniciou sua carreira trabalhando num projeto internacional da Volkswagen com os bancos de dados DB2 da IBM, SQL Server da Microsoft e também com o Oracle e desde o início direcionou seus estudos para as tecnologias Oracle. É especialista em tecnologias de Alta Disponibilidade como RAC, Dataguard e GoldenGate e compartilha seus conhecimentos no blog loredata.com.br. Possui as certificações OCE SQL, OCA 11g, OCP 12c, OCS RAC 12c e OCS Linux 6.

Este artigo foi revisto pela equipe de produtos Oracle e está em conformidade com as normas e práticas para o uso de produtos Oracle.