RMAN DUPLICATE创建DataGuard物理备库

Oracle推荐使用rman来创建物理备库,可以在不影响主库的情况下,轻松完成物理备库的创建。

这里只记叙物理备库与主库位于不用的主机,并且数据库的目录结构一致的情况,这应该也是Dataguard环境比较常见的部署方式,这种方式也比较简单。

系统运行环境为windows 2003 server 64bits + oracle 10g 10.2.0.4 64bits。

一、创建物理备库实例(物理备库端)

1、安装oracle 10g

只安装软件,不创建数据库。

2、创建实例

CMD>oradim -new -sid orcl
此处指定的实例名为orcl,同时会创建系统服务OracleServiceorcl和OracleJobSchedulerorcl

3、创建standby的初始化参数文件

从主库创建pfile根据物理备库的实际情况进行相应修改即可

主库端执行:
SQL>create pfile='d:\INITorcl.ora' from spfile;

将生成的INITorcl.ora拷贝到物理备机的$ORACLE_HOME/database目录下,并做相应修改,参见Oracle 10g DataGuard手记之基础配置

然后通过针对standby修改的INITorcl.ora为物理备库生成spfile

备库端执行:
CMD>sqlplus / as sysdba;
SQL>create spfile from pfile; //也可以指定pfile的详细位置pfile='/path/to/pfile',此处使用的默认位置和默认文件名

4、创建物理备库密码文件

备库必须通过Oracle NEt并以SYSDBA权限访问,因此密码文件是必须的,因为不能使用OS认证。

备库端执行:
CMD>orapwd file=PWDorcl.ora password=yourpasswd
这会在备库的$ORACLE_HOME/database目录下生成密码文件PWDorcl.ora

5、启动备库到nomount

备库端:
CMD>sqlplus / as sysdba;
SQL>startup nomount
因为此时尚没有控制文件和数据文件,因此只能启动到nomount状态

这是可能会有错误提示:
ORA-02778: Name given for the log directory is invalid
这是因为dump文件存储路径尚未建立,根据你参数文件的设置建立相关的dump路径,这里建立了这几个路径
E:\oracle\product\10.2.0\admin\orcl\{adump,bdump,cdump,udump}

然后再执行
SQL>startup nomount
还有可能会有错误提示:
ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated
ORA-01263: Name given for file destination directory is invalid
OSD-04018: Unable to access the specified directory or device.
O/S-Error: (OS 2) 系统找不到指定的文件。
这是因为参数db_recovery_file_dest指向的路径没有建立起来,这里根据参数文件创建目录
E:\oracle\product\10.2.0\flash_recovery_area

6、配置监听文件,创建监听服务
可以从主库拷贝$ORACLE_HOME/NETWORK/ADMIN/目录下的文件tnsname.ora,listener.ora,sqlnet.ora到备库相同的位置,并作相应的修改,特别要注意主机名部分。
只安装默认没有创建监听服务,lsnrctl命令可以在没有监听服务时自动创建监听服务

备库端:
CMD>lsnrctl
LSNRCTL> status
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12541: TNS:no listener
TNS-12560: TNS:protocol adapter error
TNS-00511: No listener
64-bit Windows Error: 61: Unknown error
启动监听:
LSNRCTL> start
Starting tnslsnr: please wait...

Failed to open service , error 1060.
TNSLSNR for 64-bit Windows: Version 10.2.0.4.0 - Production
Log messages written to E:\oracle\product\10.2.0\db_1\network\log\listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localdb)(PORT=1521)))

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 10.2.0.4.0 - Production
Start Date 07-AUG-2012 15:32:42
Uptime 0 days 0 hr. 0 min. 7 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Log File E:\oracle\product\10.2.0\db_1\network\log\listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localdb)(PORT=1521)))
The listener supports no services
The command completed successfully
这样会建立起tns监听系统服务OracleOraDb10g_home1TNSListener

二、RMAN全备主库并为备库生成控制文件

1、对主库执行全备份
RMAN正常全备主库,可以使用也可以不使用恢复目录,最重要一点,在物理备库上要可以以相同的路径访问到主库的全备份。可以在备库上建立相同的备份文件存放路径,然后通过ftp等方式将主库全备份拷贝至备库主机相同位置。也可以使用NFS等网络路径,这样可以避免在主备库之间拷贝全备份。

2、创建物理备库控制文件

有多种方式为物理备库生成控制文件。

  • 备份主库时同时为备库生成控制文件

    通过使用INCLUDE CURRENT CONTROLFILE FOR STANDBY语句,可以在备份集中生成备库的控制文件,类似如下:

    RMAN>BACKUP DATABASE FORMAT 'D:\RMAN\bak_%U'
    INCLUDE CURRENT CONTROLFILE FOR STANDBY
    PLUS ARCHIVELOG FORMAT 'D:\RMAN\ARC_%U';

  • 使用RMAN COPY命令

    RMAN>COPY CURRENT CONTROLFILE FOR STANDBY TO 'D:\RMAN\sby_control01.ctl';

  • 使用alter database语句

    sqlplus登录主库端执行
    SQL>alter database create standby controlfile as 'd:\rman\control01.ctl';
    然后rman连接target(主库)和恢复目录, 如果使用的话,然后执行

    RMAN>CATALOG CONTROLFILECOPY 'd:\rman\control01.ctl';
    这样RMAN就知道去那里找物理备库的控制文件了。

三、创建物理备库

1、用RMAN连接主库、物理备库和恢复目录,使用target关键字连接主库,使用auxiliary关键字连接待创建的物理备库,catalog关键字连接恢复目录数据库
$ rman target sys/passwd@primarydb auxiliary sys/passwd@standbydb catalog user/passwd@catalogdb
然后执行
rman>duplicate target database for standby nofilenamecheck;
因为是异机相同目录结构复制到备库,所以必须指定参数nofilenamecheck,不然rman会晕菜。这里也没有指定dorecover选项,不进行日志恢复,物理备库创建完成后打开日志恢复自然就可以同步到主库一致的状态了。

备库创建完成后rman将其置于mounted状态。

2、创建备库时并不会将主库的online redo log files和standby redo log files拷贝到备库,但是控制文件中包含了这些信息。

"因为在备份前主库创建了standby redo log,备库是根据主库的信息创建的,一开始它是包含了主库的standby redo log信息,如果主库设置的日志传送方式是LGWR,当主库发生日志切换时,备库的RFS会尝试使用standby redo log来存储主库传送过来的日志,因为此时备库实际上是不存在standby redo log的,所以备库会报错。当备库尝试打开字典信息的所有standby redo log失败以后,备库会自动把日志传送方式转为ARCN,并同时清除数据字典中的standby redo log信息。"参见DG使用中遇到的几个错误

因此如果需要开启实时redo apply的话,需要手动提前添加standby redo log文件,如下:
备库端:
SQL>alter database add standby logfile group 4 ('E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\STDBYREDO01.LOG') size 50M;
Database altered.
SQL>alter database add standby logfile group 5 ('E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\STDBYREDO02.LOG') size 50M;
Database altered.
SQL>alter database add standby logfile group 6 ('E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\STDBYREDO03.LOG') size 50M;
Database altered.
SQL>alter database add standby logfile group 7 ('E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\STDBYREDO04.LOG') size 50M;
Database altered.

然后就可以打开realtime redo apply了,如下打开实时日志应用:
备库端:
SQL>ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;

3、此时会后台日志文件中会报如下错误

ORA-19527: physical standby redo log must be renamed

物理standby并不需要在线redo日志,因为其并不以读写方式打开。但当物理standby要switch over成为主库时是必须要使用在线redo log的,在switch over之前,oracle会清除online redo log文件,为了加快switch over进度,oracle会在开启日志应用之时提前将物理standby的online redo log文件clear。oracle为了防止意外清除了主库的online redo log文件,即使物理standby与主库不在同一台主机上,只要其路径相同则必须明确的设置log_file_name_convert参数,这样才能避免此错误提示。
因此可以通过alter system set log_file_name_convert更改此参数设置或者在备库初始化文件中添加此参数并重新生成spfile启动数据库

pfile中添加:
*.log_file_name_convert='E:\oracle\product\10.2.0\oradata\orcl\redo01.log','E:\oracle\product\10.2.0\oradata\orcl\redo01.log','E:\oracle\product\10.2.0\oradata\orcl\redo02.log','E:\oracle\product\10.2.0\oradata\orcl\redo02.log','E:\oracle\product\10.2.0\oradata\orcl\redo03.log','E:\oracle\product\10.2.0\oradata\orcl\redo03.log'

4、检查下两边的日志同步情况
SQL>select sequence# from $archived_log where applied='YES';

物理备库创建完成。

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

转载于:http://blog.itpub.net/23490154/viewspace-1062149/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值