DBCA linha de comando
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
Referências
- Oracle® Database Administrator’s Guide 11g Release 2 (11.2)
- Rodrigo Mufalani – Leia mais aqui sobre o autor