Instalando e Configurando o Oracle Database 12c no Oracle Linux 6
- Obtenha o oracle DataBase 12c em Download Oracle
- Obtenha o Oracle Linux 6 em Oracle Linux 6
Precisamos dos seguintes arquivos:
- linuxamd64_12c_database_1of2.zip
- linuxamd64_12c_database_2of2.zip
O que vamos utilizar:
- SELinux desabilitado
- 2 discos para um para o SO com 50 GB e um de 100 GB para o banco de dados que vai ficar em /u01:
- Usuário para o banco: oracle
- Grupos para o banco:
- oinstall
- dba
- oper
Vou levar em consideração que o Oracle Linux 6 está instalado e com o ambiente gráfico.
Informações da máquina:
- IP: 192.168.1.50/24
- Nome: ol6
- Domínio: douglasqsantos.com.br
- RAM: 2048 MB
- SWAP: 4096 MB
- Disco1: 50 GB
- Disco2: 100 GB
Vamos ajustar o nome da máquina
vim /etc/hosts 127.0.0.1 ol6.douglasqsantos.com.br ol6 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 192.168.1.50 ol6.douglasqsantos.com.br ol6
Vamos atualizar o sistema
yum update -y
Vamos desabilitar o Firewall ipv4
/etc/init.d/iptables stop chkconfig --del iptables
Vamos desabilitar o Firewall ipv6
/etc/init.d/ip6tables stop chkconfig --del ip6tables
Agora vamos ajustar o selinux
vim /etc/selinux/config [...] SELINUX=permissive
O Oracle Linux 6 já vem com o repositório public-yum-ol6.repo caso você não tenha pode obter em http://public-yum.oracle.com
Vamos instalar as depêndências do Oracle 12c
yum install oracle-rdbms-server-12cR1-preinstall -y
Agora vamos ajustar o sysctl.conf geralmente com a instalação do oracle-rdbms a variável kernel.shmall vem com valor errado dai temos que ajustar ela para 1073741824, as variáveis que precisamos ajustar estão abaixo.
vim /etc/sysctl.conf [...] # Controls the default maxmimum size of a mesage queue kernel.msgmnb = 65536 # Controls the maximum size of a message, in bytes kernel.msgmax = 65536 # Controls the maximum shared segment size, in bytes # Controls the maximum number of shared memory segments, in pages kernel.shmall = 1073741824 # oracle-rdbms-server-12cR1-preinstall setting for fs.file-max is 6815744 fs.file-max = 6815744 # oracle-rdbms-server-12cR1-preinstall setting for kernel.sem is '250 32000 100 128' kernel.sem = 250 32000 100 128 # oracle-rdbms-server-12cR1-preinstall setting for kernel.shmmni is 4096 kernel.shmmni = 4096 # oracle-rdbms-server-12cR1-preinstall setting for kernel.shmall is 1073741824 on x86_64 # oracle-rdbms-server-12cR1-preinstall setting for kernel.shmmax is 4398046511104 on x86_64 kernel.shmmax = 4398046511104 # oracle-rdbms-server-12cR1-preinstall setting for net.core.rmem_default is 262144 net.core.rmem_default = 262144 # oracle-rdbms-server-12cR1-preinstall setting for net.core.rmem_max is 4194304 net.core.rmem_max = 4194304 # oracle-rdbms-server-12cR1-preinstall setting for net.core.wmem_default is 262144 net.core.wmem_default = 262144 # oracle-rdbms-server-12cR1-preinstall setting for net.core.wmem_max is 1048576 net.core.wmem_max = 1048576 # oracle-rdbms-server-12cR1-preinstall setting for fs.aio-max-nr is 1048576 fs.aio-max-nr = 1048576 # oracle-rdbms-server-12cR1-preinstall setting for net.ipv4.ip_local_port_range is 9000 65500 net.ipv4.ip_local_port_range = 9000 65500
Agora vamos ajustar o limits.conf
vim /etc/security/limits.conf [...] #Inserir no final do arquivo oracle soft nofile 1024 oracle hard nofile 65536 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft stack 10240 oracle hard stack 32768
Agora vamos adicionar um ultimo grupo que é um pre-requisito opcional do oracle
groupadd -g 54323 oper
Agora vamos ajustar o oracle
usermod -u 54321 -g oinstall -G dba,oper oracle
Agora vamos definir uma senha para o nosso usuário oracle
passwd oracle
Agora vamos editar mais um arquivo de controle
vim /etc/security/limits.d/90-nproc.conf [...] #* soft nproc 1024 * - nproc 16384 root soft nproc unlimited
Agora vamos criar o diretório base do oracle e vamos ajustar as permissões
mkdir -p /u01/app/oracle/product/12.1.0/db_1 chown -R oracle:oinstall /u01 chmod -R 775 /u01
Agora vamos instalar um facilitador de linha de comando o rlwrap
rpm -Uvh http://wiki.douglasqsantos.com.br/Downloads/Oracle/rlwrap-0.37-1.el6.x86_64.rpm
Agora vamos ajustar o .bash_profile do usuário oracle
vim /home/oracle/.bash_profile # .bash_profile PS1='\[\033[01;31m\][\[\033[01;37m\]\t\[\033[01;31m\]] \[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]$ ' alias ls='ls --color=auto' alias dir='dir --color=auto' alias vdir='vdir --color=auto' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto' alias sqlplus='rlwrap sqlplus' alias rman='rlwrap rman' # some more ls aliases alias ll='ls -alF' alias la='ls -A' alias l='ls -CF' export EDITOR=vim export HISTTIMEFORMAT="%h/%d - %H:%M:%S " # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi mesg y # Oracle Settings export TMP=/tmp export TMPDIR=$TMP export ORACLE_HOSTNAME=ol6.douglasqsantos.com.br export ORACLE_UNQNAME=douglas export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1 export ORACLE_SID=douglas export PATH=/usr/sbin:$PATH export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
Agora vamos acertar as permissões do diretório que esta armazenando os arquivos do oracle, eu estou levando em consideração que os arquivos estão em /u01/stage
chown -R oracle:oinstall /u01/stage
Agora vamos desempacotar os arquivos
unzip linuxamd64_12c_database_1of2.zip unzip linuxamd64_12c_database_2of2.zip
Agora vamos ajustar as permissões dos arquivos considerando que os arquivos fontes estão em /stage
chown -R oracle:oinstall /u01/stage
Agora vamos reiniciar o servidor para ele reconher as novas configurações
reboot
Agora logue novamente no servidor com o usuário oracle.
Caso esteja utilizando uma sessão via SSH de outra máquina Linux com ambiente gráfico mande exportar habilitar o XForward da seguinte forma
ssh -X oracle@192.168.1.50
Agora vamos chamar o instalador do Oracle.
/u01/stage/database/runInstaller
Aqui na primeira tela da instalação vamos ser questionados se queremos receber notificações sobre atualizações não vamos selecionar nada e vamos selecionar Next
Agora vamos ser alertados que não vamos receber as notificações de segurança selecine yes para continuar.
Aqui nesta próxima tela vamos deixar marcado skip software updates e vamos selecionar Next
Agora precisamos especificar o tipo da nossa instalação vamos selecionar Install database software only pois vamos criar o banco de dados depois e selecione Next
Agora vamos ser questionados sobre como que vai ser a nossa instalação, como vamos fazer uma instalação simples sem RAC vamos deixar seleciona a primeira opção e vamos selecionar Next
Agora podemos selecionar os idiomas suportados pelo Oracle, eu vou deixar somente o English mais caso tenha clientes que utilizem o padrão português é bom adicionar o idioma português e selecione Next.
Agora podemos selecionar qual a versão do banco de dados que queremos instalar note que os tamanhos são bem diferentes da versão 11G que era 4.29GB a Enterprise e 4.22GB a Standard e selecione Next.
Como setamos as variáveis de ambiente o oracle já conseguiu mapear a localização do Oracle base e já mapeou a instalação que é o ORACLE_HOME e selecione Next
Agora vamos ter a questão da instalação dos metadados do oracle vamos deixar o padrão e vamos selecionar Next.
Agora o oracle vai fazer o mapeamento dos grupos necessários para ele trabalhar, como já criamos todos como pré-requisitos agora vamos selecionar Next
O oracle vai fazer a checagem dos pré-requisitos se nada der errado vamos ter a tela abaixo, caso tenha algum problema com por exemplo quantidade de swap corrija o problema ou selecione Ignore All para ignorar os pré-requisitos porém isso não é uma boa prática e pode comprometer a estabilidade do sistema.
Agora precisamos somente selecionar Install
Agora o sistema vai efetar a instalação dos arquivos necessários, isso pode demorar um pouco em uma VM, e mais ainda dependendo da velocidade do disco, em ambientes de produção tente sempre utilizar storage com discos no mínimo de 15K para não ter lentidão no I/O do Banco.
Assim que acabar a copia dos dados vamos ter um aviso para executar 2 scripts
Agora abra uma sessão no servidor com o usuário root e vamos mandar executar o primeiro script
/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.
Agora vamos executar o segundo script
/u01/app/oracle/product/12.1.0/db_1/root.sh Performing root user operation for Oracle 12c The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /u01/app/oracle/product/12.1.0/db_1 Enter the full pathname of the local bin directory: [/usr/local/bin]: #ENTER 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 script. Now product-specific root actions will be performed.
Agora podemos selecionar OK na tela de aviso dos scripts
Se tudo correu bem agora temos a seguinte tela, aqui precisamos somente selecionar Close
Agora vamos criar um banco de dados.
Logando com o usuário oracle execute
dbca
Quando ele carregar vamos ter a seguinte tela aqui vamos deixar selecionado Create database e vamos selecionar Next
Agora vamos informar o nome para o nosso banco de dados ex: douglas, precisamos informar a senha para o sys do banco e o pluggable Database Name que é um novo recurso do Oracle para consolidação de multiplos bancos em um único banco e depois selecione Next
Se tudo ocorreu bem vamos ter a seguinte tela aqui precisamos somente selecionar Finish para ser efetuada a criação do banco
Agora nos vamos ter a criação do banco este processo é meio demorado comparado ao 11G
Agora vamos ter uma tela com as informações sobre SID, localização do spfile e o global database name e o endereço do Enterprise Manager, aqui vamos selecionar Exit
Agora que acabou a instalação vamos selecionar Close
Agora vamos consultar o listener
lsnrctl status LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 07-NOV-2013 21:42:54 Copyright (c) 1991, 2013, 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 podemos notar ele esta down, vamos inicializar ele
lsnrctl start LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 07-NOV-2013 21:44:01 Copyright (c) 1991, 2013, Oracle. All rights reserved. Starting /u01/app/oracle/product/12.1.0/db_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 12.1.0.1.0 - Production Log messages written to /u01/app/oracle/diag/tnslsnr/ol6/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ol6.douglasqsantos.com.br)(PORT=1521))) Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 12.1.0.1.0 - Production Start Date 07-NOV-2013 21:44:01 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/ol6/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ol6.douglasqsantos.com.br)(PORT=1521))) The listener supports no services The command completed successfully
Agora vamos consultar o nosso listener
lsnrctl status LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 07-NOV-2013 21:44:49 Copyright (c) 1991, 2013, 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.1.0 - Production Start Date 07-NOV-2013 21:44:01 Uptime 0 days 0 hr. 0 min. 47 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Log File /u01/app/oracle/diag/tnslsnr/ol6/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ol6.douglasqsantos.com.br)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=ol6.douglasqsantos.com.br)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/douglas/xdb_wallet))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "douglas" has 1 instance(s). Instance "douglas", status READY, has 1 handler(s) for this service... Service "douglasXDB" has 1 instance(s). Instance "douglas", status READY, has 1 handler(s) for this service... Service "pdouglas" has 1 instance(s). Instance "douglas", status READY, has 1 handler(s) for this service... The command completed successfully
Agora o nosso listener está escutando ok
Agora vamos subir o nosso banco
Agora vamos acessar o Enterprise Manager em https://ol6.douglasqsantos.com.br:5500/em ou pelo endereço ip https://192.168.1.50:5500/em vamos ter algo como abaixo aqui podemos logar com o sys e marcar as sysdba e informar a senha que definimos na criação do banco de dados.
Depois de logar vamos ter uma tela como a seguinte.
Na parte superior temos Configuration, Storage, Security e Performance do lado superior direito podemos selecionar o tempo do nosso auto refresh.
Em Configuration selecione Initialization Parameters vamos ter a seguinte tela, temos todos os parametros de inicialização do banco e podemos editar tudo via EM.
Na aba SPFile temos as opções do arquivo SPFile como abaixo.
Agora em Configuration selecione Memory e vamos ter a seguinte tela, ficou muito melhor do que a versão 11g
Agora se selecionarmos configure memory podemos editar os parametros de memória.
Na aba SPFile temos a configuração da memória do SPFile
Em Configuration selecione Database Feature usage, como não temos nada ainda no banco essas informações estão vazias.
Na guia High Water Marks ainda não temos dados tambem
Em configution selecione Current Database Properties aqui vamos ter os valores setados para o nosso banco.
Em Storage selecione Undo Management Details, aqui vamos ter informações sobre a Undo
Em Storage selecione Redo Log Groups, aqui vamos ter informações sobre o Redo
Em Storage selecione Archive logs, como o banco não esta em modo de archive log não temos dados aqui ainda.
Em storage selecione Control file, aqui vamos ter informações sobre o nosso control file.
Agora em Security selecione Users, aqui vamos ter todos os usuários criados no sistema, porém nem todos estão habilitados.
Agora em Security selecione Roles, aqui vamos ter a opção da criação de roles para o controle dos usuários.
Agora em Performance selecione Performance Hub vamos ter a seguinte tela com vários tipos de gráficos sobre o sistema
Se selecionar a aba atividade vamos ter algo como abaixo.
Se selecionar a aba workload vamos ter algo como abaixo.
Se selecionar a aba Monitored SQL vamos ter algo como abaixo, no meu caso vazio pois não tenho nada rodando.
Se selecionar a aba ADDM vamos ter algo como abaixo, no meu caso sem dados.
Se selecionar a aba Current ADDM Findings vamos ter algo como abaixo, no meu caso sem muitos dados.
Agora selecione Performance e SQL Tuning Advisor vamos ter algo como abaixo no meu caso sem muitos dados.
Se selecionar a aba Manual vamos ter algo como abaixo.
Esse é EM galera, agora vamos criar o script para colocar o nosso banco na inicialização do sistema.
vim /etc/init.d/dbora #!/bin/sh # chkconfig: 345 99 10 # description: Oracle auto start-stop script. # # Set ORA_HOME to be equivalent to the $ORACLE_HOME # from which you wish to execute dbstart and dbshut; # # Set ORA_OWNER to the user id of the owner of the # Oracle database in ORA_HOME. ORA_HOME=/u01/app/oracle/product/12.1.0/db_1 ORA_OWNER=oracle export ORACLE_UNQNAME=douglas if [ ! -f $ORA_HOME/bin/dbstart ] then echo "Oracle startup: cannot start" exit fi case "$1" in 'start') # Start the Oracle databases: # The following command assumes that the oracle login # will not prompt the user for any values # Remove "&" if you don't want startup as a background process. su $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME" & touch /var/lock/subsys/dbora ;; 'stop') # Stop the Oracle databases: # The following command assumes that the oracle login # will not prompt the user for any values su $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME" rm -f /var/lock/subsys/dbora ;; esac
Agora vamos dar permissão para o nosso script
chmod 750 /etc/init.d/dbora
Agora vamos inserir ele na inicialização
chkconfig --add dbora
Agora vamos habilitar o nosso banco, aqui temos que mudar o N no final do caminho do nosso banco para Y como abaixo
vim /etc/oratab # # This file is used by ORACLE utilities. It is created by root.sh # and updated by either Database Configuration Assistant while creating # a database or ASM Configuration Assistant while creating ASM instance. # A colon, ':', is used as the field terminator. A new line terminates # the entry. Lines beginning with a pound sign, '#', are comments. # # Entries are of the form: # $ORACLE_SID:$ORACLE_HOME:<N|Y>: # # The first and second fields are the system identifier and home # directory of the database respectively. The third field indicates # to the dbstart utility that the database should , "Y", or should not, # "N", be brought up at system boot time. # # Multiple entries with the same $ORACLE_SID are not allowed. # # douglas:/u01/app/oracle/product/12.1.0/db_1:Y
Agora vamos reiniciar o servidor para testar a inicialização junto com o sistema
reboot
Após logar novamente no sistema vamos consultar o listener
lsnrctl status LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 07-NOV-2013 22:41:00 Copyright (c) 1991, 2013, 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.1.0 - Production Start Date 07-NOV-2013 22:40:40 Uptime 0 days 0 hr. 0 min. 20 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Log File /u01/app/oracle/diag/tnslsnr/ol6/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ol6.douglasqsantos.com.br)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=ol6.douglasqsantos.com.br)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/product/12.1.0/db_1/admin/douglas/xdb_wallet))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "douglas" has 1 instance(s). Instance "douglas", status READY, has 1 handler(s) for this service... Service "douglasXDB" has 1 instance(s). Instance "douglas", status READY, has 1 handler(s) for this service... Service "pdouglas" has 1 instance(s). Instance "douglas", status READY, has 1 handler(s) for this service... The command completed successfully
Que coisa mais linda ta tudo funcionando.