Arquivo

Archive for janeiro \23\+03:00 2013

ORA-00245: control file backup failed; target is likely on a local file system

Bom estava acontecendo alguns erros de backup aqui no ambiente RAC referente ao snapshot do controlfile que estava sendo feito e um file system local, segue erro:

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup plus archivelog command at 01/23/2013 11:48:16
RMAN-03009: failure of backup command on c1 channel at 01/23/2013 11:48:16
ORA-00245: control file backup failed; target is likely on a local file system

Conforme o OERR, segue:

$ oerr ORA 00245
00245, 00000, “control file backup failed; target is likely on a local file system”
// *Cause: Failed to create a control file backup because some process
// signaled an error during backup creation. This is likely caused
// by the backup target being on a local file system so it could not
// be accessed by other instances. It can also be caused by other
// I/O errors to the backup target. Any process of any instance that
// starts a read/write control file transaction must have access
// to the backup control file during backup creation.
// *Action: Check alert files of all instances for further information.

Como no servidor só possui o ASM como shared entre os 2 nós e conforme nota da Oracle (In RAC environment from 11.2 onwards Backup Or Snapshot controlfile needs to be in shared location [ID 1472171.1]) foi alterado o destino do controlfile para o ASM.

CONFIGURE SNAPSHOT CONTROLFILE NAME TO ‘+DG_DATA/snapcf.f’;

Apenas para documentar, já que na nota já diz tudo e passo a passo.

Categorias:RMAN

Escolhendo o Kernel para inicialização automatica

Hoje abordarei como escolher o kernel para subir a maquina linux, sem precisar entrar na opções de inicio e ficar escolhendo sempre, para mim foi útil pois instalei alguns kernel em minha VMWARE que não irei mais utilizar, então por isso queria deixar 1 como default, então vamos lá.

Bom em minha maquina tenho o GRUB que é um sistema de multiboot, porém há outro que conheço que é o LILO, irei falar e abordar apenas o GRUB.

No diretório de boot do servidor o fs /boot fica alguns arquivos de configuração, bom irei falar apenas 1 arquivo que é do GRUB que iremos alterar, neste diretorio há um outro dir /boot/grub e nele há um arquivo de configuração grub.conf

Vamos abrir ele, segue o conteúdo do meu arquivo:

[root@hodb001vtr grub]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Oracle Linux Server (2.6.32-300.39.2.el5uek)
root (hd0,0)
kernel /vmlinuz-2.6.32-300.39.2.el5uek ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.32-300.39.2.el5uek.img
title Enterprise Linux (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-194.el5.img
[root@hodb001vtr grub]#

Vendo acima há 2 opções que aparece na tela inicial do meu linux que são exatamente estas acima Oracle Linux Server e Enterprise Linux.
Somente comentar/retirar as linhas conforme o kernel que você não quer que inicializa, segue como ficou o meu:

[root@hodb001vtr grub]# cat /boot/grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
#title Oracle Linux Server (2.6.32-300.39.2.el5uek)
# root (hd0,0)
# kernel /vmlinuz-2.6.32-300.39.2.el5uek ro root=/dev/VolGroup00/LogVol00 rhgb quiet
# initrd /initrd-2.6.32-300.39.2.el5uek.img
title Enterprise Linux (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.18-194.el5.img
[root@hodb001vtr grub]#

Pronto no próximo reboot irá inicializar automaticamente pelo segundo kernel conforme  acima.

Categorias:SO

Removendo logs antigos com ADRCI

Bom hoje eu vou abordar de como remover logs como trace, alert, incident, core dump usando o adrci, vamos lá.

Bom o ADRCI quem não conhecer apenas clickar no link ADRCI eu postei falando um pouco sobre ele, é um utilitário muito, bom este utilitário mostra os HOMES que possui o ambiente com base sabendo disso, segue os meus HOMES:

ADR Homes:
diag/tnslsnr/HODB01VTR/listener
diag/asm/+asm/+ASM
diag/rdbms/dbtest02/dbtest
diag/rdbms/dbtest02/dbtest02
diag/rdbms/dbtest03/dbtest03
diag/rdbms/dbtest01/dbtest01

Podemos remover os logs antigos apenas com um comando do ADRCI, segue os diretórios que podemos remover os logs antigos:

total 2228
drwxr-x— 2 oracle oinstall 4096 May 7 2012 incpkg
drwxr-x— 2 oracle oinstall 4096 May 7 2012 hm
drwxr-x— 2 oracle oinstall 4096 May 7 2012 cdump
drwxr-x— 2 oracle oinstall 4096 May 7 2012 metadata
drwxr-x— 2 oracle oinstall 4096 May 7 2012 ir
drwxr-x— 2 oracle oinstall 4096 Dec 6 16:15 sweep
drwxr-x— 2 oracle oinstall 4096 Dec 6 16:15 lck
drwxr-x— 2 oracle oinstall 4096 Dec 14 12:21 stage
drwxr-x— 2 oracle oinstall 4096 Dec 14 12:21 incident
drwxr-x— 2 oracle oinstall 4096 Dec 26 01:11 alert
drwxr-x— 2 oracle oinstall 2236416 Jan 17 09:34 trace

Pode montar 1 SHELL Script para fazer isso, exemplo removendo os TRACE antigos a mais de 1440 minutos, segue:

adrci exec=”set homepath diag/rdbms/dbtest01/dbtest01;purge -age 1440 -type TRACE”

Removendo os logs do alert antigos a mais de 1440 minutos, segue:

adrci exec=”set homepath diag/rdbms/dbtest01/dbtest01;purge -age 1440 -type ALERT”

Removendo os Incident antigos a mais de 1440 minutos, segue:

adrci exec=”set homepath diag/rdbms/dbtest01/dbtest01;purge -age 1440 -type INCIDENT”

Removendo os Cored Dump a mais de 1440 minutos, segue:

adrci exec=”set homepath diag/rdbms/dbtest01/dbtest01;purge -age 1440 -type CDUMP”

E assim vai, bom é isso façam bom proveito. Abraço.

Categorias:Oracle

Como Apagar os Flashback LOGS

Hoje eu vou falar sobre como apagar os flashback logs, bom procurei em todos os lugares e não achei nada que possa fazer, pois não há um comando para apagar flashback logs o oracle gerencia automaticamente quando necessita de espaço ele apagará automaticamente, bom então vamos lá.

Em uma base de produçao aqui na empresa está habilitado o flashback database, segue:

SYS@ > select LOG_MODE,FORCE_LOGGING,FLASHBACK_ON from v$database;

LOG_MODE |FOR|FLASHBACK_ON
————|—|——————
ARCHIVELOG |NO |YES

Olhando a view v$recovery_area_usage podemos ver que há 1094 arquivos de flashbacklogs e desses arquivos conseguimos fazer o reclaimable de 59.9%, segue:

SYS@wabrazil01 > select * from v$recovery_area_usage;

FILE_TYPE |PERCENT_SPACE_USED|PERCENT_SPACE_RECLAIMABLE|NUMBER_OF_FILES
——————–|——————|————————-|—————
CONTROL FILE | .01| 0| 1
REDO LOG | 0| 0| 0
ARCHIVED LOG | .24| 0| 5
BACKUP PIECE | 0| 0| 0
IMAGE COPY | 0| 0| 0
FLASHBACK LOG | 70.82| 59.94| 1094
FOREIGN ARCHIVED LOG| 0| 0| 0

7 rows selected.

Bom ai está o DG está sendo utilizado 70% porém apenas com flashback logs, ai vai a dica, como o oracle deleta automaticamente quando necessita de espaço que tal abaixarmos o parâmetro db_recovery_file_dest_size para ver se deleta realmente, então vamos lá abri 2 sessões 1 que abaixarei o tamanho e outra para acompanhar o alert log do banco, irei abaixar para 40G esta area pois estava com 300g, segue:

SYS@ > alter system set db_recovery_file_dest_size = 40G;

System altered.

Olhando o alert para ver se registra alguma coisa estava esperando “estourou a área de archive”, porém eu percebi que começou a deletar os flashback logs automaticamente, segue:

Thu Jan 17 08:31:08 2013
Deleted Oracle managed file +DG_FRA/wabrazil01/flashback/log_345.1282.785386025
Deleted Oracle managed file +DG_FRA/wabrazil01/flashback/log_346.1260.785386075
Deleted Oracle managed file +DG_FRA/wabrazil01/flashback/log_347.1200.785386367
Deleted Oracle managed file +DG_FRA/wabrazil01/flashback/log_348.1106.785386849
Deleted Oracle managed file +DG_FRA/wabrazil01/flashback/log_349.1040.785387709
Deleted Oracle managed file +DG_FRA/wabrazil01/flashback/log_17.361.784306923

Olhando novamente após uns 2min com este tamanho a area, verificado que abaixou o consumo e a quantidade de arquivos de flashback logs, segue:

SYS@ > select * from v$recovery_area_usage;

FILE_TYPE |PERCENT_SPACE_USED|PERCENT_SPACE_RECLAIMABLE|NUMBER_OF_FILES
——————–|——————|————————-|—————
CONTROL FILE | .05| 0| 1
REDO LOG | 0| 0| 0
ARCHIVED LOG | 0| 0| 0
BACKUP PIECE | 0| 0| 0
IMAGE COPY | 0| 0| 0
FLASHBACK LOG | 99.6| 17.49| 205
FOREIGN ARCHIVED LOG| 0| 0| 0

7 rows selected.

Bom logo eu alterei o parametro db_recovery_file_dest_size para 300G de volta, para não ter problemas, segue:

SYS@ > alter system set db_recovery_file_dest_size = 300g;

System altered.

SYS@ > select * from v$recovery_area_usage;

FILE_TYPE |PERCENT_SPACE_USED|PERCENT_SPACE_RECLAIMABLE|NUMBER_OF_FILES
——————–|——————|————————-|—————
CONTROL FILE | .01| 0| 1
REDO LOG | 0| 0| 0
ARCHIVED LOG | .04| 0| 1
BACKUP PIECE | 0| 0| 0
IMAGE COPY | 0| 0| 0
FLASHBACK LOG | 11.6| .65| 179
FOREIGN ARCHIVED LOG| 0| 0| 0

7 rows selected.

Bom é isso. Abraço!