创建10g Data Guard(物理standby)

1、对primary database的配置
1)将数据库置于archivelog、force logging模式
SQL> archive log list
数据库日志模式            存档模式
自动存档             启用
存档终点            USE_DB_RECOVERY_FILE_DEST
最早的联机日志序列     7
下一个存档日志序列   9
当前日志序列           9
SQL> select force_logging from v$database;

FOR
---
YES

2)最好将主库也配置为可以接收redo日志,即配置standby redo log,在必要时,可以快速地将主库切换为备库(本次暂不配置)

3)修改主库的参数文件(主库是orcl,备库是orcldg)
db_name=orcl --主库和备库的db_name是相同的,但是有不同的db_unique_name
db_unique_name=orcl

log_archive_config='dg_config=(ORCL,ORCLDG)' --设置成data guard环境中所有数据库的db_unique_name

control_files='E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL','E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL','E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL'

log_archive_dest_1='location=E:\oracle\product\10.2.0\arch valid_for=(all_logfiles,all_roles) db_unique_name=ORCL'
log_archive_dest_2='service=7502 async valid_for=(online_logfiles,primary_role) db_unique_name=ORCLDG'
(
db_unique_name的意思目前不太理解,现在就理解为需要将它设置为location或service对应的数据库的db_unique_name;
valid_for中的第一个参数有三个值:all_logfiles/online_logfile/standby_logfile
valid_for中的第二个参数有三个值:all_roles/primary_role/standby_role
比如log_archive_dest_2中valid_for=(online_logfiles,primary_role)表示log_archive_dest_2这个参数仅在当前实例为primary_role,且归档的是online redo log,而非standby redo log时有效。
)
log_archive_dest_state_1=enable
log_archive_dest_state_2=enable

log_archive_format='ARC%S_%R.%T'  --%T:thread number;%S:sequence number;%R:resetlogs id
remote_login_passwordfile='EXCLUSIVE'

这些参数只是跟data guard相关的primary database的参数,其他像trace所在目录等都还是需要根据实际情况修改的。

根据上述修改pfile参数,并创建spfile,启动主库,确认各参数都是对的

2、使用RMAN连接到主库,创建主库数据文件的镜像副本(联机创建),并拷贝到备库上
rman target sys/oracle@7501 nocatalog
RMAN> backup as copy db_file_name_convert=('E:\oracle\product\10.2.0\oradata\ORCL\','E:\oracle\product\10.2.0\oradata\ORCLDG\') database;
启动 backup 于 2014-03-03 15:43:28
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00002 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
输出文件名 = E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\UNDOTBS01.DBF 标记 = TAG20140303T154328 recid = 15 时间戳 = 841247048
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:45
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00001 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
输出文件名 = E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\SYSTEM01.DBF 标记 = TAG20140303T154328 recid = 16 时间戳 = 841247079
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:35
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00003 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
输出文件名 = E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\SYSAUX01.DBF 标记 = TAG20140303T154328 recid = 17 时间戳 = 841247124
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:45
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00005 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
输出文件名 = E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\EXAMPLE01.DBF 标记 = TAG20140303T154328 recid = 18 时间戳 = 841247138
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:07
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00004 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
输出文件名 = E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\USERS01.DBF 标记 = TAG20140303T154328 recid = 19 时间戳 = 841247144
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:07
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00006 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TTS01.DBF
输出文件名 = E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\TTS01.DBF 标记 = TAG20140303T154328 recid = 20 时间戳 = 841247149
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
通道 ORA_DISK_1: 启动数据文件副本
输入数据文件 fno=00007 name=E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TS01.DBF
输出文件名 = E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\TS01.DBF 标记 = TAG20140303T154328 recid = 21 时间戳 = 841247150
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
通道 ORA_DISK_1: 启动数据文件副本
复制当前控制文件
输出文件名 = E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\CONTROLFILE\O1_MF_TAG20140303T154328_9K8DSGNJ_.CTL 标记 = 

TAG20140303T154328 recid = 22
 时间戳 = 841247151
通道 ORA_DISK_1: 数据文件复制完毕, 经过时间: 00:00:01
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
在备份集中包含当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 2014-03-03 15:45:52
通道 ORA_DISK_1: 已完成段 1 于 2014-03-03 15:45:53
段句柄=E:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2014_03_03\O1_MF_NNSNF_TAG20140303T154328_9K8DSJPY_.BKP 标记=TAG20140303T154328 注
释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:02
完成 backup 于 2014-03-03 15:45:53

--通过这个参数db_file_name_convert的转换,直接把数据文件的镜像副本放到E:\oracle\product\10.2.0\oradata\ORCLDG\(这个是存放备库数据文件的路径)下了,这样就省略了拷贝的过程

3、在主库上为备库创建控制文件(联机创建),并拷贝到备库上
alter database create standby controlfile as 'c:\control01dg.ctl';
并手工拷贝2份control02dg.ctl、control03dg.ctl,然后把control01dg.ctl、control02dg.ctl、control01dg.ctl移动到E:\oracle\product\10.2.0\oradata\ORCLDG下

4、为备库创建一个初始化参数文件,可从主库创建而来create pfile from spfile,修改后,拷贝到备库上
db_name=orcl --db_name与主库一致
db_unique_name=orcldg --db_unique_name区别于主库

log_archive_config='dg_config=(ORCL,ORCLDG)' 

control_files='E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\CONTROL01DG.CTL','E:\ORACLE\PRODUCT\10.2.0

\ORADATA\ORCLDG\CONTROL02DG.CTL','E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\CONTROL03DG.CTL' 

log_archive_dest_1='location=E:\oracle\product\10.2.0\arch2 valid_for=(all_logfiles,all_roles) db_unique_name=ORCLDG' --这个参数设置的是从主库接收过来的redo日志产生的归档存放路径
log_archive_dest_2='service=7501 async valid_for=(online_logfiles,primary_role) db_unique_name=ORCL' --这个参数目前是忽略的,因为只有在primary_role的情况下才生效,现在是standby_role

log_archive_dest_state_1=enable
log_archive_dest_state_2=enable

log_archive_format='ARC%S_%R.%T'

remote_login_passwordfile='EXCLUSIVE'

fal_server=7501 --如果备库归档日志有缺失的话,将从fal_server指定的库取过来

db_file_name_convert='E:\oracle\product\10.2.0\oradata\ORCL\','E:\oracle\product\10.2.0\oradata\ORCLDG\' --前面是主库的数据文件的路径,后面是备库的数据文件的路径,因为我们会将主库的数据文件拷贝到备库的相关路径下,但是oracle并不知道啊,我们就需要这个方式来通知他

log_file_name_convert='E:\oracle\product\10.2.0\oradata\ORCL\','E:\oracle\product\10.2.0\oradata\ORCLDG\' --主备库联机重做日志文件的路径切换

standby_file_management=auto --设置为auto表示,在主库上添加和删除数据文件后,备库上将会有相应的变化

确保主库和备库上COMPATIBLE参数是一致的,如果不一致的话,可能会导致redo不能正常传送

5、备库的口令文件必须与主库的口令文件一致,可直接拷贝过去,以后如果主库的口令文件有任何变化的话,都需要重新拷贝

6、如果备库是在window上,先创建一个oracle服务
oradim -new -sid orcldg -startmode manual

7、为备库配置一个监听,并配置本地网络服务名,确保主库和备库之间网络是互通的
listener.ora : --为主库和配置都配置了静态注册
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (ORACLE_HOME = E:\oracle\product\10.2.0\db_1)
      (SID_NAME = PLSExtProc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL1)
      (ORACLE_HOME = E:\oracle\product\10.2.0\db_1)
      (SID_NAME = ORCL)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = ORCLDG1)
      (ORACLE_HOME = E:\oracle\product\10.2.0\db_1)
      (SID_NAME = ORCLDG)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.75)(PORT = 1521))
  )

tnsnames.ora如下:
7501 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.75)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL1)
    )
  )

7502 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.75)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCLDG1)
    )
  )

8、根据上述的初始化参数文件为备库创建spfile,启动standby database到mount状态

9、为备库创建standby redo log(oracle建议备库的standby redo log与主库上的redo log都是同一个大小,并且备库上的日志组数比主库上的日志组数多一组)

主库上有3个日志组,每组中有一个日志文件,每个日志文件的大小为50M,现为备库创建4个standby redo日志组

alter database add standby logfile 'E:\oracle\product\10.2.0\oradata\ORCLDG\DGREDO01.log' size 50M;--不指定日志组号,都会作为新增的日志组
alter database add standby logfile 'E:\oracle\product\10.2.0\oradata\ORCLDG\DGREDO02.log' size 50M;
alter database add standby logfile 'E:\oracle\product\10.2.0\oradata\ORCLDG\DGREDO03.log' size 50M;
alter database add standby logfile 'E:\oracle\product\10.2.0\oradata\ORCLDG\DGREDO04.log' size 50M;

SQL> select t.group#,t.thread#,t.sequence#,t.bytes,t.status from v$log t;--这些是从主库中转换过来的联机重组日志,备库磁盘上并没有创建相应的联机重组日志
 
    GROUP#    THREAD#  SEQUENCE#      BYTES STATUS
---------- ---------- ---------- ---------- ----------------
         1          1          8   52428800 INACTIVE
         3          1          7   52428800 INACTIVE
         2          1          9   52428800 CURRENT
 
SQL> select t.group#,t.status,t.type,t.member from v$logfile t;--包含online redo log和standby redo log的信息
 
    GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- --------------------------------------------------------------------------------
         3         ONLINE  E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\REDO03.LOG
         2         ONLINE  E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\REDO02.LOG
         1         ONLINE  E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\REDO01.LOG
         4         STANDBY E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\DGREDO01.LOG
         5         STANDBY E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\DGREDO02.LOG
         6         STANDBY E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\DGREDO03.LOG
         7         STANDBY E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\DGREDO04.LOG
 
7 rows selected
 
SQL> select t.group#,t.dbid,t.thread#,t.sequence#,t.bytes,t.status from v$standby_log t;--新创建的standby redo log相关信息
 
    GROUP# DBID                                        THREAD#  SEQUENCE#      BYTES STATUS
---------- ---------------------------------------- ---------- ---------- ---------- ----------
         4 UNASSIGNED                                        0          0   52428800 UNASSIGNED
         5 UNASSIGNED                                        0          0   52428800 UNASSIGNED
         6 UNASSIGNED                                        0          0   52428800 UNASSIGNED
         7 UNASSIGNED                                        0          0   52428800 UNASSIGNED

11、为备库创建online redo log,虽然这步是可选的,但是最好创建一下,这样备库就可以在必要时迅速转换为主库,而最好在主库上也创建standby redo log(本次暂不考虑)

12、开始redo应用
alter database recover managed standby database using current logfile disconnect from session;
--disconnect from session表示运行在后台
--using current logfile表示实时应用

13、验证刚创建的物理standby是否能正常运作
主库上往表中插入一些记录,提交,切换日志,可在主库(E:\oracle\product\10.2.0\arch)和备库(E:\oracle\product\10.2.0\arch2)上看到都产生了归档日志,可在备库的v$archived_log查看是否有相应的记录,根据applied字段查看是否已应用。
可暂时停止备库的recover操作:alter database recover managed standby database cancel;打开备库,查看主库上的变更是否已经同步到备库上。



参考资料:
oracle联机文档:Oracle Data Guard Concepts and Administration.pdf
三思笔记:一步一步学DataGuard

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

转载于:http://blog.itpub.net/26524307/viewspace-1101045/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值