Oracle 11g R2 – "DBCA linha de comando"

Por Rodrigo Mufalani
Postado em Novembro 2014

Revisado por Marcelo Pivovar - Solution Architect

Ao longo dos anos, cada vez mais, nós DBA’s estamos administrando bases de dados em Datacenters remotos e quase sempre a interface gráfica neste molde de suporte fica prejudicada devido a diversos fatores como, lentidão, bloqueios e etc. Pensando nisso, a Oracle fornece uma interface de linha de comando para a maioria de seus utilitários gráficos como o OUI (Oracle Universal Installer), o DBCA (Database Configuration Assistant, que veremos neste artigo), NETCA (Net Easy Configuration Assistant) entre outros.

Neste artigo iremos mostrar como criar um banco de dados Oracle em cluster utilizando a versão Oracle 11gR2 (11.2.0.3) em Real Application Clusters em um cluster Linux utilizando apenas a interface de linha de comando, ou seja, sem a necessitar redirecionar o X usando uma estação de trabalho Linux, ou utilizando um emulador como o Xming. 

DBCA – Visão geral

O Database Configuration Assistant, ou simplesmente DBCA como costumamos chamar tem ajudados DBA’s a realizarem diversas tarefas de gerenciamento de suas bases de dados é uma das maneiras mais fáceis de se criar uma base de dados Oracel. O DBCA pode ser executado juntamente com a instalação dos binários de uma instalação do banco de dados Oracle ou também separadamente depois dos produtos instalados para gerenciar as instances de banco de banco de dados single ou em cluster.
O DBCA lhe permite criar um database, configurar algumas opções de um instancia existente, deletar uma instância existente ou até mesmo criar um gabarito (template) para criação de futuros bancos de dados, você pode copiar este template entre instalações em sua infraestrutura.

Na figura abaixo podemos ver o DBCA sendo invocado como parte da instalação do banco de dados. Se escolher as opções default de instalação, irá executar dessa maneira: 


Na figura abaixo, podemos verificar a execução do utilitário DBCA separadamente:

Problema
Seu gerente lhe deu a tarefa de criar um database em uma instalação remota em RAC e você não tem acesso a modo gráfico para utilizar o DBCA graficamente e você tem prazo curto para execução, digamos 30min. Com este tempo, creio que não tem tempo hábil para a configuração  e testar um script de criação do database via SQL;  “Você sabia que é possível criar um banco de dados via comando SQL? Sim, é possível, verdade que é um pouco mais complexo do que apertar botões em uma GUI, porém é muito mais eficiente quando se sabe o que deseja.”

Solução
Neste artigo irei mostrar a linha de comando utilizada para realizar essa tarefa utilizando a interface de linha de comando do Oracle 11gR2 (11.2.0.3) em RAC e irei explicar cada um dos parâmetros do comando executado.
Para quem já criou um banco de dados, gerenciou templates ou utilizou o DBCA anteriormente verá que seria o mesmo que ir respondendo as perguntas que a GUI lhe faz. Irei demostrar passando parâmetros direto na linha comando, porém para efeitos de segurança é melhor que utilize um Response File para evitar mostrar senhas no shell do Linux.

DBCA Linha de comando

Segue abaixo a linha de comando que é um pouco extensa, porém muito simples e para quem já está acostumado com a utilização da interface gráfica vai ser de fácil compreensão:

$ORACLE_HOME/bin/dbca -silent \
   -createDatabase \
   -templateName  'General_Purpose.dbc' \
   -adminManaged \
   -emConfiguration NONE \
   -gdbName 'ORCL' \
   -sid 'ORCL' \
   -sysPassword ABC123 \
   -systemPassword ABC123 \
   -asmSYSPassword ABC123 \
   -asmsnmpPassword ABC123 \
   -storageType ASM \
   -diskGroupName DATA \
   -datafileJarLocation $ORACLE_HOME/assistants/dbca/templates \
   -nodelist 'node01,node02' \
   -characterset WE8MSWIN1252 \
   -obfuscatedPasswords false \
   -sampleSchema false \
   -oratabLocation /etc/oratab \
   -initParams db_unique_name=ORCL,processes=7000,db_name=ORCL \
   -listeners LISTENER


Agora iremos descrever cada etapa do comando linha por linha para melhor entendimento:

$ORACLE_HOME/bin/dbca -silent – Essa é a parte onde eu digo a utilitário para ele rodar em modo silencioso, ou seja, sem abrir a tela em java do utilitário,  se eu fosse usar um arquivo de respostas bastaria  usar da mesma forma que antes, porém  acrescido do parâmetro –ResponseFile, dessa forma $ORACLE_HOME/bin/dbca -silent -ResponseFile </Path/Arquivo/Respostas>

-createDatabase  – Essa é a opção que digo o que o DBCA deve fazer, como vimos anteriormente ele pode executar algumas outras tarefas.

-templateName  'General_Purpose.dbc' -- Essa é a opção que digo o para o DBCA criar um database a partir de um template, neste caso, o escolhido foi o General Purpose, poderia ter sido outro, na instalação default o Oracle fornece também o template Data_Warehouse.dbc.

-adminManaged – Nesta opção eu disse ao DBCA para deixar o gerenciamento de recursos por conta do DBA, com o Oracle 11g foi introduzido a funcionalidade Policy Managed. A diferença é a seguinte:

Administrator-managed: Os DBA’s definem em que servidor uma instance deve rodar e vai gerenciando os recursos manualmente conforme a necessidade. Essa era a estratégia de gerenciamento de recursos em releases anteriores a Oracle 11gR2.

Policy managed: Os DBA’s Database escolhem em que server pool os recursos de banco de dados irão rodar. O Oracle Clusterware é responsável para gerir os recursos nos hosts daquele pool.

-emConfiguration NONE – Como este banco de dados foi criado apenas para efeito de estudos, não especifiquei que ele irá criar o EM Manager Console como parte da criação do banco de dados, se precisar eu posso utilizar outro utilitário chamado EMCA (Enterprise Manager Configuration Assistant) para criar e configurar o EM Console para esta instance.

-gdbName 'ORCL' – Este parâmetro é o Database Global Name

-sid 'ORCL' – Este parâmetro é o SID

-sysPassword ABC123 – Senha do usuário SYS

-systemPassword ABC123
 – Senha do usuário SYSTEM

-asmSYSPassword ABC123
 – Senha do usuário ASMSYS

-asmsnmpPassword ABC123  – Senha do usuário ASMSNMP

-storageType ASM  – Neste parâmetro eu informo que irei utilizar ASM como localização dos database files. O Oracle Automatic Storage Management (ASM) é o cluster file system da própria Oracle, padrão para o Oracle RAC SE que foi introduzido no Oracle 10g, porém ele é tão bom e com excelente performance que muitas instalações que utilizam RAC e até bancos de dados single instance armazenam seus database files em uma instance ASM. A Oracle vem melhorando cada vez mais este produto.

-diskGroupName DATA -- Neste parâmetro eu digo qual o DISKGROUP que eu utilizarei para este banco de dados, previamente você deve ter criado este diskgroup utilizando uma outra ferramenta muito útil introduzida no Oracle 11g chamada Oracle ASM Configuration Assistant (ASMCA). 

-datafileJarLocation $ORACLE_HOME/assistants/dbca/templates – Neste parâmetro informamos o caminho onde o Oracle irá buscar os arquivos base do template Seed_Database.ctl e o Seed_Database.ctl para fazer uma espécie de restore de base de dados.

-nodelist 'node01,node02' Neste parâmetro eu digo ao DBCA em quais nodes do meu cluster ele vai criar instances e gerenciar
  
-characterset WE8MSWIN1252 – Neste parâmetro eu informo qual o Charcterset do  banco de dados a ser criado. 

-obfuscatedPasswords false – Nesta opção eu digo para o DBCA não utilizar de Wallets para gerenciamento de passwords

-sampleSchema false
– Nesta opção eu digo ao DBCA para não instalar os schemas de exemplo (HR/OE/SCOTT e outros)

-oratabLocation /etc/oratab
– Nesta opção eu digo ao DBCA qual a localização do oratab.

-initParams db_unique_name=ORCL,processes=7000,db_name=ORCL – Podemos modificar alguns parâmetros de inicialização no momento de criação da instance, no nosso caso, processes e db_name.   

-listeners LISTENER – Nesta opção dizemos ao DBCA usar o listener com nome de LISTENER.

DBCA Linha de comando exemplo de uso


[oracle@oel62-11g ~]$  $ORACLE_HOME/bin/dbca -silent -createDatabase -templateName  'General_Purpose.dbc' 
-adminManaged  -emConfiguration NONE -gdbName 'ORCL' -sid 'ORCL' -sysPassword ABC123  -systemPassword ABC123 
-asmSYSPassword ABC123 -asmsnmpPassword ABC123  -storageType ASM -diskGroupName DATA -datafileJarLocation  
$ORACLE_HOME/assistants/dbca/templates -nodelist 'node01,node02' -characterset WE8MSWIN1252  
-obfuscatedPasswords false -sampleSchema false -oratabLocation /etc/oratab  -initParams 
db_unique_name=ORCL,processes=7000,db_name=ORCL -listeners LISTENER
   
Copying database files
   1% complete
   3% complete
   30% complete
   Creating and starting Oracle instance
   32% complete
   36% complete
   40% complete
   44% complete
   45% complete
   48% complete
   50% complete
   Creating cluster database views
   52% complete
   70% complete
   Completing Database Creation
   73% complete
   76% complete
   85% complete
   94% complete
   100% complete
   
   Look at the log file  "/oracle/app/product/cfgtoollogs/dbca/ORCL/ORCL.log" for further  details.

 

Conferindo recursos do cluster


[oracle@oel62-11g ~]$ crs_stat -t
  
 Name            Type           Target    State      Host        
   ------------------------------------------------------------
   ora.DATA.dg     ora....up.type ONLINE     ONLINE    node01  
   ora.GRDINF.dg   ora....up.type ONLINE     ONLINE    node01  
   ora....ER.lsnr ora....er.type ONLINE    ONLINE     node01  
   ora....N1.lsnr ora....er.type ONLINE    ONLINE     node02  
   ora....N2.lsnr ora....er.type ONLINE    ONLINE     node01  
   ora....N3.lsnr ora....er.type ONLINE    ONLINE     node01  
   ora.asm         ora.asm.type   ONLINE    ONLINE     node01  
   ora....SM1.asm application    ONLINE     ONLINE    node01  
   ora....01.lsnr application    ONLINE     ONLINE    node01  
   ora....i01.gsd application    OFFLINE    OFFLINE               
   ora....i01.ons application    ONLINE     ONLINE    node01  
   ora....i01.vip ora....t1.type ONLINE    ONLINE     node01  
   ora....SM2.asm application    ONLINE     ONLINE    node02  
   ora....02.lsnr application    ONLINE     ONLINE    node02  
   ora....i02.gsd application    OFFLINE    OFFLINE               
   ora....i02.ons application    ONLINE     ONLINE    node02  
   ora....i02.vip ora....t1.type ONLINE    ONLINE     node02  
   ora.cvu         ora.cvu.type   ONLINE    ONLINE     node01  
   ora.glipod.db   ora....se.type ONLINE     ONLINE    node01  
   ora.gsd         ora.gsd.type   OFFLINE   OFFLINE               
   ora....network ora....rk.type ONLINE    ONLINE     node01  
   ora.oc4j        ora.oc4j.type  ONLINE    ONLINE     node01  
   ora.ons         ora.ons.type   ONLINE    ONLINE     node01  
   ora.scan1.vip   ora....ip.type ONLINE     ONLINE    node02  
   ora.scan2.vip   ora....ip.type ONLINE    ONLINE    node01  
 ora.scan3.vip  ora....ip.type ONLINE    ONLINE     node01  

 

Conferindo recursos do database no cluster


[oracle@oel62-11g ~]$ srvctl  config database –d ORCL
srvctl config database -d ORCL
   Database unique name: ORCL
   Database name: ORCL
   Oracle home: /oracle/app/product/11203/db_1
   Oracle user: oracle
   Spfile: +DATA/ORCL/spfileORCL.ora
   Domain: 
   Start options: open
   Stop options: immediate
   Database role: PRIMARY
   Management policy: AUTOMATIC
   Server pools: ORCL
   Database instances: ORCL1,ORCL2
   Disk Groups: DATA
   Mount point paths: 
   Services: 
   Type: RAC
   Database is administrator managed

 

Conferindo database files criados no DG +DATA


[oracle@oel62-11g ~]$ sqls

SQL*Plus: Release 11.2.0.3.0 Production on Fri  Oct 17 18:41:32 2014
Copyright (c) 1982, 2011, Oracle.  All rights reserved.

Connected to:
   Oracle Database 11g Enterprise Edition Release  11.2.0.3.0 - 64bit Production
   With the Partitioning, Real Application  Clusters, Automatic Storage Management, OLAP,
   Data Mining and Real Application Testing options

SQL> select file_name from dba_data_files;

   FILE_NAME
   --------------------------------------------------------------------------------
   +DATA/orcl/datafile/users.277.861020021
   +DATA/orcl/datafile/undotbs1.256.861020021
   +DATA/orcl/datafile/sysaux.257.861020019
   +DATA/orcl/datafile/system.264.861020019
   +DATA/orcl/datafile/undotbs2.396.861020113

 

Referencias:
            Oracle® Database Administrator's Guide 11g Release 2 (11.2)



Mufalani é um DBA Sr. com mais de 10 anos de experiência, começou com o Oracle 8i, mas teve a oportunidade de dar suporte a Oracle 7.3.4 em diante. É especialista em banco de dados Oracle com foco principal em Performance &Tuning e RAC. É palestrante em eventos de Oracle como: OTN LAD TOUR e outros. Atualmente trabalha como consultor diversas empresas no segmento de variados ramos como: Educação, Saúde, Tecnologia, Seguros e etc. Foi o terceiro Oracle ACE a ser nomeado no Brasil e é OCP DBA nas versões 10g e 11g.

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.