sábado, 5 de setembro de 2009

Instalação do Oracle XE no Mandriva One Linux

O presente artigo demonstra como instalar o Banco de Dados Oracle XE em um amibiente Linux, a distribuição escolhida é o Mandriva Linux. Após a instalação do Oracle XE demonstra-se a criação de uma base de dados e são inseridos algumas linhas na mesma. Adota-se o # para representar as ações feitas como super usuário – root e $ para as ações feitas com os outros usuários do sistema operacional. Foram baixados e instalados os seguintes pacotes:


1º libaio1-0.3.107-2mdv2009.1.i586.rpm

2º oracle-xe-univ-10.2.0.1-1.0.i386.rpm

3º oracle-instantclient11.1-basiclite-11.1.0.7.0-1.i386.rpm


O pacote libaio1 é uma dependência para poder instalar corretamente o o pacote oracle-xe, em alguns sistemas operacionais ele já pode estar instalado, verifica-se a existência do mesmo no sistema operacional com o seguinte comando de linha: # rpm -qa | grep libaio. Para instalar os pacotes baixados usa-se o seguinte comando:


# rpm -ivh libaio1-0.3.107-2mdv2009.1.i586.rpm

# rpm -ivh oracle-xe-univ-10.2.0.1-1.0.i386.rpm

# rpm -ivh oracle-instantclient11.1-basiclite-11.1.0.7.0-1.i386.rpm


O pacote oracle-xe-univ é o banco de dados em si, já o pacote oracle-instantclient11 é o cliente (sqlplus – cliente linha de comando) através do qual acessa-se o banco. Durante a instalação do oracle-xe-univ defini-se por padrão porta http como 8080, listener porta como 1521, senha do usuário do banco e autostart ao iniciar o sistema operacional.

Após a instalação dos pacotes definine-se as variáveis de ambiente. Pode-se fazer de duas maneiras, definí-las em memória exportando o seu valor através da linha de comando ou salvar as mesmas linhas no arquivo /home/oracle/.bash_profile. A melhor prática é salvar no .bash_profile do usuário oracle, definido:


# vi /home/oracle/.bash_profile


ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server

export ORACLE_HOME

ORACLE_BASE=/usr/lib/oracle

export ORACLE_BASE

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export PATH=$ORACLE_HOME/bin:$PATH


Salva e sai.


Deve-se criar os seguintes diretórios para localização de arquivos, com os comandos:

# mkdir admin

# cd admin

# mkdir asdb

# cd asdb

# mkdir adhoc adump bdump cdump flash_recovery_area udump exp pfile

Como resultados tem-se: $ORACLE_BASE/admin//, nome_do_banco = asdb. Também criar diretórios para armazená-los, com os comandos:


# mkdir oracle

# cd oracle

# mkdir oradata

# cd oradata

# mkdir asdb

# cd asdb


Tem-se /usr/lib/oracle/oradata/asdb, onde:


/usr/lib/oracle/oradata/asdb -> Diretório para armazenamento dos arquivos do respectivo banco de dados.

/usr/lib/oracle/oradata -> Diretório para armazenamento de dados, segundo o padrão OFA.

/usr/lib/oracle/ -> Diretório que específica o software.

/usr/lib -> File System com capacidade suficiente para criar o banco de dados.


No diretório /usr/lib/oracle/admin/asdb/pfile um arquivo init.ora, neste caso fica initasdb.ora, com o seguinte conteúdo:


control_files = (/usr/lib/oracle/oradata/asdb/control01.ctl)

db_name = asdb

db_domain = world

log_archive_dest = 'LOCATION=LOCATION=USE_DB_RECOVERY_FILE_DEST'

db_block_size = 2048

pga_aggregate_target = 50M

processes = 300

sessions = 12

open_cursors = 80

undo_management = AUTO

undo_tablespace = UNDOTBS

compatible = 10.1.0.0.0

sga_target = 200M

nls_language = AMERICAN

nls_territory = AMERICA

db_recovery_file_dest = /usr/lib/oracle/admin/asdb/flash_recovery_area

db_recovery_file_dest_size = 1G

background_dump_dest = /usr/lib/oracle/admin/asdb/bdump

core_dump_dest = /usr/lib/oracle/admin/asdb/cdump

user_dump_dest = /usr/lib/oracle/admin/asdb/udump

audit_file_dest = /usr/lib/oracle/admin/asdb/adump


Ressalta-se que estes valores são válidos para o computador no qual o trabalho foi desenvoldido.

Em seguida cria-se o script de inicialização do banco de dados. No diretório /usr/lib/oracle/admin/asdb/adhoc/ cria-se um arquivo.sql, neste caso create_db.sql, com o seguinte conteúdo:


CREATE DATABASE asdb

MAXINSTANCES 1

MAXLOGHISTORY 1

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 200

DATAFILE '/usr/lib/oracle/oradata/asdb/system01.dbf' SIZE 50M AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED

EXTENT MANAGEMENT LOCAL

SYSAUX

DATAFILE '/usr/lib/oracle/oradata/asdb/sysaux01.dbf' SIZE 50M AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED

SMALLFILE DEFAULT TEMPORARY TABLESPACE TEMP

TEMPFILE '/usr/lib/oracle/oradata/asdb/temp01.dbf' SIZE 200M AUTOEXTEND OFF

SMALLFILE UNDO TABLESPACE UNDOTBS

DATAFILE '/usr/lib/oracle/oradata/asdb/undotbs01.dbf' SIZE 200M AUTOEXTEND OFF

CHARACTER SET WE8ISO8859P1

NATIONAL CHARACTER SET AL16UTF16

LOGFILE

GROUP 1 ('/usr/lib/oracle/oradata/asdb/redo01a.log', '/usr/lib/oracle/oradata/asdb/redo01b.log') SIZE 50M,

GROUP 2 ('/usr/lib/oracle/oradata/asdb/redo02a.log', '/usr/lib//oracle/oradata/asdb/redo02b.log') SIZE 50M,

GROUP 3 ('/usr/lib/oracle/oradata/asdb/redo03a.log', '/usr/lib/oracle/oradata/asdb/redo03b.log') SIZE 50M

USER SYS IDENTIFIED BY ORACLE

USER SYSTEM IDENTIFIED BY ORACLE;


Após esses procedimentos, deve-se mudar algumas permissões e criar alguns grupos, com os comandos:


# groupadd oinstall, oracle, dba, oper

# usermod -g oinstall -G dba,oper,oracle oracle

# chown -R oracle:oinstall /usr/lib/oracle


Agora loga-se com o usuário oracle: su – oracle e exporta-se a base de dados, com o comando:


ORACLE_SID=asdb;

export ORACLE_SID


Agora basta utilizar a ferramenta cliente SQL*Plus com o usuário ainda oracle, anteriormente criado, para isto basta digitar:


$ sqlplus /nolog


Logando como SYSDBA:


SQL> conn / as sysdba