Papel de parede Oracle
January 26, 2012

Olá Pessoal !

Hoje ataquei meus dotes artísticos (que são péssimos) e resolvi criar dois papel de parede da Oracle.

Ficou legalzinho, estou até usando no meu note :)

Segue os wallpaper oracle abaixo(clique para ampliar)

Um grande abraço a todos.

 

Public YUM no Oracle Linux
January 25, 2012

O yum é uma ferramente extremamente importante que economiza tempo de configuração e instalação.

Para quem não conhece, YUM (Yellow dog Updater, Modified) é uma ferramenta para gerenciar, instalar e remover pacotes (rpm) de instalações linux e o melhor, ele faz um calculo eficaz e resolve aquelas dependências de pacotes que gastamos um tempão para resolver.

Para configurar o PUBLIC YUM (repositório publico yum oracle) no Oracle Linux, além de ter habilitado a internet no servidor é somente preciso algumas poucas configurações. Para configurar o public YUM no Oracle Linux 5, faça:

cd /etc/yum.repos.d
wget http://public-yum.oracle.com/public-yum-el5.repo

Feito isso, um arquivo será criado no diretório /etc/yum.repos.d. Edite o arquivo e habilite qual repositório você precisa, no meu caso eu quero habilitar o repositório do Oracle Linux 5 64bits, então eu mudo o ol5_u5_base de enable=0 para enable=1 e pronto seu yum está instalado.

[ol5_u5_base]
name=Oracle Linux $releasever - U5 - x86_64 - base
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL5/5/base/x86_64/
gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-el5
gpgcheck=1
enabled=1

Para utilizar o YUM é mais simples do que configurar. Vamos a um exemplo, estou instalado o Oracle 11gR2 no Oracle Linux e preciso instalar o pacote rpm libaio x86_64, seja como instalar pelo YUM.

# yum search libaio

...
============================= N/S Matched: libaio ==============================

libaio.i686 : Linux-native asynchronous I/O access library
libaio.x86_64 : Linux-native asynchronous I/O access library
libaio-devel.i686 : Development files for Linux-native asynchronous I/O accesslibaio-devel.x86_64 : Development files for Linux-native asynchronous I/O access

Com encontramos nosso pacote através do search do yum, vamos instalar. Basta executar.

yum install libaio.x86_64

Pronto, seu pacote instalado.

Instalação Oracle RAC 10g com VirtualBox – Parte 12
January 25, 2012

Parte 1 – Introdução
Parte 2 – Criação e configuração da VM
Parte 3 – Criação do Oracle Linux
Parte 4 – Configuração do Oracle Linux I
Parte 5 – Configuração do Oracle Linux II
Parte 6 – Clonagem da VM e criação dos disk image
Parte 7 – Configuração dos discos ASM e OCFS2
Parte 8 – Instalação do Oracle Clusterware
Parte 9 – Aplicação do Patch 10.2.0.5 no Oracle Clusterware
Parte 10 – Instalação Oracle Database 10g
Parte 11 – Aplicação do Patch 10.2.0.5 no Oracle Database
Parte 12 – Criação do Listener e ASM em modo cluster
Parte 13 – Criação do banco de dados

Até agora em nossa série de post sobre instalação Oracle RAC 10g em Oracle Linux 5, já criamos nosso cluster a aplicamos os patch 10.2.0.5 tanto no Oracle Clusterware como no binário do banco de dados.

Para verificar a status do seu cluster execute o seguinte comando:

[oracle@rac1 ~]$ /u01/app/oracle/product/10.2.0/crs/bin/crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora.rac1.gsd   application    ONLINE    ONLINE    rac1
ora.rac1.ons   application    ONLINE    ONLINE    rac1
ora.rac1.vip   application    ONLINE    ONLINE    rac1
ora.rac2.gsd   application    ONLINE    ONLINE    rac2
ora.rac2.ons   application    ONLINE    ONLINE    rac2
ora.rac2.vip   application    ONLINE    ONLINE    rac2

Hoje vamos a configuração do LISTENER e ASM em modo cluster, antes vamos a algumas poucas configurações de variáveis de ambiente, que vão nos facilitar muito na administração do ambiente. Aqui vou somente demostrar o procedimento na máquina 1 do cluster (rac1) mais deve ser feita para a máquina 2, alterando apenas a variável ORACLE_SID para dbtst2.

[oracle@rac1 ~]$ vi .bash_profile

# .bash_profile
# Get the aliases and functions
 if [ -f ~/.bashrc ]; then
 . ~/.bashrc
 fi

# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH

export ORACLE_BASE=/u01/app/oracle
export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=dbtst1

PATH=$ORA_CRS_HOME/bin:$ORACLE_HOME/bin:$PATH

Com o arquivo .bash_profile configurado, vamos executa-lo e assim ativar as variáveis criadas acimas.

[oracle@rac1 ~]$ . .bash_profile

Para verificar se elas estão ativas na sua sessão verifique através do comando env, as variáveis devem aparecer quando você executar.

Criação do Listerner

Para criar o listener em modo cluster é através do utilitário netca, assim como é feito em um ambiente não RAC.

 

Aqui é onde especificamos se o LISTENER será em CLUSTER ou SINGLE. Selecione o modo “Cluster Configuration” e clique em Next.

O netca é capaz de identificar os nós configurados no cluster e apresentar para você. Selecione os dois nós, como na imagem abaixo e clique em Next.

Escolha a opção de adicionar um novo listener.

Use a porta DEFAULT, 1521.

 

Para finalizar clique em Finish.

Com essas configurações acimas feitas, o LISTENER já deve estar criado e habilitado nos dois nós do cluster . Para verificar execute o comando abaixo e observe o recurso com o final .lsnr:

[oracle@rac1 ~]$ /u01/app/oracle/product/10.2.0/crs/bin/crs_stat -t

Name           Type           Target    State     Host
------------------------------------------------------------
ora....C1.lsnr application    ONLINE    ONLINE    rac1
ora.rac1.gsd   application    ONLINE    ONLINE    rac1
ora.rac1.ons   application    ONLINE    ONLINE    rac1
ora.rac1.vip   application    ONLINE    ONLINE    rac1
ora....C2.lsnr application    ONLINE    ONLINE    rac2
ora.rac2.gsd   application    ONLINE    ONLINE    rac2
ora.rac2.ons   application    ONLINE    ONLINE    rac2
ora.rac2.vip   application    ONLINE    ONLINE    rac2

Criação do ASM

Para iniciar com a configuração do ASM, execute o dbca como na imagem abaixo:

Escolha a opção Configura Automatic Storage Management e clique em Next:

O DBCA irá identificar que os nós do cluster, selecione as duas instâncias para instalar o ASM e Next.

Define uma senha padrão, no meu caso oracle

Com a instância ASM já criada, vamos já criar os diskgroup do ASM ORADATA1 e ORADATA2. Observe que discos DISK1,DISK2,DISK3 e DISK4 criados com o ASMLib, automáticamente aparecem no momento da criação do DISKGROUP.

Crie o diskgroup ORADATA1, com os discos DISK1 e DISK2, como mostra a imagem abaixo:

Agora, crie o diskgroup ORADATA2 com os discos DISK3 e DISK4.

Com os dois diskgroup criados, podemos sair do instalador.

Com a instância ASM configurada, ao executar novamente o crs_stat, observe que os recursos abaixo com o final .asm são nossas instâncias ASM criadas acimas.

[oracle@rac1 ~]$ /u01/app/oracle/product/10.2.0/crs/bin/crs_stat -t
Name           Type           Target    State     Host
------------------------------------------------------------
ora....SM1.asm application    ONLINE    ONLINE    rac1
ora....C1.lsnr application    ONLINE    ONLINE    rac1
ora.rac1.gsd   application    ONLINE    ONLINE    rac1
ora.rac1.ons   application    ONLINE    ONLINE    rac1
ora.rac1.vip   application    ONLINE    ONLINE    rac1
ora....SM2.asm application    ONLINE    ONLINE    rac2
ora....C2.lsnr application    ONLINE    ONLINE    rac2
ora.rac2.gsd   application    ONLINE    ONLINE    rac2
ora.rac2.ons   application    ONLINE    ONLINE    rac2
ora.rac2.vip   application    ONLINE    ONLINE    rac2

Agora sim, estamos pronto para a criação do banco de dados que será feita no próximo e último post da série.

Migrando para ASM utilizando apenas o RMAN
January 16, 2012

O ASM é sem dúvida um dos maiores avanços de gerenciamento de disco e muitas coisas relacionadas a I/O (performance, gerenciamento, etc..). Em um outro post estarei mostrando as vantagens de um ambiente utilizando ASM e como ele é benéfico para o ambiente.

Apesar de todas essas vantagens, ainda hoje existem muitos ambientes em que não é utilizado o ASM. Pensando nisso hoje estaremos vendo como utilizar o RMAN (apenas o RMAN) para realizar uma migração de um filesystem comum como ext3 para ASM.

No nosso caso, estaremos movendo todos os datafiles e tempfiles do banco dbtst para o diskgroup +DGROUP1.

[oracle@oracle11gR3 ~]$ rman target /
Recovery Manager: Release 11.2.0.3.0 - Production on Wed Jan 4 13:56:46 2012
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
connected to target database: DBTST (DBID=2987787466)

-- Habilitando o Oracle Managed File
RMAN> sql "alter system set db_create_file_dest=''+DGROUP1'' scope=spfile";
using target database control file instead of recovery catalog
sql statement: alter system set db_create_file_dest=''+DGROUP1'' scope=spfile

-- Mudando a localização do controlfile
RMAN> sql "alter system set control_files=''+DGROUP1'' scope=spfile";
using target database control file instead of recovery catalog
sql statement: alter system set control_files=''+DGROUP1'' scope=spfile

RMAN> shutdown immediate;
database closed
database dismounted
Oracle instance shut down

-- Subimos o banco em modo NOMOUNT
RMAN> startup nomount
connected to target database (not started)
Oracle instance started

Total System Global Area     839282688 bytes

Fixed Size                     2233000 bytes
Variable Size                511708504 bytes
Database Buffers             318767104 bytes
Redo Buffers                   6574080 bytes

Nesse momento vamos restaurar o nosso control file atual (‘/u01/app/oracle/oradata/dbtst/control01.ctl’ ou ‘/u01/app/oracle/oradata/dbtst/control02.ctl’) para o diskgroup DGROUP1. O grande lance aqui é que como mudamos o parâmetro control_files para o +DGROUP1 e habilitamos o Oracle Managed Files e temos uma cópia consistência do control files pois baixamos o banco de maneira adequada, simplesmente restaurando o control file atual ele irá gerar no caminho do diskgroup DGROUP1.

Observe a saída do comando:

RMAN> restore controlfile from '/u01/app/oracle/oradata/dbtst/control01.ctl';

Starting restore at 04-JAN-12
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=137 device type=DISK

channel ORA_DISK_1: copied control file copy
output file name=+DGROUP1/dbtst/controlfile/current.256.771688895
Finished restore at 04-JAN-12

Como já temos nosso control file restaurado para o DGROUP1, podemos inicializar o banco em mount.

RMAN> alter database mount;

database mounted
released channel: ORA_DISK_1

Agora vamos realizar um backup do tipo copy formatando para o diskgroup DGROUP1.

RMAN> BACKUP AS COPY DATABASE DATABASE FORMAT '+DGROUP1';

Starting backup at 04-JAN-12
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=137 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=/u01/app/oracle/oradata/dbtst/system01.dbf
output file name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/data_D-DBTST_I-2987787466_TS-SYSTEM_FNO-1_01mvu2gt tag=TAG20120104T140308 RECID=2 STAMP=771689052
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:01:06
channel ORA_DISK_1: starting datafile copy

...

input datafile file number=00004 name=/u01/app/oracle/oradata/dbtst/users01.dbf
output file name=+DGROUP1/dbtst/datafile/users.262.771689571 tag=TAG20120104T140308 RECID=13 STAMP=771689575
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 04-JAN-12
channel ORA_DISK_1: finished piece 1 at 04-JAN-12
piece handle=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/0dmvu33a_1_1 tag=TAG20120104T140308 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current SPFILE in backup set
channel ORA_DISK_1: starting piece 1 at 04-JAN-12
channel ORA_DISK_1: finished piece 1 at 04-JAN-12
piece handle=+DGROUP1/dbtst/backupset/2012_01_04/nnsnf0_tag20120104t140308_0.263.771689581 tag=TAG20120104T140308 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 04-JAN-12

Com a image copy do banco de dados feito, o vamos migrar nossos datafiles para esses arquivos de copias de backup. Isso tudo é feito através do comando SWITCH DATABASE TO COPY, que sempre quando utilizado deve-se realizar um recover do banco de dados.

RMAN> SWITCH DATABASE TO COPY; 

RMAN> RECOVER DATABASE;

Agora abrimos o banco e adicionamos um novo tempfile para o tablespace TEMP e removemos o tempfile ‘/u01/app/oracle/oradata/dbtst/temp01.dbf’ antigo. Como nosso OMF está apontando para o diskgroup DGROUP1 não precisamos especificar o caminho do tempfile na sua criação.

RMAN> SQL "ALTER DATABASE OPEN";
RMAN> SQL "ALTER TABLESPACE TEMP ADD TEMPFILE";
RMAN> SQL "ALTER DATABASE TEMPFILE ''/u01/app/oracle/oradata/dbtst/temp01.dbf'' DROP";

Após esses passos seus datafiles e tempfiles estarão todos no ASM.

Certificado OCP 11g
January 14, 2012

Olá Pessoal …

Venho com ótimas notícias, depois de um tempo estudando as new features do release 11g R1/R2 da Oracle, ontem prestei a prova para atualizar da minha OCP 10g para a versão 11g e consegui passar com 90% de acertos da prova.

Caso alguém esteja estudando, recomendo o livro “OCP 11g New Features for Administrators Exam Guide” do Sam Alapati da editora Oracle Press além da própria documentação Oracle que é muito bem escrita.

Um grande abraço a todos !

Facilitando a vida do DBA com o uso de alias
January 4, 2012

O tempo é preciso ainda mais para o DBA, então … Porque perder tempo digitando aquele comando enorme sendo que você pode cortar caminho?

Quer um exemplo simples? Vamos supor que você é um DBA que sempre segue a convenção de diretório OFA (espero que sim) que tenha instalado um Oracle 11g e que gostaria de visualizar o arquivo de log do banco de dados dbtst. O caminho comum seria o seguinte:

cd $ORACLE_BASE/diag/rdbms/dbtst/dbtst/trace/
tail -100 alert_dbtst.log
...
ARCH: Archival disabled due to shutdown: 1089
Shutting down archive processes
Archiving is disabled
Archive process shutdown avoided: 0 active
Mon Jan 02 11:39:29 2012
Stopping background process VKTM:
Mon Jan 02 11:39:31 2012
Instance shutdown complete

Que tal agora, realizar todos os passos acimas com apenas um comando? Essa é a facilidade que trás o comando alias, veja o exemplo como ficaria apenas executando o alias showalert as últimas 100 linhas do log de alerta do banco é visualizado na tela:

alias showalert='tail -100 /u01/app/oracle/diag/rdbms/dbtst/dbtst/trace/alert_dbtst.log'
showalert
...
ARCH: Archival disabled due to shutdown: 1089
Shutting down archive processes
Archiving is disabled
Archive process shutdown avoided: 0 active
Mon Jan 02 11:39:29 2012
Stopping background process VKTM:
Mon Jan 02 11:39:31 2012
Instance shutdown complete

Já deu para ver as vantagens, não é mesmo? Para que então digitar echo $ORACLE_SID somente para poder ver qual é o valor da variável de ambiente ORACLE_SID, vamos definir um alias para ela:

[oracle@oracle11gR1 ~]$ echo $ORACLE_SID
dbtst
[oracle@oracle11gR1 ~]$ alias es='echo $ORACLE_SID'
[oracle@oracle11gR1 ~]$ es
dbtst

Para remover um alias já definido, utilize apenas o comando unalias seguido do nome do alias desejado para remover:

unalias es

O alias perde sua configuração caso você efetue um logout do usuário Linux/Unix conectado. Para que esses alias permaneçam em cada login feito pelo usuário basta colocar os alias no arquivo ~/.bashrc do usuário. No meu caso, costumo sempre customizar esse arquivo (~/.bashrc) com os alias que vou utilizar. Segue alguns desses alias que já se tornaram inseparáveis em ambiente que vou trabalhar, facilitando e economizando meu tempo.

alias sqlp='sqlplus "/ as sysdba"'
alias asmcmd='asmcmd -p'
alias rmn='rman target /'
alias esid='echo $ORACLE_SID'
alias cbase='cd $ORACLE_BASE'
alias chome='cd $ORACLE_HOME'
alias bdump='cd $ORACLE_BASE/admin/$ORACLE_SID/bdump'
alias cdiag='cd $ORACLE_SID/diag'
alias l='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias tns='cd $ORACLE_HOME/network/admin'

Caso tenha criado seus próprios alias, compartilhe aqui …

Um grande abraço !