由于磁盘空间太满,一下子删除过多的归档.导致将未applied日志一并删除.造成standby与primary无法同步.结果只能重建standby.在论坛里参考各位高人的意见,总的有两种方法可以进行重建:1、利用rman重建.2、常规建法.考虑到自身磁盘空间的问题:无法容下一个rman备份集和及其恢复出的数据文件,故利用后者方法重建.前者方法有人说可以一个数据文件一个数据文件实现,还没测试过.后续有机会一并贴上.
详细步骤:
1.在primary生成standby的控制文件.
[oracle@q1wip01 ~]$sqlplus "sys/as sysdba"
SQL>select name from v$datafile; (获得下步创建standby控制文件存放的路径)
SQL>alter database create standby controlfile as '/.../.../stdcotrl.ctl';
SQL>SHOW PARAMETER spfile; (如果结果value列返回空值,那么说明你在使用pfile)
SQL>create pfile from spfile;
SQL>!
[oracle@q1wip01 ~]$cd $ORACLE_HOME/dbs
[oracle@q1wip01 ~]$ls (可以看到standby需要的pfile及口令文件)
2.删除现有standby中的所有.dbf数据文件.
3.ftp primary中的所有.dbf数据文件及1生成的控制文件.
cd /q1wip01/oradata
ftp 10.70.0.3
bin
cd /q1wip01/oradata
mput *.dbf
put stdcotrl.ctl
bye
以oracle用户登入10.70.0.3
cd /q1wip01/oradata
复制stdcotrl.ctl成三个crontrol.ctl
4.启动standby.
SQL>startup nomount
SQL>alter database mount standby database;
SQL>alter database recover managed standby database disconnect from session;
5.测试standby是否成功.
在主库上
SQL>alter system switch logfile;
在从库上
SQL>select sequence#,applied from v$archived_log;
详细步骤:
1.在primary生成standby的控制文件.
[oracle@q1wip01 ~]$sqlplus "sys/as sysdba"
SQL>select name from v$datafile; (获得下步创建standby控制文件存放的路径)
SQL>alter database create standby controlfile as '/.../.../stdcotrl.ctl';
SQL>SHOW PARAMETER spfile; (如果结果value列返回空值,那么说明你在使用pfile)
SQL>create pfile from spfile;
SQL>!
[oracle@q1wip01 ~]$cd $ORACLE_HOME/dbs
[oracle@q1wip01 ~]$ls (可以看到standby需要的pfile及口令文件)
2.删除现有standby中的所有.dbf数据文件.
3.ftp primary中的所有.dbf数据文件及1生成的控制文件.
cd /q1wip01/oradata
ftp 10.70.0.3
bin
cd /q1wip01/oradata
mput *.dbf
put stdcotrl.ctl
bye
以oracle用户登入10.70.0.3
cd /q1wip01/oradata
复制stdcotrl.ctl成三个crontrol.ctl
4.启动standby.
SQL>startup nomount
SQL>alter database mount standby database;
SQL>alter database recover managed standby database disconnect from session;
5.测试standby是否成功.
在主库上
SQL>alter system switch logfile;
在从库上
SQL>select sequence#,applied from v$archived_log;