实验环境:

角色 IP hostname CDB name db_unique_name pdb name 版本
192.168.0.115 Node11 cdb1 cdb_p pdb1
12.2.0.1.0
192.168.0.244 Node12 cdb1 cdb_s pdb1
12.2.0.1.0

1. /etc/hosts配置

1192.168.0.115 Node11
1192.168.0.244 Node12

2. 主库force logging

sqlplus / as sysdba

SQL> alter database force logging;
SQL> select force_logging from v$database;

3. 主库添加standby redo logfile(连接到CDB$ROOT中执行)

SQL> select member from v$logfile;

/data/app/oracle/oradata/cdb1/redo03.log
/data/app/oracle/oradata/cdb1/redo02.log
/data/app/oracle/oradata/cdb1/redo01.log

Standby redo log组数公式>=(每个instance日志组个数+1)*instance个数

假如只有一个节点,这个节点有三组redolog,
所以Standby redo log组数>=(3+1)*1 == 4
所以至少需要创建4组Standby redo log

添加4(3+1)个standby logfile

alter database add standby logfile group 4 '/data/app/oracle/oradata/standbylog/standby_redo04' size 50m;
alter database add standby logfile group 5 '/data/app/oracle/oradata/standbylog/standby_redo05' size 50m;
alter database add standby logfile group 6 '/data/app/oracle/oradata/standbylog/standby_redo06' size 50m;
alter database add standby logfile group 7 '/data/app/oracle/oradata/standbylog/standby_redo07' size 50m; SQL> set pagesize 100
SQL> col member for a60
SQL> select group#,member from v$logfile order by group#;

4、主备 配置tnsnames.ora

LISTENER_CDB1 =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.115)(PORT = 1521)) CDB_P =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.115)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cdb1)
)
) CDB_S =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.244)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = cdb1)
)
)

5. 主备配置 listener.ora

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = cdb1)
(SID_NAME = cdb1)
(ORACLE_HOME = /data/app/oracle/product/12.2.0.1.0/db_1)
#(PROGRAM = extproc)
#(ENVS = "EXTPROC_DLLS=ONLY:/data/app/oracle/product/12.2.0.1.0/db_1/bin/oraclr12.dll")
)
) LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.244)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
) ADR_BASE_LISTENER = /data/app/oracle

重启监听
  lsnrctl reload

测试
  tnsping cdb_p
  tnsping cdb_s

6. 打开归档

SQL> archive log list;
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;

7.修改pfile文件

create pfile='/data/app/oracle/product/12.2.0.1.0/db_1/dbs/cdb1pfile.ora' from spfile;

vim cdb1pfile.ora

*.db_name='cdb1'
*.db_unique_name='cdb_p'
*.log_archive_config='dg_config=(cdb_p,cdb_s)'
*.log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=cdb_p'
*.log_archive_dest_2='service=cdb_s valid_for=(online_logfiles,primary_role) lgwr affirm sync db_unique_name=cdb_s'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.standby_file_management='auto'
*.fal_server='cdb_s' 如果主备库CDB名称不同,还需要加如下参数:
*.DB_FILE_NAME_CONVERT='cdb1','dave'
*.LOG_FILE_NAME_CONVERT='cdb1','dave'
SQL> shutdown immediate
SQL> create spfile from pfile='/data/app/oracle/product/12.2.0.1.0/db_1/dbs/cdb1pfile.ora';
SQL> startup

8. 拷贝密码文件到备库

cd $ORACLE_HOME/dbs
scp orapwcdb1 oracle@Node12:$ORACLE_HOME/dbs  

9. 拷贝pfile 到备库并修改

scp cdb1pfile.ora oracle@Node12:$ORACLE_HOME/dbs
vim cdb1pfile.ora *.db_unique_name='cdb_s'
*.log_archive_config='dg_config=(cdb_p,cdb_s)'
*.log_archive_dest_1='location=USE_DB_RECOVERY_FILE_DEST valid_for=(all_logfiles,all_roles) db_unique_name=cdb_s'
*.log_archive_dest_2='service=cdb_s valid_for=(online_logfiles,primary_role) lgwr affirm sync db_unique_name=cdb_p'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.standby_file_management='auto'
*.fal_server='cdb_s' 注意修改控制文件的路径,也使用新路径。
注意参数:*.db_recovery_file_dest='/data/app/oracle/flash_recovery_area' ,文件夹若不存在,则手动新建。

根据编辑好的pfile生成spfile

create spfile from pfile='/data/app/oracle/product/12.2.0.1.0/db_1/dbs/cdb1pfile.ora';

启动到 nomount 状态

startup nomount

9.开始进行Active duplicate

主:
rman target sys/Sjtsoft123@cdb_p auxiliary sys/Sjtsoft123@cdb_s nocatalog RMAN> duplicate target database for standby from active database nofilenamecheck;
duplicate target database for standby from active database nofilenamecheck dorecover;
备:
duplicate 完成之后,备库是mount的。
SQL> select open_mode from v$database;
SQL> show pdbs
SQL> alter database open;
SQL> alter pluggable database pdb1 open;
SQL> select open_mode,log_mode,open_mode ,database_role from v$database; OPEN_MODE LOG_MODE OPEN_MODE DATABASE_ROLE
-------------------- ------------ -------------------- ----------------
READ ONLY ARCHIVELOG READ ONLY PHYSICAL STANDBY

10. 备库启动real-time apply:

SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ ONLY alter database recover managed standby database using current logfile disconnect from session; SQL> select open_mode from v$database; OPEN_MODE
--------------------
READ ONLY WITH APPLY

11. 验证DG

主:
SQL> alter pluggable database pdb1 open;
SQL> alter session set container=pdb1;
SQL> create table cndba as select * from dba_users;
SQL> select count(*) from cndba;
SQL> alter system switch logfile; 
备:
SQL> alter session set container=pdb1;
SQL> select count(*) from cndba;

END!

12. 查看日志
主:
  tail -100f /data/app/oracle/diag/rdbms/cdb_p/cdb1/trace/alert_cdb1.log
从:
  tail -100f /data/app/oracle/diag/rdbms/cdb_s/cdb1/trace/alert_cdb1.log

最新文章

  1. 在WPF中获取DataGridTemplateColumn模板定义的内容控件
  2. 关于stm32的正交解码
  3. perl split 的一种特殊用法
  4. (理论篇)温故而知新_PHP入门基础教程
  5. UIAlertView(已经过时) UIActionView swift
  6. Hibernate笔记——hql总结
  7. Device disconnected
  8. 关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
  9. Windows(64位IIS)未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
  10. 强大的Http监控工具Fidder
  11. 将图片转为ASCII字符画
  12. 远程登录Linux服务器修改ssh端口
  13. css让文字在一行内显示
  14. angular4——安装
  15. ------- 当前全球最新的 IPv4 地址池使用报告 -------
  16. 常用的汇编指令 movs stos
  17. hadoop上C++开发两种方式的例子
  18. Windows Server 2012 R2 配置FTP服务器
  19. 《linux就该这么学》开课,linux之路新开始
  20. ubuntu16.04下zabbix安装和配置

热门文章

  1. POJ2449 【第k短路/A*】
  2. 剑指offer52:正则表达式匹配
  3. php文件操作类
  4. asp.net core-8. 配置的热更新
  5. Tokitsukaze and Duel CodeForces - 1191E (博弈论)
  6. (四)Hibernate的增删改查操作(1)
  7. (十五)SpringBoot之使用Redis做缓存数据
  8. 九、小程序 Redux详解与在小程序中怎么使用(action和reducers)
  9. Python处理session最简单的方法
  10. ASE19团队项目beta阶段Backend组 scrum7 记录