Instalando e Configurando o Oracle DataBase 10G no Centos 5.5
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.0.50/24
- Nome: oracle
- Domínio: douglasqsantos.com.br
Vamos ajustar o nome da máquina
vim /etc/hosts 127.0.0.1 oracle10.lab.lan oracle10 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 192.168.0.50 oracle10.douglasqsantos.com.br oracle10
Vamos instalar as dependências, eu vou utilizar os repositórios default do CentOS
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 libXp libXp-devel openmotif setarch -y
Vamos agora ajustar as variáveis do kernel para o Oracle
vim /etc/sysctl.conf #kernel.shmall = 2097152 #kernel.shmmax = 2147483648 kernel.shmmni = 4096 # semaphores: semmsl, semmns, semopm, semmni kernel.sem = 250 32000 100 128 #fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default=262144 net.core.rmem_max=262144 net.core.wmem_default=262144 net.core.wmem_max=262144
Agora vamos carregar elas
sysctl -p
Agora precisamos ajustar as variáveis de controle de uso do sistema para o oracle
vim /etc/security/limits.conf [...] #Adicionar no final do arquivo oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
Agora vamos adicionar a biblioteca de controle de limites no login
echo "session required pam_limits.so" >> /etc/pam.d/login
Agora precisamos deixar o selinux desabilitado
vim /etc/selinux/config [...] SELINUX=disabled
Agora vamos criar os grupos que serão utilizados pelo Oracle
groupadd oinstall groupadd dba groupadd oper
Agora vamos criar o usuário oracle
useradd -m -g oinstall -G dba oracle
Agora vamos definir a senha do nosso Oracle
passwd oracle
Agora vamos criar o diretório para armazenar a instalação do Oracle
mkdir -p /u01/app/oracle/product/10.2.0/db_1
Agora vamos ajustar as permissões dos diretórios
chown -R oracle.oinstall /u01
Agora vamos fazer um backup do arquivo que controla a versão do CentOS
cp /etc/redhat-release /etc/redhat-release.bkp
Agora vamos ajustar a versão que o Oracle vai esperar para a instalação
echo "redhat-4"> /etc/redhat-release
Agora vamos ajustar as variáveis de ambiente do Oracle
vim /home/oracle/.bash_profile [...] #Adicionar no final do arquivo TMP=/tmp; export TMP TMPDIR=$TMP; export TMPDIR ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1; export ORACLE_HOME ORACLE_SID=TSH1; export ORACLE_SID ORACLE_TERM=xterm; export ORACLE_TERM PATH=/usr/sbin:$PATH; export PATH PATH=$ORACLE_HOME/bin:$PATH; export PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
Note que aqui foi setado o SID default do Oracle como TSH1 que é o nome do banco default que o Oracle gera caso utilize outro nome para a instância precisamos mudar essa variável.
Agora vamos dar permissão no diretório que contém os arquivos de instalação do Oracle para o usuário oracle
chown -R oracle /usr/src/database10gR2/
Agora vamos acessar o servidor com o usuário Oracle.
Podemos exportar o display para outro host
Podemos acessar o servidor via ssh mandando exportar o X
ssh -X oracle@192.168.0.50
Agora vamos liberar o Oracle a exportar a tela de instalação
xhost +
Agora vamos chamar o instalador do Oracle
/usr/src/database10gR2/runInstaller
Vamos ter a seguinte tela
Aqui vamos selecionar Advanced Installation e selecione Next
Agora vamos ter a seguinte tela para armazenar os arquivos do Oracle
Aqui vamos deixar como na imagem e vamos selecionar Next
Agora precisamos selecionar a versão do nosso Oracle escolha a que você achar melhor eu vou deixar a default Enterprise Edition note que ela vai precisar de no mínimo 1.60GB
Aqui vamos selecionar Next
Agora precisamos passar a path do diretório aonde vai ser instalado o Oracle vamos deixar a default como na imagem e o nome vamos deixar como db_1
Agora vamos selecionar Next
Agora vamos ter as checagens dos pre-requisitos aqui no meu caso o Oracle está me alertando sobre a configuração da interface com DHCP
Aqui selecione Next
No meu caso vou ter um warn apenas selecione yes
Agora vamos ter a opção de instalar somente o software de SGDB ou criar um Banco de dados vamos selecionar Create a database como na imagem
Aqui selecione Next
Aqui vamos ter os tipos de configuração para o banco eu vou escolher transactional Processing
Aqui selecione Next
Agora vamos ter o nome global do banco de dados e o seu SID como TSH1 eu vou deixar esse padrão que foi o que eu defini no .bash_profile do usuário oracle
Aqui selecione Next
Agora temos a opção de utilizar o Database Management que é uma ferramente web para o gerenciamento da nossa instancia do Banco de dados eu vou deixar habilitado Use Database Cotnrol for Database Management
Aqui selecione Next
Agora temos a opção de especificar o mecanismo de armazenamento do Banco de dados eu não estou utilizando ASM então vou deixar a primeira opção File System
Aqui selecione Next
Agora podemos especificar se o Oracle vai fazer o backup automático do nosso banco de dados na FRA no File System ou no ASM eu não vou habilitar essa opção.
Aqui selecione Next
Agora podemos especificar as senhas para os usuários do Oracle eu vou definir para todos eles a mesma senha depois eu posso modificar isso
Aqui selecione Next depois de informar a senha
Agora vamos ter um resumo da nossa instalação
Aqui vamos selecionar Install
Agora vamos ter a seguinte tela a instalação do Software SGDB
Agora que o SGDB já foi instalado vamos ter a tela de criação do Banco de dados
Após a criação do banco de dados vamos ter a seguinte tela
Aqui temos informações de como acessar o Enterprise Management aqui selecione Ok
Agora vamos ter um aviso que precisamos executar dois script com a permissão de root
Vamos executar eles com o usuário root
Vamos executar o primeiro script
/u01/app/oracle/oraInventory/orainstRoot.sh Changing permissions of /u01/app/oracle/oraInventory to 770. Changing groupname of /u01/app/oracle/oraInventory to oinstall. The execution of the script is complete
Agora vamos executar o segundo script
/u01/app/oracle/product/10.2.0/db_1/root.sh Running Oracle10 root.sh script... The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /u01/app/oracle/product/10.2.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.sh script. Now product-specific root actions will be performed.
Como pode ser notado os dois script foram executados com sucesso então podemos selecionar ok da tela de aviso.
Agora vamos ter a seguinte tela se tudo deu certo
Aqui vamos selecionar Exit e Yes
Agora com o usuário oracle vamos consultar a nossa instancia
lsnrctl status LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 26-APR-2013 09:53:58 Copyright (c) 1991, 2005, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production Start Date 26-APR-2013 09:44:18 Uptime 0 days 0 hr. 9 min. 39 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle10.douglasqsantos.com.br)(PORT=1521))) Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "TSH1" has 1 instance(s). Instance "TSH1", status READY, has 1 handler(s) for this service... Service "TSH1XDB" has 1 instance(s). Instance "TSH1", status READY, has 1 handler(s) for this service... Service "TSH1_XPT" has 1 instance(s). Instance "TSH1", status READY, has 1 handler(s) for this service... The command completed successfully
Como podemos notar a nossa instancia está ok
Vamos acessar o banco para confirmar se ele está ok
sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Fri Apr 26 09:54:34 2013 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production With the Partitioning, OLAP and Data Mining options SQL> quit Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production With the Partitioning, OLAP and Data Mining options
Agora com o usuário root Agora vamos voltar o arquivo de controle de versão do CentOS
cp /etc/redhat-release.bkp /etc/redhat-release
Agora tamos ajustar o oratab aqui vamos mudar o N no final da linha para Y
vim /etc/oratab [...] TSH1:/u01/app/oracle/product/10.2.0/db_1:Y
Isso vai ser utilizado para podermos subir e baixar o banco com o dbstart
Agora vamos criar o script para manipular o banco
vim /etc/init.d/dbora #!/bin/bash # # Init file for Oracle 10G # # chkconfig: 345 55 25 # description: Oracle 10G ORA_HOME=/u01/app/oracle/product/10.2.0/db_1 ORA_OWNER=oracle 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 su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME" ;; '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" ;; esac
Agora vamos dar permissão para o script
chmod 750 /etc/init.d/dbora
Agora vamos colocar o script na inicialização do sistema
chkconfig --level 345 dbora on
Agora precisamos fazer um ajuste no arquivo de controle do banco
vim /u01/app/oracle/product/10.2.0/db_1/bin/dbstart [...] #Na linha 78 precisamos deixar ela da seguinte maneira ORACLE_HOME_LISTNER=$ORACLE_HOME [...]
Agora vamos testar ele vamos parar o banco
/etc/init.d/dbora stop
Agora com o usuário oracle vamos verificar as instâncias do banco
lsnrctl status LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 26-APR-2013 10:07:39 Copyright (c) 1991, 2005, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production Start Date 26-APR-2013 10:06:57 Uptime 0 days 0 hr. 0 min. 41 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle10.douglasqsantos.com.br)(PORT=1521))) Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... The command completed successfully
Como podemos notar não temos instâncias TSH1 ativas
Agora vamos subir o banco novamente com o usuário root
/etc/init.d/dbora start Processing Database instance "TSH1": log file /u01/app/oracle/product/10.2.0/db_1/startup.log
Agora vamos consultar as instâncias novamente
lsnrctl status LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 26-APR-2013 10:08:03 Copyright (c) 1991, 2005, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production Start Date 26-APR-2013 10:06:57 Uptime 0 days 0 hr. 1 min. 6 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora Listener Log File /u01/app/oracle/product/10.2.0/db_1/network/log/listener.log Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle10.douglasqsantos.com.br)(PORT=1521))) Services Summary... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "TSH1" has 1 instance(s). Instance "TSH1", status READY, has 1 handler(s) for this service... Service "TSH1XDB" has 1 instance(s). Instance "TSH1", status READY, has 1 handler(s) for this service... Service "TSH1_XPT" has 1 instance(s). Instance "TSH1", status READY, has 1 handler(s) for this service... The command completed successfully