处理DG库自动建立文件失败的问题

一.问题描述
检查DG库alert log时,提示ORA-01119和ORA-01274建立文件失败的错误,发下:
ARC3: Archive log rejected (thread 1 sequence 17927) at host 'fdc1'
FAL[server, ARC3]: FAL archive failed, see trace file.
ARCH: FAL archive failed. Archiver continuing
ORACLE Instance dgfdc - Archival Error. Archiver continuing.
Wed Dec 27 15:19:26 2017
Errors in file /fdcapp/orafc/diag/rdbms/dgfdc/dgfdc/trace/dgfdc_pr00_15251.trc:
ORA-01119: error in creating database file '+fdcDG1'
ORA-17502: ksfdcre:4 Failed to create file +fdcDG1
ORA-15001: diskgroup "fdcDG1" does not exist or is not mounted
ORA-15077: could not locate ASM instance serving a required diskgroup
ORA-29701: unable to connect to Cluster Synchronization Service
File #25 added to control file as 'UNNAMED00025'.
Originally created as:
'+fdcDG1/fdc/datafile/blobs03.dbf'
Recovery was unable to create the file as a new OMF file.
MRP0: Background Media Recovery terminated with error 1274
Errors in file /fdcapp/orafc/diag/rdbms/dgfdc/dgfdc/trace/dgfdc_pr00_15251.trc:
ORA-01274: cannot add datafile '+fdcDG1/fdc/datafile/blobs03.dbf' - file could not be created
二.问题分析
从上面报错来看,是DG库在自动增加数据文件时发生问题,且数据文件是建立在'+fdcDG1'位置,很明显想到DG库是用文件系统存放的数据文件,不是ASM。
先查看DG库的数据文件vonvert转换参数如下,db_file_name_convert参数有设置正确。
SQL> show parameter convert    
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string      +fdcDG1/fdc/datafile, /dc
                                                 data/dgfdc/datafile1, +dc
                                                 DG2/fdc/datafile, /fdcda
                                                 ta/dgfdc/datafile2
log_file_name_convert                string      +REDODG1/fdc/onlinelog, /dc
                                                 data/dgfdc/logfile1, +dc
                                                 2/fdc/onlinelog, /fdcda
                                                 ta/dgfdc/logfile2
报错提示数据文件建立在ASM磁盘组中,与db_create_file_dest有关,查看如下:
SQL> show parameter db_create_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      +fdcDG1
那问题发生的原因就确认为db_create_file_dest参数错误设置引起。
三.问题解决
先将DG库参数db_create_file_dest重设为空:
alter system reset db_create_file_dest scope=spfile;
需重启才生效。
查到生产主库查到共有两建立两个数据文件,而DG库中没有正常建立成功,需要先解决新增加的数据文件在主备库的同步问题。
查看备库:
set line 1000
set pagesize 1000
col name for a60
col status for a20
select file#,name ,status from v$datafile where status='RECOVER';
SQL> select file#,name ,status from v$datafile where status='RECOVER';


     FILE# NAME                                                         STATUS
---------- ------------------------------------------------------------ --------------------
        25 /fdcapp/orafc/11.2.0/dbs/UNNAMED00025                     RECOVER


查看主库:
set line 1000
set pagesize 1000
col name for a60
col status for a20
select file#,name ,status from v$datafile where file#=25;
SQL> select file#,name ,status from v$datafile where file#=25;


     FILE# NAME                                                         STATUS
---------- ------------------------------------------------------------ --------------------
        25 +fdcDG1/fdc/datafile/blobs03.dbf                         ONLINE

备库上执行操作:
recover managed standby database cancel;
alter system set standby_file_management='manual';
备库上手工增加正确的数据文件:
alter database create datafile '/fdcapp/orafc/11.2.0/dbs/UNNAMED00025' as '/fdcdata/dgfdc/datafile1/blobs03.dbf';  
备库上执行操作:
alter system set standby_file_management='auto';
recover managed standby database disconnect from session;
查看备库中新加数据文件状态:
SQL> select file#,name ,status from v$datafile where status='RECOVER';

25 /fdcdata/dgfdc/datafile1/blobs03.dbf                     RECOVER
26 /fdcapp/orafc/11.2.0/dbs/UNNAMED00026                     RECOVER
file 26的数据文件需要重复上面步骤:
主库上查看:
SQL> set line 1000
SQL> set pagesize 1000
SQL> col name for a60
SQL> col status for a20
SQL> select file#,name ,status from v$datafile where file#=26;

     FILE# NAME                                                         STATUS
---------- ------------------------------------------------------------ --------------------
        26 +fdcDG1/fdc/datafile/indx03.dbf                          ONLINE
备库上执行操作:
recover managed standby database cancel;
alter system set standby_file_management='manual';
alter database create datafile '/fdcapp/orafc/11.2.0/dbs/UNNAMED00026' as '/fdcdata/dgfdc/datafile1/indx03.dbf';  
alter system set standby_file_management='auto';
recover managed standby database disconnect from session;                                            
重启DG库:
recover managed standby database cancel;
shutdown immediate;
startup;
recover managed standby database disconnect from session;








你可能感兴趣的:(oracle)