环境(备库只需要安装数据库软件):
主库:192.168.1.100        OS: CentOS 7.3 X64        DB:    ORACLE12.2.0.1        SID: ORA12C        db_unique_name: ORA12C
备库:192.168.1.101        OS: CentOS 7.3 X64        DB:    ORACLE12.2.0.1        SID: ORA12C        db_unique_name: ORA12CDG 

1.设置主库为强制归档模式:
(1)SQL> alter database force logging;

Database altered.

SQL> select name,force_logging from v$database;

NAME                        FORCE_LOG
--------------------------- ---------
ORA12C                      YES

(2)如果在主库添加或者删除数据文件时,这些文件也需要在备份添加或删除,需要如下设置:
SQL> alter system set STANDBY_FILE_MANAGEMENT='AUTO' scope=spfile;
默认此参数是MANUAL手工方式,此方式在添加或者删除数据文件时会导致日志无法应用。SQL> show parameter STANDBY_FILE;

2.创建standby log files(备用日志文件)
  从库使用standby log files来保存从主库接收到的重做日志。既然主要是从库在使用,那为什么需要在主库上也建立standby log files?原因主要是主库可能转换为备库,而备库是需要有standby log files的。建立standby如要注意以下几点:
  <1>standby log files的大小和redo log files一样。
查询redo log files文件大小:
SQL> select group#,thread#,archived,status, bytes/1024/1024 from v$log;

GROUP#    THREAD# ARC STATUS           BYTES/1024/1024
   ---------- ---------- --- ---------------- ---------------
         1          1 YES INACTIVE                     200
         2          1 NO  CURRENT                      200
         3          1 YES INACTIVE                     200

<2>一般而言, standbyredo 日志文件组数要比 primary 数据库的 online redo 日志文件组数至少多一个。
SQL> select member from v$logfile;
SQL> alter database add standby logfile thread 1 group 11 '/oracle/oradata/ORA12C/stdby11.log' size 200m;
SQL> alter database add standby logfile thread 1 group 12 '/oracle/oradata/ORA12C/stdby12.log' size 200m;
SQL> alter database add standby logfile thread 1 group 13 '/oracle/oradata/ORA12C/stdby13.log' size 200m;
SQL> alter database add standby logfile thread 1 group 14 '/oracle/oradata/ORA12C/stdby14.log' size 200m;

3.密码文件创建传输
(1)一般数据库默认就有密码文件,存放为$ORACLE_HOME/dbs/orapwSID  这里为orapwORA12C
如果没有则手动创建:
[oracle@ora12c ~]$ orapwd file=$ORACLE_HOME/dbs/orapwORA12C password=ccdadmin
(2)检查REMOTE_LOGIN_PASSWORDFILE值是否为 EXCLUSIVE
SQL> show parameter REMOTE_LOGIN_PASSWORDFILE
如果值不是EXCLUSIVE,则:alter system set remote_login_passwordfile=exclusive scope=spfile;
(3)将密码文件复制到备库
[oracle@ora12c ~]$ scp $ORACLE_HOME/dbs/orapwORA12C oracle@192.168.1.101:/oracle/orahome/dbs/

4.db_name和db_unique_name
默认db_name和db_unique_name和实例名是一致的,这里是ORA12C,需要注意在DG中主库和从库的db_unique_name是不能一致的,需要区分开。这里我们设置主库的db_unique_name为ORA12C,从库为ORA12CDG
SQL> show parameter db_unique_name;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_unique_name                       string      ORA12C

设置:SQL> alter system set db_unique_name=ORA12C SCOPE=SPFILE;
--注意:虽然默认db_unique_name和db_name是一致的,但是需要显式设置,否则在spfile中没有此参数

5.开启flashback
SQL> select flashback_on from v$database;
SQL> alter database flashback on;
如果碰到 ORA-01153 报错,一定是在备库进行此操作。需要先取消重做日志应用,启用闪回日志,然后重新启用日志应用。
在主库启用flashback,不会同步备库也启用,必须手动在主库和备库上均启用flashback。

6.配置监听及tnsnames.ora
主库监听:
[oracle@ora12c ~]$ cd $ORACLE_HOME/network/admin
[oracle@ora12c admin]$ more listener.ora
SID_LIST_PRIM =
(SID_LIST =
  (SID_DESC =
  (GLOBAL_DBNAME = ORA12C)
  (ORACLE_HOME = /oracle/orahome)
  (SID_NAME = ORA12C)
  )
)

PRIM =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    )

备库监听:
[oracle@ora12cdg admin]$ more listener.ora
SID_LIST_STDBY =
(SID_LIST =
  (SID_DESC =
  (GLOBAL_DBNAME = ORA12C)
  (ORACLE_HOME = /oracle/orahome)
  (SID_NAME = ORA12C)
  )
)

STDBY =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
    )

主库tnsnames.ora(备库和主库一样):
[oracle@ora12c ~]$ cd $ORACLE_HOME/network/admin
[oracle@ora12c admin]$ more tnsnames.ora
ORA12C =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = ORA12C)
    )
  )

ORA12CDG =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = ORA12C)
    )
  )

7.重做日志传输配置
(1)配置归档日志路径:
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /oracle/archive
Oldest online log sequence     56
Next log sequence to archive   58
Current log sequence           58

SQL> alter system set log_archive_dest_1='LOCATION=/oracle/archive valid_for=(all_logfiles,all_roles) db_unique_name=ORA12C' scope=spfile;
SQL> alter system set log_archive_dest_state_1='enable' scope=spfile;
官方文档里说使用 valid_for=(online_logfiles, all_roles) 将导致备库无法归档备用日志文件,因为它们不是在线日志。使用all_logfiles选项,主备库将都能归档在线以及备用日志。如果想在备库进行备份,并同时备份归档日志的话,必须使用all_logfiles

(2)配置重做日志到备份库:
SQL> alter system set log_archive_dest_2='SERVICE=ORA12CDG lgwr sync affirm valid_for=(online_logfile,primary_role) db_unique_name=ORA12CDG';
SQL> alter system set log_archive_dest_state_2='enable' scope=spfile;

(3)设置db_file_name_convert和log_file_name_conver参数:
SQL> alter system set log_file_name_convert='/oracle/archive','/oracle/archive' scope=spfile;
SQL> alter system set db_file_name_convert='/oracle/oradata/ORA12C','/oracle/oradata/ORA12C' scope=spfile;
如果主备库的目录结构不一样,或者主备库在同一台服务器上,则必须要设置db_file_name_convert和log_file_name_conver参数来进行数据文件和联机日志的保存路径的转换。

(4)STANDBY_ARCHIVE_DEST 参数不再需要,已经被官方弃用。

8.配置FAL_SERVER
这个参数指定当日志传输出现问题时,备库到哪里去找缺少的归档日志。它用在备库接收的到的重做日志间有缺口的时候。这种情况会发生在日志传输出现中断时,比如你需要对备库进行维护操作。在备库维护期间,没有日志传输过来,这时缺口就出现了。设置了这个参数,备库就会主动去寻找那些缺少的日志,并要求主库进行传输。
在主库:fal_server=从库
从库上就反过来:fal_server=主库
SQL> alter system set FAL_SERVER='ORA12CDG';

注意:FAL_CLIENT在11g中已经废弃,虽然可以配置但是已经不起作用了。

9.Data Guard 配置里的另外一个库的名字
SQL> alter system set log_archive_config = 'dg_config=(ORA12C,ORA12CDG)';

10.在备库创建所需要的目录以放置数据文件、控制文件和跟踪文件等
[oracle@ora12cdg ~]$ cd /oracle/
[oracle@ora12cdg oracle]$ mkdir admin archive fast_recovery_area
[oracle@ora12cdg oracle]$ cd admin/
[oracle@ora12cdg admin]$ mkdir ORA12C
[oracle@ora12cdg admin]$ cd ORA12C/
[oracle@ora12cdg ORA12C]$ mkdir adump dpdump pfile
[oracle@ora12cdg ORA12C]$ cd /oracle/fast_recovery_area/
[oracle@ora12cdg fast_recovery_area]$ mkdir ORA12C

11.主库生成pfile (initORA12C.ora),并传输到备库进行修改
SQL> create pfile from spfile;
[oracle@ora12c ~]$ scp /oracle/orahome/dbs/initORA12C.ora oracle@192.168.1.101:/oracle/orahome/dbs/

主库pfile:
[oracle@ora12c dbs]$ more initORA12C.ora
ORA12C.__data_transfer_cache_size=0
ORA12C.__db_cache_size=2298478592
ORA12C.__inmemory_ext_roarea=0
ORA12C.__inmemory_ext_rwarea=0
ORA12C.__java_pool_size=16777216
ORA12C.__large_pool_size=83886080
ORA12C.__oracle_base='/oracle'#ORACLE_BASE set from environment
ORA12C.__pga_aggregate_target=1056964608
ORA12C.__sga_target=3154116608
ORA12C.__shared_io_pool_size=167772160
ORA12C.__shared_pool_size=570425344
ORA12C.__streams_pool_size=0
*.audit_file_dest='/oracle/admin/ORA12C/adump'
*.audit_trail='db'
*.compatible='12.2.0'
*.control_files='/oracle/oradata/ORA12C/control01.ctl','/oracle/fast_recovery_area/ORA12C/control02.ctl'
*.db_block_size=8192
*.db_file_name_convert='/oracle/oradata/ORA12C','/oracle/oradata/ORA12C'
*.db_name='ORA12C'    #数据库的名字,在整个DG的所有主、备库都应一致
*.db_recovery_file_dest='/oracle/fast_recovery_area/ORA12C'
*.db_recovery_file_dest_size=8016m
*.db_unique_name='ORA12C'
*.diagnostic_dest='/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=ORA12CXDB)'
*.fal_server='ORA12CDG'
*.log_archive_config='dg_config=(ORA12C,ORA12CDG)'
*.log_archive_dest_1='LOCATION=/oracle/archive valid_for=(all_logfiles,all_roles) db_unique_name=ORA12C'
*.log_archive_dest_2='SERVICE=ORA12CDG lgwr sync affirm valid_for=(online_logfile,primary_role) db_unique_name=ORA12CDG'
*.log_archive_dest_state_1='enable'
*.log_archive_dest_state_2='enable'
*.log_archive_format='%t_%s_%r.arc'
*.log_file_name_convert='/oracle/archive','/oracle/archive'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=1000m
*.processes=500
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=3000m
*.standby_file_management='AUTO'
*.undo_tablespace='UNDOTBS1'

备库修改部分:
*.db_file_name_convert='/oracle/oradata/ORA12C','/oracle/oradata/ORA12C'
*.db_unique_name='ORA12CDG'
*.fal_server='ORA12C'
*.log_archive_config='dg_config=(ORA12CDG,ORA12C)'
*.log_archive_dest_1='LOCATION=/oracle/orabackup/archive valid_for=(all_logfiles,all_roles) db_unique_name=ORA12CDG'
*.log_archive_dest_2='SERVICE=ORA12C lgwr sync affirm valid_for=(online_logfile,primary_role) db_unique_name=ORA12C'
*.log_file_name_convert='/oracle/archive','/oracle/archive'

12.启动备库到nomount状态:
SQL> conn /as sysdba
SQL> create spfile from pfile='/oracle/orahome/dbs/initORA12C.ora';
SQL> startup nomount

13.在主系统上执行RMAN 并连接主数据库和辅助数据库(即备库)
[oracle@ora12c admin]$ rman target sys/passwd@ORA12C auxiliary sys/passwd@ORA12CDG

connected to target database: ORA12C (DBID=376201757)
connected to recovery catalog database
connected to auxiliary database: ORA12C (not mounted)

RMAN> duplicate target database for standby from active database nofilenamecheck dorecover;

14.启用物理备用数据库:
duplicate 完成之后,备库是mount的。
SQL> select open_mode from v$database;

OPEN_MODE
--------------------
MOUNTED

SQL> alter database recover managed standby database disconnect from session;

15.查看主备库同步状态:
SQL> alter system switch logfile;        //主库
SQL> select max(sequence#) from v$archived_log;    
SQL> select process, client_process, sequence#, status from v$managed_standby;

16.备库开启flashback:
SQL> select flashback_on from v$database;
SQL> alter database recover managed standby database cancel;
SQL> alter database flashback on;
SQL> alter database recover managed standby database disconnect from session;

17.如果要开启Active Data Guard,按以下步骤操作即可:
(1)取消管理备用数据库Redo Apply
SQL> alter database recover managed standby database cancel;
(2)然后以只读方式打开数据库
SQL> alter database open;
(3)重新开始Redo Apply
SQL> alter database recover managed standby database disconnect from session;
(4)查看备库打开模式
SQL> select open_mode from v$database;

OPEN_MODE
--------------------
READ ONLY WITH APPLY

转载于:https://blog.51cto.com/12608853/2362728

Oracle 12C 利用Rman Duplicate搭建 Data Guard相关推荐

  1. 如何使用RMAN duplicate搭建12C的Data Guard环境?

    墨墨导读:本文来自墨天轮用户投稿,介绍使用RMAN duplicate搭建12C的Data Guard环境的全过程. 1. 实验环境 2. 主端的数据库环境 [oracle@dg1 ~]$ sqlpl ...

  2. Oracle 11gR2 使用RMAN Duplicate复制数据库

    Oracle 11gR2 使用RMAN Duplicate复制数据库 整体步骤 构建辅助数据库目录结构配置辅助数据库相关参数 安装软件并创建数据库 开启归档 配置静态监听 启动数据库到nomount状 ...

  3. oracle 恢复表关联,ORACLE 12C使用RMAN进行表恢复

    ORACLE 12C使用RMAN进行表恢复 在12C以前的版本中,rman可以进行db,tablespace,datafile,block级别和TSPITR的恢复,12C引入了table级别的恢复 在 ...

  4. Oracle Livelabs实验: Setting Up Active Data Guard For On-Premises

    本文是Oracle LiveLabs实验:Setting Up Active Data Guard For On-Premises 的过程记录. 实验步骤请参考这里. 因为是利用你自己的OCI云环境搭 ...

  5. Oracle 12c 数据库的环境搭建以及安装过程

    目录 一:关于Oracle数据库 二:安装Linux操作系统时注意事项 三:Oracle 12c的安装条件 3.1:系统及配置要求 3.2:软件环境要求 四:实验过程 4.1:关闭防火墙自启动,以及相 ...

  6. mysql2ora datacopy,Oracle 11gR2 使用 RMAN duplicate from active database 复制数据库

    我们看一个完整的复制示例: Target DB: IP: 192.168.2.42 SID:orcl Auxiliary: IP:192.168.2.43 SID:orcl 我这里复制的目录相同. 如 ...

  7. oracle 12c rac搭建,Oracle 12C Rac到Rac搭建ADG

    select log_mode from v$database; #####是否为归档模式 alter database force logging; #####强制归档 2.2 主库standby ...

  8. Oracle 11gR2 使用 RMAN duplicate from active database 复制数据库

    在Oracle10g下,我们可以使用RMANduplicate命令创建一个具有不同DBID的复制库.到了Oracle11gR2,RMAN的duplicate有2种方法实现: 1.Activedatab ...

  9. 使用 Oracle Enterprise Manager Cloud Control 12c 安装和管理 Oracle Data Guard

    2019独角兽企业重金招聘Python工程师标准>>> 使用 Oracle Enterprise Manager Cloud Control 12c 安装和管理 Oracle Dat ...

最新文章

  1. 手动将jar包导入pom依赖,让jar包适配本地maven项目
  2. webservice中jaxws:server 和jaxws:endpoint的区别
  3. SAP Spartacus Popover Component 显示与否的逻辑判定
  4. qiankun 微前端_qiankun 微前端应用实践与部署(二)
  5. SpringCloud Greenwich(二)注册中心之consul、Zuul和 gateway网关配置
  6. asp.net 与 java 2017_[ASP.net教程]C#与JAVA学习感悟
  7. WPF 自定义 MessageBox (相对完善版 v1.0.0.6)
  8. tensorflow 显存 训练_Tensorflow与Keras自适应使用显存方式
  9. Gobblin编译支持CDH5.4.0
  10. potplay显示服务器关闭,PotPlayer怎么关掉左上角显示的播放时间?PotPlayer关掉左上角显示播放时间的操作步骤...
  11. put与putIfAbsent区别
  12. web集群之 Keepalived
  13. java的null类型强转
  14. 35+ 个 Java 代码性能优化总结
  15. char *p=abc与char p[]=abc的不同
  16. opencv学习笔记(三)颜色转换 cvtColor
  17. 怎么设置台式计算机密码忘了,台式电脑忘记开机密码怎么办
  18. 杭州小伙逆行-没有生活,只有活着
  19. 速卖通奇门+聚石塔流程
  20. NLP之分词技术理论

热门文章

  1. rust python扩展_Rust语言优化Python性能案例
  2. html中for标记,C#使用for循环移除HTML标记
  3. js如何让高度和宽度保持一致_如何实现一个下载进度条/播放进度条
  4. vba 修改access表的链接地址_VBA中常用的这7种数据类型,你都get到了吗?
  5. 如何用计算机猜数字,杭电2010计算机复试笔试题 2道acm简单题(2010):1.猜数字游戏;2.字符串提取数字并求和;...
  6. c语言swatch的用法返回,Linux swatch系统监控程序命令详解
  7. java set删除第一个元素_Java面试题10(如何取到set集合的第一个元素)
  8. android5.1内核版本,Android-x86现已基于5.1.1 Lollipop:支持UEFI和64位内核
  9. python整数二进制有多少个1_LintCode Python 入门级题目 365.二进制有多少个1; 181.将整数A转换为B...
  10. FPGA之道(1)HDL代码风格