segunda-feira, março 07, 2011

Banco de dados Oracle - Linux

Um guia para instalar e configurar o Servidor de Banco de dados Oracle em um
sistema Linux
Indice

1. Introducao
1.1 Historico da versao
1.2 Direitos autorais
1.3 Retratacao
1.4 Sobre o HOWTO
1.5 Exigencias
1.6 Noticias da Oracle Corporation
2. Instalando o Software Oracle
2.1 Preparacao do servidor
2.1.1 Criar um usuario do Oracle
2.2 Instalando do CDROM
2.3 Tarefas de Instalacao
2.3.1 Tarefas para Root
2.3.2 Tarefas para Oracle
2.3.3 Coisas que voce pode remover
3. Criando um Banco de dados
3.1 Criando o arquivo de Inicializacao
3.2 Criando o Database Install Script
3.3 Executando o Database Installation Script
3.4 Inicializando o Database
3.5 Finalizando o Database
3.6 Criando um Default User
4. Configurando SQL*Net no Server
4.1 tnsnames.ora
4.2 listener.ora
4.3 sqlnet.ora
4.4 Inicializando e finalizando o Listeners
5. Configuracao Client
5.1 Clientes de Windows
5.2 Clients Unix
6. Startup e Shutdown automatico
6.1 dbstart & dbstop
6.2 init.d & rc.d
7. Outros Bits
7.1 Agente inteligente
8. Troubleshooting
8.1 Eu nao posso criar um banco de dados quando usado Oracle 7.2.x.
8.2 Estao ocorrendo segmentation faults

1. Introducao

1.1. Historico da versao
. v0.1 - 21 Feb 1998 - Paul Haigh - Versao Original.
. v0.2 - 01 Mar 1998 - Paul Haigh - Comentarios de Proofreaders Added.
. v1.0 - 10 Mar 1998 - Paul Haigh - Primeiro Release para LDP.
. v1.1 - 20 Jun 1998 - Paul Haigh - Incluindo secao de troubleshooting &
general tidyup.
. v1.2 - 04 Aug 1998 - Paul Haigh - Incluindo Oracle Corp News & Removed
Secao de Acrescimos Futuros.

1.2. Copyright
The Oracle Database HOWTO copyright (c) 1998, Paul Haigh.
Como todo o Linux HOWTO, ele pode ser reproduzido e distribuido em
todo ou em parte, em qualquer meio, fisico ou eletronico, mantendo os
direitos autorais em todas as copias.
A redistribuicao comercial e permitida e encorajada; porem o autor gostaria
de ser notificado de tais distribuicoes. Voce pode traduzir este HOWTO em
qualquer idioma, desde que mantida as declaracoes de direitos autorais e
retratacao intactas, e que voce mencione que traduziu o documento.

1.3. Retratacao
Enquanto eu tentei incluir as mais corretas e atualizadas informacoes
disponivel para mim, eu nao posso garantir que o uso das informacoes deste
documento nao resulte em perda de dados ou equipamentos. Eu nao dou NENHUMA
GARANTIA sobre a informacoes deste HOWTO e nao me responsabilizo pelos
resultados decorrentes do uso das informacoes deste HOWTO.

1.4. Sobre o HOWTO
Neste HOWTO eu tentarei abordar a instalacao e administracao basica de
um banco de dados Oracle em uma maquina Linux. Em particular eu descreverei
a instalacao do Oracle Server, a configuracao do SQL*Net e a configuracao
Client.
Este documento nao e um tutorial de como usar ou administrar um banco de
dados Oracle, se e isso que voce esta procurando, consulte livros destes
assuntos publicados pela O'Reilly and Associates.
Eu tambem nao vou cobrir o desenvolvimento de programas para Oracle no
UNIX. Se isto for necessario, eu recomendaria a compra do SCO Development
System (para OpenServer 5.x) da SCO que pode ser obtido por um preco muito
razoavel de US$19, no site www.sco.com.

1.5. Exigencias
Eu estou assumindo que voce possua todos os itens necessarios para seguir
este HOWTO.
. Oracle Server CD for SCO Openserver (Version 7.3.3.0.0.)
Esta deve ser uma copia legal. Se lembre que o Oracle e um produto,
e que a companhia cobra pelos seus produtos. Se voce quer um SQL
compliant database use o PostgresSQL ou semelhante. Tambem e possivel
instalar o Oracle com uma licenca de 60 dias para avaliacao, baixavel no
site da Oracle. Eu nao tentei isto pessoalmente e portanto, nao
verifiquei.
. Um Servidor Linux
Voce nao estaria lendo isto sem um ...estaria?
. Kernel 2.0.30+
Eu nao posso garantir que estas instrucoes serao precisas para qualquer
outro Kernel. (Eu nao estou garantindo isto para qualquer 2.0.30...).

. iBCS
E muito importante ter ele instalado e trabalhando com a versao mais
recente possivel para sua plataforma.
(Eu estou usando iBCS-2.0-10.i386.rpm da Redhat Linux).
. Muito espaco de disco
600 Mb+ e uma quantia razoavel. E possivel instalar com menos mas voce
precisaria fazer alguns sacrificios, eu nunca gosto de comecar com isso.
Porem, eu tentarei mostrar algumas areas para podermos liberar espaco
em disco.

. 32Mb+ Ram
Eu sei que isto soa muito, especialmente se tratando do Linux, mas
lembre-se que o Oracle e um pacote complexo de programas. Voce nao tem
as mesmas reservas com SCO! Nao estou dizendo que o Oracle nao trabalha
com menos, so que isto e menos do que a Oracle recomenda e eu nao
sugiro isto.
. Licencas do Oracle
Eu sei que eu ja mencionei isto mas eu quero deixar claro pois isto
e importante. Usar Software Oracle sem uma licenca e ilegal.


1.6. Noticias da Oracle Corporation
A Oracle se curvou a pressao da comunidade Linux. A Oracle Corporation
decidiu portar o Oracle 8 oficialmente para o Linux na plataforma (i386).
Este porte deve ser lancado em dezembro/1998, conforme o site da Oracle.
Melhor ainda, o Oracle tambem estara portando Aplicacoes do Oracle para a
plataforma linux. Elas deverao estar disponiveis no primeiro semestre de
1999, de acordo com o site da Oracle.
Referencias:
. http://www.oracle.com/html/linux.html
. http://www.news.com/News/Item/0,4,24436,00.html
. http://www.zdnet.com/pcweek/news/0720/20morac.html

2. Instalando o Software Oracle

2.1. Preparando o Servidor

2.1.1. Criando um usuario Oracle
O Oracle exige um usuario para gerenciar o banco de dados. Inicialmente
nos nao precisaremos "relinkar" o kernel do Oracle (veremos sobre isto
depois) iremos aceitar o defalt para o usuario e grupo de trabalho do
Oracle. Isto inclui um usuario ORACLE e um grupo denominado DBA.
1. Logue como Root
2. Crie o usuario oracle e o grupo dba.
______________________________________________________________________
$ groupadd dba
$ useradd oracle
______________________________________________________________________


3. Certifique-se de que o home do usuario oracle foi criado
______________________________________________________________________
$ mkdir /home/oracle
$ mkdir /home/oracle/7.3.3.0.0 (Versão do Oracle)
$ chown -R oracle.dba /home/oracle
______________________________________________________________________


2.2. Instalando do CDROM
Infelizmente o Oracle Installer no disco para SCO nao ira funcionar.
Pois varios problemas poderiam ocorrer, inclusive core dumps. Para
evitar isto temos que copiar os arquivos manualmente do CDROM e
descompacta-los: (Verifique se o CDROM esta montado).

1. Logue como Oracle

2. Va ate o diretorio /home/oracle/7.3.3.0.0.

3. Copie todos os programas de instalacao do CDROM
______________________________________________________________________
$ cp -a /mnt/cdrom/* .
______________________________________________________________________

4. Descompacte todos os arquivos do Oracle que estavam no CDROM.
______________________________________________________________________
$ find . -name *_ -exec ~/7.3.3.0.0/orainst/oiuncomp {} \;
______________________________________________________________________
2.3. Tarefas de Instalacao


2.3.1. Tarefas para Root


Inclua estas linhas no arquivo /etc/profile ou no .profile de cada usuario
do Oracle.
______________________________________________________________________
# Oracle Specific
ORACLE_HOME=/home/oracle/7.3.3.0.0
ORACLE_SID=orcl
ORACLE_TERM=vt100
export ORACLE_HOME ORACLE_SID ORACLE_TERM
# Alter path for Oracle
PATH="$PATH:$ORACLE_HOME/bin"
______________________________________________________________________

Precisamos mudar o dono e as permissoes para melhorar o acesso ao Oracle.
______________________________________________________________________
$ chown root.root $ORACLE_HOME/bin/osh
$ chmod u+s $ORACLE_HOME/bin/osh
______________________________________________________________________
2.3.2. Tarefas para o Oracle
Mude as permissoes dos arquivos do Oracle garantindo seu funcionamento.
______________________________________________________________________
$ chmod +x $ORACLE_HOME/bin/*
$ chmod u+s $ORACLE_HOME/bin/oracle
______________________________________________________________________

As Ferramentas do Oracle requerem a existencia do diretorio
$ORACLE_HOME/tool_name/mesg. Depois mova os arquivos msb do diretorio
msg_ship para os diretorios mesg.
_______________________________________________________________________
$ mv $ORACLE_HOME/plsql/mesg/mesg_ship/* $ORACLE_HOME/plsql/mesg/.
$ mv $ORACLE_HOME/rdbms/mesg/mesg_ship/* $ORACLE_HOME/rdbms/mesg/.
$ mv $ORACLE_HOME/svrmgr/mesg/mesg_ship/* $ORACLE_HOME/svrmgr/mesg/.
_______________________________________________________________________

Crie os seguintes diretorios caso eles nao existam:

______________________________________________________________________
$ mkdir $ORACLE_HOME/rdbms/log
$ mkdir $ORACLE_HOME/rdbms/audit
$ mkdir $ORACLE_HOME/network/log
______________________________________________________________________


2.3.3. Coisas que poderao ser removidas
Os seguintes diretorios poderao ser removidos com seguranca:
. $ORACLE_HOME/guicommon2/
. $ORACLE_HOME/ctx/
. $ORACLE_HOME/md/
. $ORACLE_HOME/mlx/
. $ORACLE_HOME/precomp/
. $ORACLE_HOME/slax/

3. Criando um Banco de dados
Agora que o Oracle Server esta instalado nos precisamos criar um banco de
dados para testar a instalacao. Se voce esta usando o Oracle 7.2.x ou
anterior, por favor leia o secao de troubleshooting.
3.1. Crie o Arquivo de inicializacao
Copie o arquivo $ORACLE_HOME/dbs/init.ora para $ORACLE_HOME/dbs/initorcl.ora:
______________________________________________________________________
$ cd $ORACLE_HOME/dbs
$ cp init.ora initorcl.ora
______________________________________________________________________
Modifique e adicione as seguintes linhas:
______________________________________________________________________
db_name = orcl
COMPATIBLE=7.3.3.0.0
______________________________________________________________________

3.2. Criando o Database Install Script
Crie um arquivo de script chamado makedb.sql no diretorio $ORACLE_HOME/dbs:
______________________________________________________________________
connect internal
startup nomount
set echo on
spool makedb.log
create database orcl
maxinstances 1
maxlogfiles 8
datafile '$ORACLE_HOME/dbs/orcl_syst_01.dbf' size 40M reuse logfile
'$ORACLE_HOME/dbs/orcl_redo_01.dbf' size 1M reuse,
'$ORACLE_HOME/dbs/orcl_redo_02.dbf' size 1M reuse,
'$ORACLE_HOME/dbs/orcl_redo_03.dbf' size 1M reuse;
.$ORACLE_HOME/rdbms/admin/catalog.sql
create tablespace rollback
datafile '$ORACLE_HOME/dbs/orcl_roll_01.dbf' size 8.5M reuse;
create tablespace temp
datafile '$ORACLE_HOME/dbs/orcl_temp_01.dbf' size 5M reuse temporary;
create tablespace users
datafile '$ORACLE_HOME/dbs/orcl_user_01.dbf' size 10M reuse;
create rollback segment r1 tablespace rollback
storage ( optimal 5M );
alter rollback segment r1 online;
connect system/manager
.$ORACLE_HOME/rdbms/admin/catdbsyn.sql
connect internal
.$ORACLE_HOME/rdbms/admin/catproc.sql
connect system/manager
.$ORACLE_HOME/sqlplus/admin/pupbld.sql
spool off
exit
______________________________________________________________________


3.3. Executando o Database Installation Script
Execute o svrmgrl e chame o script:
______________________________________________________________________
$ cd $ORACLE_HOME/dbs
$ svrmgrl
Oracle Server Manager Release 2.3.3.0.0 - Production
Copyright (c) Oracle Corporation 1994, 1995. All rights reserved.
Oracle7 Server Release 7.3.3.0.0 - Production Release
PL/SQL Release 2.3.3.0.0 - Production
SVRMGR> connect internal
Connected.
SVRMGR> startup nomount
ORACLE instance started.
Total System Global Area 4313312 bytes
Fixed Size 41876 bytes
Variable Size 4140364 bytes
Database Buffers 122880 bytes
Redo Buffers 8192 bytes
SVRMGR> @makedb
SVRMGR> exit
Server Manager complete.
______________________________________________________________________
3.4. Inicializando o Banco de dados
Primeiramente, nos precisamos entrar em modo de gerenciamento (nos
automatizaremos isto mais tarde). Para chamar o banco de dados Oracle nos
precisamos executar o comando startup como anteriormente:
______________________________________________________________________
$ svrmgrl
Oracle Server Manager Release 2.3.3.0.0 - Production
Copyright (c) Oracle Corporation 1994, 1995. All rights reserved.
Oracle7 Server Release 7.3.3.0.0 - Production Release
PL/SQL Release 2.3.3.0.0 - Production
SVRMGR> connect internal
Connected.
SVRMGR> startup
ORACLE instance started.
Total System Global Area 4313316 bytes
Fixed Size 41876 bytes
Variable Size 4140368 bytes
Database Buffers 122880 bytes
Redo Buffers 8192 bytes
Database mounted.
Database opened.
SVRMGR> exit
Server Manager complete.
______________________________________________________________________

3.5. Finalizando o Banco de dados
E importante lembrar que, reiniciando o servidor Linux sem antes finalizar
o banco de dados Oracle, torna o risco de se corromper os dados muito alto.

Assim, antes de reiniciar ou desligar o Linux, e importante executar o
seguinte procedimento para fechar o banco de dados:
______________________________________________________________________
$ svrmgrl
Oracle Server Manager Release 2.3.3.0.0 - Production
Copyright (c) Oracle Corporation 1994, 1995. All rights reserved.
Oracle7 Server Release 7.3.3.0.0 - Production Release
PL/SQL Release 2.3.3.0.0 - Production
SVRMGR> connect internal
Connected.
SVRMGR> shutdown
Database closed.
Database dismounted.
ORACLE instance shut down.
SVRMGR> exit
Server Manager complete.
______________________________________________________________________
3.6. Criando um usuario default
O banco de dados, quando criado, tem dois usuarios especiais que sao
automaticamente criados.

Sao eles:
______________________________________________________________________
Username Password
SYSTEM MANAGER
SYS change_on_install
______________________________________________________________________
Estes usuarios normalmente sao usados para acessar informacoes basicas nos
dicionarios do banco de dados. Uma otima ideia seria mudar a senha desses
usuarios o mais cedo possivel.
Isto pode ser feito da seguinte maneira:
______________________________________________________________________
sqlplus system/manager
SQL*Plus: Release 3.3.3.0.0 - Production on Sat Feb 21 12:43:33 1998
Copyright (c) Oracle Corporation 1979, 1996. All rights reserved.
Connected to:
Oracle7 Server Release 7.3.3.0.0 - Production Release
SQL> alter user system identified by ;
User altered.
SQL> alter user sys identified by ;
User altered.
SQL> exit;
Disconnected from Oracle7 Server Release 7.3.3.0.0 - Production Release PL/SQL Release 2.3.3.0.0 - Production
______________________________________________________________________
Note que o usuario system/manager e identico ao usuario root em uma maquina
UNIX (em materia de permissoes), portanto, nos precisamos criar um usuario
com menos privilegios, evitando maiores problemas. (lembre-se de
inicializar o banco de dados antes de tentar criar um usuario)
Conectando-se ao SQL*Plus e criando um usuario:
______________________________________________________________________
$ sqlplus system/manager
SQL*Plus: Release 3.3.3.0.0 - Production on Sat Feb 21 12:43:33 1998
Copyright (c) Oracle Corporation 1979, 1996. All rights reserved.
Connected to:
Oracle7 Server Release 7.3.3.0.0 - Production Release
PL/SQL Release 2.3.3.0.0 - Production
SQL> create user identified by
2 default tablespace users
3 temporary tablespace temp;
User created.
SQL> grant connect, resource to
Grant succeeded.
SQL> exit
Disconnected from Oracle7 Server Release 7.3.3.0.0 - Production Release PL/SQL Release 2.3.3.0.0 - Production
______________________________________________________________________
Agora que voce tem um novo usuario no sistema, podemos acessa-lo com este
novo usuario. Para se logar ao banco de dados Oracle:
______________________________________________________________________
$ sqlplus /
______________________________________________________________________
Se nao ocorrer mensagens de erros, significa que seu banco de dados Oracle
esta em perfeito funcionamento. Se voce nunca precisar que outras pessoas
se conectem ao banco de dados remotamente, entao o trabalho esta completo,
desfrute!
Porem, se como a maioria das pessoas, voce quiser configurar o sistema de
acesso remoto, de forma que voce possa se conectar de outras maquinas,
continue lendo.

4. Configurando o SQL*Net no Servidor
Todos estes arquivos configuram o software de networking do Oracle (SQL*Net,
e Net8 for Oracle8).

Estes arquivos devem ter sido criados no servidor, no diretorio
$ORACLE_HOME/network/admin.

4.1. tnsnames.ora
O arquivo TNSNAMES.ORA identifica os servicos disponiveis em sua maquina.

Aqui, em cada segmento, descreveremos todos os bancos de dados que o
servidor mantem. Para cada segmento do banco de dados em seu servidor
adicione uma secao, como abaixo:
_____________________________________________________________________
orcl.world =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host = )
(Port = 1521)
)
(ADDRESS =
(COMMUNITY = tcp.world)
(PROTOCOL = TCP)
(Host = )
(Port = 1526)
)
)
(CONNECT_DATA = (SID = ORCL)
)
)
______________________________________________________________________
4.2. listener.ora
O arquivo listener.ora contem a descricao dos servicos que permitem
coneccao com outras maquinas, quando solicitadas para o listner do servidor.
O arquivo contem secoes para o nome do listner, enderecos do listner,
bancos de dados disponivel ao listner e os parametros de configuracao.
Eis um exemplo:
______________________________________________________________________
# Name of listener and addresses to listen on
LISTENER =
( ADDRESS_LIST =
(ADDRESS =
(PROTOCOL=tcp)
(HOST=)
(PORT=1521)
(COMMUNITY=UK_SUP_TCPIP)
)
(ADDRESS =
(PROTOCOL=ipc)
(KEY=700)
(COMMUNITY=UK_SUP_TCPIP)
)
)
# List of services served by this listener
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=orcl)
(ORACLE_HOME=/home/oracle/7.3.3.0.0)
)
)
# Start of configuration parameters.
TRACE_LEVEL_LISTENER=OFF
TRACE_FILE_LISTENER = "listener"
LOG_FILE_LISTENER = "listener"
CONNECT_TIMEOUT_LISTENER = 10
STOP_LISTENER = YES
DBA_GROUP = dba
______________________________________________________________________
4.3. sqlnet.ora
O arquivo sqlnet.ora contem a configuracao de cada no da rede em
particular. Ele e independente do numero de bancos de dados ou do numero
de listeners. A parte mais importante deste arquivo sao as configuracoes
disponíveis no Dead Connection Timeout.
O Dead Connection Timeout confere todo processo que entra em um banco de
dados e assegura que o cliente ainda esta respondendo. Se o cliente (de
qualquer tipo) nao estiver respondendo ao Oracle, o processo sera
encerrado no servidor.
Isto e muito util se voce tem muitos clientes que acessam o banco de
dados, especialmente durante a fase desenvolvimento, quando esses clientes
tem grandes chances de encerrar bruscamente as secoes do banco de dados
Oracle.
Esta e uma copia de meu proprio arquivo sqlnet.ora para que voce examine:
______________________________________________________________________
TRACE_LEVEL_CLIENT = OFF
sqlnet.expire_time = 30 # The number of seconds between client checks.
names.default_domain = world
name.default_zone = world
______________________________________________________________________
4.4. Iniciando e finalizando os Listeners
Agora que a configuracao dos Listners e do SQL*Net esta completa nos
podemos tentar nos conectarmos ao banco de dados que mantem o software de
networking. (Antes de nos usarmos vinculos diretos para o banco de dados,
simularemos uma conexao com uma maquina de cliente remoto).
Para iniciar o Listner usando a configuracao acima:
______________________________________________________________________
$ lsnrctl
LSNRCTL for SCO System V/386: Version 2.3.3.0.0 - Production on 23-FEB-98 20:38:25
Copyright (c) Oracle Corporation 1994. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> start
Starting /home/oracle/7.3.3.0.0/bin/tnslsnr: please wait...
TNSLSNR for SCO System V/386: Version 2.3.3.0.0 - Production
System parameter file is /home/oracle/7.3.3.0.0/network/admin/listener.ora
Log messages written to /home/oracle/7.3.3.0.0/network/log/listener.log
Listening on: (ADDRESS=(PROTOCOL=tcp)(DEV=6)(HOST=192.168.1.1)(PORT=1521))
Listening on: (ADDRESS=(PROTOCOL=ipc)(DEV=10)(KEY=700))
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=magic.com)(PORT=1521)(COMMUNITY=UK_SUP_TCPIP))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for SCO System V/386: Version 2.3.3.0.0 - Production
Start Date 23-FEB-98 20:38:50
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security OFF
SNMP ON
Listener Parameter File /home/oracle/7.3.3.0.0/network/admin/listener.ora
Listener Log File /home/oracle/7.3.3.0.0/network/log/listener.log
Services Summary...
orcl has 1 service handler(s)
The command completed successfully
LSNRCTL> exit
______________________________________________________________________
Para finalizar os listeners:
______________________________________________________________________
$ lsnrctl
LSNRCTL for SCO System V/386: Version 2.3.3.0.0 - Production on 23-FEB-98 20:43:20
Copyright (c) Oracle Corporation 1994. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> stop
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=magic.com)(PORT=1521)(COMMUNITY=UK_SUP_TCPIP))
The command completed successfully
LSNRCTL> exit
______________________________________________________________________
Se voce tem um servidor DNS que nao devolve o IP especifico para o
hostname, a inicializacao e a finalizacao do listener pode levar alguns
minutos (2-3 mins. dependendo da configuracao do DNS (timeout)). Se isto
ocorrer, nao se preocupe, seja paciente.
5. Configuracao do Clients
5.1. Cliente Windows
A configuracao do SQL*Net em PC's que usam versoes mais novas do Oracle
Client Software e muito simples. O melhor (e mais facil) modo de se ter
uma instalacao Client trabalhando plenamente, e usando o SQL*Net Easy
Configuration tool, desenvolvido pela Oracle.
Esta ferramenta e um tipo de wizard que guia o usuario pela configuracao
dos arquivos tnsnames.ora e sqlnet.ora.
Selecione "Add Databse alias" e digite um nome para o alias quando
solicitado. Este alias e o nome que voce definira ao banco de dados, e
como tal deve estar igual ao nome da base (oracle neste caso).
Selecione TCP/IP como protocolo, e quando solicitado, o hostname da maquina
que hospeda o banco de dados e o nome do banco de dados.
E isto.
Porem, se voce nao tem o SQL*Net Configuration Tool nao se preocupe. Voce
pode, simplesmente, criar o arquivo tnsnames.ora e sqlnet.ora no
diretorio $ORACLE_HOME/network/admin e no cliente exatamente como eles
estao no servidor. Isto provera um alias igual ao do servidor (sempre uma
boa ideia de qualquer maneira).

5.2. Clientes Unix
Clientes UNIX nao sao muito diferentes dos clientes Windows. Se voce tem o
Network Manager do Oracle, pode usar o exemplo acima, se nao puder,
utilize a mesma configuracao dos arquivos no diretorio
$ORACLE_HOME/network/admin do servidor.

6. inicializacao e Finalizacao Automatica

6.1. dbstart & dbstop
A inicializacao automatica a finalizacao do banco de dados Oracle podem
ser definidos (na versao 7.3.3.0.0) nos arquivos dbstart e dbshut, ambos
criados pelo Oracle. Estes arquivos se baseiam na existencia do arquivo
/etc/oratab para trabalhar (embora alterando os arquivos dbshut e dbstart
isto possa ser mudado).
O formato do arquivo /etc/oratab e o seguinte:
______________________________________________________________________
SID:ORACLE_HOME:AUTO
______________________________________________________________________
Um exemplo:
______________________________________________________________________
orcl:/home/oracle/7.3.3.0.0:Y
leaveup:/home/oracle/7.3.2.1.0:N
______________________________________________________________________
6.2. init.d & rc.d
Para a inicializacao e a finalizacao automatica do banco de dados
requer a modificacao das rotinas de inicializacao do Linux. Isto e bastante
facil, embora eu devesse mostrar aqui que isto pode variar dependendo da
distribuicao do Linux (slackware, debian, redhat, etc) eu mostrarei
exemplos para o Redhat Linux 5.0. Para modificar outras distribuicoes
do Linux, por favor veja sua documentacao. (Embora isso devesse funcionar
em qualquer Unix baseado no padrao Sys V).
Primeiramente, precisamos definir a execucao do dbshut e dbstart no
diretorio /etc/rc.d/init.d .

Crie o arquivo /etc/rc.d/init.d/oracle:
______________________________________________________________________
#!/bin/sh
#
# /etc/rc.d/init.d/oracle
# Description: Starts and stops the Oracle database and listeners
# See how we were called.
case "$1" in
start)
echo -n "Starting Oracle Databases: "
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Starting Oracle Databases as part of system up." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
su - oracle -c dbstart >> /var/log/oracle
echo "Done."
echo -n "Starting Oracle Listeners: "
su - oracle -c "lsnrctl start" >> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
touch /var/lock/subsys/oracle
;;
stop)
echo -n "Shutting Down Oracle Listeners: "
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Shutting Down Oracle Databases as part of system down." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
su - oracle -c "lsnrctl stop" >> /var/log/oracle
echo "Done."
rm -f /var/lock/subsys/oracle
echo -n "Shutting Down Oracle Databases: "
su - oracle -c dbshut >> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
;;
restart)
echo -n "Restarting Oracle Databases: "
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Restarting Oracle Databases as part of system up." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
su - oracle -c dbstop >> /var/log/oracle
su - oracle -c dbstart >> /var/log/oracle
echo "Done."
echo -n "Restarting Oracle Listeners: "
su - oracle -c "lsnrctl stop" >> /var/log/oracle
su - oracle -c "lsnrctl start" >> /var/log/oracle
echo "Done."
echo ""
echo "----------------------------------------------------" >> /var/log/oracle
date +"! %T %a %D : Finished." >> /var/log/oracle
echo "----------------------------------------------------" >> /var/log/oracle
touch /var/lock/subsys/oracle
;;
*)
echo "Usage: oracle {start|stop|restart}"
exit 1
esac
______________________________________________________________________
E necessario verificar se este arquivo inicializa e finaliza corretamente
o banco de dados em seu sistema. Procure no arquivo /var/log/oracle por
mensagens de erro.
Uma vez que esta rotina estiver funcionando, nos precisaremos criar os
links simbolicos para inicializacao e finalizacao com vinculos nos
diretorios de runlevel apropriados /etc/rc.d/rcX.d.
Os seguintes comandos garantirao que o banco de dados inicializara nos
niveis de execucao 2,3 e 4:
______________________________________________________________________
$ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle
$ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle
$ ln -s ../init.d/oracle /etc/rc.d/rc4.d/S99oracle
______________________________________________________________________
Para finalizar o banco de dados em caso de reinicializacao do servidor,
nos precisaremos dos seguintes links:
______________________________________________________________________
$ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle # Halting
$ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle # Rebooting
______________________________________________________________________
7. Outros Dados

7.1. Intelligent Agent
Se voce necessitar do Oracle Inteligent Agent, eu acredito que voce possa
usa-lo sem qualquer mudanca na configuracao. Para iniciar o IA digite:
______________________________________________________________________
$ lsnrctl dbsnmp_start
______________________________________________________________________
Para finalizar o IA digite:
______________________________________________________________________
$ lsnrctl dbsnmp_stop
______________________________________________________________________
Nao aparecera qualquer mensagem que indique que a inicializacao ou a
parada do IA tenha ocorrido com sucesso. Porem, se o IA respondeu ao
Enterprise Manager no lado de cliente, assim eu so posso concluir que ele
estara trabalhando.
8. Troubleshooting
Veja abaixo algumas sugestoes de socorro.

8.1. Eu nao consigo criar um banco de dados usando Oracle 7.2.x.
Os arquivos trazidos pelo Oracle 7.2.x erram em assumir que voce utiliza
uma configuracao de servidor paralelo. O arquivo init.ora tem a seguinte
linha:
______________________________________________________________________
# define parallel server (multi-instance) parameters
ifile = ora_system:initps.ora
______________________________________________________________________
Para corrigir o problema, simplesmente comente esta linha:
______________________________________________________________________
# define parallel server (multi-instance) parameters
#ifile = ora_system:initps.ora
______________________________________________________________________


8.2. Estao ocorrendo Segmental Faults em svrmgrl nas versoes anteriores a
7.3.4.x.
Eu recebi informacoes de que varias pessoas tiveram este problema. Gerald
Weber (gerald_weber@master.co.at) resolveu isto:
______________________________________________________________________
Oi Paul,
Em primeiro lugar obrigado por sua ajuda, nenhuma das possiveis causas
que voce apontou era a responsavel pelo meu problema. O problema e o
proprio iBCS-emulator.

Parece que o Oracle executa algumas chamadas do sistema que nao sao
suportadas pela atual versao do iBCS.

Olhe isto:
<7>[22]615 sysconf(34)
<7>iBCS2 unsupported sysconf call 34
<7>[22]615 sysconf error return linux=-22 -> ibcs=22 <7>[24]615 sysconf(34)
<7>iBCS2 unsupported sysconf call 34
<7>[24]615 sysconf error return linux=-22 -> ibcs=22
Solucao: conserte o iBCS-source aplicando o seguinte diff-pach:
______________________________________________________________________
--- sysconf.c Sun Apr 19 19:19:15 1998
+++ sysconf.c.ori Sun Apr 19 19:28:45 1998
@@ -60,7 +60,6 @@
#define _SC_JOB_CONTROL 5
#define _SC_SAVED_IDS 6
#define _SC_VERSION 7
-#define _SC_HACK_FOR_ORACLE 34
#define _SC_PAGESIZE 11
@@ -97,11 +96,6 @@
case _SC_SAVED_IDS: {
return (1);
}
-
- case _SC_HACK_FOR_ORACLE: {
- return (1);
- }
-
case _SC_PAGESIZE: {
return PAGE_SIZE;

Monitoramento do CUPS

01 #! /bin/sh
02
03 while true
04 do
05
06 lpq ‐Plp | grep ‐q "lp is ready"
07
08 if [ $? ‐gt 0 ]
09 then
10 cupsenable lp
11 if
12
13 sleep 15
14
15 done

Monitoramento de banco de dados

01 #! /bin/sh
02
03 while true
04 do
05
06 time=$(date +%d.%m.%y\ %H:%M\)
07
08 psql -U monitor -d monitor -c "select * from watch;"
09
10 if $? -eq;
11
12 then
13
14 echo "$time: Database is not accessible! **" >>
dba.log
15 /usr/local/etc/rc.d/002pgsql.sh start
16 sleep 15
17 psql -U monitor -d monitor -c "select * from watch;
18
19 if [ $? -eq 0 ];
20
21 then
22
23 echo "$time: Database online!+++++" >> dba.log
24
25 else
26
27 echo "$time: Database: serious error!
**********" >> dba.log
28 echo "$time:Unable to restart! ***********" >>
dba.log
29 while true
30 do
31 psql -U monitor -d monitor
32
33 if [ $? -eq 0 ];
34
35 then
36
37 time=$(date +%d.%m.%y\ %H:%M\)
38 echo "$time: Database online! +++++" >> dba.log
39 break
40
41 fi
42 sleep 15
43 done3
44
45 fi
46
47 fi
48 sleepd l5
49
50 done