ITPub博客

首页 > Linux操作系统 > Linux操作系统 > DG环境下重新构建物理备库oracle12C

DG环境下重新构建物理备库oracle12C

原创 Linux操作系统 作者:jasperjohn 时间:2013-09-22 11:08:56 0 删除 编辑
# ----------------------------------------------------------------------------
#
#  File:   rebuildstandby.txt
#  Creation Date:  20/8/13
#  Last Modified:  20/8/13
#  Purpose:恢复物理备库
#
# ----------------------------------------------------------------------------

主库:192.168.10.52
备库:192.168.10.53
改变备库为物理备库:
***备库操作:
sqlplus / as sysdba
sql>shutdown immediate;
删除所有的控制文件和数据文件

rm -rf /u01/app/oracle/oradata/orcl/*

##下面对primary库(192.168.10.53)做一个全备


/*注意rman 时候,必须把主库启动到mount状态(alter database open;)进行备份!(否则恢复到备库报错:ora-16009)*/


new-svn-> rman target sys/orcl@prim

恢复管理器: Release 12.1.0.1.0 - Production on 星期二 8月 20 09:41:25 2013

Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

已连接到目标数据库: ORCL (DBID=1349930489, 未打开)

RMAN> backup full database format='/u01/oracle/fulldatabase_%U%d' include current controlfile for standby;

然后把备份集scp到standby库:
new-svn-> scp /u01/oracle/full* 192.168.10.53:/u01/oracle/

启动备份库到nomount状态

ora1-> sqlplus sys/orcl@stby as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on 星期一 8月 19 22:25:02 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

已连接到空闲例程。

SQL> startup pfile='$ORACLE_HOME/dbs/initstby.ora' nomount force
ORACLE 例程已经启动。

Total System Global Area  835104768 bytes
Fixed Size                  2293880 bytes
Variable Size             683675528 bytes
Database Buffers          142606336 bytes
Redo Buffers                6529024 bytes
SQL> exit

方法1:在primary库利用RMAN创建standby数据库(内部测试采用这个方法)


new-svn-> rman target sys/orcl@prim

恢复管理器: Release 12.1.0.1.0 - Production on 星期二 8月 20 09:50:15 2013

Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

已连接到目标数据库: ORCL (DBID=1349930489, 未打开)

RMAN> connect auxiliary sys/orcl@stby;

已连接到辅助数据库: ORCL (未装载)


RMAN> duplicate target database for standby nofilenamecheck;

启动 Duplicate Db 于 2013-08-20 09:51:05
使用目标数据库控制文件替代恢复目录
分配的通道: ORA_AUX_DISK_1
通道 ORA_AUX_DISK_1: SID=178 设备类型=DISK

内存脚本的内容:
{
   restore clone standby controlfile;
}
正在执行内存脚本

启动 restore 于 2013-08-20 09:51:06
使用通道 ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
通道 ORA_AUX_DISK_1: 正在还原控制文件
通道 ORA_AUX_DISK_1: 正在读取备份片段 /u01/oracle/rman/c-1349930489-20130820-00
通道 ORA_AUX_DISK_1: ORA-19870: 还原备份片段 /u01/oracle/rman/c-1349930489-20130820-00 时出错
ORA-19505: 无法识别文件"/u01/oracle/rman/c-1349930489-20130820-00"
ORA-27037: 无法获得文件状态
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

故障转移到上一个备份

通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
通道 ORA_AUX_DISK_1: 正在还原控制文件
通道 ORA_AUX_DISK_1: 正在读取备份片段 /u01/oracle/fulldatabase_2gohoq53_1_1ORCL
通道 ORA_AUX_DISK_1: 段句柄 = /u01/oracle/fulldatabase_2gohoq53_1_1ORCL 标记 = TAG20130820T094223
通道 ORA_AUX_DISK_1: 已还原备份片段 1
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:00:03
输出文件名=/u01/app/oracle/oradata/orcl/control01.ctl
输出文件名=/u01/app/oracle/fast_recovery_area/orcl/control02.ctl
完成 restore 于 2013-08-20 09:51:10

内存脚本的内容:
{
   sql clone 'alter database mount standby database';
}
正在执行内存脚本

sql 语句: alter database mount standby database

内存脚本的内容:
{
   set newname for tempfile  1 to
 "/u01/app/oracle/oradata/orcl/temp01.dbf";
   set newname for tempfile  2 to
 "/u01/app/oracle/product/12c/dbs/test_tmp1";
   switch clone tempfile all;
   set newname for datafile  1 to
 "/u01/app/oracle/oradata/orcl/system01.dbf";
   set newname for datafile  2 to
 "/u01/app/oracle/oradata/orcl/tab_test1.dbf";
   set newname for datafile  3 to
 "/u01/app/oracle/oradata/orcl/sysaux01.dbf";
   set newname for datafile  4 to
 "/u01/app/oracle/oradata/orcl/undotbs01.dbf";
   set newname for datafile  5 to
 "/u01/app/oracle/oradata/orcl/tab_test2.dbf";
   set newname for datafile  6 to
 "/u01/app/oracle/oradata/orcl/users01.dbf";
   set newname for datafile  7 to
 "/u01/app/oracle/oradata/system02.dbf";
   set newname for datafile  8 to
 "/u01/app/oracle/oradata/orcl/aningtbs1.dbf";
   set newname for datafile  9 to
 "/u01/app/oracle/oradata/orcl/aningtbs2.dbf";
   restore
   clone database
   ;
}
正在执行内存脚本

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

临时文件 1 在控制文件中已重命名为 /u01/app/oracle/oradata/orcl/temp01.dbf
临时文件 2 在控制文件中已重命名为 /u01/app/oracle/product/12c/dbs/test_tmp1

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

正在执行命令: SET NEWNAME

启动 restore 于 2013-08-20 09:51:18
使用通道 ORA_AUX_DISK_1

通道 ORA_AUX_DISK_1: 正在开始还原数据文件备份集
通道 ORA_AUX_DISK_1: 正在指定从备份集还原的数据文件
通道 ORA_AUX_DISK_1: 将数据文件 00001 还原到 /u01/app/oracle/oradata/orcl/system01.dbf
通道 ORA_AUX_DISK_1: 将数据文件 00002 还原到 /u01/app/oracle/oradata/orcl/tab_test1.dbf
通道 ORA_AUX_DISK_1: 将数据文件 00003 还原到 /u01/app/oracle/oradata/orcl/sysaux01.dbf
通道 ORA_AUX_DISK_1: 将数据文件 00004 还原到 /u01/app/oracle/oradata/orcl/undotbs01.dbf
通道 ORA_AUX_DISK_1: 将数据文件 00005 还原到 /u01/app/oracle/oradata/orcl/tab_test2.dbf
通道 ORA_AUX_DISK_1: 将数据文件 00006 还原到 /u01/app/oracle/oradata/orcl/users01.dbf
通道 ORA_AUX_DISK_1: 将数据文件 00007 还原到 /u01/app/oracle/oradata/system02.dbf
通道 ORA_AUX_DISK_1: 将数据文件 00008 还原到 /u01/app/oracle/oradata/orcl/aningtbs1.dbf
通道 ORA_AUX_DISK_1: 将数据文件 00009 还原到 /u01/app/oracle/oradata/orcl/aningtbs2.dbf
通道 ORA_AUX_DISK_1: 正在读取备份片段 /u01/oracle/fulldatabase_2fohoq3v_1_1ORCL
通道 ORA_AUX_DISK_1: 段句柄 = /u01/oracle/fulldatabase_2fohoq3v_1_1ORCL 标记 = TAG20130820T094223
通道 ORA_AUX_DISK_1: 已还原备份片段 1
通道 ORA_AUX_DISK_1: 还原完成, 用时: 00:04:03
完成 restore 于 2013-08-20 09:55:04

内存脚本的内容:
{
   switch clone datafile all;
}
正在执行内存脚本

数据文件 1 已转换成数据文件副本
输入数据文件副本 RECID=1 STAMP=823905123 文件名=/u01/app/oracle/oradata/orcl/system01.dbf
数据文件 2 已转换成数据文件副本
输入数据文件副本 RECID=2 STAMP=823905124 文件名=/u01/app/oracle/oradata/orcl/tab_test1.dbf
数据文件 3 已转换成数据文件副本
输入数据文件副本 RECID=3 STAMP=823905124 文件名=/u01/app/oracle/oradata/orcl/sysaux01.dbf
数据文件 4 已转换成数据文件副本
输入数据文件副本 RECID=4 STAMP=823905124 文件名=/u01/app/oracle/oradata/orcl/undotbs01.dbf
数据文件 5 已转换成数据文件副本
输入数据文件副本 RECID=5 STAMP=823905124 文件名=/u01/app/oracle/oradata/orcl/tab_test2.dbf
数据文件 6 已转换成数据文件副本
输入数据文件副本 RECID=6 STAMP=823905124 文件名=/u01/app/oracle/oradata/orcl/users01.dbf
数据文件 7 已转换成数据文件副本
输入数据文件副本 RECID=7 STAMP=823905125 文件名=/u01/app/oracle/oradata/system02.dbf
数据文件 8 已转换成数据文件副本
输入数据文件副本 RECID=8 STAMP=823905125 文件名=/u01/app/oracle/oradata/orcl/aningtbs1.dbf
数据文件 9 已转换成数据文件副本
输入数据文件副本 RECID=9 STAMP=823905125 文件名=/u01/app/oracle/oradata/orcl/aningtbs2.dbf
完成 Duplicate Db 于 2013-08-20 09:55:36

RMAN>


方法2:(建议采用此方法)
##########################################################333
--在备库上进行操作
ora1-> rman target sys/orcl@stby

恢复管理器: Release 12.1.0.1.0 - Production on 星期一 8月 19 22:35:01 2013

Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

已连接到目标数据库: ORCL (DBID=1349930489, 未打开)--可以从连接信息看到是同时连到主和备(注意此时主库为open状态,备库为nomount状态)

RMAN> connect auxiliary sys/orcl@prim;
RMAN> duplicate target database for standby nofilenamecheck;

--把拷过来的备份(全备和控制文件备份)进行恢复,如果两个库路径一致,就可以加上nofilenamecheck

ora1-> sqlplus sys/orcl@stby as sysdba

SQL*Plus: Release 12.1.0.1.0 Production on 星期一 8月 19 22:37:08 2013

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


连接到:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> recover managed standby database disconnect from session;
完成介质恢复。                        --这句话是打开日志传递应用功能
SQL> recover managed standby database using current logfile disconnect from session;--物理备用库恢复进程(实时)(证明实际进程已经启动)
ORA-01153: 激活了不兼容的介质恢复
SQL> alter database recover managed standby database using current logfile;  --这句话的意思是把物理备库redo实时应用打开!(证明实际进程已经启动)
alter database recover managed standby database using current logfile
*
第 1 行出现错误:
ORA-01153: 激活了不兼容的介质恢复  

######################可以通过下面的语句去查询,实际已经启动归档进程

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

PROCESS            STATUS                      THREAD#  SEQUENCE#     BLOCK#
------------------ ------------------------ ---------- ---------- ----------
    BLOCKS
----------
ARCH               CONNECTED                         0          0          0
         0

ARCH               CONNECTED                         0          0          0
         0

ARCH               CONNECTED                         0          0          0
         0


PROCESS            STATUS                      THREAD#  SEQUENCE#     BLOCK#
------------------ ------------------------ ---------- ---------- ----------
    BLOCKS
----------
ARCH               CONNECTED                         0          0          0
         0

MRP0               WAIT_FOR_LOG                      1        128          0
         0
#######################################################################

在主库上查询动态视图
SQL> col DEST_NAME  for a24
SQL> col STATUS for a24
SQL> col ERROR for a24
SQL> select process,status from v$managed_standby;

PROCESS            STATUS
------------------ ------------------------
ARCH               CONNECTED
ARCH               CONNECTED
ARCH               CONNECTED
ARCH               CONNECTED
#################################################################
测试:

在主库上建一个表空间:

SQL> create tablespace t2 datafile '/u01/app/oracle/oradata/orcl/t2.dbf' size 20m autoextend off;

表空间已创建。

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/tab_test1.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/tab_test2.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/system02.dbf
/u01/app/oracle/oradata/orcl/aningtbs1.dbf
/u01/app/oracle/oradata/orcl/aningtbs2.dbf
/u01/app/oracle/oradata/orcl/t2.dbf

已选择 10 行。

备库查询:
SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/tab_test1.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/tab_test2.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/system02.dbf
/u01/app/oracle/oradata/orcl/aningtbs1.dbf
/u01/app/oracle/oradata/orcl/aningtbs2.dbf
/u01/app/oracle/oradata/orcl/t2.dbf

已选择 10 行。
主库查看当前归档日志号:
SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            /u01/oracle/arch/orcl
最早的联机日志序列     127
下一个存档日志序列   129
当前日志序列           129
SQL>
备库查看当前归档日志号:
SQL> archive log list;
数据库日志模式            存档模式
自动存档             启用
存档终点            /u01/oracle/arch/stby
最早的联机日志序列     0
下一个存档日志序列   0
当前日志序列           129
查看当前的归档日志序列号是否跟着变动,并且和主库一致;如果是,表明成功!
查看主备库当前已规档最大线程号及取得当前数据库各线程已归档文件最大序号,如果primary 与standby 最大序号不相同,
必须将多出的序号对应的归档文件复制到待转换的standby服务器。
主库:
删除刚才建的测试表空间:
SQL>drop tablespace t2;

备库以只读方式打开:
SQL> startup pfile='$ORACLE_HOME/dbs/initstby.ora' force;
ORACLE 例程已经启动。

Total System Global Area  835104768 bytes
Fixed Size                  2293880 bytes
Variable Size             683675528 bytes
Database Buffers          142606336 bytes
Redo Buffers                6529024 bytes
数据库装载完毕。
数据库已经打开。
SQL>
查看打开方式:
SQL> select open_mode from v$database;

OPEN_MODE
----------------------------------------
READ ONLY

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14661773/viewspace-772953/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-04-18

  • 博文量
    45
  • 访问量
    160328