Instalando e Configurando o Oracle Grid e o Oracle DataBase 11G no CentOS 5.5

Obtenha o oracle grid e o oracle DataBase em Download Oracle

Precisamos dos seguintes arquivos:

  • linux.x64_11gR2_database_1of2.zip
  • linux.x64_11gR2_database_2of2.zip
  • linux.x64_11gR2_grid.zip

O que vamos utilizar:

  • SELinux desabilitado
  • 4 discos para o ASM: /dev/sdb, /dev/sdc, /dev/sdd, /dev/sde
  • Usuário para o banco: oracle
  • Grupos para o banco:
    • oinstall
    • dba
    • oper

Vou levar em consideração que o CentOS 5.5 está instalado e com o ambiente gráfico.

Informações da máquina:

  • IP: 192.168.56.2/24
  • Nome: oracle
  • Domínio: douglasqsantos.com.br

Vamos ajustar o nome da máquina

vim /etc/hosts
127.0.0.1       oracle.lab.lan oracle localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
192.168.56.2    oracle.douglasqsantos.com.br oracle

Vamos instalar as dependências do Oracle

yum install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc gcc-c++ \
libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel pdksh -y

Agora vamos criar os grupos para o oracle

groupadd oinstall
groupadd dba
groupadd oper

Agora vamos criar os diretórios para armazenar o Grid e o DataBase

mkdir -p /u01/app/oracle
mkdir -p /u01/app/oracle/product/11.2.0/grid
mkdir -p /u01/app/oraInventory

Agora vamos criar o usuário oracle

useradd -g dba -G oinstall -d /home/oracle oracle

Defina uma senha para o usuário oracle

passwd oracle

Agora vamos ajustar as permissões dos diretórios

chown -R oracle:oinstall /u01
chmod -R 775 /u01

Agora vamos criar o diretório que vai conter os fontes do Oracle

mkdir /stage/

Agora vamos ajustar as permissões

chown -R oracle:dba /stage/
chmod -R 775 /stage/

Agora vamos mover os fontes para o /stage

mv linux.x64_11gR2_*.zip /stage

Agora vamos mandar listar os nossos discos

fdisk -l | egrep "/dev/" | tail -n 4 
O disco /dev/sdb não contém uma tabela de partições válida
O disco /dev/sdc não contém uma tabela de partições válida
O disco /dev/sdd não contém uma tabela de partições válida
O disco /dev/sde não contém uma tabela de partições válida
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
Disk /dev/sdd: 10.7 GB, 10737418240 bytes
Disk /dev/sde: 10.7 GB, 10737418240 bytes

Temos 4 discos sem partição /dev/sdb, /dev/sdc, /dev/sdd e /dev/sde nós vamos utilizar eles para montar o ASM

Agora vamos ajustar o sistema para criar os dispositivos to tipo raw que é o dispositivo que o ASM vai trabalhar

vim /etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="sdb", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdd", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sde", RUN+="/bin/raw /dev/raw/raw4 %N"
KERNEL=="raw[1-4]*", OWNER="oracle",GROUP="dba", MODE="660"

Agora vamos ajustar as variáveis do kernel

vim /etc/sysctl.conf
[...]
#Inserir no final do arquivo
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1054504960
kernel.shmmni = 4096
# semaphores: semmsl, semmns, semopm, semmni
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=1048586

Agora vamos ajustar os limits para o usuário oracle

vim /etc/security/limits.conf
[...]
#Inserir no final do arquivo
oracle               soft    nproc   2047
oracle               hard    nproc   16384
oracle               soft    nofile  1024
oracle               hard    nofile  65536

Agora vamos inserir no arquivo de login da pam o controle de limits

vim /etc/pam.d/login
#No final do arquivo
session    required     pam_limits.so

Agora vamos reiniciar o sistema

reboot

Agora logue com o usuário oracle

Agora precisamos descompactar os fontes do Oracle Grid vamos acessar o diretório que contem os fontes

cd /stage

Agora vamos descompactar o grid

unzip linux.x64_11gR2_grid.zip

Agora vamos mandar inicializar o grid

/stage/grid/runInstaller

Vamos ter uma tela como a abaixo, aqui vamos selecionar Instalar e Configurar o Grid Infrastructure para um Servidor Independente e selecione Próximo.

Agora precisamos selecionar os idiomas deixe sempre em primeiro o Inglês e depois outro idioma e selecione Próximo.

Agora precisamos selecionar os discos para o ASM selecione o raw1 e o raw2 e selecione Próximo.

Agora precisamos informar a senha para o sys e o asmsnmp, tente informar uma senha simples ex: oracle e depois mude pois senão no final da instalação vai dar erro e depois selecione Próximo.

Agora precisamos informar os grupos que vão operar o ASM aqui selecione todos eles como dba depois é só selecionar Próximo.

Vamos ter um warn sobre os grupos do ASM aqui é só selecionar sim

A estrutura de diretórios para o ASM já foi criada antes da instalação então aqui é só selecionar Próximo.

Agora temos a definição do diretório de inventário, como já criamos vamos selecionar Próximo.

Agora o sistema vai fazer uma checagem dos seus pré-requisitos se tudo estiver ok vamos ter algo como abaixo, agora é só selecionar Finalizar.

Agora precisamos o esperar o sistema instalar.

Depois do sistema instalar o que ele precisa vamos ter a seguinte tela como abaixo, temos um aviso aonde temos que executar alguns script como root para ajustar o sistema então vamos executar eles com o usuário root.

Vamos executar o primeiro script

/u01/app/oraInventory/orainstRoot.sh 
Alterando permissões de/u01/app/oraInventory.
Adicionando permissões de leitura e gravação para grupo.
Removendo permissões de execução, de leitura e gravação para world.

Alterando o nome do grupo de /u01/app/oraInventory para dba.
A execução do script foi concluída.

agora vamos executar o segundo script

/u01/app/oracle/product/11.2.0/grid/root.sh 
Running Oracle 11g root.sh script...

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/11.2.0/grid

Enter the full pathname of the local bin directory: [/usr/local/bin]: 
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
2013-03-19 13:43:24: Checking for super user privileges
2013-03-19 13:43:24: User has super user privileges
2013-03-19 13:43:24: Parsing the host name
Using configuration parameter file: /u01/app/oracle/product/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
LOCAL ADD MODE 
Creating OCR keys for user 'oracle', privgrp 'dba'..
Operation successful.
CRS-4664: Node oracle successfully pinned.
Adding daemon to inittab
CRS-4123: Oracle High Availability Services has been started.
ohasd is starting
ADVM/ACFS is not supported on centos-release-5-5.el5.centos




oracle     2013/03/19 13:43:44     /u01/app/oracle/product/11.2.0/grid/cdata/oracle/backup_20130319_134344.olr
Successfully configured Oracle Grid Infrastructure for a Standalone Server
Updating inventory properties for clusterware
Iniciando Oracle Universal Installer...

Verificando espaço de swap: deve ser superior a 500 MB.   5023 MB Reais    Passado
The inventory pointer is located at /etc/oraInst.loc
The inventory is located at /u01/app/oraInventory
'UpdateNodeList' bem-sucedido.

Como podemos notar a instalação ocorreu ok.

Agora já podemos selecionar ok na tela da execução dos scripts.

Depois disso vamos ter a seguinte tela

Aqui precisamos somente selecionar Fechar.

Agora precisamos criar o FRA do ASM, então vamos carregar as variáveis de ambiente do ASM

Precisamos executar os comandos abaixo com o usuário oracle

. oraenv
ORACLE_SID = [oracle] ? +ASM
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/grid is /u01/app/oracle

Agora podemos chamar o asmca

asmca

Vamos ter uma tela como abaixo.

Aqui vamos selecionar Criar, aqui vamos informar o nome do nosso grupo de discos que vai ser FRA e vamos selecionar os dois discos disponíveis como abaixo e vamos selecionar ok.

Se tudo ocorreu sem problemas vamos ter a seguinte tela aqui vamos selecionar ok

Agora podemos fechar a tela do assistente de configuração do ASM

Pronto o nosso ASM já esta configurado e funcionando :D

Agora vamos fazer a instalação do software de banco de dados

Vamos acessar o diretório que contém os fontes com o usuário oracle

cd /stage

Agora vamos descompactar eles

unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip

Agora vamos acessar o diretório database

cd database

Agora vamos chamar o executável para a instalação

./runInstaller

Agora vamos ter uma tela como abaixo

Aqui selecione Próximo vamos ter um aviso como abaixo ,que não vamos receber informações sobre segurança do banco

Aqui vamos selecionar sim

Agora vamos selecionar Instalar somente software do banco de dados e vamos selecionar Próximo

Agora precisamos selecionar o tipo de instalação do banco: Instalação do banco de dados de instância única e vamos selecionar Próximo.

Agora precisamos selecionar os idiomas deixe sempre o Inglês primeiro e depois outros idiomas adicionais caso necessário e selecione Próximo.

Agora precisamos selecionar qual edição do banco vamos instalar selecione a que você adquiriu a licença :D e selecione Próximo

Agora podemos selecionar a base do Oracle e a localização do Software eu vou deixar o padrão e vamos selecionar Próximo

Agora podemos selecionar os grupos de administração e operação do banco de dados vamos deixar os padrões e vamos selecionar Próximo

Como pode ser notados todos os pré-requisitos estão ok com isso é só mandar instalar selecionar Finalizar

Agora vamos ter o processo de instalação do banco

Quando terminar a copia vamos ter a seguinte mensagem

Aqui precisamos rodar o script com o usuário root, aqui podemos mandar sobreescrever os arquivos do ASM pois são os mesmos para o Oracle Database.

/u01/app/oracle/product/11.2.0/dbhome_1/root.sh 
Running Oracle 11g root.sh script...

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /u01/app/oracle/product/11.2.0/dbhome_1

Enter the full pathname of the local bin directory: [/usr/local/bin]: 
The file "dbhome" already exists in /usr/local/bin.  Overwrite it? (y/n) 
[n]: y
   Copying dbhome to /usr/local/bin ...
The file "oraenv" already exists in /usr/local/bin.  Overwrite it? (y/n) 
[n]: y
   Copying oraenv to /usr/local/bin ...
The file "coraenv" already exists in /usr/local/bin.  Overwrite it? (y/n) 
[n]: y
   Copying coraenv to /usr/local/bin ...

Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root.sh script.
Now product-specific root actions will be performed.
Finished product-specific root actions.

Depois disso podemos dar um ok na tela de execução do script e vamos ter a seguinte tela

Aqui é só selecionar Fechar :D

Agora precisamos criar o banco de dados ainda com o usuário oracle

/u01/app/oracle/product/11.2.0/dbhome_1/bin/dbca

Vamos ter uma tela como abaixo.

Aqui vamos selecionar Próximo para iniciarmos a configuração

Agora vamos selecionar a nossa operação neste caso vamos selecionar Criar um Banco de Dados

Agora vamos selecionar qual a finalidade do modelo de banco vou selecionar a primeira opção Finalidade Geral ou processamento de Transação

Agora vamos informar o nome do banco de dados e o SID como abaixo e selecione Próximo

Aqui vamos deixar as nossas opções default e vamos selecionar Próximo

Agora podemos informar a senha para os usuários do banco ou selecionar usar a mesma senha para todas as contas e informe a senha e selecione Próximo

Agora precisamos informar o tipo de armazenamento: Gerenciamento Automatizado de Armazenamento (ASM) e em Área de Banco de dados podemos informar +DATA como na abaixo e selecione Próximo

Agora precisamos informar a senha do ASMSNMP que foi informada na instalação do grid e selecionar ok

Agora precisamos informar a área de recuperação Flash vamos selecionar a área de armazenamento do ASM: +FRA como abaixo e vamos selecionar Próximo.

Agora podemos instalar os exemplos de esquema e podemos selecionar Próximo.

Agora temos a configuração de SGA e PGA eu vou usar o Gerenciamento Automático de memória, aqui podemos também informar dimensionamento, conjuntos de caracteres e modo de conexão e selecione Próximo.

Agora temos um Overview da nossa instalação aqui podemos selecionar Próximo.

Agora temos as opções de criação do banco de dados vamos deixar as padrões e vamos selecionar Gerar Scripts de criação de Banco de dados e vamos selecionar Finalizar.

Agora vamos ter a tela de confirmação da nossa criação aqui podemos selecionar OK

Vamos ter a confirmação dos scripts para a criação do banco de dados podemos selecionar ok

Agora vamos ter a criação do banco como abaixo.

Depois que terminar a criação vamos ter a seguinte mensagem

Aqui temos informações sobre as contas do banco o repositório e o acesso ao Enterprise Manager em https://oracle.douglasqsantos.com.br:1158/em

Aqui vamos selecionar Sair

Agora vamos testar o nosso banco

Vamos carregar as variáveis de ambiente para a nossa instância orcl

. oraenv
ORACLE_SID = [oracle] ? orcl
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 is /u01/app/oracle

Agora vamos chamar o sqlplus, como a a conexão é local é só informar usuário/senha

sqlplus system/oracle

SQL*Plus: Release 11.2.0.1.0 Production on Fri Mar 22 16:27:37 2013

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


Conectado a:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL> 

Agora vamos liberar a porta 1158 para que possamos acessar de outras máquinas o Enterprise Manager, e vamos liberar a porta 1521 para podemos acessar o Oracle de outras maquina.

Agora com o usuário root

vim /etc/sysconfig/iptables
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 1158 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 1521 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

Agora vamos reiniciar o serviço do Firewall

/etc/init.d/iptables restart

Agora vamos testar o Enterprise manager acessando https://oracle.douglasqsantos.com.br:1158/em aqui vamos precisar aceitar o certificado auto-assinado vamos ter algo como abaixo

Aqui podemos logar com o usuário system e a senha que foi informada na instalação do banco, depois vamos ter a seguinte tela

Aqui podemos efetuar muitas operações em nosso banco de dados :D

Operações básicas:

Vamos parar o Enterprise manager

Vamos carregar as variáveis para a instância que queremos gerenciar

. oraenv
ORACLE_SID = [oracle] ? orcl
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 is /u01/app/oracle

Agora vamos mandar o Enterprise manager parar

emctl stop dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0 
Copyright (c) 1996, 2009 Oracle Corporation.  All rights reserved.
https://oracle.douglasqsantos.com.br:1158/em/console/aboutApplication
Stopping Oracle Enterprise Manager 11g Database Control ... 
 ...  Stopped. 

Agora vamos consultar o nosso Enterprise Manager

emctl status dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0 
Copyright (c) 1996, 2009 Oracle Corporation.  All rights reserved.
https://oracle.douglasqsantos.com.br:1158/em/console/aboutApplication
Oracle Enterprise Manager 11g is not running.

Para inicializar ele

emctl start dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0 
Copyright (c) 1996, 2009 Oracle Corporation.  All rights reserved.
https://oracle.douglasqsantos.com.br:1158/em/console/aboutApplication
Starting Oracle Enterprise Manager 11g Database Control ..... started. 
------------------------------------------------------------------
Logs are generated in directory /u01/app/oracle/product/11.2.0/dbhome_1/oracle.douglasqsantos.com.br_orcl/sysman/log 

Agora vamos ver como podemos parar e iniciar uma instância do banco de dados

Vamos parar a instância do orcl

srvctl stop database -d orcl

Agora vamos verificar o status da instância

srvctl status database -d orcl
O banco de dados não está em execução.

Para inicializar ela

srvctl start database -d orcl

Agora vamos executar o status da instância

srvctl status database -d orcl
O banco de dados está em execução.

Podemos parar o banco pelo sqlplus da seguinte forma

Carregue as variáveis para a instância

. oraenv
ORACLE_SID = [oracle] ? orcl
The Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 is /u01/app/oracle

Agora vamos logar com o usuário sys com a permissão de sysdba

sqlplus sys/oracle as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Fri Mar 22 17:01:03 2013

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


Conectado a:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

SQL> 

Agora vamos mandar dar um shutdown no banco

SQL> shutdown immediate;
Banco de dados fechado.
Banco de dados desmontado.
Instancia ORACLE desativada.
SQL> 

Agora vamos mandar subir a instância novamente

SQL> startup;
Instancia ORACLE iniciada.

Total System Global Area  839282688 bytes
Fixed Size        2217992 bytes
Variable Size     515901432 bytes
Database Buffers    314572800 bytes
Redo Buffers        6590464 bytes
Banco de dados montado.
Banco de dados aberto.
SQL> 

Agora vamos verificar o status do nosso listener

lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 22-MAR-2013 17:05:15

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

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                22-MAR-2013 14:50:20
Uptime                    0 days 2 hr. 14 min. 55 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/grid/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle.douglasqsantos.com.br)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "orcl.lab.lan" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.lab.lan" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

Agora se eu precisar parar ele

lsnrctl stop

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 22-MAR-2013 17:06:05

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

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
The command completed successfully

Agora vamos verificar o status dele

lsnrctl status

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 22-MAR-2013 17:06:32

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

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused

Como pode ser notado ele está down vamos subir ele

lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 22-MAR-2013 17:07:15

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

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

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Log messages written to /u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle.douglasqsantos.com.br)(PORT=1521)))

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                22-MAR-2013 17:07:15
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Log File         /u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle.douglasqsantos.com.br)(PORT=1521)))
The listener supports no services
The command completed successfully

Referências