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

    xiaoxiao2026-08-10  7

    在某客户那看到一个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
    转载请注明原文地址: https://ju.6miu.com/read-1311046.html
    最新回复(0)