删掉dg备库中的unamed000*** 文件

在某客户那看到一个unamed0005的文件,当时不知道怎么出现的,想删掉

今天做另一个实验发现意外模拟了这个unamed文件

环境是11gr2 dataguard 单机对单机

备库参数如下

SQL> show parameter db_file


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_file_multiblock_read_count        integer     128
db_file_name_convert                 string      /oradata/wfta/, /oradata/wfta/
db_files                             integer     200
SQL>  show parameter db_create_file_dest


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string
SQL> show parameter standby_file_management


NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
standby_file_management              string      MANUAL

主库创建数据文件

SQL> create tablespace test datafile '/rmanbackup/test01.dbf' size 10m;

因为db_create_file_dest 为空,所以备库未能找到创建相应文件的 位置,又因为standby_file_management 为manual,所以备库未能创建相应文件,当时备库在active dataguard模式下,所以在$ORACLE_HOME下生成了一个unamed文件,实际也未生成,只是控制文件中有个记录。

备库显示如下

SQL> select name from v$datafile;


NAME
--------------------------------------------------------------------------------
/oradata/wfta/system01.dbf
/oradata/wfta/sysaux01.dbf
/oradata/wfta/undotbs01.dbf
/oradata/wfta/users01.dbf
/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00005


这个UNNAMED00005文件实际是不存在的,所以rename是不行的。

只能考虑删掉

取消mrphuifu 

SQL>alter database recover managed standby database cancel;

此时数据库是mount

SQL> drop tablespace test including contents and datafiles;
drop tablespace test including contents and datafiles
*
ERROR at line 1:
ORA-01109: database not open


报错,需要打开数据库



SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-10458: standby database requires recovery
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01111: name for data file 5 is unknown - rename to correct file
ORA-01110: data file 5:
'/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00005'

打开失败需要恢复。

这种情况下,如何从数据库里删除这个文件,毕竟它还不存在。

其实很简单

数据库在maount模式下,standby_file_management 为manual

SQL>alter database datafile 5 offline drop;

database alerted

不过此时你查询select name from v$datafile;

那个文件依然存在

查询select name from v$tablespace;表空间test依然存在。

这时候我也不知道怎么办了,灰心了,关机

第二天我开机后发现

select name from v$datafile;

这个文件没了
select name from v$tablespace
表空间也没了
不知道不重启,只是shutdown  imm会不会有效果。

此时启动日志应用
recover managed standby database using current logfile;
报错
SQL> alter database recover managed standby database using current logfile;
alter database recover managed standby database using current logfile
*
ERROR at line 1:
ORA-00283: recovery session canceled due to errors
ORA-01111: name for data file 5 is unknown - rename to correct file
ORA-01110: data file 5:
'/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00005'
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01111: name for data file 5 is unknown - rename to correct file
ORA-01110: data file 5:
'/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00005'
再执行一遍删除
SQL> alter database datafile 5 offline drop;


Database altered.
此时查询进程,发现没有MP0进程,有个MR(fg)进程
SQL> SELECT  PROCESS, STATUS,THREAD#,SEQUENCE#,BLOCK#,BLOCKS, DELAY_MINS FROM V$MANAGED_STANDBY; 


PROCESS   STATUS          THREAD#  SEQUENCE#     BLOCK#     BLOCKS DELAY_MINS
--------- ------------ ---------- ---------- ---------- ---------- ----------
ARCH      CONNECTED             0          0          0          0          0
ARCH      CONNECTED             0          0          0          0          0
ARCH      CLOSING               1         26      12288       1371          0
ARCH      CLOSING               1         44          1          6          0
MR(fg)    APPLYING_LOG          1         33          6      76168          0
RFS       IDLE                  0          0          0          0          0
RFS       IDLE                  0          0          0          0          0
RFS       IDLE                  0          0          0          0          0
RFS       WRITING               1         45       1342          1          0

检查日志发现,备库应用日志后控制文件又生成了原来的信息
Managed Standby Recovery starting Real Time Apply
Parallel Media Recovery started with 2 slaves
Warning: Datafile 5 (/rmanbackup/test01.dbf) is offline during full database recovery and will not be recovered
Media Recovery Log /arch/1_26_919583723.dbf
Recovery deleting file #5:'/u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00005' from controlfile.
Deleted file /u01/app/oracle/product/11.2.0/dbhome_1/dbs/UNNAMED00005
Recovery dropped tablespace 'TEST'
此时关掉备库,重新启动后查询进程就有mp0进程了。关键那个mr(fg)是什么进程。

SQL> SELECT  PROCESS, STATUS,THREAD#,SEQUENCE#,BLOCK#,BLOCKS, DELAY_MINS FROM V$MANAGED_STANDBY;


PROCESS   STATUS          THREAD#  SEQUENCE#     BLOCK#     BLOCKS DELAY_MINS
--------- ------------ ---------- ---------- ---------- ---------- ----------
ARCH      CONNECTED             0          0          0          0          0
ARCH      CONNECTED             0          0          0          0          0
ARCH      CONNECTED             0          0          0          0          0
ARCH      CLOSING               1         45       4096        845          0
RFS       IDLE                  0          0          0          0          0
RFS       IDLE                  1         46        253          4          0
RFS       IDLE                  0          0          0          0          0
MRP0      APPLYING_LOG          1         46        256     102400          0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值