实测创建 Oracle 12C Dataguard

Oracle 12C Dataguard
环境:centOS 6.4 64bit   oracle 12C 12.1.0.1.0 - 64bit
主库:10.168.9.52   sid=bbc  db_unique_name=bbc
备库:10.168.9.53   sid=bbc  db_unique_name=abc

主库配置:
1.数据库修改为归档模式   查看:archive log list;
2.参数log_archive_start已经过时,不需要设置,设置后启动数据库会报 ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance(有过时或废弃的参数被使用指定)  但是不影响使用
 alter system reset log_archive_start 取消该参数设置
3.数据库开启强制日志功能,即所有操作都产生日志,以便将主库所有的操作全部传给备库使用 : alter database force logging; select name,force_logging from v$database;
4.确认当主库添加或删除数据文件时,备库也做同样的的操作:
Alter system set standby_file_management=’AUTO’;
5.确认参数 remote_login_passwordfile 为exclusive 或shared 使用密码文件做验证 此参数默认为exclusive,如果不是,请修改
Alter system set remote_login_passwordfile =exclusive scope=spfile;
6.设置db_unique_name 通常主库该值和SID一直,如没有该值,请设置:
Alter system set db_unique_name=bbc scope=spfile;
7.开启闪回功能:可以使数据库闪回到以前的某一点,可以使主库闪回到故障前,然后将其转换为备库。如果没有闪回,就必须重建库。
Alter system set db_recovey_file_dest=’快速回复区目录’ 闪回区位置
Alter system set db_recovey_file_dest_size=’300G’; 闪回区大小
Alter database flashback on ;
Select flashback_on from v$database ;
8.配置主备库的监听,使两台服务器可以相互通信:
主库修改listener.ora文件 动态静态监听都要配置 (备库启动后是在mount状态下,不能自动注册监听,需要静态监听 修改后监听需要重启)
SID_LIST_LISTENER=
   (SID_LIST=
    (SID_DESC=
       (GLOBAL_DBNAME=orcl65)
       (SID_NAME=orcl65)
       (ORACLE_HOME=/18_app/12c/db_base/db_home/)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.18)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
主库tnsnames.ora文件:
ORCL65 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.18)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl65)
    )
  )


ORCL66 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.19)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl66)
    )
  )
备库修改listener.ora 动态静态监听都要配置 修改后监听需要重启
SID_LIST_LISTENER=
   (SID_LIST=
    (SID_DESC=
       (GLOBAL_DBNAME=orcl66)
       (SID_NAME=orcl66)
       (ORACLE_HOME=/19_app/12c/db_base/db_home/)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.19)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
备库tnsnames.ora文件:
ORCL65 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.18)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl65)
    )
  )


ORCL66 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.19)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl66)
    )
  )
~         
9.修改归档位置:
Alter system set log_archive_dest_1=’location=/u01/app/archive/archive_bbc_loc/ valid_for=(all_logfiles,all_roles) db_unique_name=bbc ’
指定归档位置用于所有角色所有数据库的日志文件且db_unique_name=bbc包括将来主转为备后的备用日志文件(注意不是在线日志文件,是主库用日志写进程直接传过来并保存到standby_log中的日志文件),并且如果想在备库进行备份同时备归档日志的话,必须使用all_logfiles
Alter system set log_archive_dest_10=’service=abc arch valid_for=(online_logfiles,primary_role) db_unique_name=abc’;
语句意思是:如果这是主库,就使用服务名为abc 传输在线归档日志到目标库abc (这里使用的是归档进程同步传输的,还有其他的模式 )
不要配置standby_archive_dest参数,官方已经弃用,可能会报错

部分参数说明:online_logfiles(在线日志) satandby_logfiles(备用日志) all_logfiles(所有日志) primary_role(主库角色) standby_role(备库角色) all_roles(所有角色)


10.设置参数fal_server 是指传输出现问题后,备库到哪里去找缺少的归档日志 参数fal_client在11G已经弃用,不用设置了
Alter system set fal_server = ‘abc’;
11. 打开主库的dataguard 开关:

;
备库设置
1.创建备库必要的目录,最少要建立主库所有数据文件的目录,$db_base/fast_recovery_area/bbc/所有目录, $db_base/oradata/bbc/所有目录,$db_base/admin/bbc/adump
2.停主库:在mount下生成pfile  create pfile from spfile
生成备库控制文件 alter database create standby controlfile as ‘/路径/文件名’;
并且将新生成的参数文件,控制文件,密码文件,所有数据文件,日志文件全部拷贝到备库的响应目录下(我也不想停库啊之前也用rman 恢复过,备库不能open read only,报有数据文件需要恢复,搞不定啊—问题解决,后面有笔记)
给参数文件和密码文件改名
3.修改参数文件:将部分bbc修为abc,其中db_name=‘bbc’和dispatchers='(PROTOCOL=TCP) (SERVICE=bbcXDB)不用修改,
修改所有路径为备库的路径
如果数据文件路径有修改需要添加参数db_file_name_convert=‘原路径1’,‘新路径1’,‘原路径2’,‘新路径2’,‘原路径3’,‘新路径3’  所有不一样的数据文件路径都要添加,要成对出现
log_file_name_convert=‘原路径1’,‘新路径1’,‘原路径2’,‘新路径2’,‘原路径3’,‘新路径3’  所有不一样的日志文件路径都要添加,要成对出现
添加 db_unique_name='abc'
4.生成spfile 重新启动备库监听,启动备库到mount, 重新启动主库监听,启动主库(并确保都是使用的spfile)
备库启动恢复模式:alter database recover managed standby database disconnect from session
备库关闭恢复模式: alter database recover managed standby database cancel;
备库只读模式打开数据库:alter database open read only;
备库启动恢复模式:alter database recover managed standby database disconnect from session;
SQL> select log_mode,open_mode ,protection_mode, database_role from v$database;
LOG_MODE     OPEN_MODE                  PROTECTION_MODE      DATABASE_ROLE
------------ -------------------- -------------------- ----------------
ARCHIVELOG   READ ONLY WITH APPLY MAXIMUM PERFORMANCE  PHYSICAL STANDBY


至此,初步的dataguard 创建完成,测试以及模式转换待续

备库用主库rman 备份恢复:
1.创建备库必要的目录,最少要建立主库所有数据文件的目录,$db_base/fast_recovery_area/bbc/所有目录, $db_base/oradata/bbc/所有目录,$db_base/admin/bbc/adump

(/19_app/12c/db_base/fast_recovery_area/orcl66)
(/19_app/12c/db_base/fast_recovery_area/ORCL66/四个文件夹 archivelog,autobackup,flashback, onlinelog)
(/19_app/12c/db_base/oradata/orcl66/两个文件夹orcl_pdb1,pdbseed)
(/19_app/12c/db_base/admin/orcl66/adump)
2.configure channel device type disk format '/home/oracle/rmanbk/%d_%I_%s_%p_%T.bkp';修改备份路径和名字
3.在主库用rman备份:backup as compressed backupset database include current controlfile for standby plus archivelog; 在主库生成pfile ,并将主库的备份,pfile,口令文件 一起拷贝到备库相同的文件夹下。
4.将pfile,口令文件改名并拷贝到dbs下,修改参数文件
注意参数文件中的参数: MEMORY_TARGET(将其注释掉, 会报ORA-00845错误,主库的内存设置不一定适合从库)  启动备库到nomount
5.在主库登陆rman:rman target / auxiliary sys/bbcBBC2014@ccb
(在备库做:rman target sys/bbcBBC2014@bbc auxiliary sys/bbcBBC2014@ccb)
  duplicate target database for standby
6.起动备库到mount 并open read only
7.开启恢复模式:alter database recover managed standby database   disconnect from session;
8.查看模式及级别:SQL> select log_mode,open_mode ,protection_mode, database_role from v$database;
LOG_MODE     OPEN_MODE                  PROTECTION_MODE      DATABASE_ROLE
------------ -------------------- -------------------- ----------------
ARCHIVELOG   READ ONLY WITH APPLY MAXIMUM PERFORMANCE  PHYSICAL STANDBY
测试数据,正常!



添加另一个新的DG:
主库添加修改:Alter system set log_archive_config ='dg_config=(orcl65,orcl66,orcl67)';
alter system set log_archive_dest_9='service=orcl67 lgwr sync affirm valid_for=(online_logfiles,primary_role) db_unique_name=orcl67';
从库按之前操作
从库可以是新库,也可以没有库,没有库也要添加两个监听文件!!!
标签: 暂无标签
zhou0037

写了  篇文章,拥有财富 ,被  人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P4 | 发表于 2016-12-15 11:04:33
学习……谢谢分享
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈