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/
# 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
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