Pesquisar este blog

segunda-feira, 16 de agosto de 2010

Entendendo a arquitetura ORACLE



Temos no produto Oracle uma instancia e um banco. Claro, você pode usar varias instancias para acessar um banco de dados Oracle o que ocorre no Real Aplication Cluster ou cluster de aplicativos reais. Também é possível editar links para a instancia acessar outros bancos Oracle, mas iremos focar no um-para-um, ou seja, uma instancia para um banco.

Estrutura da instancia: Memória e Processos.

Uma instancia Oracle consiste em um bloco de memória compartilhada, conhecida como SGA (System Global Área) a que possui basicamente três elementos obrigatórios: Pool compartilhado, cachê de buffer do banco e o buffer de log. Opcionalmente poderá ter pool extenso, Java pool e um pool de streams.

O Pool compartilhado:

No pool compartilhado iremos abordar dois componentes de sua estrutura: O cachê da biblioteca de dados e o cachê de dicionário de dados.
O cachê de biblioteca de dados consiste em armazenar as instruções SQL na sua forma interpretada. Ajuda no desempenho para evitar que se interprete sempre instruções mais usadas no banco. Quando um usuário fornece uma instrução para o banco, ela será armazenada no cachê de biblioteca de dados para que seja usada posteriormente pelo mesmo usuário ou por outros evitando assim processos para a interpretação da mesma.
O cachê de dicionário de dados armazena objetos, descrições de tabelas, índices usuários e outras definições de metadados.

Cachê de buffer do banco:

O cachê de buffer do banco de dados é uma área onde são executados as instruções SQL. Antes dos dados irem para parte física são armazenados na cachê de buffer aguardando uma confirmação para acesso ao disco. Isto evita E/S em disco desnecessário alem de ser uma segurança para os dados.

Buffer de log:

Usado para armazenamento de todas as modificações aplicadas aos dados presentes no cachê de banco de dados. Está parte da memória só é usada quando os dados armazenados no cachê de banco são manipulados.

Pool extenso:

Uma área opcional a ser criada. Usada automaticamente por vários processos que de uma forma tomaria a memória do pool compartilhado. O gerenciador de recuperação (Recovery Manager, RMAN), também usará o pool extenso para seus processos de E/S.

Pool Java:

Requerido para instanciar os objetos do Java.

DICA Exame:  Os três principais elementos da instancia Oracle são: Pool compartilhado, cachê de buffer do banco e pool de log.



SMON Monitor de sistema,
Função de habilitar as conexões entre o banco e a instancia.

PMON Monitor de processos,
Procura e organiza sessões de usuários, mantendo até mesmo historio de sessão caso desconexão imprevista de algum usuário para que o mesmo ao se conectar novamente, volte aos seus processos.

DBWn Escritor do bano de dados,
Escreve as atualizações do cachê de buffer do banco para o disco fisico. Normalmente o Oracle mantém essas atualizações no mínimo de nível possível para evitar assim E/S o que ajuda substancialmente o desempenho do banco.

LGWR Escritor de logs,
Envia todas as modificações que foram feitas entre o cachê de buffer de banco para o disco, atualizando os redo on-line. Ao efetivar uma modificação com o COMMIT, será escrito nos arquivos de redo log on-line a modificação que foi realizada e a partir daí efetivada no banco físico. Isso garante um auto backup onde podemos dizer que o Oracle efetivamente garante que seus dados não serão perdidos.

CKPT checkpoint.
De tempos em tempos o banco atualiza os arquivos de cachê do banco de dados para o disco, este processo é feito pelo CKPT.



quarta-feira, 21 de julho de 2010

Estrutura diretórios e ponto de montagem Oracle.

Neste artigo descreveremos a estrutura de diretórios recomendado pela Oracle, introduzido no lançamento do Oracle 8 com o nome de Optimal Flexible Architecture, ou OFA (arquitetrua ótima flexível).

A OFA foi criada com o intuito de padronizar e facilitar a vida do DBA em matéria de organização dos arquivos binários, como os próprios executáveis do programa, arquivos de suporte, arquivos de log e control files,  arquivos administrativos, e os arquivos de dados.
É interessante que cada conjunto de diretórios esteja em um disco rígido físico separado.

Porque aderir a estrutura OFA?

O DBA  tem uma padronização dos diretórios podendo assim se familiarizar rapidamente com qualquer base que for administrar. As tarefas de administração do banco de dados ficam mais fácil tais como backup e recuperação, criação de arquivos adicionais etc. Se você tiver multiplas versões do Oracle no mesmo computador, a adesão da estrutura OFA reduz o risco de um arquivo de um banco sobrescrever o de outro, e um ponto muito importante que ajuda é na separação das bases.

DICA de Exame: É recomendado se familiarizar com a estrutura OFA, pois, é largamente usada até mesmo quando se  instala o Oracle utilizando o OUI (Oracle Universal Instaler), que já se vem (pelo menos para Windows), no Linux normalmente se cria os diretórios manualmente.

Bom, como no windows normalmente é next next finsh (com uma certa atenção é claro), iremos colocar mãos a obra no sistema linux.

PONTOS DE MONTAGEM:

Para o ponto de montagem, usa-se normalmente uma string acompanhado de um valor identificador na forma
/pm.
p é uma string
m é um valor variável.
Exemplo: /u01, /u02, /u03 ou /ora01, /ora02 ...

Dentro do ponto de montagem efetue a nomeação de onde o software Oracle será instalado:

/pm/h/u/product/v

/pm       indica o ponto de montagem,
/h          indica o nome do diretório indicando um propósito, exemplo: app ou db ou home.
/u          indica o nome do dono do diretório,(podendo seu sistema ter multiplos usuários que podem instalar e ser os detentores do software Oracle),
/product   indica produto a que se tem,
/v          indica a versão do produto.

Exemplo:  /u01/db/oracle/product/10.1.0    "usuário oracle, software oracle 10g".
               /u01/app/oracle/product/10.1.0     "Oracle 10g Application Server".


contina proxímo capítulo....

(proximo post falaremos da estrutura de diretórios de arquivos e seus subdiretórios).

terça-feira, 13 de julho de 2010

Instalação ORACLE 10g XE no Linux Fedora 11



O Fedora é um sistema operacional baseado em Linux, que traz tecnologia de ponta em software livre e gratuito. O Fedora é sempre livre para que qualquer pessoa possa usar, modificar e distribuir. Ele é feito por pessoas em todo o mundo que trabalham em conjunto. O projeto é baseado no Linux Hed Hat, seus pacotes RPM, configuração de Kernel e pareametros são bem parecidos.

http://fedoraproject.org/

Oracle Database, é um banco de dados relacional bastante poderoso, com recursos avançados de administração, segurança, auditoria e ferramentas que auxiliam o DBA a manter a integridade dos dados.

 http://www.oracle.com/br/index.htm

Depois de varios tutoriais, e muitas e muitas noites e dias de tentativas, desanimos, tentativas novamente e por ai vai,  finalmente consegui reunir os elementos necessários para uma instalação estável e regular do Oracle database 10g XE (versão gratuita do banco de dados Oracle) no irmão mais novo do Hed Hat o Fedora. A versão usada foi a Fedora 11, mas, até o momento deste post o projeto Fedora estáva na versão 13. Os caras lançam tantas versões que fica dificil até de acompanhar.  Se não me engano de 6 em 6 meses sai uma beta.
Optei pelo Oracle 10g Xe por alem de ser gratuito, já venho testando no windows à algum tempo se mostrou um banco ralmente bem estável e alguem ainda duvida?.  A plataforma Linux fedora foi selecionada por ser uma plataforma gratuita, e é a mais parecida com o Hed Hat onde temos um bom numero de sucesso de empresas com  com grande quantidade de fluxo de informações rodando na base de dados Oracle em plataforma Hed Hat, ou seja, é um casamento quase perfeito. 
Vamos ao que interessa.
 Fiz a instalação do Fedora 11 no software VMWare Work Station 6.0.1 rodando na plataforma windows 7, mas, fica a gosto do fregues.

 Link para download do Fedora:
http://www.projetofedora.org/downloadav 

Link para download do Oracle 10g XE para Linux 386:  (Necessário fazer cadastro no site da oracle)
 http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10201linuxsoft.html

Baixe também os pacotes de RPM´s para ambiente Linux.
http://www.oracle.com/technology/software/products/database/xe/htdocs/102xelinsoft.html

Caso não consiga baixar os pacotes de RPM´s neste link, segue abaixo plano B:

Verificar os pactes que se requer para a instalação:

rpm -q binutils gcc glibc glibc-headers glibc-kernheaders glibc-devel compat-libstdc++ cpp compat-gcc make compat-db compat-gcc-c++ compat-libstdc++ compat-libstdc++-devel openmotif openmotif21 setarch pdksh libaio libaio-devel

Importante: Para uma instalação com sucesso os rpms “libXp-1.0.0-8.i386.rpm and libaio-0.3.106-3.2.i386.rpm".

yum install libaio libaio
e neste link http://rpmfind.net/linux/rpm2html/search.php?query=libxp&submit=Search+..    se consegue encontrar libXp para Fedora.


Pronto, rpms atualizados e devidamente instalados vamos para proxímo passo:

Criar os grupos e usuários.

$ su – root
Password:

# groupadd dba
# useradd –d “/home/oracle” –m –g dba oracle
# passwd oracle


Abrir um terminal, logar-se como root.
Criamos o grupo dba que terá privilégios de execução sobre o diretório /home/oracle e adicionamos o usuário oracle a este grupo.
 

Configurar os parametros de Kernel:

Editar o arquivo /etc/sysctl.conf adicionando os seguintes parametros:

kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144

nota: Certifique-se de reiniciar o sistema ou executar o comando "/ sbin / sysctl-p" para alterar os parâmetros de kernel.

Adicione as seguintes linhas no arquivo: /etc/security/limits.conf  

oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

Adicione ou edite o arquivo /etc/pam.d/login colocando o seguinte parametro:

session required /lib/security/pam_limits.so

Certifique-se que "SELINUX = disabled" no o arquivo /etc/selinux/config 

Edite o arquivo /etc/redhat-release colocando uma '#' na frenet da informação (Fedora 11 Anaconda) ficando: #Fedora 11 Anaconda, e na linha de baixo adicione redhat-4

Criando a base de diretórios para o Oracle de acordo com a OFA (Optimal Flexible Architecture):
OBS: A OFA foi introduzida apartir do Oracle 8. É um método de se nomear pontos de montagem e diretórios e de organizar arquivos de dados e componentes do banco de dados para facilitar ao DBA a tarefa de localizar arquivos e administrar o banco de dados... Falarei mais sobre a OFA em futuros posts.


# mkdir –p /u01/app/oracle
# mkdir –p /u01/oradata


Adicionando permissões aos diretórios criados:


# chown –R oracle:dba /u01/app/oracle
# chown –R oracle:dba /u0 1/oradata
# chmod –R 775 /u01/app/oracle
# chmod –R 775 /u01/oradata


 CRIANDO AS VARIAVEIS DE AMBIENTE:

Entre com usuário oracle, edite o arquivo   .bash_profile localizado no diretório do usuário, no nosso caso /home/oracle/.bash_profile
Su – oracle
Password:

ORACLE_HOME=/u01/app/oracle
ORACLE_SID=mydb
LD_LIBRARY_PATH=$ORACLE_HOME/lib
TNS_ADMIN=$ORACLE_HOME/network
PATH=$PATH:$ORACLE_HOME/bin



Export ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH TNS_ADMIN


salve o arquivo: wq!


INSTALAÇÃO:


Logue com usuário oracle e extraia o softeare Oracle 10g:

crie o diretório /u01/db/oracle/product/10.1.0, 
logue com usuário oracle, mova e extraia o software para o diretório criado.

Su – oracle
Password:

$ unzip 10201_database_linux32.zip
finalmente o tão esperado:
$./runInstaller

obs: no meu caso, logo após o comando de instalação acima ocasionou o seguinte erro:
oracle@GSCOMEX Disk1]$
[oracle@GSCOMEX Disk1]$ Exception in thread "main" java.lang.InternalError: Can't connect to X11 window server using '127.0.0.1:0.0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:54)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:115)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:53)
at java.awt.Window.<init>(Window.java:183)
at java.awt.Frame.<init>(Frame.java:310)
at java.awt.Frame.<init>(Frame.java:257)
at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:593) 



sendo resolvido com os seguintes comandos:


Abra um segundo terminal como root e faça:


gilberto@TI-DES05:~> xhost +
gilberto@TI-DES05:~> sux - oracle

oracle@TI-DES05:~> export DISPLAY=:0.0
 


e novamente o tão esperado:

$./runInstaller


se tudo correr bem, neste instante abrirá o OUI (Oracle Universal Instaler) baseado em Java.


logo após a instalação volte a edição default do arquivo /etc/redhat-release retirando o '#' e apagando a linha que foi adicionada anteriormente.




Futuramente abordaremos sobre o OUI, estrutura de diretórios, e abordaremos um pouco de linux com relação a permissões de diretórios.