SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY WITH APPLY
若是standby处于 Read Only 模式下则
重启dataguard
首先关闭primary database
关闭standby database
打开standby database到mount状态
SQL>alter database mount standby database;
SQL> alter database rename file '/u01/app/oracle/oradata/dsg/DSG_DG/datafile/o1_mf_secooler_cgdphhp1_.dbf'
2 to '/u01/app/oracle/oradata/dsg/o1_mf_secooler_cgdphhp1_.dbf';
FILE# NAME
---------- ---------------------------------------------------------------------
1 /u01/app/oracle/oradata/dsg/system.263.896387105
2 /u01/app/oracle/oradata/dsg/sysaux.268.896387107
3 /u01/app/oracle/oradata/dsg/undotbs1.267.896387107
4 /u01/app/oracle/oradata/dsg/users.266.896387107
5 /u01/app/oracle/oradata/dsg/example.259.896387567
6 /u01/app/oracle/oradata/dsg/undotbs2.258.896388663
7 /u01/app/oracle/oradata/dsg/o1_mf_secooler_cgdphhp1_.dbf
7 rows selected.
SQL> alter database open;
Database altered.
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
若是standby 处于mount 模式下
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
MOUNTED
SQL> alter database recover managed standby database cancel;
Database altered.
SQL> select file#,name from v$datafile;
FILE# NAME
---------- ---------------------------------------------------------------------
1 /u01/app/oracle/oradata/dsg/system.263.896387105
2 /u01/app/oracle/oradata/dsg/sysaux.268.896387107
3 /u01/app/oracle/oradata/dsg/undotbs1.267.896387107
4 /u01/app/oracle/oradata/dsg/users.266.896387107
5 /u01/app/oracle/oradata/dsg/example.259.896387567
6 /u01/app/oracle/oradata/dsg/undotbs2.258.896388663
7 /u01/app/oracle/oradata/dsg/o1_mf_secooler_cgdphhp1_.dbf
SQL> alter database rename file '/u01/app/oracle/oradata/dsg/o1_mf_secooler_cgdphhp1_.dbf' to '/u01/app/oracle/oradata/dsg/secooler01.dbf';
Database altered.
SQL> alter database open;
Database altered.
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
SQL> select file#,name from v$datafile;
FILE# NAME
---------- ---------------------------------------------------------------------
1 /u01/app/oracle/oradata/dsg/system.263.896387105
2 /u01/app/oracle/oradata/dsg/sysaux.268.896387107
3 /u01/app/oracle/oradata/dsg/undotbs1.267.896387107
4 /u01/app/oracle/oradata/dsg/users.266.896387107
5 /u01/app/oracle/oradata/dsg/example.259.896387567
6 /u01/app/oracle/oradata/dsg/undotbs2.258.896388663
7 /u01/app/oracle/oradata/dsg/secooler01.dbf
7 rows selected.
SQL>
至此standby database的数据文件迁移完毕
多说一句
SQL> alter tablespace SECOOLER_TBS offline;
alter tablespace SECOOLER_TBS offline
*
ERROR at line 1:
ORA-01109: database not open
SQL> alter database datafile 7 offline;
alter database datafile 7 offline
*
ERROR at line 1:
ORA-01156: recovery or flashback in progress may need access to files
数据库不是read write状态不能用离线表空间或者离线数据文件的方式