quarta-feira, 15 de outubro de 2008

Oracle gratuito para treinamento no GPO.

Uma excelente dica principalmente para quem está começando no mundo Oracle e deseja ampliar seus conhecimentos.
O site
http://www.profissionaloracle.com.br/ disponibilizou um banco de dados Oracle para fins didáticos, o MyDB. Os interessados deverão se cadastrar no site do GPO e solicitar um usuário e senha para o moderador. O site também é um excelente auxílio para os novatos em Oracle e tem um vasto acervo para quem já está na trilha a algum tempo.

Para utilizar este novo serviço, o MyDB, acesse o link:
http://www.profissionaloracle.com.br/modules.php?name=Content&pa=showpage&pid=22

sábado, 11 de outubro de 2008

Shorewall, uma excelente opção para firewall Linux

Este artigo é direcionado àqueles que desejam implementar o Shorewall como interface de configuração de regras de Iptables. O Shoreline, mais conhecido como Shorewall, possibilita uma configuração mais organizada e rápida do seu firewall. O servidor utilizado neste artigo é um Debian Etch 4.

Vamos ao que interessa!

Instalar os pacotes

# apt-get install shorewall shorewall-doc


Copiar os arquivos de exemplo para o diretório de configuração do shorewall

# cp /usr/share/doc/shorewall/examples/two-interfaces/* /etc/shorewall/.


Uma rápida explicação de cada arquivo de configuração, para uma implementação simples de firewall.

Zones

Neste arquivo é definido os tipos de zonas de sua rede. Os três tipos de zonas mais utilizados são:

loc – Define a zona local. Será utilizado para definir regras para a rede local.

net – Define a zona de Internet. Será utilizado para definir regras para o link de dados.

dmz – Define a zona delimitada.

A variável FW já é uma zona declarada implicitamente. Essa zona corresponde-se ao firewall e é utilizado para definir regras para o mesmo.

Editar o arquivo /etc/shorewall/zones e inserir a seguinte configuração:

################################################################
#ZONE TYPE OPTIONS IN OUT
################################################################
net ipv4
loc ipv4

# NUNCA REMOVER ESTA LINHA

Obs.: A zona FW não precisa ser definida, pois como já disse é implicitamente definida.


Interfaces

Neste arquivo são atribuídas zonas às interfaces de rede. Antes de tudo deverá existir uma estrutura de rede. Neste artigo estou utilizando eth0 para Internet (DHCP) e eth1 para rede local (IP STATIC).

Editar o arquivo /etc/shorewall/interfaces e inserir:

#########################################################
#ZONE INTERFACE BROADCAST OPTIONS
#########################################################
net eth0 detect dhcp,tcpflags
loc eth1 detect tcpflags,detectnets,nosmurfs

# NUNCA REMOVA ESTA LINHA


Masq

Mais conhecido como masquerade (mascaramento de rede) o masq define as máscaras de rede e ordem que elas serão apresentadas. Usado por servidores que servem como gateway para rede local.

Editar o arquivo /etc/shorewall/masq e inserir:

##################################################################
#INTERFACE SUBNET ADDRESS PROTO PORT(S) IPSEC
##################################################################
eth0 eth1

# NUNCA REMOVER ESTA LINHA


Policy

Toda política da rede é definida nesta zona. Antes de executar qualquer regra de excessão definida na zona rules (próximo tópico), o Shorewall utiliza as regras globais definidas nesta zona para só então dar prosseguimento às excessões.

Editar o arquivo /etc/shorewall/policy e inserir:

#
# Policies for traffic originating from the firewall ($FW)
#
# If you want open access to the Internet from your firewall, change the
# $FW to net policy to ACCEPT and remove the 'info' LOG LEVEL.
# This may be useful if you run a proxy server on the firewall.
$FW net ACCEPT # LINHA 1
$FW loc ACCEPT # LINHA 2
$FW all REJECT info # LINHA 3

# Policies for traffic originating from the local LAN (loc)
#
# If you want to force clients to access the Internet via a proxy server
# on your firewall, change the loc to net policy to REJECT info.
loc net REJECT info
loc $FW REJECT info
loc ipsec ACCEPT
loc all DROP info

#
# Policies for traffic originating from the Internet zone (net)
#
net $FW DROP info
net loc DROP info
net all DROP info

# THE FOLLOWING POLICY MUST BE LAST
all all REJECT info


# ULTIMA LINHA - NUNCA REMOVA


Uma breve explicação de algumas linhas do conf policy:

LINHA 1 - Todas as requisições do firewall para a internet serão aceitas.
LINHA 2 - Todas as requisições do firewall para a rede local serão aceitas.
LINHA 3 - Todas as requisições do firewall para todos os outros lugares serão rejeitados e devidamente catalogado em log. Por isso o "info" ao final da linha.

As opções de ações usadas nas zonas policy e rules são:

ACCEPT - Aceita pacotes/requisições
REJECT - Rejeita pacotes/requisições e retorna mensagem de rejeição
DROP - Elimina pacotes/requisições e não retorna mensagem alguma

Rules

Nesta zona são definidas as regras finais para o destino e origem de cada pacote/requisição. Após terem passados pelas regras da zona policy, o firewall trata os pacotes com essas excessões e direciona-os para o seu destino/origem finais.

Editar o arquivo /etc/shorewall/rules e inserir:

##################################################################
#ACAO ORIGEM DESTINO PROTO DESTINO ORIGEM
#SOLICITANTE TAXA USUARIO
# ZONA ZONA PORTA PORTA(S)
##################################################################

# Aceita conexoes DNS vindas do firewall para a rede
#
DNS/ACCEPT $FW net

# Permite Ping vindos da "zone loc" para rede
#
Ping/ACCEPT loc $FW
Ping/ACCEPT loc loc

# Rejeita ping vindo da "zone net" batizados como "maus"...
#
Ping/ACCEPT net:200.200.200.00 $FW
Ping/DROP net $FW

ACCEPT $FW loc icmp
ACCEPT $FW net icmp

# Abrindo portas
#
ACCEPT net $FW tcp 22 # SSH
ACCEPT net $FW tcp 9000 # SSH
ACCEPT net $FW tcp 8080 # Tomcat6
ACCEPT net $FW tcp 9100 # Apache2
ACCEPT net $FW tcp 80 # Apache2
ACCEPT net $FW tcp 1521 # Oracle_Listener
ACCEPT net $FW tcp 10000 # Webmin
ACCEPT net $FW tcp 1158 # OEM

# Redirecionando conexões
# Neste exemplo estou direcionando uma requisição vinda da internet
# e direcionando-a para a rede local no IP 192.168.27.2 na porta 4899
#
DNAT $FW loc:192.168.27.2:4899 tcp 1158

# ULTIMA LINHA - NUNCA REMOVA

Esta foi uma breve explicação de como utilizar o Shorewall como firewall. Para quem deseja aprofundar-se neste software e implementar as outras diversas funcionalidades dele, o site oficial é
http://www.shorewall.net/

quinta-feira, 9 de outubro de 2008

Instalação do Oracle 9i no CentOS 5

Hoje não é segredo para nenhum DBA instalar o Oracle Database. Principalmente após a versão 8i, a qual era necessário um verdadeiro "ritual" antes de prosseguir com a instalação. Tenho um servidor de testes com CentOS 5 e um Oracle 10g. Até aqui tudo certo! Precisava clonar um 9i de produção e não tinha mais hardware. Pensei numa VM, no entanto, precisava realizar testes de backup em fita, testes utilizando a aplicação, etc. Enfim, tornou-se inviável. Daí, surgiu a idéia de quebrar paradigmas e subir o Oracle 9i no CentOS 5.

1 - Criação de usuário e grupos

# groupadd oinstall
# groupadd dba

# useradd -g oinstall -G dba oracle
# passwd oracle (digite o password)


2 - Criação de diretórios

# mkdir -p /u01/app/oracle/product/9.2.0
# mkdir -p /u02/oradata
# chown -R oracle.oinstall /u01
# chmod 775 -R /u01 /u02


3 - Parametros do Kernel em /etc/sysctl.conf

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

# /sbin/sysctl -p


4 - Parametros em /etc/security/limits.conf

oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384


5 - Parametros em /etc/profile

if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi


6 - Criação de àrea swap (se não foi definida na instalação do S.O)

Criação do arquivo
# dd if=/dev/zero of=/swapfile bs=1024 count=1024000

Formatação do arquivo
# /sbin/mkswap /swapfile

Ativação do arquivo
# /sbin/swapon /swapfile

Inserção no /etc/fstab para montagem automatica
/swapfile swap swap defaults 0 0


7 - Variáveis em /home/oracle/.bash_profile

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/9.2.0; export ORACLE_HOME
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=$ORACLE_HOME/bin:$PATH; export PATH
ORACLE_OWNER=oracle; export ORACLE_OWNER
ORACLE_SID=dbname; export ORACLE_SID
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib:/usr/X11R6/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib; export CLASSPATH

#LD_ASSUME_KERNEL=2.4.19; export LD_ASSUME_KERNEL # Somente para RHEL4 desmarque essa opção
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR


8 - Pacotes e dependências

No CD do Centos5, instale os seguintes pacotes:

# rpm -Uvh binutils*
# rpm -Uvh compat-libstdc++*
# rpm -Uvh compat-db-*
# rpm -Uvh compat-gcc-34*
# rpm -Uvh compat-gcc-34-c++-*
# rpm -Uvh compat-libgcc-*
# rpm -Uvh fontconfig-devel*
# rpm -Uvh freetype-devel*
# rpm -Uvh gcc-*
# rpm -Uvh gcc-c++-*
# rpm -Uvh giflib-*
# rpm -Uvh gnome-libs-*
# rpm -Uvh gnome-libs-devel-*
# rpm -Uvh libaio-*
# rpm -Uvh libaio-devel-*
# rpm -Uvh libXp-*
# rpm -Uvh libXp-devel*
# rpm -Uvh make-*
# rpm -Uvh openmotif*
# rpm -Uvh ORBit-*
# rpm -Uvh xorg-x11-devel*
# rpm -Uvh xorg-x11-deprecated-libs-devel-*

Se houver a necessidade de algum pagote, eis aqui um ZIPACOTÃO.
http://ox0spy.googlepages.com/download.zip


9 - Ajustes antes do runInstaller

9.1 - Criação de link simbólico da biblioteca libstdc++ para a versão compatí­vel

# ln -s /usr/lib/libstdc++-3-libc6.2-2-2.10.0.so /usr/lib/libstdc++-libc6.1-1.so.2

9.2 - Download e instação dos seguintes pacotes:
http://oss.oracle.com/projects/compat-oracle/dist/files/RedHat/compat-libcwait-2.1-1.i386.rpm
http://oss.oracle.com/projects/compat-oracle/dist/files/RedHat/compat-oracle-rhel4-1.0-5.i386.rpm

# rpm -ivh compat-libcwait-2.1-1.i386.rpm
# rpm -ivh compat-oracle-rhel4-1.0-5.i386.rpm --nodeps

9.3 - Criação de link simbólico da biblioteca gcc para a versão compatível

# ln -s /usr/bin/gcc34 /usr/bin/gcc32

9.4 - Logado como oracle, executar o runInstaller e prosseguir conforme a necessidade. Instalar somente o software Oracle, pois o banco de dados pode ser criado posteriormente com o dbca

$ cd /disk1
$ ./runinstaller


10 - Ajustes após runInstaller. Necessário para a criação do banco de dados utilizando as ferramentas DBCA/NETCA

10.1 - Criação de link simbólico da biblioteca libgdbm para a versão compatí­vel

# ln -s /usr/lib/libgdbm.so.2.0.0 /usr/lib/libdb.so.2

10.2 - Remoção e ajustes de diretórios da JRE. Esses acertos de JRE são utilizados tanto no CentOS 5, quanto no RedHat, pois é uma falha de versões da JRE no OUI.

$ cd $ORACLE_HOME
$ rm JRE
$ ln -s $ORACLE_BASE/jre/1.3.1 JRE
$ cd JRE/bin
$ ln -s java jre
$ cd i386/native_threads/
$ ln -s java jre

Pronto! Você tem um SGBD pronto para a utilização e já pode utilizar o DBCA para criação de seu banco.

Quanto à clonagem do banco, aí é pano para outra manga...

Links utilizados para elaboração deste artigo:
http://hi.baidu.com/ox0spy/blog/item/7e85c6860d188e3b67096e07.html%20(JAP)
http://kr.forums.oracle.com/forums/thread.jspa?messageID=2595108%20%28ENG%29

domingo, 21 de setembro de 2008

Instalação Oracle 10g no RHEL 4

1 - Criar usuários e grupos - como root

# groupadd dba
# groupadd oinstall
# useradd oracle –g dba –G oinstall –c “Oracle Database 10g - Owner User” –d /home/oracle
# passwd oracle (inserir password)

2 - Criar diretórios e permissões - como root

# mkdir –p /u01/app/oracle
# mkdir –p /u02/oradata
# chown –R oracle.dba /u01
# chown –R oracle.dba /u02
# chmod 775 –R /u01 /u02

3 - Setar e exportar variáveis ambientais no profile do usuário (.bash_profile em /home/oracle)


ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0; export ORACLE_HOME
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=$ORACLE_HOME/bin:$PATH; export PATH
ORACLE_OWNER=oracle; export ORACLE_OWNER
ORACLE_SID=teste; export ORACLE_SID

LD_LIBRARY_PATH=$ORACLE_HOME/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib; export CLASSPATH

#LD_ASSUME_KERNEL=2.4.19; export LD_ASSUME_KERNEL
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
export PATH
unset USERNAME


4 - Adicionar parâmetros de controle do kernel (sysctl.conf em /etc) - como root

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

5-Parâmetros de segurança do kernel (limits.conf em /etc/security) - como root

oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

6 - Preparar o S.O (pré-requisitos de pacotes e dependências) - como root

• binutils-2.17.50.0.6
• compat-libstdc++-33-3.2.3
• compat-libstdc++-33-3.2.3 (32 bit)
• elfutils-libelf-0.125
• elfutils-libelf-devel-0.125
• gcc-4.1.1
• gcc-c++-4.1.1
• glibc-2.5-12
• glibc-2.5-12 (32 bit)
• glibc-common-2.5
• glibc-devel-2.5
• glibc-devel-2.5-12 (32 bit)
• libaio-0.3.106
• libaio-0.3.106 (32 bit)
• libaio-devel-0.3.106
• libgcc-4.1.1
• libgcc-4.1.1 (32 bit)
• libstdc++-4.1.1
• libstdc++-4.1.1 (32 bit)
• libstdc++-devel 4.1.1
• make-3.81
• sysstat-7.0.0

7 - Instalar o software Oracle e suas ferramentas

Execução do runInstaller no Shell do usuário oracle

Obs.: Instalar somente o SGBD

8 - Criar o banco de dados utilizando o dbca

Gerar scripts de criação

Gerar HTML com parâmetros de criação do banco de dados

Dica de startup automático:
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=4468