ORA-19502: Write Error on File - Resolvendo o problema
Autor: Emerson | Publicado: 2013-03-30T08:49:00-07:00


Olá pessoal.

Hoje irei falar sobre um erro "ORA" que recebi durante um backup full para migração de um servidor para outro em um cliente.Os nomes dos datafiles e outros arquivos foram alterados para garantir a confidencialidade do ambiente do cliente.

O processo era simples migrar uma base de dados em NOARCHIVELOG para outro servidor usando o Recovery Manager.


ORA-19502: write error on file "C:\U01\APP\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\02O4LT5M_1_1", block number 783744 (block size=8192)

Segue &nbsp;saída&nbsp;de LOG do &nbsp;RMAN:




Recovery Manager: Release 11.2.0.2.0 - Production on Sat Mar 16 12:44:23 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates. &nbsp;All rights reserved.

connected to target database: PROD (DBID=190803984, not open)
using target database control file instead of recovery catalog

RMAN&gt; shutdown immediate;
2&gt; startup mount;
3&gt; &nbsp;
4&gt; RUN {
5&gt; ALLOCATE CHANNEL ch00 TYPE disk ;
6&gt; BACKUP database SKIP INACCESSIBLE&nbsp;
7&gt; TAG cold_db_bk_level0&nbsp;
8&gt; FILESPERSET 5
9&gt; # recommended format
10&gt; FORMAT 'F:\PROD\backupset\cold_bk_%s_%p_%t' DATABASE tag = 'FULL-DB';
11&gt; RELEASE CHANNEL ch00;
12&gt; ALLOCATE CHANNEL ch00 TYPE disk;
13&gt; BACKUP
14&gt; # recommended format
15&gt; FORMAT 'F:\PROD\backupset\cold_cntrl_%s_%p_%t' CURRENT CONTROLFILE tag='CTRF';
16&gt; RELEASE CHANNEL ch00;
17&gt; }
18&gt;&nbsp;
19&gt; alter database open;
20&gt;&nbsp;
database dismounted
Oracle instance shut down

connected to target database (not started)
Oracle instance started
database mounted

Total System Global Area &nbsp; &nbsp;4476211200 bytes

Fixed Size &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2260512 bytes
Variable Size &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 3422552544 bytes
Database Buffers &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1040187392 bytes
Redo Buffers &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;11210752 bytes

allocated channel: ch00
channel ch00: SID=1878 device type=DISK

Starting backup at 16-MAR-2013 12:44:37
channel ch00: starting full datafile backup set
channel ch00: specifying datafile(s) in backup set
input datafile file number=00001 name=C:\U02\APP\ORACLE\ORADATA\PROD\SYSTEM01.DBF
input datafile file number=00006 name=C:\U02\APP\ORACLE\ORADATA\PROD\DADOS01.DBF
input datafile file number=00007 name=C:\U02\APP\ORACLE\ORADATA\PROD\INDICES01.DBF
input datafile file number=00014 name=C:\U02\APP\ORACLE\ORADATA\PROD\DADOS02.DBF
input datafile file number=00015 name=C:\U02\APP\ORACLE\ORADATA\PROD\SYSTEM02.DBF
input datafile file number=00012 name=C:\U02\APP\ORACLE\ORADATA\PROD\HML01.DBF
input datafile file number=00005 name=C:\U02\APP\ORACLE\ORADATA\PROD\AUXDADOS.DBF
input datafile file number=00019 name=C:\U01\APP\ORACLE\ORADATA\PROD\DADOS05.DBF
input datafile file number=00020 name=C:\U02\APP\ORACLE\ORADATA\PROD\DADOS04.DBF
input datafile file number=00021 name=C:\U02\APP\ORACLE\ORADATA\PROD\DADOS03.DBF
input datafile file number=00016 name=C:\U02\APP\ORACLE\ORADATA\PROD\INDICES02.DBF
input datafile file number=00003 name=C:\U02\APP\ORACLE\ORADATA\PROD\UNDOTBS01.DBF
input datafile file number=00002 name=C:\U02\APP\ORACLE\ORADATA\PROD\SYSAUX01.DBF
input datafile file number=00017 name=C:\U02\APP\ORACLE\ORADATA\PROD\INDICES03.DBF
input datafile file number=00018 name=C:\U02\APP\ORACLE\ORADATA\PROD\INDICES04.DBF
input datafile file number=00008 name=C:\U02\APP\ORACLE\ORADATA\PROD\DEVDADOS.DBF
input datafile file number=00011 name=C:\U02\APP\ORACLE\ORADATA\PROD\SAMINDICES01.DBF
input datafile file number=00009 name=C:\U02\APP\ORACLE\ORADATA\PROD\DEVINDICES01.DBF
input datafile file number=00010 name=C:\U02\APP\ORACLE\ORADATA\PROD\HMLDADOS01.DBF
input datafile file number=00013 name=C:\U02\APP\ORACLE\ORADATA\PROD\PSI_MEGA.DBF
input datafile file number=00004 name=C:\U02\APP\ORACLE\ORADATA\PROD\USERS01.DBF
input datafile file number=00022 name=C:\U01\APP\ORACLE\ORADATA\PROD\DADOS06.DBF
input datafile file number=00023 name=C:\U02\APP\ORACLE\ORADATA\PROD\DADOS07.DBF
input datafile file number=00024 name=C:\U02\APP\ORACLE\ORADATA\PROD\DADOS08.DBF

channel ch00: starting piece 1 at 16-MAR-2013 12:44:38
released channel: ch00
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ch00 channel at 03/16/2013 12:47:43
ORA-19502: write error on file "C:\U01\APP\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\02O4LT5M_1_1", block number 783744 (block size=8192)
ORA-27070: async read/write failed
OSD-04016: Erro ao enfileirar uma solicitação de E/S assíncrona.
O/S-Error: (OS 112) Espaço insuficiente no disco.

Recovery Manager complete.



Esta informação sobre ORA-19502 no início não ajudou muito a esclarecer a causa inicial do erro, pois aparentemente era um erro de gravação em um arquivo de saída que deveria ser escrito em outro local e não no onde o erro informava, inclusive já as permissões necessárias.
Analisei se o script acima estava algo setado para o local onde o erro apontava, mas o formato onde deveria ser efetivado o backup do RMAN estava correto.

Mesmo assim ficou incapacitado de escrever e o comando do RMAN falhou.Verifiquei ainda se o erro era uma suposição de que o parâmetro padrão local foi criado, mas esta hipótese não era verdade.

Dando uma "googlada" verifiquei que não tinha setado parametro algum para o canal setado no script nas configurações do RMAN, ou seja estavam todos como DEFAULT

Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation. &nbsp;All rights reserved.

C:\Users\Administrator&gt;rman target /

Gerenciador de RecuperaþÒo: Release 11.2.0.2.0 - Production on Sßb Mar 30 11:48:13 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates. &nbsp;All rights reserved.

conectado ao banco de dados de destino: PRODUCAO (DBID=190803984)

RMAN&gt; show all;

usar o arquivo de controle do banco de dados de destino em vez do catßlogo de recuperaþÒo
Os parÔmetros de configuraþÒo de RMAN para o banco de dados com db_unique_name PRODUCAO sÒo:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:\ORACLE\PRODUCT\11.2.0\DBHOME_1\DATABASE\SNCFPRODUCAO.ORA'; # default

RMAN&gt;

Definirdo um padrão de emissão de um comando corrigiu o problema neste caso e o backup foi efetuado normalmente.

configure channel 1 device type disk format F:\PROD\backupset\backup_%U';

Então pessoal por hoje é só.


Emerson Martins
DBA Oracle
OCA 11g

Referências:
https://forums.oracle.com/forums/thread.jspa?threadID=897852
http://www.dba-oracle.com/t_ora_19502_write_error_on_file_blockno_where_blocksize_equals.htm