在某客户那看到一个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;
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'
Database altered.
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
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'
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