Para melhor visualização, recomendo resolução de no mínimo 1280 x 800 e navegador Mozilla Firefox


segunda-feira, 4 de agosto de 2008

Instalando o Oracle Database Express Edition 10g Release 2 no Linux ...

Por Eduardo Legatti

Olá,

Neste artigo apenas irei demonstrar os passos necessários para instalação e configuração do Oracle Database Express Edition no Linux. Para maiores informações, acesse a documentação oficial disponibilizada no site da Oracle através do documento Oracle Database Express Edition documentation, 10g Release 2 (10.2). Para realizar esta demonstração, usarei a distribuição SUSE LINUX 10.0 para instalar o Oracle Express (Western European) que utiliza o character set single-byte Latin1 (WE8MSWIN1252). Em resumo, os seguintes requisitos são necessários:

Requisitos mínimos de Sistema Operacional

Um dos sistemas listados abaixo:

* Red Hat Enterprise Linux RHEL3 and RHEL4
* Suse SLES-9, Novell (usarei o SUSE LINUX 10.0)
* Fedora Core 4
* Red Flag DC Server 5.0/MIRACLE LINUX V4.0/Haansoft Linux 2006 Server
* Debian 3.1, Mandriva, Ubuntu ...

Memória RAM: Mínimo 256 MB, recomendado 512 MB
Espaço em disco necessário: 1,5 GB

Pacotes necessários: glibc – (>= 2.3.2) e libaio – (>= 0.3.96)


Algumas considerações

Com relação ao espaço de swap necessário para a instalação (mínimo 1 GB), caso o instalador informe que não há espaço de swap suficiente para continuar com a instalação, você poderá acrescentar o espaço requisitado seguindo os passos abaixo:
Exemplo para aumentar o swap adicionando mais 750 MB:

$ mkdir /var/swap_area
$ dd if=/dev/zero of=/var/swap_area/swap bs=1024 count=750000
$ mkswap /var/swap_area/swap
$ swapon /var/swap_area/swap
$ free -m

Após a instalação, você poderá desalocar o espaço com o comando abaixo:

$ swapoff /var/swap_area/swap

Caso você receba a mensagem "libaio >= 0.3.96 is needed by oracle-xe-10.2.0.1-1.0", então será necessário baixar e instalar uma versão superior ou mais atual da biblioteca libaio, como demonstrado no exemplo abaixo:

linux:/tmp> rpm -ivh libaio-0.3.98-21.i586.rpm
Preparing... ########################################### [100%]
1:libaio ########################################### [100%]


Iniciando a Instalação

----------------------

-- Confirmando a distribuição Linux
linux:/> cat /etc/*-release
LSB_VERSION="core-2.0-noarch:core-3.0-noarch:core-2.0-ia32:core-3.0-ia32"
SUSE LINUX 10.0 (i586)
VERSION = 10.0

-- Confirmando a versão da libaio
linux:/> rpm -q libaio
libaio-0.3.104-3

-- Confirmando a versão da glibc
linux:/> rpm -q glibc
glibc-2.3.5-40

Após baixar o pacote RPM oracle-xe-10.2.0.1-1.0.i386.rpm (221,136,869 bytes) do site de download da Oracle e copiá-lo para a máquina, poderemos iniciar a instalação do Oracle Express Edition.
-- Instalando o pacote como root
linux:/> rpm -ivh oracle-xe-10.2.0.1-1.0.i386.rpm
Preparing... ########################################### [100%]
1:oracle-xe ########################################### [100%]

Executing Post-install steps...
oracle-xe 0:off 1:off 2:off 3:on 4:off 5:on 6:off

You must run '/etc/init.d/oracle-xe configure' as the root user to
configure the database.

-- Iniciando a configuração
linux:/etc/init.d> ./oracle-xe configure

Oracle Database 10g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 10g Express
Edition. The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts. Press to accept the defaults.
Ctrl-C will abort.

Specify the HTTP port that will be used for Oracle Application Express [8080]:
Specify a port that will be used for the database listener [1521]:
Specify a password to be used for database accounts. Note that the same
password will be used for SYS and SYSTEM. Oracle recommends the use of
different passwords for each database account. This can be done after
initial configuration: password
Confirm the password: password
Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]:

Starting Oracle Net Listener...Done
Configuring Database...Done
Starting Oracle Database 10g Express Edition Instance...Done
Installation Completed Successfully.
To access the Database Home Page go to "http://127.0.0.1:8080/apex"

Após a execução do comando oracle-xe configure, podemos ver que o arquivo oracle-xe contendo estas configurações foi criado no diretório /etc/sysconfig:

linux:/etc/init.d> cd /etc/sysconfig
linux:/etc/sysconfig> ls -l oracle-xe
-rw-r--r-- 1 root root 522 2008-08-04 13:15 oracle-xe

linux:/etc/sysconfig> cat oracle-xe

#This is a configuration file for automatic starting of the Oracle
#Database and listener at system startup.It is generated By running
#'/etc/init.d/oracle-xe configure'.Please use that method to modify this
#file

# ORACLE_DBENABLED:'true' means to load the Database at system boot.
ORACLE_DBENABLED=true

# LISTENER_PORT: Database listener
LISTENER_PORT=1521

# HTTP_PORT : HTTP port for Oracle Application Express
HTTP_PORT=8080

# Configuration : Check whether configure has been done or not
CONFIGURE_RUN=true


Alterando a senha do usuário Oracle

-----------------------------------

Como root:
linux:/> passwd oracle
Changing password for oracle.
New Password: password
Bad password: too simple
Reenter New Password: password
Password changed.

Obs: O diretório home do usuário Oracle é /usr/lib/oracle/xe

Caso queira criar um .profile para o usuário Oracle, o mesmo poderá ter o mesmo conteúdo do arquivo /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/bin/oracle_env.sh

  ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export ORACLE_HOME
ORACLE_SID=XE
export ORACLE_SID
NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh`
export NLS_LANG
PATH=$ORACLE_HOME/bin:$PATH
export PATH
if [ $?LD_LIBRARY_PATH ]
then
LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
else
LD_LIBRARY_PATH=$ORACLE_HOME/lib
fi
export LD_LIBRARY_PATH

-- Confirmando a inicialização do banco de dados durante o boot
linux:/> chkconfig -l oracle-xe
oracle-xe 0:off 1:off 2:off 3:on 4:off 5:on 6:off

Como padrão, o Oracle XE utiliza apenas um arquivo de controle, por isso, eu aconselho multiplexar o mesmo por segurança, utilizando os passos abaixo:

-- Com o banco de dados baixado, crie duas cópias do arquivo de controle.
$ cd /usr/lib/oracle/xe/oradata/XE
$ cp -a control.dbf control2.dbf
$ cp -a control.dbf control3.dbf

-- Usando o SQL*Plus (/ as sysdba), inicie a instância (nomount) e altere o
-- parâmetro control_files no spfile
com o comando abaixo:
SQL> alter system set
control_files = '/usr/lib/oracle/xe/oradata/XE/control.dbf',
'/usr/lib/oracle/xe/oradata/XE/control2.dbf',
'/usr/lib/oracle/xe/oradata/XE/control3.dbf' scope=SPFILE;

-- Caso você queira criar mais um arquivo de redo log (OMF), você poderá utilizar o
-- comando ADD LOGFILE.
Usando o SQL*Plus (/ as sysdba), abra o banco de dados (OPEN)
-- e digite o comando abaixo
:
SQL> alter database add logfile size 50M;


Habilitando acesso remoto
-------------------------

-- Para habilitar o acesso de máquinas clientes, você poderá tanto fazê-lo utilizando o
-- Oracle APEX (no meu enable HTTP acess), ou utilizando o comando abaixo no SQL*Plus:
SQL> exec dbms_xdb.setListenerLocalAccess(false);

-- Verificando o status da porta HTTP
SQL> select dbms_xdb.gethttpport as "HTTP-Port" from dual;

HTTP-Port
---------
8080

-- Desabilitando extensão automática (UNDO e TEMP)
SQL> alter database tempfile '/usr/lib/oracle/xe/oradata/xe/temp.dbf' autoextend off;
SQL> alter database datafile '/usr/lib/oracle/xe/oradata/xe/undo.dbf' autoextend off;

Caso o banco de dados seja usado para suportar muitas conexões simultâneas, eu recomendo aumentar o valor do parâmetro processes para um valor maior do que o valor padrão que é 40. Fazendo esta alteração, com certeza será mais difícil receber a mensagem ORA-00020: maximum number of processes (%s) exceeded.
SQL> alter system set processes=200 scope=spfile;

Considerações Finais:

  1. Para acessar o Oracle Application Express (APEX) a partir do seu browser, apenas digite o endereço http://127.0.0.1:8080/apex
  2. Para iniciar o banco de dados manualmente você pode digitar como root o comando $/etc/init.d/oracle-xe start ou se preferir, como oracle utilizar o SQL*Plus e conectar como SYSDBA e efetuar o start (startup) do banco de dados. Para ativar o listener utilize o comando lsnrctl start
  3. Para parar o banco de dados manualmente você pode digitar como root o comando $/etc/init.d/oracle-xe stop
  4. Para desinstalar o Oracle XE, como root digite o comando rpm -e oracle-xe



10 comentários:

Anônimo disse...

Excelente! Vou testar!!

Anônimo disse...

Eu fiz tudo certinho, mas quando eu tento acessar o site 127.0.0.1:8080/apex, ele nao funciona, to precisando de ajuda

Eduardo Legatti disse...

Olá celso,

Vamos por partes ... O que realmente não está funcionando? Você está tentando acessar a página usando a própria estação onde está instalado o Oracle XE (localmente), ou de uma outra estação (remotamente)? Qual distribuição Linux você está utilizando? A instância foi inicializada corretamente? O listener foi inicializado? Para isso, você pode utilizar o comando lsnrctl status a partir do prompt.

Bem, para inicializar os serviços você pode utilizar o comando /etc/init.d/oracle-xe start, e para confirmar se os serviços foram inicializados você pode utilizar o comando /etc/init.d/oracle-xe status

Utilizando o SQL*Plus, qual é o resultado da query abaixo?

$ sqlplus / as sysdba
SQL> select dbms_xdb.gethttpport from dual;

No mais, você pode postar suas dúvidas no forum oficial do Oracle Database 10g Express Edition sempre que desejar, além de acessar o Oracle® Database Express Edition Installation Guide quando necessário.

Até mais ...

code disse...

Eduardo,

Eu sei que a minha pergunta não tem ligação com o post em questão, mas como se trata de um blog sobre oracle, tenho as minhas dúvidas.
São bons os treinamentos realizados pela Infnet ?
Não tenho experiência com banco de dados, porém, uma hora a gente tem que começar...
Digamos que minha experiência é mais com Administração de Sistemas Linux, etc...
O que você acha da formação em DBA Oracle da Infnet ? Recomenda algum curso ?
Qual seria uma porta de entrada para um emprego nesta área ?
Obrigado.

Att, Luiz Paulo.

Eduardo Legatti disse...

Olá Luiz,

Realmente não conheço os cursos para formação DBA Oracle da Infnet. A melhor coisa a fazer é perguntar para alguém que já fez o curso, ou até mesmo visitar o centro durante as aulas, para ver as opiniões dos alunos e até dos instrutores.

No mais, se o curso realmente seguir os manuais oficiais da Oracle, acho que vale a pena você checar. De acordo com o site da Infnet, o curso DBA Oracle tem duração de 120 horas e é composto de 3 cursos oficiais que prepara para as Certificações OCA (Oracle Certified Associate) e OCP (Oracle Certified Professional). Tem a duração aproximada de 3 meses (segundas, quartas e sextas) ou 4 meses (terças e quintas ou sábados integral).

Os cursos são:

Oracle Database 10g: Introduction to SQL
Oracle Database 10g: Administration Workshop I
Oracle Database 10g: Administration Workshop II

Quanto à porta de entrada para o mercado de trabalho, acredito que isso dependerá muito dos seus contatos profissionais e logicamente da sua experiência como DBA. Como você já tem uma boa experiência com sistemas Linux, acredito que você terá muitas oportunidades.

Boa sorte e até mais...

Anônimo disse...

Cara excelente artigo parabens, só não cosegui roda o sqlplus no shell, eu to usando o Opensuse 10.3 quanto tento entra no shell ele retorna:

oracle@linuxkde:~> sqlplus / as sysdba
-bash: sqlplus: command not found

se puder ajudar agradeço
Sds
Ricardo

Eduardo Legatti disse...

Olá Ricardo,

Provavelmente o caminho para os executáveis não foi referenciado na variável de ambiente $PATH. Você tem certeza que criou o arquivo .profile no diretório home do usuário Oracle como mencionado no artigo?

Até mais ...

Anônimo disse...

Funcionou perfeitamente. Parabéns!

Marcelo Lima disse...

Poderiam me dar uma dica:
Estou tentando fazer funcionar o APEX e nao roda, via SQL Developer está ok.

Uma questao, é possivel ter o APACHE e o APEX executando juntos?

Quando executo o comando para ver o status do Oracle, diz que a porta HTTP é 8090, porem ao colocar no Browser:
http://ip_servidor:8090/apex nao funciona.

----------------- /etc/init.d/oracle-xe status -------------------------------------------------------------------------------
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 04-APR-2013 21:49:30

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 04-APR-2013 21:09:44
Uptime 0 days 0 hr. 39 min. 45 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service XE
Listener Parameter File /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/admin/listener.ora
Listener Log File /usr/lib/oracle/xe/app/oracle/product/10.2.0/server/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=8090))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "XE" has 1 instance(s).
Instance "XE", status READY, has 1 handler(s) for this service...
Service "XEXDB" has 1 instance(s).
Instance "XE", status READY, has 1 handler(s) for this service...
Service "XE_XPT" has 1 instance(s).
Instance "XE", status READY, has 1 handler(s) for this service...
The command completed successfully
------------------------------------
Qualquer ajuda é bem vinda:
Marcelo Lima

Eduardo Legatti disse...

Olá Marcelo,

Você está tentando acessar localmente ou remotamente? Qual a mensagem de erro que está sendo reportada?

Você já tentou acessar pelo endereço abaixo (localmente)?

http://localhost:8090/apex/

Pode ser que exista algum conflito, mas se possível tente setar a porta 8080 e depois reinicialize o Listener

SQL> exec dbms_xdb.sethttpport(8080);

Abraços,

Legatti

Postagens populares